Реверс-инжиниринг Rusty Stealer: RAT на основе Rust с продвинутым кейлоггером, потоковой передачей экрана в реальном времени и агрессивным обходом защиты (отключение Windows Defender и перехват служб) для сохранения присутствия в системе.
Первичный реверс-инжиниринг образца Rusty Stealer в Ghidra выявляет выделенный модуль кейлоггера, скомпилированный на Rust. Декомпилированное представление наглядно показывает, как вредоносное ПО перехватывает пользовательский ввод, разрешая коды клавиш и сопоставляя их с конкретными действиями. Это подтверждает, что стилер активно регистрирует нажатия клавиш для сбора учётных данных, переписок и конфиденциальных пользовательских данных.
Логика кейлоггера (псевдо-C представление): FUN_140020ffe(&Var29, pHVar44, "key_press", 9) – динамически разрешает строку события "key_press". Проверки условий для конкретных клавиш: "Enter", "Escape", "Esc", "Tab", "Backspace", "Back". *HKEY__ pHVar37 = ... – разрешение дескриптора реестра (потенциально чтение раскладки клавиатуры или обеспечение персистентности) Представление ассемблера (дизассемблирование): LEA R8, [local_4a8] / MOV qword ptr [R8], RAX – загружает структуру события клавиши в память. CALL FUN_140020ffe – основная функция обработки клавиш. JZ LAB_14000f309 – условные переходы на основе кодов клавиш (проверка конкретных клавиш).
Активный перехват нажатий клавиш: явные проверки "Enter", "Tab", "Backspace" и т. д. доказывают, что вредоносное ПО регистрирует каждое нажатие клавиши, включая специальные клавиши, для восстановления паролей и сообщений. Взаимодействие с реестром: дескриптор HKEY__ указывает на то, что кейлоггер может читать системные конфигурации или хранить свои журналы в реестре. Сбор учётных данных: регистрация событий "key_press" вместе с заголовками окон (видно на более поздних этапах) позволяет злоумышленнику сопоставлять нажатия клавиш с конкретными приложениями (например, браузерами, банковскими приложениями).

Второе представление декомпиляции Rusty Stealer в Ghidra выявляет возможность, которая выводит его за рамки стандартного инфостилера в область RAT (троян удалённого доступа). Вредоносное ПО включает процедуры захвата экрана и потоковой передачи в реальном времени, позволяя злоумышленнику визуально наблюдать за рабочим столом жертвы в реальном времени в дополнение к краже файлов и нажатий клавиш.
Логика захвата экрана: FUN_140020ffe(..., "screen_stream", 0xd) – явно инициализирует модуль потоковой передачи экрана. FUN_14000d9eb7("fps", 3, ...) – задаёт частоту кадров (FPS) для прямой трансляции, вероятно, для баланса между использованием ЦП и качеством видео. FUN_14000c87a(..., "done", 4) / FUN_14000c87a(..., "streaming", 9) – маркеры состояния для операций запуска/остановки потоковой передачи. Управление памятью и буферами: if (uVar69 < 5) { uVar47 = uVar69; } – внутренняя логика буферизации кадров экрана. Ссылки в ассемблере (перекрёстные ссылки): LEA R8, [s_screen_stream_14001592a] – загружает строку "screen_stream" в память для сравнения. CALL FUN_140020ffe – основной обработчик логики потоковой передачи.
Живое наблюдение: строки "screen_stream" и "fps" доказывают, что вредоносное ПО может транслировать экран жертвы в реальном времени. Это отличительный признак полноценных RAT (таких как njRAT или Quasar), а не просто простых стилеров. Эксфильтрация данных (визуальная): в то время как кейлоггеры захватывают текст, потоковая передача экрана визуально фиксирует банковские сессии, криптокошельки и личные сообщения — полностью обходя шифрование. Оптимизация ресурсов: установка конкретного FPS (например, 3 FPS) означает, что вредоносное ПО спроектировано для тихой работы в фоновом режиме без привлечения внимания пользователя через высокую нагрузку на ЦП.

Третье декомпилированное представление Rusty Stealer раскрывает крайне агрессивные процедуры уклонения от защиты и перехвата сессий. Вредоносное ПО включает специальные функции для завершения Windows Defender и перехвата активных сетевых/потоковых сессий (вероятно, для перехвата трафика или нарушения мониторинга безопасности). Это подтверждает, что Rusty Stealer предназначен не только для кражи данных, но и для активного ослепления средств защиты.
Windows Defender Killed: FUN_140020ffe(..., "kill_defender", 0xd) – динамически разрешает строку для завершения процессов Defender. FUN_14001add55() – вероятно, процедура выполнения, которая принудительно останавливает службы или процессы Defender. Stream Hijacking: FUN_140020ffe(..., "hijack_stream", 0xc) – разрешает логику для перехвата активных потоков (сетевого трафика или демонстрации экрана). Memory Manipulation & Execution: MOVUPS xmmword ptr [R12] / MOVUPS xmmword ptr [RDX + local_550] – SIMD-инструкции, используемые для быстрого копирования памяти (вероятно, подготовка shellcode или буферов потоков). CALL FUN_14000d55() – выполняет процедуру перехвата или завершения.
Ослепление Defender: kill_defender доказывает, что стилер активно нацелен на встроенную защиту Windows. В случае успеха он отключает защиту в реальном времени, позволяя остальной части вредоносного ПО (кейлоггеру, стримеру экрана) работать без помех. Перехват сеансов: hijack_stream указывает на то, что вредоносное ПО может перехватывать или захватывать активные сетевые потоки. Это может использоваться для кражи живых сессионных cookie, перехвата банковских транзакций или нарушения работы инструментов удалённого администрирования. Уклонение по замыслу: наличие error_pinned показывает, что вредоносное ПО предвидит защиту, при которой критические процессы невозможно завершить. Вероятно, оно повторяет попытки или переключается на другие техники.

Четвёртое декомпилированное представление Rusty Stealer раскрывает его модуль разведки системы. Перед кражей данных или эксфильтрацией файлов вредоносное ПО собирает подробную информацию о машине жертвы, включая имя хоста, имя пользователя, версию операционной системы и локальные/внешние IP-адреса. Эти данные профилирования, вероятно, отправляются на C2-сервер для категоризации жертвы и адаптации следующего этапа атаки.
Строки профилирования системы:
"hostname" – получает имя компьютера жертвы. "username" – получает учётную запись вошедшего пользователя. "os_ver" – фиксирует точную версию и сборку Windows. "local_ip" – определяет внутренний сетевой IP-адрес жертвы. "external_ip" – разрешает публичный IP-адрес (вероятно, через внешний API). "stream_id" – генерирует уникальный идентификатор для сеанса потоковой передачи экрана.
Декомпилированная логика:
FUN_1400084d2(uStack_570, "hostname", 8, ...) – сохраняет имя хоста в структуре.
FUN_1400084d2(uStack_570, "username", 8, ...) – сохраняет имя пользователя.
FUN_1400084d2(uStack_570, "os_ver", 6, ...) – сохраняет версию ОС.
FUN_1400084d2(uStack_570, "local_ip", 8, ...) / "external_ip" – сохраняет сетевые идентификаторы.