
Анализ реверс-инжиниринга безфайлового варианта Remcos RAT, который внедряется в svchost.exe через вызовы Native API. Охватывает извлечение обфусцированной полезной нагрузки, сохранение в реестре, мониторинг буфера обмена, перехват API и методы обхода UAC.
Следующий фрагмент из Binary Ninja раскрывает основной механизм внедрения, используемый Remcos для инжекции своей нагрузки в svchost.exe.
CreateProcessW с флагом CREATE_SUSPENDED запускает новый процесс svchost в приостановленном состоянии.VirtualAlloc выделяет память внутри целевого процесса с флагами MEM_COMMIT и PAGE_READWRITE, что позволяет записать нагрузку непосредственно в память процесса.WriteProcessMemory записывает нагрузку в выделенную область памяти приостановленного процесса svchost.ReadProcessMemory считывает память целевого процесса, вероятно, для получения оригинальной точки входа или для проверки внедрения.TerminateProcess используется для завершения приостановленного процесса svchost в случае неудачного внедрения, чтобы не оставлять его в нестабильном состоянии.
Вид в Binary Ninja на рутину внедрения Remcos с использованием Native API, показывающий MEM_COMMIT, PAGE_READWRITE, ReadProcessMemory и TerminateProcess.
Remcos добавляет ключ в реестр Windows для обеспечения постоянного присутствия в системе. Этот ключ гарантирует, что вредоносная программа будет перезапускаться при каждом запуске системы.
HKEY_USERS\S-1-5-21-3807688912-2840792520-522192237-1001\Software\kamolprf-CFKPWC
exepath хранится в виде REG_BINARY, его невозможно прочитать напрямую. Это усложняет обнаружение.UID и licence позволяют злоумышленнику идентифицировать жертву и выполнить проверку лицензии.time предоставляет информацию о том, когда вредоносная программа была установлена или в последний раз запущена.
Ключи реестра и значения exepath, licence, time и UID внутри них.
Следующий фрагмент WinDbg показывает функцию-трамплин, обнаруженную внутри внедрённого процесса svchost.exe. Этот код, по-видимому, является частью механизма перехвата API или выполнения нагрузки Remcos.
jmp qword ptr [svchost+0x9758] – Вероятно, хук или трамплин, выполняющий переход на API или функцию.mov / movdqa – Сохраняют и восстанавливают регистры (xmm0-xmm3, rcx, rdx, r8, r9) для сохранения контекста вызова.call svchost+0x3e50 – Вызывает основную функцию, возможно, часть нагрузки или обработчика хука.jmp rax – Финальный переход на исходную функцию или следующий этап.INT3 – Антиотладочные инструкции, прерывающие выполнение при подключённом отладчике.Эта структура типична для перехвата API или функций-детуров, где Remcos перехватывает вызовы критических Windows API. Использование регистров xmm (для операций с плавающей точкой или SIMD) предполагает, что этот хук может быть установлен на функции, использующие инструкции SSE.
Вид в WinDbg на функцию-трамплин внутри svchost.exe, показывающий инструкции jmp и call с ловушками INT3.
Следующий шестнадцатеричный дамп был извлечён из области памяти PAGE_READWRITE внутри внедрённого процесса svchost.exe. Эта область не содержит прямых инструкций call или jmp, что подтверждает, что данные не являются исполняемым кодом, а представляют собой обфусцированную или зашифрованную нагрузку.
RPC Control и PC-.ctk, m и mafasakaaam, по-видимому, являются частью структурированной конфигурации, возможно, содержащей ключи шифрования, имена API или пути реестра.
Вид в Binary Ninja на обфусцированный шестнадцатеричный дамп из области PAGE_READWRITE процесса svchost.exe, показывающий встроенные строки, такие как RPC Control и PC-.
Обфусцированная шестнадцатеричная нагрузка, извлечённая из области PAGE_READWRITE, была дополнительно проанализирована с помощью просмотра строк Binary Ninja. Несмотря на сильную обфускацию, было обнаружено несколько читаемых строк и шаблонов.
PC- (например, PC-475ce3d749612b, PC-4a757962f31b84) – Вероятно, MachineGuid или уникальные идентификаторы системы, используемые для отслеживания жертвы.svchost.exe – Имя целевого процесса, подтверждающее вектор внедрения..dll – Указывают на то, что Remcos либо загружает, либо ищет определённые DLL, возможно, для перехвата API или персистентности.ontroll\ – Вероятно, фрагмент пути в реестре (Control\), указывающий на персистентность или хранение конфигурации.EEF931 и 1AA81C6FD0CF04A816B – По всей видимости, это GUID или ключи шифрования, возможно, используемые для XOR/AES-расшифровки нагрузки.TEMP – Предполагает создание временного файла или выполнение из временного каталога.
Просмотр строк Binary Ninja обфусцированной шестнадцатеричной нагрузки, показывающий читаемые фрагменты, такие как PC-, svchost.exe, .dll и EEF931.
Этот анализ выявил высокосложную, бесфайловую версию Remcos RAT, которая работает с минимальным следом на диске и использует продвинутые методы уклонения. Вредоносная программа внедряет свою основную нагрузку в svchost.exe с помощью вызовов Native API, таких как ZwCreateSection и ZwMapViewOfSection, обеспечивая персистентность и скрытность.
PC-, svchost.exe, .dll и EEF931.HKEY_USERS\...\Software\kamolprf-CFKPWC, храня зашифрованные значения exepath, licence, time и UID.svchost.exe на предмет аномальных областей памяти (PAGE_READWRITE).Software\kamolprf-CFKPWC.ZwCreateSection и ZwMapViewOfSection, исходящих от несистемных процессов.PC- и EEF931.Этот вариант Remcos демонстрирует высокий уровень профессионализма и явно предназначен для обхода традиционных решений безопасности. Сочетание бесфайлового выполнения, внедрения в процессы и персистентности на основе реестра делает его серьёзной угрозой, требующей продвинутых стратегий обнаружения.
Использованные инструменты: Ghidra, Binary Ninja, WinDbg, Process Hacker
Проанализированный образец Remcos RAT доступен на MalwareBazaar для тех, кто желает провести собственный анализ:
| API | Назначение в Remcos |
|---|
| CreateProcessW | Запускает svchost в приостановленном состоянии для внедрения. |
| VirtualAlloc | Выделяет память с флагами MEM_COMMIT и PAGE_READWRITE для нагрузки. |
| WriteProcessMemory | Записывает нагрузку в выделенную память. |
| ReadProcessMemory | Считывает память целевого процесса (используется для проверки или получения точки входа). |
| TerminateProcess | Завершает приостановленный процесс при неудачном внедрении. |
| Имя значения | Тип | Значение | Описание |
|---|
| exepath | REG_BINARY | Зашифрованные двоичные данные | Зашифрованный путь к файлу Remcos или его внедрённой нагрузки. Вероятно, защищён с помощью XOR или AES. |
| licence | REG_SZ | DA8E22D4CD8D349953DF1FAD364CAB05 | Лицензионный ключ Remcos. Может быть фиксированным значением в пиратских или демо-версиях. |
| time | REG_DWORD | 0x6a53ac27 (1783868455) | Время установки или последнего выполнения в формате Unix timestamp. |
| UID | REG_DWORD | 0xfeb60bd4 (4273343444) | Уникальный идентификатор пользователя. Используется для идентификации жертвы. |