Продолжаем делиться нашими исследованиями: сегодня рассказываем об атаке, основанной на фишинговой рассылке вредоносного программного обеспечения DarkWatchman (Buhtrap).
Часть первая
На рисунке 1 — фрагмент фишингового письма. В первую очередь определим почтовый сервер отправителя и соотнесем его с электронным адресом на предмет подмены (spoofing). Для этого просмотрим заголовок электронного письма — с помощью стандартных средств Outlook («Файл» → «Свойства») или специализированных программ.
Видим, что рассылка идет с сервера ponyexpress.website и соответствует электронному адресу отправителя; IP-адрес — 195.19.93.148 (рисунок 2). Далее можно получить информацию об этом IP-адресе, например с помощью AbuseIPDB (рисунок 3).
Вложение в электронном письме — это ZIP-архив, содержащий ВПО. Исследуемый образец DarkWatchman — это SFX-архив с инсталляционным скриптом и основным модулем на JavaScript. В ресурсах добавлена иконка PDF-файла, по умолчанию включено «Скрывать расширение для зарегистрированных типов файлов» — это позволяет обмануть пользователя.
Посмотреть ресурсы исполняемого файла можно при помощи программы ProcessHacker (рисунок 4), получить сведения о файле (о компиляторе, языке программирования, используемом для написания ПО, и других параметрах) — при помощи Detect It Easy, PE-bear и пр. (рисунок 5).
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍2⚡1
Часть вторая
Для анализа ВПО, упакованного в SFX-архив, можно воспользоваться WinRAR — увидим сценарий, который будет выполнен при запуске ВПО (рисунок 6). Сценарий указывает на добавление исключения для системного диска при помощи PowerShell и на запуск файла 4157934657 при помощи
wscript. Так как wscript отвечает за запуск скриптов, можно предположить, что 4157934657 — скрипт. Извлечем его из архива и проанализируем.Сокрытие строк реализовано через XOR. Для анализа можно использовать онлайн-компилятор и поэтапно изучить строки. Сначала разберем часть скрипта с вычислением ключа для расшифровки основного модуля (фрагмент — на рисунке 7).
Для расшифровки используем ресурс OneCompiler. На рисунке 8 — метод расшифровки (слева) и полученные строки (справа). Теперь поправим скрипт, записав полученные строки.
Далее преобразуем вредоносный скрипт для расшифровки основного модуля из переменной
var i1a0a864a="db460075cc43160ac6420b6edb460075df42150acf460130f24c172c…";. Расшифровку проведем также через OneCompiler (рисунок 9). Анализ показал, что ВПО многофункционально. Наиболее интересны алгоритм генерации доменов (DGA) и использование DynamicWrapperX (рисунок 10).
Также ВПО умеет работать с WinAPI при помощи DynamicWrapperX с использованием
dynwrapx.dll. Суть алгоритма: в ответе командного сервера могут быть дополнительные модули; ВПО выделяет память в процессе, записывает в нее команды (код) от командного сервера и исполняет их при помощи WinAPI.— очистка журналов событий;
— удаление теневых копий;
— использование планировщика заданий для автозагрузки;
— очистка истории браузеров (Chrome, Yandex, Firefox, Edge);
— загрузка и исполнение файлов;
— работа с командной строкой;
— кейлоггер.
Атака начинается с фишингового письма с вложением: ВПО доставляется через SFX-архив и запускается скриптами. Для избежания детектирования автоматизированными СЗИ и усложнения статического анализа DarkWatchman использует XOR-шифрование строк, а для стабильного сетевого взаимодействия — генератор доменных имен. И конечно, все это дополняется большим набором функций для взаимодействия с оператором.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👏2🔥1
Злоумышленники + AutoIt =❓
👋 Всем привет! На связи снова команда UserGate uFactor.
В нашей третьей статье на Хабре мы рассмотрели, как злоумышленники применяют язык AutoIt для создания ВПО, — а здесь поделимся самым важным.
💻 AutoIt — язык автоматизации для Windows. Он позволяет создавать скрипты, имитирующие действия пользователя (например, текстовый ввод, клики, реакции на события) и подходит для автоматизации рутинных задач, например для установки ПО на множество ПК.
💀 Рассмотрим экземпляр вредоноса
Для анализа PE-файла мы воспользовались Detect It Easy и увидели, что используется библиотека AutoIt. Для декомпиляции применили AutoIt Extractor. Так как файл 32-битный, использовали экстрактор x86.
AutoIt Extractor показал, что в исполняемом файле находятся скрипт и бинарный файл. При сохранении файлы были названы следующим образом:
—
—
⚙️ Деобфускация
Скрипт
На рисунке 3 по двум последним строкам видно: будет выделена память и в нее запишутся данные из переменной
Теперь необходимо деобфусцировать значения в переменной
⚙️ Преобразование бинарного файла
По коду видим, что значения будут интерпретированы как
Получившийся бинарный файл отладим в OllyDbg с помощью нашей самописной «подсобки». Она открывает скачанный бинарный файл, читает байты в память и переходит на начальный адрес. Также при переходе на начальный адрес необходимо заменить значение в регистре на точку входа в шеллкод (рисунок 5).
В самом начале в память записывается ключ расшифровки (рисунок 6). Алгоритм шеллкода — получение адресов WinAPI. Далее расшифровывается файл
👍 Вывод
Файл
🕵️♀️ Так, вредонос на AutoIt применяет следующие техники уклонения от автоматизированных СЗИ:
— скриптовый сценарий в PE-файле;
— обфускацию строк путем подстановки лишних символов;
— выделение памяти и исполнение шеллкода;
— дешифровку полезной нагрузки с использованием XOR-ключа;
— внедрение в легитимный процесс (svchost) и исполнение файла
➡️ Прочитать полную версию исследования можно в нашей статье на Хабре 💙
В нашей третьей статье на Хабре мы рассмотрели, как злоумышленники применяют язык AutoIt для создания ВПО, — а здесь поделимся самым важным.
Для анализа PE-файла мы воспользовались Detect It Easy и увидели, что используется библиотека AutoIt. Для декомпиляции применили AutoIt Extractor. Так как файл 32-битный, использовали экстрактор x86.
AutoIt Extractor показал, что в исполняемом файле находятся скрипт и бинарный файл. При сохранении файлы были названы следующим образом:
—
1.txt — для скриптового сценария;—
2.bin — для бинарного файла.Скрипт
1.txt содержит обфусцированные строки (рисунки 1 и 2). Если внимательно их изучить, можно увидеть, что обфускация совсем проста (в строках последовательность символов dycw заменяется пустым значением). Для деобфускации понадобится текстовый редактор, например Sublime.На рисунке 3 по двум последним строкам видно: будет выделена память и в нее запишутся данные из переменной
$yzbwapzvk, а далее осуществится переход на данные по адресу, смещенному на 9136 (dec), — то есть запустится шеллкод.Теперь необходимо деобфусцировать значения в переменной
$yzbwapzvk, поэтому сначала данные необходимо преобразовать в одну строку (убрать лишние переносы $yzbwapzvk &=), далее — удалить из получившейся длинной строки dycw.По коду видим, что значения будут интерпретированы как
hex — на это указывает 0x в начале. Для преобразования строки в байты и сохранения в бинарный файл можно воспользоваться CyberChef (рисунок 4) или написать скрипт.Получившийся бинарный файл отладим в OllyDbg с помощью нашей самописной «подсобки». Она открывает скачанный бинарный файл, читает байты в память и переходит на начальный адрес. Также при переходе на начальный адрес необходимо заменить значение в регистре на точку входа в шеллкод (рисунок 5).
В самом начале в память записывается ключ расшифровки (рисунок 6). Алгоритм шеллкода — получение адресов WinAPI. Далее расшифровывается файл
Lityerses (рисунок 7), IAT заполняется адресами WinAPI, полученными ранее, запускается легитимный svchost и его адресное пространство перезаписывается кодом Lityerses.Файл
Lityerses — тот самый бинарный файл, извлеченный через AutoIt Extractor. Ключ для расшифровки — CAF24LGHR9ZJZAU7IC, для шифрования используется обычный XOR. Значения до расшифровки — на рисунке 8, расшифрованный файл — на рисунке 9.— скриптовый сценарий в PE-файле;
— обфускацию строк путем подстановки лишних символов;
— выделение памяти и исполнение шеллкода;
— дешифровку полезной нагрузки с использованием XOR-ключа;
— внедрение в легитимный процесс (svchost) и исполнение файла
Lityerses.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3🔥2⚡1👍1
Продолжаем делиться нашими исследованиями: сегодня поговорим о внедрении шеллкода в Microsoft Office и разберем старую, но до сих пор актуальную уязвимость CVE-2017-11882, связанную с работой компонента Microsoft Equation Editor (EQNEDT32.EXE).
Мы рассмотрим документ Excel — XML-файл, сжатый в ZIP-архив. Документы Excel могут быть бинарными, их формат — Compound Binary File Format. К бинарным форматам относятся Excel 97-2003, Excel 5.0/95.
На рисунке 1 — фрагмент содержимого вредоноса в hex-редакторе. Сигнатура
50 4B указывает на то, что это формат ZIP. Для первичного анализа воспользуемся утилитой OfficeMalScanner. Команда Inflate показывает содержимое документа и сохраняет файлы в C:\Users\<username>\AppData\Local\Temp\DecompressedMsOfficeDocument.На рисунке 2 видно, что в нашем образце
RFQPC25-1301.xlsx есть подозрительный файл Q5.8ZIBJ. Хотя утилита OfficeMalScanner сохранила содержимое исследуемого файла, для примера извлечем его другим способом. Сохраним файл
RFQPC25-1301.xlsx и изменим его расширение на .zip, чтобы просмотреть вложенное содержимое, а именно файл Q5.8ZIBJ. На рисунке 3 выделена сигнатура D0 CF 11 E0 A1 B1 1A E1 (Compound Binary File Format) — именно этот файл эксплуатирует CVE-2017-11882.Поскольку CVE-2017-11882 связана с переполнением буфера стека и позволяет выполнить шеллкод, необходимо найти его точку входа и понять, какие команды он будет выполнять. Вернемся к
OfficeMalScanner, найдем точку входа и попробуем применить перебор ключей XOR для расшифровки основного тела шеллкода.Утилита на рисунке 4 указывает на то, что есть две точки входа в шеллкод (выделены красным). Перебор ключей не дал результатов — скорее всего, ключ и шифрование не самые простые.
Для отладки шеллкода используем самописную подсобку, которая открывает файл
download.dat, считывает его и переходит посредством call на начальный адрес считанных байт. Переименовав файл Q5.8ZIBJ в download.dat, запускаем в отладчике подсобку. Чтобы попасть на точку входа в шеллкод, необходимо пересчитать адрес (рисунок 5). Прибавим к начальному адресу адрес, полученный при помощи OfficeMalScanner (адреса ee554, ee593; рисунок 6). Отметим, что результат выполнения и данные одинаковы вне зависимости от того, какой адрес мы выберем (рисунок 7).После анализа кода становится понятно, что к основной части применен XOR, ключ которого рассчитывается через сложение и умножение для 4 байт и сдвигается на 4 байта.
Для быстрой расшифровки поставим точку останова на финальную команду перед исполнением и запустим код в отладчике. На рисунке 8 — следующие строки расшифрованного шеллкода:
LoadLibraryW
GetProcAddress
ExpandEnvironmentStringsW
%APPDATA%\word.exe
UrlMonURLDownloadToFileW
http://combo.s3.eu-north-1[.]amazonaws.com/jekonbary2.1.exe
WideCharToMultiByte
WinExec
ExitProcess
GetProcAddress и LoadLibraryW.ExpandEnvironmentStringsW. Передав ей аргумент %APPDATA%\word.exe, получает значение %APPDATA%\Roaming\word.exe.UrlMonURLDownloadToFileW скачивает основной модуль, расположенный по адресу http://combo.s3.eu-north-1[.]amazonaws.com/jekonbary2.1.exe, и сохраняет его под именем word.exe.WinExec.Файл word.exe — это скомпилированный скриптовый сценарий AutoIt. После извлечения скрипта мы установили:
561840652.9A6VBEF324RR3VT3Z8.C:\Users\<username>\AppData\Local\Temp с именем Mazatl, после этого шеллкод запускает легитимные процессы и переписывает секцию .code вредоносным расшифрованным кодом.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7⚡3👏3👾2