
Análise estática e de memória completa do Overlord RAT: arquitetura de agente em Go, C2 via HTTP/2 + WebSocket, injeção reflexiva de DLL, keylogging de navegador e IOCs. Um walkthrough prático de engenharia reversa de malware.
A varredura de strings de memória do Process Hacker no Overlord RAT (PID 7488) revela um grande conjunto de chamadas de API do Windows e strings internas resolvidas em tempo de execução. Entre elas, http2dialCall se destaca como uma rotina de callback baseada em HTTP/2 usada para estabelecer comunicação C2. A presença de APIs relacionadas a criptografia, captura de entrada e gráficos indica um RAT completo com keylogging, captura de tela e capacidades de C2 criptografado.
http2dialCall – Função de callback HTTP/2; usada para abrir o canal C2 sobre HTTP/2 (porta 443), misturando-se ao tráfego HTTPS legítimo. http2clientConnPool – Pool de conexões para sessões C2 HTTP/2; permite comunicação persistente e multiplexada com o servidor C2. maxIdleConnsPerHost / GetEvictionPriority / SetEvictionPriority – Gerenciamento do ciclo de vida das conexões, mantém canais C2 ociosos ativos enquanto evita timeouts. CreateCryptoSession /GetEncryptionBltKey – Criação de sessão criptográfica baseada em DirectX/GPU; usada para captura de tela criptografada ou operações aceleradas por GPU. capture._Ctype_int / capture.monCapture / capture.scaledPart / capture.mfActivate – Rotinas de captura de tela e monitoramento de desktop. GetInputCurrentType / GetImmediateContext – Recuperação de contexto de entrada e renderização; suporta keylogging e screen scraping. CreateTrueColorCondition – Configuração de condição de exibição para operações de captura de tela.
C2 HTTP/2: O uso de http2dialCall e http2clientConnPool mostra que o RAT se comunica via HTTP/2, que é mais difícil de detectar do que HTTP simples e se mistura ao tráfego web moderno. Exfiltração Criptografada: CreateCryptoSession e GetEncryptionBltKey indicam transferência de dados criptografados, provavelmente para arquivos roubados ou capturas de tela. Capacidade Completa de RAT: Captura de tela (capture.) + captura de entrada (GetInputCurrentType) = keylogging e vigilância remota. Estilo Living-off-the-Land: A resolução em tempo de execução de strings de API (armazenamento ofuscado) é uma técnica de evasão comum para derrotar a análise estática de strings. Persistência e Evasão: O gerenciamento do pool de conexões (maxIdleConnsPerHost, GetEvictionPriority) mantém os canais C2 estáveis enquanto evita detecção.

Uma segunda varredura de strings do mesmo processo Overlord RAT revela um conjunto distinto de strings relacionadas à captura de entrada, C2 via WebSocket e manipulação de memória/reflexão. Diferente do primeiro conjunto, que focava em HTTP/2 e captura de tela, este conjunto aponta para keylogging, comunicação WebSocket persistente e técnicas de execução em memória.
capture.rawWin – Rotina de captura bruta de janela; usada para capturar screenshots de janelas ativas. captureKeyStrokes – Função direta de keylogging; captura cada tecla digitada na máquina da vítima. map[uintptr]bool – Estrutura de mapa em tempo de execução; provavelmente usada para rastrear APIs hookadas ou handles capturados. websocket.noCopy / websocket.header / websocket.opcode – Strings de implementação WebSocket; indicam que o RAT usa WebSocket como canal C2 secundário (além do HTTP/2). writeFramePayload/ readCloseFrameErr / setCloseErrLocked – Manipulação de frames WebSocket; confirma comunicação C2 ativa baseada em WebSocket. reflectlite.Type / abi.UncommonType/ abi.PCLnTabMagic – Strings de reflexão/ABI do runtime Go; indicam que o payload é um binário baseado em Go usando reflexão. msgpack.isZeroer / msgpack.field – Serialização MessagePack; usada para empacotar/desempacotar mensagens C2 de forma eficiente. sync.poolDequeue / poolLocalInternal – Gerenciamento de pool de sincronização Go; usado para reutilização de memória de alto desempenho.
Canais C2 Duplos: HTTP/2 (http2dialCall) + WebSocket (websocket.) = C2 redundante com failover automático se um canal for bloqueado. Capacidade de Keylogging: captureKeyStrokes confirma que o RAT realiza captura ativa de teclas — credenciais, conversas e senhas estão em risco. Payload Baseado em Go: reflectlite, abi.PCLnTabMagic e strings msgpack revelam que este é um RAT compilado em Go, que é mais difícil de reverter e frequentemente contorna assinaturas de AV. Serialização MessagePack: msgpack. indica mensagens C2 binárias compactas, reduzindo a pegada de rede e evadindo DPI. Reflexão em Memória: *reflectlite.Type e *abi.UncommonType são usados para resolução dinâmica de funções — uma evasão comum para evitar imports estáticos. C2 WebSocket Furtivo: O tráfego WebSocket sobre a porta 443 se mistura a aplicações web legítimas, dificultando a detecção por monitoramento de rede.

O binário extraído connectstart.bin (obtido das strings de memória do Process Hacker do processo Overlord RAT) foi carregado no Binary Ninja para análise estática. A visualização de strings revela um módulo keylogger totalmente estruturado embutido no payload, juntamente com um namespace claro de comandos do agente (overlord-client/cmd/agent/keylogger.*). Isso confirma que o Overlord RAT vem com uma arquitetura de agente modular, onde o keylogger é um subsistema dedicado controlado por comandos C2.
Caminho do Módulo: overlord-client/cmd/agent/keylogger.* – namespace claro do pacote Go para o agente keylogger. (Keylogger).Start/ .Stop – inicia e para o keylogger por comando C2. (Keylogger).IsRunning – verifica se o keylogger já está ativo. (Keylogger).captureLoop – loop principal que captura continuamente as teclas. (*Keylogger).logKey – função de captura bruta de teclas. (Keylogger).getWindowTitle – obtém o título da janela ativa (contexto para cada tecla). (Keylogger).flushBuffer / .flushLoop / .FlushNow – descarga periódica das teclas capturadas para disco ou C2. (Keylogger).ListFiles / .ReadFile / .DeleteFile / .ClearAll (Keylogger).rotateFile / .cleanupOldLogs – rotação e limpeza de logs para evitar detecção.
Arquitetura de Agente Modular: O caminho overlord-client/cmd/agent/ mostra um agente Go limpo e modular — cada capacidade (keylogger, captura de tela, shell, etc.) é um módulo de comando separado. Keylogging Ativo: captureLoop, logKey e getWindowTitle confirmam captura de teclas em tempo real com contexto de janela (nomes de usuário, senhas, conversas). Anti-Forense: rotateFile, cleanupOldLogs e DeleteFile impedem o acúmulo de logs e reduzem vestígios forenses. Evasão via ROT13: a string rot13 mostra que os dados capturados são ofuscados antes do armazenamento/exfiltração para derrotar a detecção baseada em strings. Controle de Permissão: NeedsPermissionGate / RequestPermission sugerem que o RAT verifica condições do ambiente (UAC, direitos de administrador) antes de ativar o keylogger. Comportamento Orientado por Comandos: Start/Stop/IsRunning provam que o keylogger é alternado remotamente pelo C2 — não é executado automaticamente, o que reduz a pegada de detecção.