В прошлом и нынешнем году коллеги из «Лаборатории Касперского» и BI.Zone рассказывали о группировке GOFFEE (Paper Werewolf). В конце мая мы снова фиксируем ее активность, но немного в другом обличии — можно сказать, в новой овечьей шкуре. Я Никита Полосухин, ведущий аналитик центра мониторинга и реагирования на кибератаки RED Security SOC, и я расскажу, как сейчас действует GOFFEE и как обнаружить их присутствие в инфраструктуре.

Что изменилось?
Итак, сначала к главному:
У вредоносного документа во вложении фишингового письма имеется уязвимость загрузки удаленных шаблонов СVE-2017-0199. Полезная нагрузка, как и ранее, находится в самом документе, закодированная в base64, но вредоносный макрос, который запускает ее, теперь скачивается в шаблоне.
PowerModul загружает основную нагрузку в память через [System.Reflection.Assembly]::Load, что не встречалось в атаках этой группировки в прошлом.
А теперь — разбор.
Этап 1. Анализ фишинга
Как и ранее, все начинается с письма с вложением. Мы увидели, как сотрудникам компании-жертвы были направлены два документа Microsoft Word:



При открытии файлов применяется уязвимость CVE-2017-0199 и с C2-сервера скачивается шаблон с внедренным макросом:


Этап 2. Анализ макроса
Сам шаблон не представляет никакой ценности, а вот макрос следует изучить:

Дампим его код через команду oledump -s A3 -v curling > macros.txt
На старте макрос извлекает из документа полезную нагрузку, начиная с поля MS_Office_RSA_Digital_Signature. При этом она разделена на две части с помощью символов CONTROL_PKI. Затем происходит ее декодирование из base64 (внутри макроса «зашита» нужная функция) и запись частей полезной нагрузки в два элемента IconStorageConfig.cfg и IconStorageConfig.cfg.hta в директорию профиля пользователя:

Далее макрос записывает hta-файл в ключ HKCU\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\LOAD:

Стандартная техника для GOFFEE.
Этап 3. Анализ hta-файла

Как можно видеть, hta-файл обфусцирован с использованием Obfuscator.io. Деобфусцировав скрипт, получаем:

Здесь мы видим стандартную матрешку для GOFFEE. Сначала создается файл C:\\Users\\localadmin\\IconStorageConfig.cfg.jse. А теперь следите за руками: он запускается через cscript, который через wmi создает новый процесс, открывающий powershell, который запускает содержимое cfg-файла.
Идем в cfg-файл — там base64 payload:
$content="QWRkLVR5cGUgQCI0ZW0uTmV<Здесь еще много base64>VwdGlvbjsNCn0="; $bytes = [System.Convert]::FromBase64String($content);$code = [System.Text.Encoding]::UTF8.GetString($bytes);iex $code;
Деобфусцировав скрипт, мы выяснили, что он:
Отключает проверку SSL сертификатов через настройку политики сертификатов.
Проверяет mutex 87325266-ddce-4bf7-b428-e13abbbe982b и останавливается при его наличии. Мы предполагаем, что это значение может быть уникальным для каждой жертвы.
Собирает имя пользователя и хостнейм, кодирует их в base64 и разделяет знаком /.
Производит запрос на C2 по следующему URL:
https://TributeTropic[.org/thickfog/
87325266-ddce-4bf7-b428-e13abbbe982b/<здесь значение, полученное на этапе 3>. Интересно, что в документе, где шаблон загружался с другого C2-сервера, обращения полезной нагрузки все равно уходили на этот же ресурс.Ждет ответ. Без него скрипт «спит» случайное количество секунд (от 26 до 37) и затем повторяет запрос. Получив ответ, раскодирует его из base64 и запускает через [System.Reflection.Assembly]::Load в памяти. Таким образом, полезная нагрузка — это исполняемый .Net-код.
Получаем следующий Kill Chain:

Советы по противодействию
Используйте классические хостовые и почтовые антивирусы с актуальными базами;
Обязательно инструктируйте сотрудников о правилах обращения с электронной почтой и внедряйте механизмы автоматического оповещения пользователей о подозрительности писем (зашифрованные архивы, внешние отправители и т. д.);
Для того чтобы быть уверенным в своей защите 24/7, подключайте команду SOC, которая оперативно пресечет подобные попытки атак на организацию.
Индикаторы компрометации
SHA256
ed41a4b1f989839a5ad97aaff30dbdf28aeb4fde6d3068a96cb83da27d298d5d FSTEK_100_233_ot_22_05.docx
580839bf75b910a2251f21f1cea006c6f1e84fcde03b696a7e8b163278042b80 TO2.docx
1dcbf2774f505b45368ff0541da4117dce0e4763b85d9ccba20e7298b2425ec9 curling
2318600c7bd150e8bf06b0301635598cc799ce2a9a60308027eb63a033f97ceb IconStorageConfig.cfg
9641870ec560c0463d86f482cbd1cb6ea34c3db23d40ad80833cd59739cd33b6 IconStorageConfig.cfg.hta.
677e4f461dca20c6e24efbefd47b115722b2eafbd2dc00718c08a393e687bd80 IconStorageConfig.cfg
faf35266966ce5432b312d4120cafd95f1c6187db0f1f4b6d6c579c339d66f55 IconStorageConfig.cfg.hta
Filename
C:\Users\<username>\IconStorageConfig.cfg.hta
C:\Users\<username>\IconStorageConfig.cfg
C:\Users\localadmin\IconStorageConfig.cfg.jse
Registry
HKCU\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\
LOAD = C:\Users\<username>\IconStorageConfig.cfg.hta
C2
tributetropic[.org
barrelize[.org
URL
\thickfog\[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}
pnmv
когда-то давно, была шутка о вирусах на php, 1с, vba...
вот мы и дожили до этого светлого будущего.