
"Análise de engenharia reversa de uma variante do Remcos RAT sem arquivo que injeta no svchost.exe via chamadas de API nativa. Abrange extração de payload ofuscado, persistência no registro, monitoramento de área de transferência, hooking de API e técnicas de bypass do UAC."
O seguinte trecho do Binary Ninja revela o mecanismo central de injeção usado pelo Remcos para injetar seu payload no svchost.exe.
CreateProcessW com a flag CREATE_SUSPENDED inicia um novo processo svchost em estado suspenso.VirtualAlloc aloca memória dentro do processo alvo usando as flags MEM_COMMIT e PAGE_READWRITE, permitindo que o payload seja escrito diretamente na memória do processo.WriteProcessMemory escreve o payload na região de memória alocada do processo svchost suspenso.ReadProcessMemory lê a memória do processo alvo, provavelmente para recuperar o ponto de entrada original ou para validar a injeção.TerminateProcess é usado para encerrar o processo svchost suspenso se a injeção falhar, impedindo que ele seja deixado em um estado instável.
Visualização no Binary Ninja da rotina de injeção do Remcos usando APIs Nativas, mostrando MEM_COMMIT, PAGE_READWRITE, ReadProcessMemory e TerminateProcess.
O Remcos adiciona uma chave ao registro do Windows para estabelecer uma presença permanente no sistema. Esta chave garante que o malware seja reexecutado toda vez que o sistema é iniciado.
HKEY_USERS\S-1-5-21-3807688912-2840792520-522192237-1001\Software\kamolprf-CFKPWC
exepath é armazenado como REG_BINARY, não pode ser lido diretamente. Isso torna a detecção mais difícil.UID e licence permitem que o atacante identifique a vítima e realize uma verificação de licença.time fornece informações sobre quando o malware foi instalado ou executado pela última vez.
Chaves de registro e os valores exepath, licence, time e UID dentro delas.
O seguinte trecho do WinDbg mostra uma função trampoline encontrada dentro do processo svchost.exe injetado. Este código parece fazer parte do mecanismo de hooking de API ou execução de payload do Remcos.
jmp qword ptr [svchost+0x9758] – Provavelmente um hook ou trampoline saltando para uma API ou função.mov / movdqa – Salvam e restauram registradores (xmm0-xmm3, rcx, rdx, r8, r9) para preservar o contexto de chamada.call svchost+0x3e50 – Chama uma função central, possivelmente parte do payload ou do manipulador do hook.jmp rax – Salto final para a função original ou próximo estágio.INT3 – Instruções anti-debugging para interromper a execução se um depurador estiver anexado.Esta estrutura é típica de hooking de API ou funções detour, onde o Remcos intercepta chamadas para APIs críticas do Windows. O uso de registradores xmm (para operações de ponto flutuante ou SIMD) sugere que este hook pode ser colocado em funções que usam instruções SSE.
Visualização no WinDbg da função trampoline dentro do svchost.exe, mostrando instruções jmp e call com armadilhas INT3.
O seguinte dump hexadecimal foi extraído de uma região de memória PAGE_READWRITE dentro do processo svchost.exe injetado. Esta região não contém nenhuma instrução direta call ou jmp, confirmando que os dados não são código executável, mas sim um payload ofuscado ou criptografado.
RPC Control e PC- estão embutidas nos dados.ctk, m e mafasakaaam parecem fazer parte de uma configuração estruturada, possivelmente contendo chaves de criptografia, nomes de API ou caminhos de registro.
Visualização no Binary Ninja do dump hexadecimal ofuscado da região PAGE_READWRITE do svchost.exe, mostrando strings embutidas como RPC Control e PC-.
O payload hexadecimal ofuscado extraído da região PAGE_READWRITE foi analisado posteriormente usando a visualização de strings do Binary Ninja. Apesar da forte ofuscação, várias strings e padrões legíveis surgiram.
PC- (ex.: PC-475ce3d749612b, PC-4a757962f31b84) – Provavelmente MachineGuid ou identificadores únicos de sistema usados para rastreamento de vítimas.svchost.exe – O nome do processo alvo, confirmando o vetor de injeção..dll – Indicam que o Remcos carrega ou procura por DLLs específicas, possivelmente para hooking de API ou persistência.ontroll\ – Provavelmente um fragmento de um caminho de registro (Control\), indicando persistência ou armazenamento de configuração.EEF931 e 1AA81C6FD0CF04A816B – Parecem ser GUIDs ou chaves de criptografia, possivelmente usados para descriptografia XOR/AES do payload.TEMP – Sugere criação de arquivo temporário ou execução a partir do diretório temp.
Visualização de strings no Binary Ninja do payload hexadecimal ofuscado, mostrando fragmentos legíveis como PC-, svchost.exe, .dll e EEF931.
Esta análise revelou uma variante altamente sofisticada e sem arquivos do Remcos RAT que opera com pegada mínima em disco e técnicas avançadas de evasão. O malware injeta seu payload central no svchost.exe usando chamadas de API Nativas como ZwCreateSection e ZwMapViewOfSection, garantindo persistência e furtividade.
PC-, svchost.exe, .dll e EEF931.HKEY_USERS\...\Software\kamolprf-CFKPWC, armazenando valores criptografados exepath, licence, time e UID.svchost.exe para regiões de memória anormais (PAGE_READWRITE).Software\kamolprf-CFKPWC.ZwCreateSection e ZwMapViewOfSection originadas de processos não pertencentes ao sistema.PC- e EEF931.Esta variante do Remcos demonstra um alto nível de profissionalismo e é claramente projetada para evadir soluções de segurança tradicionais. Sua combinação de execução sem arquivos, injeção de processo e persistência baseada em registro a torna uma ameaça significativa que requer estratégias avançadas de detecção.
Ferramentas Utilizadas: Ghidra, Binary Ninja, WinDbg, Process Hacker
A amostra do Remcos RAT analisada está disponível no MalwareBazaar para aqueles que desejam conduzir sua própria análise:
| API | Propósito no Remcos |
|---|
| CreateProcessW | Inicia o svchost em estado suspenso para injeção. |
| VirtualAlloc | Aloca memória com MEM_COMMIT e PAGE_READWRITE para o payload. |
| WriteProcessMemory | Escreve o payload na memória alocada. |
| ReadProcessMemory | Lê a memória do processo alvo (usado para validação ou recuperação do ponto de entrada). |
| TerminateProcess | Encerra o processo suspenso se a injeção falhar. |
| Nome do Valor | Tipo | Valor | Descrição |
|---|
| exepath | REG_BINARY | Dados binários criptografados | O caminho do arquivo criptografado do Remcos ou de seu payload injetado. Provavelmente protegido via XOR ou AES. |
| licence | REG_SZ | DA8E22D4CD8D349953DF1FAD364CAB05 | Chave de licença do Remcos. Pode ser um valor fixo em versões piratas ou demo. |
| time | REG_DWORD | 0x6a53ac27 (1783868455) | Horário de instalação ou última execução em formato Unix timestamp. |
| UID | REG_DWORD | 0xfeb60bd4 (4273343444) | ID de usuário único. Usado para identificar a vítima. |