В первой части мы рассмотрели, как в качестве промежуточного звена для загрузки основного вредоносного модуля могут применяться файлы MS-SHLLINK. Теперь рассмотрим сценарий, в котором загрузчиком выступает BAT-файл с обфускацией.
Рассмотрим сценарий доставки и исполнения основных вредоносных модулей.
Загрузчиком выступает командный BAT-файл. Злоумышленники не применяют сложную обфускацию, а меняют кодировку текста. Если мы попытаемся просмотреть содержимое с помощью стандартных средств, например через Notepad, то едва ли сможем что-либо прочитать (рисунок 5).
Чтобы получить читаемые данные, воспользуемся ресурсом CyberChef и плагином Text_Encoding_Brute_Force (рисунок 6). Скопируем полученную информацию в текстовый редактор и приведем код в читаемый вид.
1) попытка открыть любой PDF-файл в
%USERPROFILE%\Downloads (предположительно, для отвлечения);2) поиск процессов антивирусов;
3) загрузка файлов из интернета;
4) разархивация и перемещение;
5) запуск Python-скриптов;
6) загрузка дополнительных модулей;
7) размещение в автозапуске;
8) повторная загрузка и разархивация файлов.
Содержимое файла
startuppp.bat (рисунок 8), добавленного в автозапуск, также закодировано. На рисунке 9 — команды в файле после преобразования.Из команд в
startuppp.bat видно, что файл отвечает за запуск последних загруженных и разархивированных Python-скриптов. На момент исследования все файлы доступны и их можно скачать, например, через браузер.Рассмотрим содержимое архива
FTSP.zip (рисунок 10). Следует обратить внимание на файлы: fv1.py, fv2.py, fv3.py, fv4.py, fv5.py, fv6.py, yam1.py, yam2.py, yam3.py, yam4.py, yam5.py, yam6.py. При открытии любого из них видно, что это скомпилированные Python-файлы. Фрагмент содержимого yam1.py показан на рисунке 11.Воспользуемся ресурсом для декомпиляции PyLingual. Для примера возьмем файл
yam1.py, предварительно изменив расширение на .pyc (рисунок 12).Если внимательно изучить код на рисунке 12, можно увидеть
class Kramer. После анализа кода становится ясно, что к файлу применена обфускация с помощью приложения Kramer.Воспользуемся деобфускатором kramer-specter_deobf. После деобфускации получаем код на рисунке 13. Из кода видно, что скрипт расшифровывает шеллкод, записывает его в память и запускает. Алгоритм одинаков для всех файлов. Расшифрованный шеллкод можно получить способом, показанным на рисунке 14, и проанализировать в дизассемблере или отладчике.
При динамическом анализе становится ясно, что все указанные вредоносные файлы работают одинаково. После запуска, в зависимости от условий (рисунок 9), каждый модуль запускает
notepad.exe и внедряет в него код. В результате получаем шесть процессов notepad.exe с разными PID. Особенность заключается в применении техники parent process spoofing, из-за чего родительским процессом кажется Explorer.exe, что усложняет детектирование.К такому выводу приводит проведенный анализ. Мы разобрали два сценария: в одном использован LNK-файл, в другом — BAT-файл. В обоих случаях злоумышленники применяют техники сокрытия вредоносного кода для обхода автоматизированных СЗИ. И этого может быть достаточно для успешных атак. Детальный ручной анализ помогает выявить тактики и техники злоумышленников, получить дополнительные индикаторы компрометации — и построить надежную защиту.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👏2🔥1
Продолжаем делиться нашими исследованиями: сегодня рассказываем об атаке, основанной на фишинговой рассылке вредоносного программного обеспечения 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