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

Статья Малварь, способная сидеть в сети компании годами. PlugX, nccTrojan, dnsTrojan, dloTrojan

tabac

CPU register
Пользователь
Регистрация
30.09.2018
Сообщения
1 610
Решения
1
Реакции
3 332
Недавно мы расследовали АРТ-атаку на одну российскую компанию и нашли много занятного софта. Сначала мы обнаружили продвинутый бэкдор PlugX, популярный у китайских группировок, АРТ-атаки которых обычно нацелены на похищение конфиденциальной информации, а не денег. Затем из скомпрометированной сети удалось вытащить несколько других схожих между собой бэкдоров (nccTrojan, dnsTrojan, dloTrojan) и даже общедоступных утилит.

Программы, используемые в этой преступной кампании, не отличаются сложностью, за исключением, может быть, PlugX. К тому же три из четырех вредоносов использовали при запуске давно известную технику DLL hijacking. Тем не менее, как показало наше исследование, даже при таких условиях злоумышленники могут годами оставаться в скомпрометированных сетях.

Мы решили изучить обнаруженный софт и поделиться своими наблюдениями.

PlugX​

PlugX — сложная вредоносная программа. Мы постараемся рассказать о ее основных функциях, а более подробное описание малвари можно найти в отчете Dr. Web.

Запуск PlugX​

PlugX, как правило, распространяется в виде самораспаковывающихся архивов, содержащих:
  • невредоносный исполняемый файл (EXE), подписанный цифровой подписью (нам попадались подписи McAfee, Kaspersky, Support.com);
  • вредоносную динамическую библиотеку (Dynamic Link Library — DLL);
  • зашифрованную основную нагрузку — файлы с произвольными именем и расширением.
Такой набор характерен для техники DLL hijacking, при которой злоумышленник заменяет легитимную DLL на вредоносную. При этом малварь получает возможность работать от имени легитимного процесса и обходить таким образом средства защиты (рис. 1).
vyjjm_lerf8uwfo2uhv8zojvc2a.jpeg

Рис. 1. Наглядное представление техники DLL hijacking

Рассмотрим в качестве примера один из экземпляров PlugX, характеристики которого приведены в табл. 1.

Табл. 1. Свойства файлов одного из образцов PlugX
СвойствоEXEDLLЗашифрованная нагрузка
Имя файлаmcut.exemcutil.dllmcutil.dll.bbc
Тип файлаPE32 executable (EXE)PE32 executable (DLL)None
Размер (в байтах)140 5764 096180 358
Время компиляции13 июня 2008 года 02:39:289 декабря 2014 года 10:06:14
MD5884d46c01c762ad6ddd2759fd921bf71e9a1482a159d32ae57b3a9548fe8edec2d66d86a28cd28bd98496327313b4343
SHA-1d201b130232e0ea411daa23c1ba2892fe6468712a2a6f813e2276c8a789200c0e9a8c71c57a5f2d67bcf4f196578f2a43a2cd47f0b3c8d295120b646
SHA-2563124fcb79da0bdf9d0d1995e37b06f7929d83c1c4b60e38c104743be71170efe2f81cf43ef02a4170683307f99159c8e2e4014eded6aa5fc4ee82078228f6c3c0c831e5c3aecab14fe98ff4f3270d9ec1db237f075cd1fae85b7ffaf0eb2751

Вот что происходит при запуске невредоносного исполняемого файла (EXE) из пакета.

Сначала одна из импортируемых им библиотек (отдельная DLL) заменяется вредоносной. После загрузки в память процесса DLL открывает третий файл из пакета PlugX, который обходит средства защиты за счет отсутствия видимого исполняемого кода. Тем не менее он содержит шелл-код, после исполнения которого в памяти расшифровывается еще один дополнительный шелл-код. Он с помощью функции RtlDecompressBuffer() распаковывает PlugX (DLL). При открытии мы видим, что сигнатуры MZ и PE в исполняемом файле PlugX заменены на XV (рис. 2) — скорее всего, это тоже нужно, чтобы скрыть модуль от средств защиты.

zg5ibstmryfjole_iojfutkicme.png

Рис. 2. Исполняемый файл PlugX в распакованном виде с измененными сигнатурами MZ и PE

Наконец, запускается распакованная вредоносная библиотека, и управление передается ей.

В другом экземпляре PlugX мы обнаружили интересную особенность: малварь пыталась скрыть некоторые библиотечные вызовы от песочниц. При восстановлении импортов вместо адреса импортируемой функции сохранялся адрес тремя байтами ранее. Результат для функции SetFileAttributesW() виден на рис. 3.

wbxtegfjkpk0sshhlb_6w6tsa6o.png

Рис. 3. При получении адреса функции SetFileAttributesW() сохраняется адрес 0x7577D4F4

В табл. 2 приведены характеристики этого экземпляра.

Табл. 2. Свойства файлов образца вредоносной программы PlugX, который пытался скрыть вызовы от песочниц
СвойствоEXEDLLЗашифрованная нагрузка
Имя файлаmcut.exemcutil.dllmcutil.dll.bbc
Тип файлаPE32 executable (EXE)PE32 executable (DLL)None
Размер140 5764 096179 906
MD5884d46c01c762ad6ddd2759fd921bf7112ee1f96fb17e25e2305bd6a1ddc2de9e0ae93f9cebcba2cb44cec23993b8917
SHA-1d201b130232e0ea411daa23c1ba2892fe6468712bf25f1585d521bfba0c42992a6df5ac48285d763f0efdb723a65e90afaebd56abe69d9f649ca094c
SHA-2563124fcb79da0bdf9d0d1995e37b06f7929d83c1c4b60e38c104743be71170efe97ad6e95e219c22d71129285299c4717358844b90860bb7ab16c5178da3f168681e53c7d7c8aa8f98c951106a656dbe9c931de465022f6bafa780a6ba96751eb

На рис. 4 представлен фрагмент кода PlugX, где встречается функция SetFileAttributesW(), и листинг из одной из песочниц.

ide_bfihode2fiv96-wwejlorts.png

а)
unp8pdsahqqkci8ufyp-oko9kw0.png

б)
Рис. 4. Фрагмент декомпилированного кода (а) и соответствующий ему фрагмент листинга перехваченных инструкций (б), где встречается вызов функции SetFileAttributesW()


В листинге из песочницы мы не видим вызов функции SetFileAttributesW(). Впрочем, вызовы функций LoadLibrary() и GetProcAddress(), которые были импортированы аналогичным образом, мы тоже не видим.

Основная нагрузка PlugX не сохраняется в расшифрованном виде на диске.

Работа PlugX​

После запуска вредоносная программа расшифровывает конфигурацию, которая содержит адреса серверов управления, а также информацию, необходимую для дальнейшего функционирования (например, способ закрепления в системе или путь, по которому копируются файлы малвари).

При этом данные для конфигурации могут браться из основного загрузчика или из отдельного файла в текущей рабочей директории. Из того же файла может быть подтянута новая конфигурация при ее обновлении в ходе взаимодействия с сервером управления.

То, как вредонос будет вести себя дальше, во многом определяет его конфигурация.

В зависимости от значения check_flag в конфигурации PlugX вредоносная программа может начать поиск в зараженной системе сетевого адаптера, MAC-адрес которого совпадает с адресом, заданным в самой малвари. В случае совпадения вредоносная программа завершит свое исполнение. Вероятно, таким образом она пытается обнаружить виртуальную среду.

Режим работы вредоносной программы зависит от значения флага конфигурации mode_flag, которое может быть равно 0, 2, 3 или 4.

Если значение mode_flag равно 0, вредоносная программа закрепляется в системе (подробнее в разделе «Закрепление в системе»). Затем она переходит к инициализации плагинов и взаимодействию с сервером управления (подробнее в разделе «Функциональность плагинов и исполнение команд»).

Если значение mode_flag равно 2, вредоносная программа сразу переходит к инициализации плагинов и взаимодействию с сервером управления.

Если значение mode_flag равно 3, вредоносная программа внедряет шелл-код в Internet Explorer. Передача управления вредоносному коду осуществляется с помощью функции CreateRemoteThread(). Также производится инициализация плагинов, и создается именованный пайп, через который вредоносная программа получает команды, предназначенные для исполнения плагинами.

Если значение mode_flag равно 4, устанавливается перехват некоторых функций библиотеки wininet.dll. В функции-перехватчике извлекаются логины и пароли для подключения к прокси-серверу. Полученные данные будут сохранены в файле в рабочей директории вредоносной программы. При этом имена файлов, создаваемых малварью в процессе функционирования, генерируются на основе серийного номера диска и некоторого уникального для каждого файла значения. Перехватываются следующие функции:
  • HttpSendRequestA(),
  • HttpSendRequestW(),
  • HttpSendRequestExA(),
  • HttpSendRequestExW().

Закрепление в системе​

Если конфигурация PlugX предусматривает закрепление вредоноса в зараженной системе, то в ней прописан каталог, в который будут скопированы компоненты малвари.

Анализируемый образец выбирает одну из следующих директорий в зависимости от разрядности малвари:
  • %SystemRoot%\System32\winssxs
  • %SystemRoot%\SysWOW64\winssxs
Для созданной директории и скопированных в нее компонентов программа пытается установить временные метки, совпадающие с временными метками библиотеки ntdll.dll из зараженной системы. Возможно, это нужно для маскировки под компонент ОС. Также PlugX скрывает эти файлы от пользователя, выставляя атрибуты FILE_ATTRIBUTE_SYSTEM и FILE_ATTRIBUTE_HIDDEN. В конфигурации указывается путь к месту, где будут сохраняться скриншоты, сделанные вредоносной программой.

В зависимости от persistence_flag PlugX может закрепляться:
  • как сервис (persistence_flag=1),
  • через реестр (persistence_flag=2),
  • любым из двух способов (persistence_flag=0), сначала попытаться создать сервис, а в случае неудачи — закрепиться через реестр.
Помним, что малварь может и не закрепляться вовсе.

Когда вредонос пытается закрепиться как сервис, он маскируется под легитимную программу. Имя службы и ее параметры задаются в конфигурации. Например, в нашем образце создается сервис с именем SSXSS (отображаемое имя — SSXS) и описанием McAfee OEM Info Copy Files, а качестве исполняемого файла службы используется невредоносный mcut.exe.

Если закрепиться в качестве службы не удается, программа пытается закрепиться через реестр и перезапускает себя из каталога, в который была скопирована ранее. Для этого она использует ключ реестра HKCU\Software\Microsoft\Windows\CurrentVersion\Run. Ключ реестра и параметр задаются через конфигурацию: в анализируемом образце в параметр, соответствующий отображаемому имени сервиса, программа прописывает путь до того же mcut.exe.

После того, как вредоносная программа закрепилась и перезапустилась, производится внедрение вредоносного кода. В анализируемом образце он работает в памяти легитимного процесса svchost.exe. Имя процесса подтягивается из конфигурации. Если внедрение кода прошло успешно, текущий процесс завершается.

В зависимости от конфигурации вредоносная программа может также попытаться создать процесс с повышенными привилегиями с последующим внедрением в него кода. В конфигурации могут быть перечислены до четырех целевых процессов.

Функциональность плагинов PlugX и исполняемые команды​

Основная функциональность бэкдора реализована с помощью так называемых плагинов. Фрагмент функции, в которой производится инициализация плагинов, приведен на рис. 5.

zoob6rourd-we5v571lb-x5zdki.png

Рис. 5. Фрагмент инициализации плагинов PlugX

PlugX может управлять процессами и службами, работать с файловой системой, вносить изменения в реестр. Он также имеет компоненты кейлоггера и скринлоггера и может получать удаленный доступ к зараженной системе — все это дает обширные возможности злоумышленникам в скомпрометированной сети.

Полный перечень функций вредоносной программы, доступной через плагины, приведен в табл. 3.

Табл. 3. Функциональность PlugX, доступная через плагины
ПлагинКомандаФункциональные возможности
DISK0x3000Собрать информацию по всем дискам (тип и свободное пространство)
0x3001Перечислить файлы в директории
0x3002Перечислить файлы
0x3004Прочитать файл
0x3007Создать директорию и сохранить в нее файл
0x300AСоздать директорию
0x300CСоздать новый рабочий стол и запустить процесс
0x300DКопировать, переместить, переименовывать или удалить файл
0x300EПолучить значение переменной окружения
KeyLogger0xE000Отправить данные кейлоггера на сервер управления
Nethood0xA000Перечислить сетевые ресурсы
0xA001Установить соединение с сетевым ресурсом
Netstat0xD000Получить таблицу TCP
0xD001Получить таблицу UDP
0xD002Установить состояние TCP
Option0x2000Заблокировать экран компьютера
0x2001Отключить компьютер (принудительно)
0x2002Перезагрузить компьютер
0x2003Отключить компьютер (безопасно)
0x2005Показать окно с сообщением
PortMap0xB000Возможно, запустить маппинг портов
Process0x5000Получить информацию о процессах
0x5001Получить информацию о процессе и модулях
0x5002Завершить процесс
Regedit0x9000Перечислить подразделы ключа реестра
0x9001Создать ключ реестра
0x9002Удалить ключ реестра
0x9003Скопировать ключ реестра
0x9004Перечислить значения ключа реестра
0x9005Задать значение ключа реестра
0x9006Удалить значение из ключа реестра
0x9007Получить значение из ключа реестра
Screen0x4000Использовать удаленный рабочий стол
0x4100Сделать скриншот
0x4200Найти скриншоты в системе
Service0x6000Получить информацию о сервисах в системе
0x6001Изменить конфигурацию сервиса
0x6002Запустить сервис
0x6003Управлять сервисом
0x6004Удалить сервис
Shell0x7002Запустить cmd-шелл
SQL0xC000Получить список баз данных
0xC001Получить список описаний драйверов
0xC002Выполнить SQL-команду
Telnet0x7100Настроить Telnet
Фрагмент функции обработки команд, полученных от сервера управления приведена на рис. 6.

aof92m3bfrzmgfuvtcu5ptspzec.png

Рис. 6. Команды сервера управления, которые получает PlugX

Описание команд приведено в табл. 4.

КомандаОписание
0x1Отправить на сервер управления данные о зараженной системе:
— имя компьютера;
— имя пользователя;
— информация о CPU;
— текущее использование памяти системой;
— информация об операционной системе;
— системные дата и время;
— системная информация;
— язык системы
0x5Самоудалиться (удалить службу, очистить реестр)
0x3Передать команды плагинам со сменой протокола взаимодействия
0x6Отправить текущую конфигурацию PlugX на сервер управления
0x7Получить с сервера управления новую конфигурацию и обновить текущую
0x8Отправить список процессов с внедренным шелл-кодом
defaultПередать команды плагинам

nccTrojan​

Один из обнаруженных нами бэкдоров найден в отчете VIRUS BULLETIN и назван авторами nccTrojan по константному значению в коде основного пейлоада. Характеристики попавшегося нам образца малвари приведены в табл. 5.

Табл. 5. Свойства анализируемого образца nccTrojan
СвойствоEXEDLL
Имя файлаinstsrv.exewindowsreskits.dll
Тип файлаPE32 executable (EXE)PE32 executable (DLL)
Размер (в байтах)83 968514 048
Время компиляции18 декабря 2019 года 03:13:0321 марта 2020 года 15:19:04
MD5c999b26e4e3f15f94771326159c9b8f9056078b1c424667e6a67f9867627f621
SHA-1ec12c469463029861bd710aec3cb4a2c01907ad25bd080285a09c0abf742fb50957831310d9d9769
SHA-25607d728aa996d48415f64bac640f330a28e551cd565f1c5249195477ccf7ecfc53be516735bafbb02ba71d56d35aee8ce2ef403d08a4dc47b46d5be96ac342bc9

Запуск nccTrojan​

Вредоносная программа состоит из двух файлов: EXE и DLL, но в данном случае техника DLL hijacking не используется. После запуска вредоносный EXE-файл (MD5: c999b26e4e3f15f94771326159c9b8f9) регистрирует библиотеку windowsreskits.dll (MD5: 056078b1c424667e6a67f9867627f621) в качестве сервиса. В зависимости от разрядности библиотеки ее файл копируется в одну из директорий:
  • %SystemRoot%\System32
  • %SystemRoot%\SysWOW64
В результате создается сервис с именем WindowsResKits, работающий в контексте процесса svchost.exe.

Работа nccTrojan​

nccTrojan расшифровывает конфигурацию, хранящуюся по определенному смещению в оверлее. Конфигурация зашифрована с помощью алгоритма AES-CFB-256, он же используется для шифрования взаимодействия с сервером управления. Пары «ключ шифрования + вектор инициализации» захардкоржены и различны для шифрования конфигурации и взаимодействия с сервером управления.

Расшифрованная конфигурация содержит информацию о сервере управления и выглядит следующим образом:
Код:
***news.niiriip.com|#|none|#|none|#|443|#|none|#|none|#|passwd|#|ncc|#|v2.2[Service]***
Строка v2_2[Service], вероятнее всего, характеризует версию вредоносной программы и также используется в качестве имени при создании мьютекса.

В зависимости от конфигурации nccTrojan может иметь до трех серверов управления. В исследуемом экземпляре вредоносной программы задан лишь один сервер управления — news.niiriip[.]com, а поля конфигурации под оставшиеся два заполнены none.

Дальнейшее взаимодействие осуществляется только в случае получения с сервера управления пакета, который после расшифровывания содержит строку ncc.

Если соединение установлено, то на сервер управления отправляется следующая информация:
  • имя компьютера,
  • контрольная сумма от отправляемых данных,
  • имя пользователя,
  • уровень привилегий пользователя в системе (SYSTEM, Administrator или User),
  • IP-адреса зараженной системы,
  • идентификатор версии операционной системы,
  • язык системы.
При этом из собранных данных формируется строка, которая дальше зашифровывается и отправляется на сервер управления. Формат создаваемой строки:
Код:
passwd|#|<check_sum>|#|<computer_name>|#|<user_name>|#|<user_privilege>|#|<ip_addr_1 / ip_addr_2 / ...>|#|None|#|v2.2[Service]|#|<os_version_ID>|#|<language_ID>
Далее вредоносная программа переходит к взаимодействию с сервером управления и может исполнять команды, приведенные в табл. 6.

КомандаНазначение
0x2Запустить сmd-шелл
0x3Выполнить команду через cmd-шелл
0x4Записать данные в файл
0x5Получить информацию о дисках C-Z (тип, свободный объем памяти)
0x6Получить информацию о файлах
0x8Запустить процесс
0xAУдалить файл или директорию
0xCПрочитать файл
0xFПроверить наличие файла
0x11Сохранить файл
0x13Получить список запущенных процессов
0x15Завершить процесс
0x17Скопировать файл
0x1AПереместить файл
0x1DЗапустить cmd-шелл с правами пользователя

dnsTrojan​

Следующий бэкдор мы обнаружили впервые: на момент расследования мы не нашли упоминаний о нем в отчетах других экспертов. Его отличительная особенность — общение с сервером управления через DNS. В остальном по своей функциональности вредоносная программа схожа с бэкдором nccTrojan. Чтобы сохранить единообразие в названиях найденной малвари, назвали ее dnsTrojan.

В рамках инцидента обнаружен CAB-архив, содержащий вредоносный исполняемый файл (MD5: a3e41b04ed57201a3349fd42d0ed3253). Характеристики образца, который мы вытащила в ходе расследования, приведены в табл. 7.

Табл. 7. Свойства анализируемого образца dnsTrojan
СвойствоEXE
Имяa.exe.ok
Тип файлаPE32 executable (EXE)
Размер (в байтах)417 280
Время компиляции13 октября 2020 года 20:05:59
MD5a3e41b04ed57201a3349fd42d0ed3253
SHA-1172d9317ca89d6d21f0094474a822720920eac02
SHA-256826df8013af53312e961838d8d92ba24de19f094f61bc452cd6ccb9b270edae5

Запуск dnsTrojan​

В файле захардкоржена строка AB0d3d3MS5kb3RvbWF0ZXIuY2x1Yjsw, которая является некоей конфигурацией. Вредоносная программа проверяет внутри этой строки третий байт и в зависимости от его значения выбирает свою рабочую директорию и некоторую функциональность:
  • b"30" ('0') — вредоносная программа работает в своей текущей директории, в реестр не прописывается, по завершении исполнения все созданные в процессе функционирования файлы: LiveUpdate.exe, ccL100U.dll и сам исполняемый файл — удаляются (конфигурация анализируемого образца);
  • b"31" ('1') — вредоносная программа работает в %AppData%\Sep, прописывается в реестре, по завершении исполнения удаляется только сам исполняемый файл.
Подстрока d3d3MS5kb3RvbWF0ZXIuY2x1Yjsw представляет собой закодированную в base64 конфигурацию сервера управления www1.dotomater.club;0.

После запуска вредоносная программа извлекает из ресурсов, распаковывает и сохраняет в рабочей директории два файла:
  • LiveUpdate.exe (MD5: 1a7f595ba8c28974619582040dcad404),
  • ccL100U.dll (MD5: 0697433432d209c1ed95f6f75a111234).
Далее запускается файл LiveUpdate.exe, имеющий цифровую подпись Symantec Corporation.

В этом случае злоумышленники снова используют технику DLL hijacking: легитимная DLL заменяется на вредоносную ccL100U.dll. В результате исполнения кода библиотеки из ее ресурсов извлекается и распаковывается код самого бэкдора, который внедряется и исполняется в памяти легитимного процесса dllhost.exe. Для внедрения кода применяется техника Process Hollowing.

Если вредоносная программа прописывается в реестр, в ключ реестра HKCU\Environment добавляется параметр UserInitMprLogonScript со значением %AppData%\Roaming\Sep\LiveUpdate.exe.

Работа dnsTrojan​

Все свои действия вредоносная программа логирует в файл %ProgramData%\logD.dat, при этом записанные данные похожи на отладочную информацию для злоумышленников (рис. 7).

l7jherxn_3i4dtpdb9lrisrle9i.png

Рис. 7. Фрагмент файла logD.dat

Закодированная в base64 конфигурация содержит адреса сервера управления и DNS-сервера. В текущем семпле раскодированная конфигурация выглядит так: www1.dotomater.club;0, то есть адрес конкретного DNS-сервера злоумышленников отсутствует, а для взаимодействия с сервером управления используется DNS-сервер зараженной системы.

Взаимодействие с сервером управления осуществляется с использованием DNS-туннелирования. Данные передаются серверу управления в виде DNS-запроса TXT-записи в зашифрованном виде.

Сразу после запуска на сервер управления отправляются следующие данные:
  • имя компьютера
  • имя пользователя,
  • текущие дата и время,
  • версия операционной системы,
  • информация о сетевом адаптере,
  • архитектура процессора.
Из них формируется сообщение вида 8SDXCAXRZDJ;O0V2m0SImxhY;6.1.1;1;00-13-d2-e3-d6-2e;2020113052831619.

Все передаваемые на сервер управления данные преобразуются следующим образом:
  • шифруются с помощью алгоритма AES-128-CBC, ключ шифрования вырабатывается из константной строки dadadadadadadada с помощью функции CryptDeriveKey();
  • кодируются в base64.
При формировании домена, для которого запрашивается TXT-запись, после каждого 64-го символа ставится точка. Запросы, отправляемые вредоносной программой, можно увидеть на рис. 8.


Рис. 8. Пример трафика вредоносной программы dnsTrojan

В ответ на запрос, отправленный на предыдущем шаге из TXT-записей, dnsTrojan получает команды сервера и может исполнить их (табл. 8).

КомандаНазначение
0x1Получить онлайн-данные
0x2Запустить сmd-шелл
0x3Выполнить команду через cmd-шелл
0x4Получить информацию о дисках C–Z (тип, свободный объем памяти) или файлах
0x6Прочитать файл
0x7Скопировать файл
0x8Удалить файл
0x9Проверить наличие файла
0xAСохранить файл
0xBУстановить время бездействия программы (в минутах)
0xDСамоудалиться (очистить реестр)

dloTrojan​

dloTrojan — еще одна обнаруженная в процессе расследования вредоносная программа, которую мы классифицировали как бэкдор. Эта малварь не относится ни к одному из известных семейств вредоносов.

В процессе исполнения кода расшифровывается строка dlo, поэтому по аналогии с предыдущими двумя программами мы назвали ее dloTrojan.

Характеристики файлов исследуемого нами образца приведены в табл. 9.

Табл. 9. Свойства анализируемого экземпляра dloTrojan
СвойствоEXEDLL
ИмяChromeFrameHelperSrv.exechrome_frame_helper.dll
Тип файлаPE32 executable (EXE)PE32 executable (DLL)
Размер (в байтах)82 896240 128
Время компиляции12 июля 2013 года 19:11:4114 сентября 2020 года 16:34:44
MD555a365b1b7c50887e1cb99010d7c140abd23a69c2afe591ae93d56166d5985e1
SHA-16319b1c831d791f49d351bccb9e2ca559749293c3439cf6f9c451ee89d72d6871f54c06cb0e0f1d2
SHA-256be174d2499f30c14fd488e87e9d7d27e0035700cb2ba4b9f46c409318a19fd97f0c07f742282dbd35519f7531259b1a36c86313e0a5a2cb5fe1dadcf1df9522d

Запуск dloTrojan​

На сцену опять выходит DLL hijacking.

Итак, вредоносная программа dloTrojan состоит из двух компонентов:
  • ChromeFrameHelperSrv.exe — невредоносный исполняемый файл (EXE), имеющий цифровую подпись Google Inc.,
  • chrome_frame_helper.dll — вредоносная динамическая библиотека (DLL).
После запуска исполняемого EXE-файла подгружается код вредоносной DLL. При этом библиотека проверяет имя процесса, в который она загружена, и оно должно соответствовать имени ChromeFrameHelperSrv.exe. В противном случае, вредоносный код завершит свое исполнение.

Далее библиотека расшифровывает вредоносный исполняемый файл, код которого внедряется в еще один запущенный процесс ChromeFrameHelperSrv.exe с использованием техники Process Hollowing.

Работа dloTrojan​

Вредоносная программа пытается получить данные значения с именем TID из одного из двух ключей реестра (это зависит от имеющихся привилегий в системе):
  • HKLM\Software\VS
  • HKCU\Software\VS
Если же значение в реестре отсутствует, создается один из указанных ключей реестра. В параметре TID прописывается строка из 16 произвольных символов, которую в дальнейшем можно рассматривать как ID зараженной системы.

Далее dloTrojan проверяет наличие подключения к сети в зараженной системе. Для этого она пытается установить соединение с www.microsoft[.]com.

Строки во вредоносной программе зашифрованы методом простого сложения по модулю двух с одним байтом (отличается для различных строк).

Затем малварь расшифровывает адрес сервера управления. В зависимости от конфигурации вредоносная программа может иметь несколько адресов, в текущей конфигурации адрес сервера управления один.

Теперь dloTrojan устанавливает соединение с сервером управления. Если подключиться к серверу не удалось, малварь пытается найти настроенные прокси-серверы одним из способов:
  • вызывает функцию InternetQueryOptionA() с параметром INTERNET_OPTION_PROXY и получает список доступных прокси-серверов;
  • достает из реестра HKEY_USERS\<user_SID>\Software\Microsoft\Windows\CurrentVersion\Internet Settings из параметра ProxyServer.
Далее на сервер управления отправляется следующая информация о зараженной системе:
  • имя компьютера,
  • имя пользователя;
  • IP-адреса зараженной системы,
  • сведения о версии операционной системы,
  • принадлежность компьютера к рабочей группе или домену,
  • идентификатор оригинального производителя оборудования — результат работы функции GetOEMCP(),
  • ID, хранимый в реестре.
Данные передаются на сервер управления в зашифрованном виде.

В конце концов вредоносная программа получает возможность исполнять команды сервера управления: запускать cmd-шелл, создавать и удалять файлы, собирать информацию о дисках.

Перечень возможных команд приведен в табл. 10.

КомандаНазначение
0x1Получить количество миллисекунд, прошедших с момента запуска системы
0x2Запустить сmd-шелл
0x3Выполнить команду через cmd-шелл
0x4Закрыть cmd-шелл
0x5Проверить существование файла. Если файла нет, создать его
0x6Создать файл
0x7Получить данные файла (размер, временные метки)
0x8Прочитать файл
0x9Получить информацию о дисках C–Z (тип, объем свободной памяти)
0xAПеречислить файлы
0xBУдалить файл
0xCПереместить файл
0xDЗапустить процесс
0xEСделать скриншот
0xFПеречислить сервисы
0x10Запустить сервис
0x11Перечислить процессы и модули
0x12Завершить процесс, затем перечислить процессы и модули
0x13Закрыть сокет

И еще несколько программ, которые мы раскопали в ходе расследования​

Вернемся к общедоступным утилитам, найденным на зараженных системах. С их помощью можно залезть в систему, утащить конфиденциальные данные и выполнить другие вредоносные действия. Ловите краткое описание каждой.

GetPassword​

GetPassword предназначена для получения паролей из зараженной системы. Раньше исходный код утилиты лежал в репозитории MimikatzLite, но сейчас его почему-то удалили. Можем только поделиться скриншотом на рис. 9.

cr-qahzgb3_mee7ijzhcfof8s7q.png

Рис. 9. Скриншот работы утилиты GetPassword

Quarks PwDump​

Еще одна утилита для извлечения паролей из ОС Windows.

Исходный код можно найти в репозитории 0daytool-quarkspwdump. Скриншот утилиты приведен на рис. 10.

nfom5mllddcdyo7dgc6qwgqdxc8.png

Рис. 10. Скриншот работы утилиты Quarks PwDump

wpmd v 2.3 (beta)​

wpmd (windows password and masterkey decrypt) также предназначена для получения паролей в ОС Windows. Увы, источник мы не нашли, поэтому можем только показать скриншот (рис. 11).

mfxe0zr_ipv4w2uqba6nws9c7h0.png

Рис. 11. Скриншот работы утилиты wpmd v 2.3 (beta)

os.exe​

os.exe позволяет определить версию ОС Windows (рис. 12). Источник тоже не найден :(

6ty97ffwwizmxa9ywf2cex0ey5k.png

Рис. 12. Скриншот работы утилиты os.exe

nbtscan 1.0.35​

nbtscan — утилита командной строки, предназначенная для сканирования открытых серверов имен NETBIOS в локальной или удаленной TCP/IP-сети. Она обеспечивает поиск открытых общих ресурсов (рис. 13). Доступна на ресурсе Unixwiz.net.

znwrlmmowbklzywkxrexgzahs6g.png

Рис. 13. Скриншот работы утилиты nbtscan

Это расследование в очередной раз убедило нас, что даже заезженные и понятные техники способны доставить жертвам много неприятностей. Злоумышленники могут годами копаться в IT-инфраструктуре жертвы, которая и подозревать ничего не будет. Думаем, выводы вы сделаете сами :)

PlugX (SHA256: EXE, DLL, Shell-code)
Код:
3124fcb79da0bdf9d0d1995e37b06f7929d83c1c4b60e38c104743be71170efe
2f81cf43ef02a4170683307f99159c8e2e4014eded6aa5fc4ee82078228f6c3c
0c831e5c3aecab14fe98ff4f3270d9ec1db237f075cd1fae85b7ffaf0eb2751e

94004d84edf72720b270a49bf673c98aba2e4da65dc5a8542566cec073ee7812
e3fcb055cf50884a192aca2f958f899eb0033c1a1b923deb7d56baaca9d7122d
55efc36799631f12f54dfa574aafa1c8e1d4d1b659c159253987d24fecc32185

18a98c2d905a1da1d9d855e86866921e543f4bf8621faea05eb14d8e5b23b60c
68d58f68591a8306b15de98913897a34bc96ffc6db10e4113144cc54aaa0dda4
5697c9086fd5abd030ceb937c396c6893ecc8d4a848785fac61ce13d5740edca

3124fcb79da0bdf9d0d1995e37b06f7929d83c1c4b60e38c104743be71170efe
97ad6e95e219c22d71129285299c4717358844b90860bb7ab16c5178da3f1686
81e53c7d7c8aa8f98c951106a656dbe9c931de465022f6bafa780a6ba96751eb
PlugX-executor: (SHA256: EXE)
Код:
2f73a3c7fa58d93d60d3011724af2c7beddc39469c0613ce097657849ab32e82
43f1bd29811393476320542473d6c1dedea172a62ccf1a876a04a53ed876f3a4
nccTrojan (SHA256: EXE, DLL)
Код:
07d728aa996d48415f64bac640f330a28e551cd565f1c5249195477ccf7ecfc5
3be516735bafbb02ba71d56d35aee8ce2ef403d08a4dc47b46d5be96ac342bc9
dnsTrojan (SHA256: EXE)
Код:
826df8013af53312e961838d8d92ba24de19f094f61bc452cd6ccb9b270edae5
dloTrojan (SHA256: EXE, DLL)
Код:
be174d2499f30c14fd488e87e9d7d27e0035700cb2ba4b9f46c409318a19fd97
f0c07f742282dbd35519f7531259b1a36c86313e0a5a2cb5fe1dadcf1df9522d

Автор BiZone_team
Источник https://offzone.moscow/ru/
 


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