Оценка модели по техническому чеклисту
полный = есть с доказательством, частично = ядро есть / детали потеряны, пропуск = в отчёте нет, хотя ground truth в бинаре есть.
Карта модулей агента
stealer, persist, keylog, webcam, screenshot, clipper, ransomware, socks5, postex, beacon.
Полная карта src/modules/*.rs: stealer, persist, keylog, webcam, screenshot, clipper, ransomware, postex, socks5, fun, network.
TLS-коллбэки = CRT, не payload
TlsCallback_* — rust std TLS, не вредоносная логика до entry.
TlsCallback_* явно как Rust/CRT runtime, не payload.
Транспорт WinHTTP
WinHttpOpen/Connect/OpenRequest/SendRequest/ReceiveResponse/ReadData.
WinHTTP-цепочка + флаг WINHTTP_FLAG_BYPASS_PROXY_CACHE.
Beacon-цикл с backoff и jitter
Entering beacon loop, 5000→60000 мс, GetTickCount64 jitter.
Регистрация с backoff 5s·2^n до 60s, затем main loop / поллинг задач.
Регистрация /api/rat/register?id=
Строки Registering with C2, Registered OK. sleep=.
Путь /api/rat/register?id= и строка Registering with C2.
C2 host/port с доказательством
Хост/порт из кода или строк (localhost допустим для тестовой сборки). Внешний домен/IP без доказательства = выдумка.
Нашёл 127.0.0.1:8443 из WinHttpConnect/a127001 — доказательство, тестовая сборка; внешний домен не выдуман.
User-Agent под Chrome
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36.
UA Chrome процитирован целиком.
Модуль SOCKS5
src/modules/socks5.rs + сырой WS2_32.
socks5.rs + Winsock API как локальный SOCKS5/пивот.
POST-выгрузка украденных данных
sub_140012584, POST, WinHttpReceiveResponse FAILED.
POST через sub_140012584 после каждой команды диспетчера.
Chrome cookies + Login Data + DPAPI
Google\Chrome\User Data, [Chrome] Decrypting cookies..., CryptUnprotectData.
Chrome cookies + DPAPI + детальный v20 AES-GCM.
Edge cookies
Microsoft\Edge\User Data, [Edge] Decrypting cookies....
Edge decrypting cookies.
Firefox cookies / logins
Mozilla\Firefox\Profiles, cookies.sqlite, logins.json.
Firefox plaintext cookies.sqlite.
Discord token
\discord\Local Storage\leveldb, Token (DPAPI):.
Discord tokens / LevelDB / Local Storage.
Telegram tdata
\Telegram Desktop\tdata и \Telegram\tdata.
Кража Telegram отмечена; явного пути tdata нет.
Криптокошельки
Bitcoin\wallets\wallet.dat, Electrum\wallets.
wallet.dat / Electrum / «No wallets found.»
Расшифровка master key через DPAPI
CryptUnprotectData для Chrome/Edge master key.
CryptUnprotectData → master key перед AES-GCM.
BCrypt в цепочке расшифровки браузера
BCryptOpenAlgorithmProvider / BCryptDecrypt рядом с cookies.
BCrypt AES-GCM (nonce/tag) в sub_140010CBA.
Автозапуск HKCU Run
Software\Microsoft\Windows\CurrentVersion\Run, RegCreateKeyExA/RegSetValueExA.
CurrentVersion\Run + persist.rs.
Scheduled Task через schtasks
schtasks /create /tn " и /delete через cmd.exe /c.
Есть schtasks /delete; /create в отчёте не подтверждён.
Свой ключ Software\RATConfig
Конфиг агента в реестре.
HKLM\Software\RATConfig / persist_name в sub_14000F550.
Remote inject quartet
OpenProcess + VirtualAllocEx + WriteProcessMemory + CreateRemoteThread (postex.rs).
Описал process hollowing / ResumeThread из lift; классический quartet VirtualAllocEx+CRT не назван.
Выполнение команд: cmd.exe /c + CreateProcessA
Spawn shell / child process для задач C2.
cmd.exe /c self-delete bat + CreateProcessA / ShellExecute SW_HIDE.
Кейлоггер
keylog.rs, SetWindowsHookExA, GetAsyncKeyState, ToUnicodeEx.
Модуль keylog.rs есть; SetWindowsHookEx/GetAsyncKeyState не разобраны.
Скриншот (GDI / screenshot.rs)
BitBlt/GetDIBits, src/modules/screenshot.rs.
GDI/GDI+ + screenshot.rs + /api/rat/stream.
Webcam через AVICAP32
webcam.rs, capCreateCaptureWindowA, не «скриншот».
webcam.rs + capCreateCaptureWindowA + «no webcam found».
Крипто-клиппер
clipper.rs, префиксы bc1/ltc1.
clipper.rs, ltc1/BCH адреса, /api/rat/clipper_log.
Ransomware-модуль + удаление теней
ransomware.rs, vssadmin delete shadows /all /quiet.
ransomware.rs + ENCRYPTED_RAT_1; vssadmin delete shadows не упомянут.
Управление службами (SCM)
OpenSCManagerA/ControlService/EnumServicesStatusExA — без фантазии про конкретный AV.
SCM API перечислены; без уверенного «убить конкретный AV».
Fun: TTS через PowerShell SpeechSynthesizer
powershell -Command "Add-Type ... SpeechSynthesizer; $s.Speak(.
fun.rs + SpeechSynthesizer.Speak через PowerShell.
Бекенд: lift + capability_map без hang
0x140003CA0 → degraded_lift_oversized, region 11 @ 264194, counts CreateProcess/Reg*.
degraded_lift_oversized на 0x140003CA0, artifact/region использованы.
Использовала ranked callees / counts
CreateProcessA×5, RegOpenKeyExA×9 и т.д. в финале.
Capability map + строка Unknown command использованы для роли.
Роль sub_140003CA0 = command dispatcher
Не «main stealer». Стилер — sub_14000F9D1; 3CA0 зовётся из beacon с command id.
Явно: диспетчер команд; задачи из beacon → sub_140003CA0(cmd_id, …).