В мире реагирования на инциденты информационной безопасности (ИБ) сценарий, когда администратор в панике переустанавливает операционную систему на скомпрометированной рабочей станции до сбора доказательств, считается наихудшим вариантом развития событий. Однако, как показывает свежий кейс, даже после такого "заметания следов" специалисты могут восстановить детальную картину атаки.
Описание
В конце февраля 2026 года команда по расследованию инцидентов столкнулась с классической атакой на бухгалтера: фейковое обновление Windows и параллельные несанкционированные операции в интернет-банке. Уникальность ситуации заключалась в том, что к моменту начала расследования 90% цифровых улик, включая журналы событий, тело вредоносной программы и дамп оперативной памяти, были уничтожены переустановкой системы. Тем не менее, анализ оставшихся 10% данных - свободных секторов диска - позволил полностью реконструировать сложную многостадийную атаку с использованием современных троянов и сервисов доставки вредоносного ПО.
Ключом к успеху стал нетривиальный подход к анализу сырого диска объёмом 930 ГБ. Вместо поиска по целым файлам, которые были утрачены, специалисты применили полнодисковое извлечение строк с последующим паттерн-матчингом по двенадцати категориям индикаторов компрометации. Этот метод позволил выудить из неиспользуемых областей накопителя фрагменты кода, конфигурации и команды. Однако первая же проблема, с которой столкнулись аналитики, - лавина ложноположительных срабатываний. Около 96% совпадений по названиям вредоносных семейств, таких как FormBook или Buhtrap, на самом деле оказались строками из сигнатурных баз антивируса Windows Defender, хранящихся в VDM-файлах. Фильтрация данных по дисковым смещениям позволила отделить эти легитимные артефакты от реальных следов атаки, что является критически важным шагом для любого подобного расследования.
Настоящие улики были обнаружены среди других категорий. Например, паттерн поиска токенов Telegram Bot API выдал 262 кандидата, но после тщательной верификации лишь 23 из них оказались реальными ботами, используемыми для эксфильтрации данных. Контекст их использования, найденный в JavaScript-фрагментах, указывал на промышленный масштаб операции: злоумышленники применяли разнообразные схемы обфускации, используя переменные с именами "telegram_bot_id", "apikey" или просто "token". Все эти боты, судя по проверке через API, к моменту анализа были отключены, но единственный обнаруженный "chat_id" (6481270908) указывал на конечную точку сбора украденной информации. Ещё более ценным источником доказательств стал файл гибернации "hiberfil.sys". Несмотря на его перезапись новой ОС, в глубине диска сохранились фрагменты данных из оперативной памяти предыдущей системы. Их анализ подтвердил, что вредоносный код не просто лежал на диске, а активно исполнялся. В дампе памяти были найдены те же Telegram-токены, фрагменты JavaScript для отправки данных, а также Base64-кодированный заголовок фишинговой страницы Bank of America, что свидетельствовало о международном характере web-инжектов трояна.
Собрав все фрагменты воедино, эксперты восстановили полную цепочку кибератаки, описанную в отчёте. Началом послужила классическая социальная инженерия по схеме ClickFix: жертва попадала на сайт с фейковой CAPTCHA, где JavaScript копировал в буфер обмена команду запуска "mshta.exe" для загрузки файла с подозрительного домена. Этот файл, имевший расширение ".mp4", являлся полиглотом - он содержал как легитимный заголовок исполняемого файла PE, так и внедрённый HTA-код. Инструмент "mshta", предназначенный для выполнения HTML-приложений, интерпретировал вредоносный скрипт, который, в свою очередь, запускал сильно обфусцированный PowerShell-код. На этой стадии, известной как Emmenhtal (или PEAKLIGHT), происходило файловое исполнение полезной нагрузки прямо в оперативной памяти с использованием рефлективной загрузки сборок .NET и обходом механизма AMSI для защиты от вредоносных скриптов. Итоговым payload оказался многофункциональный банковский троянец, включавший модули для внедрения кода в банковские страницы, перехвата ввода с клавиатуры, записи экрана, кражи данных из Telegram и даже рефлективной загрузки Mimikatz для извлечения учётных данных из памяти Windows. Для эксфильтрации данных использовались не только Telegram-боты, но и туннели ngrok и прямые HTTP-запросы на подконтрольные злоумышленникам домены.
Атрибуция подобных атак сегодня осложняется моделью Malware-as-a-Service. Emmenhtal, впервые детально описанный в 2024 году, представляет собой сервис по доставке вредоносного ПО, который могут арендовать различные группировки. Техники, использованные в этой атаке, такие как связка ClickFix для первоначального доступа и файловое исполнение через PowerShell, согласно статистике Microsoft, были главным вектором атак в 2025 году. Этот инцидент наглядно демонстрирует несколько важных уроков для специалистов по безопасности.
- Даже после катастрофического для расследования действия - переустановки ОС - данные могут быть восстановлены из свободных секторов и фрагментов системных файлов.
- Критически важно учитывать и фильтровать ложноположительные срабатывания от сигнатурных баз антивирусов при анализе сырых дисков.
- Инфраструктура Telegram, благодаря своей доступности и шифрованию, стала стандартным каналом управления для злоумышленников, что требует соответствующего мониторинга корпоративного трафика.
Для предотвращения подобных атак эксперты рекомендуют жёстко ограничивать использование таких легитимных, но часто злоупотребляемых инструментов, как "mshta.exe" и PowerShell, с помощью политик AppLocker или WDAC, а также обеспечивать строгую сегментацию сети для рабочих станций, имеющих доступ к критическим финансовым системам.
Индикаторы компрометации
IPv4
- 182.227.90.53
- 185.215.113.43
- 188.114.96.3
- 188.114.97.3
- 88.151.192.165
URLs
- 816e-182-227-90-53.ngrok.io/open.dotm
- klipderiq.shop/kongo.mp4
- klipderiq.shop/sh
- klipjaqemiu.shop/web44.mp4
- savecoupons.store/web44.mp4
MD5
- 40ffda51bd6a87d788cd5cd17275ab87
SHA1
- 8ac10f67e882d79b31df278f95a2a72fc1283b06
SHA256
- 4864e60175ec2fb6f2724c0830c3bf09c043d327c5824e77c8c2a8b2e077fdcf
- 4baabdbe96a16716454a62abd7a7105d8b3a775c2428a0052d9738b0412a32c6
- 4ea8645ab0eba6e65b3d486c5533cb2c04058d0ddab72a43530029470e5cafde
- 82a238bf4f5d618063813b35f65727441d7c6f634a860be51eac3127fac4047a
- c5061e9b8a641f04f3ca2d1f1c69e47b918d16ef064383648b5c19f72e53dd5b
YARA
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | rule Emmenhtal_Polyglot_MP4_HTA { meta: description = "Emmenhtal polyglot: PE header + embedded HTA + PowerShell" author = "IDEANIX LLC" date = "2026-03-14" hash = "4864E60175EC2FB6F2724C0830C3BF09C043D327C5824E77C8C2A8B2E077FDCF" mitre_attack = "T1218.005" strings: $mz = "MZ" at 0 $hta1 = "<hta:application" ascii nocase $hta2 = "hta:application id=" ascii nocase $ps1 = "powershell" ascii nocase $ps2 = "Reflection.Assembly" ascii nocase $fromchar = "String.fromCharCode" ascii condition: $mz and filesize > 100KB and (1 of ($hta*)) and (1 of ($ps*) or $fromchar) } |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | rule Telegram_Bot_JS_Exfiltration { meta: description = "JavaScript exfiltrating data via Telegram Bot API" author = "IDEANIX LLC" mitre_attack = "T1567" strings: $api1 = "api.telegram.org/bot" ascii nocase $api2 = "telegram.org/bot" ascii nocase $send1 = "/sendMessage" ascii nocase $send2 = "/sendDocument" ascii nocase $send3 = "chat_id=" ascii $token = /[0-9]{8,10}:AA[A-Za-z0-9_\-]{30,}/ ascii $js1 = "var telegram_bot_id" ascii nocase $js2 = "const apikey" ascii nocase $fetch = "fetch(" ascii condition: (1 of ($api*) and 1 of ($send*)) or ($token and 1 of ($js*)) or ($token and $fetch and $send3) } |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | rule Banking_Trojan_Webinjects_CBW { meta: description = "Banking trojan webinject configuration (.cbw format)" author = "IDEANIX LLC" mitre_attack = "T1185" strings: $cbw1 = "webinjects.cbw" ascii nocase $cbw2 = "webinject.log" ascii nocase $grab1 = "formgrabber" ascii nocase $grab2 = "formgrab" ascii nocase $inject1 = "data_inject" ascii nocase $inject2 = "data_before" ascii nocase $inject3 = "data_after" ascii nocase condition: (1 of ($cbw*) and 1 of ($grab*)) or (3 of ($inject*)) } |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | rule ClickFix_Fake_Captcha { meta: description = "ClickFix social engineering: fake CAPTCHA + clipboard injection" author = "IDEANIX LLC" mitre_attack = "T1204.001" strings: $verify = "verify()" ascii nocase $captcha1 = "life-captcha" ascii nocase $captcha2 = "i am not a robot" ascii nocase $captcha3 = "press Win+R" ascii nocase $clip1 = "texttocopy" ascii nocase $clip2 = "navigator.clipboard" ascii nocase $clip3 = "execCommand('copy')" ascii nocase $mshta = "mshta" ascii nocase $ps = "powershell" ascii nocase condition: (1 of ($captcha*) or $verify) and (1 of ($clip*)) and ($mshta or $ps) } |
Sigma
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | title: Mshta Execution with .shop Domain id: a1b2c3d4-e5f6-7890-abcd-ef1234567890 status: experimental description: mshta.exe loading from .shop TLD — Emmenhtal loader author: IDEANIX LLC tags: - attack.t1218.005 logsource: category: process_creation product: windows detection: selection_mshta: Image|endswith: '\mshta.exe' selection_shop: CommandLine|contains: '.shop' condition: selection_mshta and selection_shop level: critical |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | title: PowerShell Reflection Assembly with AES id: b2c3d4e5-f6a7-8901-bcde-f12345678901 status: experimental description: Fileless .NET loading with AES — Emmenhtal signature author: IDEANIX LLC tags: - attack.t1059.001 - attack.t1620 logsource: category: process_creation product: windows detection: selection_ps: Image|endswith: - '\powershell.exe' - '\pwsh.exe' selection_reflection: CommandLine|contains: - 'Reflection.Assembly' - 'Assembly::Load' selection_crypto: CommandLine|contains: - 'AesCryptoServiceProvider' - 'RijndaelManaged' condition: selection_ps and selection_reflection and selection_crypto level: critical |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | title: Telegram Bot API from Non-Browser Process id: c3d4e5f6-a7b8-9012-cdef-123456789012 status: experimental description: Non-browser Telegram Bot API traffic — data exfiltration author: IDEANIX LLC tags: - attack.t1567 logsource: category: proxy detection: selection_url: c-uri|contains: 'api.telegram.org/bot' filter_browsers: c-useragent|contains: - 'Mozilla' - 'Chrome' - 'Firefox' condition: selection_url and not filter_browsers level: high |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | title: AMSI Bypass Attempt in PowerShell id: c9d0e1f2-a3b4-5678-cdef-789012345678 status: experimental description: Common AMSI bypass techniques used by Emmenhtal author: IDEANIX LLC tags: - attack.t1562 logsource: category: ps_script product: windows detection: selection: ScriptBlockText|contains: - 'AmsiUtils' - 'amsiInitFailed' - 'AmsiScanBuffer' - 'SetValue($null,$true)' condition: selection level: critical |