Финальный ответ модели
Архитектура: 64-битный PE-файл, скомпилированный из Rust (подтверждено по строкам RUST_BACKTRACE, _RNvMn... Rust-модулям). Сложность: 1278 функций, 806 строк, 8 сегментов.
TLS-колбэки выполняются до entry (CRT-инициализация) — не декомпилируются.
---
| Параметр | Значение |
|---|---|
| Формат | PE для AMD64 |
| Image Base | 0x140000000 |
| Entry Point | start @ 0x140045A50 (MinGW CRT startup) |
| Сегменты | .text, .rdata, .idata, .rdata, .buildid, .data, .pdata, .tls |
Импортируемые модули:
KERNEL32 (99), USER32 (26), ADVAPI32 (16), api-ms-win-crt-runtime-l1-1-0 (14), WS2_32 (13), WINMM (8), WINHTTP (8), GDI32 (7), bcrypt (6), api-ms-win-crt-stdio-l1-1-0 (6), ole32 (4), gdiplus (4)---
sub_14000F9D1 (0x14000F9D1, 3515 байт)Целевые приложения:
firefox.exe) — строка "[Firefox] Not running.\n[Firefox] Reading cookies (plaintext)..."chrome.exe) — строка "[Chrome] Not running.\n[Chrome] Decrypting cookies..."msedge.exe) — строка "[Edge] Not running.\n[Edge] Decrypting cookies..."Механизм работы:
FindFirstFileA/FindNextFileACryptUnprotectData (CRYPT32) для decrypt cookie data[timestamp, path_hash, decrypted_data]Строки:
"[Chrome] Not running.\n[Chrome] Decrypting cookies..." @ 0x140080120"[Firefox] Not running.\n[Firefox] Reading cookies (plaintext)..." @ 0x14008029a"Cannot decrypt master key.\n" @ 0x1400801dd"chrome.exe" @ 0x140080116"msedge.exe" @ 0x1400801f8---
sub_140003CA0 (0x140003CA0, 35822 байт)API-вызовы (из capability_map):
| API | Кол-во вызовов | Назначение |
|---|---|---|
CreateProcessA | 5 | Запуск процессов |
OpenProcess | 2 | Открытие процессов |
RegCreateKeyExA | 1 | Создание реестровых ключей |
RegDeleteKeyA | 2 | Удаление ключей |
RegDeleteValueA | 4 | Удаление значений |
RegOpenKeyExA | 9 | Открытие ключей |
RegQueryValueExA | 4 | Чтение значений |
RegSetValueExA | 4 | Запись значений |
Персистентность:
Software\\Microsoft\\Windows\\CurrentVersion\\Run @ 0x14007FD88HKCR, HKEY_CLASSES_ROOT, HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE @ 0x1400806a8API-вызов CreateProcessA с флагом SW_HIDE (0x0) — запускает скрытые процессы.
---
sub_140001000 (0x140001000, 2223 байт)Инициализация:
"Initializing HTTP transport..." @ 0x14007db29
"HTTP transport initialized." @ 0x14007db47
"Entering beacon loop..." @ 0x14007db62
"Registered. Entering main loop." @ 0x140080dfb
WinHTTP API:
WinHttpOpenRequest с флагом WINHTTP_FLAG_BYPASS_PROXY_CACHE (0x100)WinHttpSendRequest → WinHttpReceiveResponse → WinHttpReadDataBeacon loop:
while !(sub_1400128AB()) {
Sleep(5000 << v7) // 5000ms - 120000ms интервал
WinHttp...
}
Обработка ответов C2:
sub_140003CA0 для выполнения команд---
| Браузер | Статус-строка |
|---|---|
| Firefox | "[Firefox] Not running.\n[Firefox] Reading cookies (plaintext)..." |
| Chrome | "[Chrome] Not running.\n[Chrome] Decrypting cookies..." |
| Edge | "[Edge] Not running.\n[Edge] Decrypting cookies..." |
Механизм:
.exe браузеров в AppDataCryptUnprotectData (CRYPT32)| Приложение | Строка |
|---|---|
| Discord | "Discord is not running.\nCannot get AppData.\n=== Discord ===" @ 0x14007FFE |
| Telegram | "Telegram is not running.\n" @ 0x140080331 |
| Механизм | Реализация |
|---|---|
| Registry Run | Software\\Microsoft\\Windows\\CurrentVersion\\Run |
| Registry Keys | HKCR, HKCU, HKLM через RegCreateKeyExA |
| Process | CreateProcessA с SW_HIDE |
| Параметр | Значение |
|---|---|
| Протокол | WinHTTP (HTTP/HTTPS) |
| Флаги | WINHTTP_FLAG_BYPASS_PROXY_CACHE (0x100) |
| Интервал | 5000ms - 120000ms (настраиваемый) |
| Чанки | 8 байт данных |
---
| Тип | Значение |
|---|---|
| String | "[Firefox] Not running.\n[Firefox] Reading cookies (plaintext)..." |
| String | "[Chrome] Not running.\n[Chrome] Decrypting cookies..." |
| String | "[Edge] Not running.\n[Edge] Decrypting cookies..." |
| String | "Discord is not running.\nCannot get AppData.\n=== Discord ===" |
| String | "Software\\Microsoft\\Windows\\CurrentVersion\\Run" |
| String | "Initializing HTTP transport..." |
| String | "Entering beacon loop..." |
| String | "RUST_BACKTRACE" (Rust-скомпилированный бинарник) |
| API | CryptUnprotectData (CRYPT32) |
| API | WinHttpOpenRequest |
| API | WinHttpSendRequest |
| API | WinHttpReceiveResponse |
| API | WinHttpReadData |
| API | CreateProcessA |
| API | OpenProcess |
| API | RegCreateKeyExA |
| API | RegSetValueExA |
| API | RegDeleteKeyA |
| API | RegDeleteValueA |
| API | RegOpenKeyExA |
| API | RegQueryValueExA |
| API | RegDeleteValueA |
| API | WinHttpOpenRequest |
| API | WinHttpSendRequest |
| API | WinHttpReceiveResponse |
| API | WinHttpReadData |
| API | CreateProcessA |
| API | OpenProcess |
| API | RegCreateKeyExA |
| API | RegSetValueExA |
| API | RegDeleteKeyA |
| API | RegDeleteValueA |
| API | RegOpenKeyExA |
| API | RegQueryValueExA |
| Тип | Поведение |
|---|---|
| Registry | Запись в Software\\Microsoft\\Windows\\CurrentVersion\\Run |
| Registry | Создание/удаление ключей HKCR, HKCU, HKLM |
| Process | Запуск скрытых процессов через CreateProcessA |
| Network | HTTP-запросы к C2-серверу |
| File | Чтение ковариантных данных браузеров |
| API | Вызов CryptUnprotectData |
---
Это Rust-скомпилированный credential/cookie stealer с функциями:
WINHTTP_FLAG_BYPASS_PROXY_CACHE)Архитектура Rust подтверждается по:
RUST_BACKTRACE_RNvMn...Result-паттерныalloc::string::StringГлавный вызов: sub_140003CA0 (35KB) — оркестратор всех операций, sub_14000F9D1 (3.5KB) — браузер-крадер, sub_140001000 (2.2KB) — C2-белек.