
Análisis estático y de memoria completo de Overlord RAT: arquitectura del agente en Go, C2 sobre HTTP/2 + WebSocket, inyección reflectiva de DLL, keylogging de navegador e IOCs. Un recorrido práctico de ingeniería inversa de malware.
El escaneo de cadenas en memoria de Process Hacker del Overlord RAT (PID 7488) revela un gran conjunto de llamadas a la API de Windows y cadenas internas resueltas en tiempo de ejecución. Entre estas, http2dialCall destaca como una rutina de callback basada en HTTP/2 utilizada para establecer comunicación C2. La presencia de API relacionadas con criptografía, captura de entrada y gráficos indica un RAT con todas las funciones, con keylogging, captura de pantalla y capacidades C2 cifradas.
http2dialCall – Función de callback HTTP/2; se utiliza para abrir el canal C2 sobre HTTP/2 (puerto 443), mezclándose con tráfico HTTPS legítimo. http2clientConnPool – Pool de conexiones para sesiones C2 HTTP/2; permite comunicación persistente y multiplexada con el servidor C2. maxIdleConnsPerHost / GetEvictionPriority / SetEvictionPriority – Gestión del ciclo de vida de las conexiones; mantiene vivos los canales C2 inactivos mientras evade los timeouts. CreateCryptoSession /GetEncryptionBltKey – Creación de sesiones criptográficas basadas en DirectX/GPU; se utiliza para captura de pantalla cifrada u operaciones aceleradas por GPU. capture._Ctype_int / capture.monCapture / capture.scaledPart / capture.mfActivate – Rutinas de captura de pantalla y monitoreo del escritorio. GetInputCurrentType / GetImmediateContext – Obtención del contexto de entrada y renderizado; soporta keylogging y screen scraping. CreateTrueColorCondition – Configuración de condiciones de visualización para operaciones de captura de pantalla.
C2 HTTP/2: El uso de http2dialCall y http2clientConnPool muestra que el RAT se comunica sobre HTTP/2, que es más difícil de detectar que HTTP simple y se mezcla con el tráfico web moderno. Exfiltración cifrada: CreateCryptoSession y GetEncryptionBltKey indican transferencia de datos cifrados, probablemente para archivos robados o capturas de pantalla. Capacidad RAT completa: Captura de pantalla (capture.) + captura de entrada (GetInputCurrentType) = keylogging y vigilancia remota. Estilo living-off-the-land: La resolución en tiempo de ejecución de cadenas de API (almacenamiento ofuscado) es una técnica de evasión común para derrotar el análisis estático de cadenas. Persistencia y evasión: La gestión del pool de conexiones (maxIdleConnsPerHost, GetEvictionPriority) mantiene estables los canales C2 mientras evita la detección.

Un segundo escaneo de cadenas del mismo proceso Overlord RAT revela un conjunto distinto de cadenas relacionadas con la captura de entrada, C2 por WebSocket y manipulación de memoria/reflexión. A diferencia del primer conjunto, que se centraba en HTTP/2 y captura de pantalla, este conjunto apunta a keylogging, comunicación WebSocket persistente y técnicas de ejecución en memoria.
capture.rawWin – Rutina de captura de ventana en bruto; se utiliza para tomar capturas de pantallas de ventanas activas. captureKeyStrokes – Función directa de keylogging; captura cada pulsación de tecla escrita en la máquina víctima. map[uintptr]bool – Estructura de mapa en tiempo de ejecución; probablemente se utiliza para rastrear API hookeadas o handles capturados. websocket.noCopy / websocket.header / websocket.opcode – Cadenas de implementación de WebSocket; indican que el RAT utiliza WebSocket como canal C2 secundario (además de HTTP/2). writeFramePayload/ readCloseFrameErr / setCloseErrLocked – Manejo de frames WebSocket; confirma comunicación C2 activa basada en WebSocket. reflectlite.Type / abi.UncommonType/ abi.PCLnTabMagic – Cadenas de reflexión/ABI del runtime de Go; indican que el payload es un binario basado en Go que utiliza reflexión. msgpack.isZeroer / msgpack.field – Serialización MessagePack; se utiliza para empaquetar/desempaquetar mensajes C2 de forma eficiente. sync.poolDequeue / poolLocalInternal – Gestión del pool de sincronización de Go; se utiliza para reutilización de memoria de alto rendimiento.
Canales C2 duales: HTTP/2 (http2dialCall) + WebSocket (websocket.) = C2 redundante con failover automático si un canal es bloqueado. Capacidad de keylogging: captureKeyStrokes confirma que el RAT realiza captura activa de pulsaciones — credenciales, chats y contraseñas están en riesgo. Payload basado en Go: reflectlite, abi.PCLnTabMagic y las cadenas de msgpack revelan que este es un RAT compilado en Go, que es más difícil de revertir y a menudo evade firmas de AV. Serialización MessagePack: msgpack. indica mensajería C2 binaria compacta, reduciendo la huella de red y evadiendo DPI. Reflexión en memoria: *reflectlite.Type y *abi.UncommonType se utilizan para resolución dinámica de funciones — una evasión común para evitar importaciones estáticas. C2 WebSocket sigiloso: El tráfico WebSocket sobre el puerto 443 se mezcla con aplicaciones web legítimas, dificultando la detección mediante monitoreo de red.

El binario volcado connectstart.bin (extraído de las cadenas en memoria de Process Hacker del proceso Overlord RAT) se cargó en Binary Ninja para análisis estático. La vista de cadenas revela un módulo keylogger completamente estructurado embebido en el payload, junto con un namespace claro de comandos del agente (overlord-client/cmd/agent/keylogger.*). Esto confirma que Overlord RAT se distribuye con una arquitectura de agente modular donde el keylogger es un subsistema dedicado controlado mediante comandos C2.
Ruta del módulo: overlord-client/cmd/agent/keylogger.* – namespace claro del paquete Go para el agente keylogger. (Keylogger).Start/ .Stop – inicia y detiene el keylogger por comando C2. (Keylogger).IsRunning – comprueba si el keylogger ya está activo. (Keylogger).captureLoop – bucle principal que captura pulsaciones continuamente. (*Keylogger).logKey – función de captura de pulsaciones en bruto. (Keylogger).getWindowTitle – obtiene el título de la ventana activa (contexto para cada pulsación). (Keylogger).flushBuffer / .flushLoop / .FlushNow – volcado periódico de las pulsaciones capturadas a disco o C2. (Keylogger).ListFiles / .ReadFile / .DeleteFile / .ClearAll (Keylogger).rotateFile / .cleanupOldLogs – rotación y limpieza de logs para evitar la detección.