
Analisi statica e in memoria completa di Overlord RAT: architettura dell'agente Go, C2 HTTP/2 + WebSocket, iniezione riflessiva di DLL, keylogging del browser e IOC. Una guida pratica al reverse engineering del malware.
La scansione delle stringhe in memoria di Process Hacker sull'Overlord RAT (PID 7488) rivela un ampio insieme di chiamate API di Windows e stringhe interne risolte a runtime. Tra queste, http2dialCall si distingue come routine di callback basata su HTTP/2 utilizzata per stabilire la comunicazione C2. La presenza di API relative a crittografia, cattura input e grafica indica un RAT completo con capacità di keylogging, cattura schermo e C2 cifrato.
http2dialCall – Funzione di callback HTTP/2; utilizzata per aprire il canale C2 su HTTP/2 (porta 443), mimetizzandosi con il traffico HTTPS legittimo. http2clientConnPool – Pool di connessioni per sessioni C2 HTTP/2; consente comunicazione persistente e multiplexata con il server C2. maxIdleConnsPerHost / GetEvictionPriority / SetEvictionPriority – Gestione del ciclo di vita delle connessioni; mantiene attivi i canali C2 inattivi evitando i timeout. CreateCryptoSession /GetEncryptionBltKey – Creazione di sessioni crittografiche basate su DirectX/GPU; utilizzate per la cattura schermo cifrata o operazioni accelerate dalla GPU. capture._Ctype_int / capture.monCapture / capture.scaledPart / capture.mfActivate – Routine di cattura schermo e monitoraggio del desktop. GetInputCurrentType / GetImmediateContext – Recupero del contesto di input e rendering; supporta keylogging e screen scraping. CreateTrueColorCondition – Configurazione delle condizioni di visualizzazione per le operazioni di cattura schermo.
C2 HTTP/2: L'uso di http2dialCall e http2clientConnPool mostra che il RAT comunica su HTTP/2, più difficile da rilevare rispetto all'HTTP semplice e si mimetizza con il traffico web moderno. Esfiltrazione cifrata: CreateCryptoSession e GetEncryptionBltKey indicano trasferimento dati cifrato, probabilmente per file rubati o screenshot. Capacità RAT completa: Cattura schermo (capture.) + cattura input (GetInputCurrentType) = keylogging e sorveglianza remota. Stile living-off-the-land: La risoluzione a runtime delle stringhe API (archiviazione offuscata) è una tecnica di evasione comune per sconfiggere l'analisi statica delle stringhe. Persistenza ed evasione: La gestione del pool di connessioni (maxIdleConnsPerHost, GetEvictionPriority) mantiene stabili i canali C2 evitando il rilevamento.

Una seconda scansione delle stringhe dello stesso processo Overlord RAT rivela un insieme distinto di stringhe relative alla cattura input, al C2 WebSocket e alla manipolazione di memoria/riflessione. A differenza del primo insieme che si concentrava su HTTP/2 e cattura schermo, questo insieme punta al keylogging, alla comunicazione WebSocket persistente e alle tecniche di esecuzione in memoria.
capture.rawWin – Routine di cattura finestra grezza; utilizzata per screenshot di finestre attive. captureKeyStrokes – Funzione diretta di keylogging; cattura ogni tasto digitato sulla macchina vittima. map[uintptr]bool – Struttura map a runtime; probabilmente utilizzata per tracciare API hookate o handle catturati. websocket.noCopy / websocket.header / websocket.opcode – Stringhe dell'implementazione WebSocket; indicano che il RAT usa WebSocket come canale C2 secondario (in aggiunta a HTTP/2). writeFramePayload/ readCloseFrameErr / setCloseErrLocked – Gestione dei frame WebSocket; conferma comunicazione C2 attiva basata su WebSocket. reflectlite.Type / abi.UncommonType/ abi.PCLnTabMagic – Stringhe di riflessione/ABI del runtime Go; indicano che il payload è un binario basato su Go che utilizza la riflessione. msgpack.isZeroer / msgpack.field – Serializzazione MessagePack; utilizzata per impacchettare/deimpacchettare i messaggi C2 in modo efficiente. sync.poolDequeue / poolLocalInternal – Gestione del sync pool di Go; utilizzata per il riutilizzo della memoria ad alte prestazioni.
Canali C2 duali: HTTP/2 (http2dialCall) + WebSocket (websocket.) = C2 ridondante con failover automatico se un canale viene bloccato. Capacità di keylogging: captureKeyStrokes conferma che il RAT esegue cattura attiva dei tasti — credenziali, chat e password sono a rischio. Payload basato su Go: reflectlite, abi.PCLnTabMagic e le stringhe msgpack rivelano che si tratta di un RAT compilato in Go, più difficile da invertire e che spesso aggira le firme AV. Serializzazione MessagePack: msgpack. indica messaggistica C2 binaria compatta, riducendo l'impronta di rete ed eludendo il DPI. Riflessione in memoria: *reflectlite.Type e *abi.UncommonType sono utilizzati per la risoluzione dinamica delle funzioni — un'evasione comune per evitare import statici. C2 WebSocket furtivo: Il traffico WebSocket sulla porta 443 si mimetizza con app web legittime, rendendo più difficile il rilevamento tramite monitoraggio di rete.

Il binario dumpato connectstart.bin (estratto dalle stringhe in memoria di Process Hacker del processo Overlord RAT) è stato caricato in Binary Ninja per l'analisi statica. La vista delle stringhe rivela un modulo keylogger completamente strutturato incorporato nel payload, insieme a un chiaro namespace di comandi dell'agente (overlord-client/cmd/agent/keylogger.*). Ciò conferma che Overlord RAT viene distribuito con un'architettura ad agenti modulare in cui il keylogger è un sottosistema dedicato controllato tramite comandi C2.
Percorso del modulo: overlord-client/cmd/agent/keylogger.* – chiaro namespace del pacchetto Go per l'agente keylogger. (Keylogger).Start/ .Stop – avvia e ferma il keylogger su comando C2. (Keylogger).IsRunning – verifica se il keylogger è già attivo. (Keylogger).captureLoop – loop principale che cattura continuamente i tasti. (*Keylogger).logKey – funzione di cattura grezza dei tasti. (Keylogger).getWindowTitle – recupera il titolo della finestra attiva (contesto per ogni tasto). (Keylogger).flushBuffer / .flushLoop / .FlushNow – flush periodico dei tasti catturati su disco o verso il C2. (Keylogger).ListFiles / .ReadFile / .DeleteFile / .ClearAll (Keylogger).rotateFile / .cleanupOldLogs – rotazione dei log e pulizia per evitare il rilevamento.