Analyse statique et mémoire complète du RAT Overlord : architecture de l'agent Go, C2 HTTP/2 + WebSocket, injection DLL réflective, keylogging de navigateur et IOC. Un walkthrough pratique de RE de malware.
L'analyse des chaînes en mémoire par Process Hacker du RAT Overlord (PID 7488) révèle un large ensemble d'appels d'API Windows et de chaînes internes résolues à l'exécution. Parmi celles-ci, http2dialCall se distingue comme une routine de rappel basée sur HTTP/2 utilisée pour établir la communication C2. La présence d'API liées à la cryptographie, à la capture d'entrée et aux graphiques indique un RAT complet doté de capacités de keylogging, de capture d'écran et de C2 chiffré.
http2dialCall – Fonction de rappel HTTP/2 ; utilisée pour ouvrir le canal C2 via HTTP/2 (port 443), se fondant dans le trafic HTTPS légitime. http2clientConnPool – Pool de connexions pour les sessions C2 HTTP/2 ; permet une communication persistante et multiplexée avec le serveur C2. maxIdleConnsPerHost / GetEvictionPriority / SetEvictionPriority – Gestion du cycle de vie des connexions, maintient les canaux C2 inactifs en vie tout en évitant les timeouts. CreateCryptoSession /GetEncryptionBltKey – Création de session cryptographique basée sur DirectX/GPU ; utilisée pour la capture d'écran chiffrée ou les opérations accélérées par GPU. capture._Ctype_int / capture.monCapture / capture.scaledPart / capture.mfActivate – Routines de capture d'écran et de surveillance du bureau. GetInputCurrentType / GetImmediateContext – Récupération du contexte d'entrée et de rendu ; prend en charge le keylogging et l'extraction d'écran. CreateTrueColorCondition – Configuration de la condition d'affichage pour les opérations de capture d'écran.
C2 HTTP/2 : L'utilisation de http2dialCall et http2clientConnPool montre que le RAT communique via HTTP/2, ce qui est plus difficile à détecter que le HTTP simple et se fond dans le trafic web moderne. Exfiltration chiffrée : CreateCryptoSession et GetEncryptionBltKey indiquent un transfert de données chiffré, probablement pour les fichiers volés ou les captures d'écran. Capacité RAT complète : Capture d'écran (capture.) + capture d'entrée (GetInputCurrentType) = keylogging et surveillance à distance. Style Living-off-the-Land : La résolution à l'exécution des chaînes d'API (stockage obfusqué) est une technique d'évasion courante pour contrer l'analyse statique des chaînes. Persistance et évasion : La gestion du pool de connexions (maxIdleConnsPerHost, GetEvictionPriority) maintient les canaux C2 stables tout en évitant la détection.

Une seconde analyse des chaînes du même processus Overlord RAT révèle un ensemble distinct de chaînes liées à la capture d'entrée, au C2 WebSocket et à la manipulation de mémoire/réflexion. Contrairement au premier ensemble qui se concentrait sur HTTP/2 et la capture d'écran, cet ensemble pointe vers le keylogging, la communication WebSocket persistante et les techniques d'exécution en mémoire.
capture.rawWin – Routine de capture brute de fenêtre ; utilisée pour capturer des captures d'écran des fenêtres actives. captureKeyStrokes – Fonction de keylogging directe ; capture chaque frappe tapée sur la machine victime. map[uintptr]bool – Structure de map à l'exécution ; probablement utilisée pour suivre les API hookées ou les handles capturés. websocket.noCopy / websocket.header / websocket.opcode – Chaînes d'implémentation WebSocket ; indiquent que le RAT utilise WebSocket comme canal C2 secondaire (en plus de HTTP/2). writeFramePayload/ readCloseFrameErr / setCloseErrLocked – Gestion des trames WebSocket ; confirme une communication C2 active basée sur WebSocket. reflectlite.Type / abi.UncommonType/ abi.PCLnTabMagic – Chaînes de réflexion/ABI du runtime Go ; indiquent que la charge utile est un binaire basé sur Go utilisant la réflexion. msgpack.isZeroer / msgpack.field – Sérialisation MessagePack ; utilisée pour empaqueter/dépaqueter efficacement les messages C2. sync.poolDequeue / poolLocalInternal – Gestion du pool de synchronisation Go ; utilisée pour la réutilisation de mémoire haute performance.
Canaux C2 doubles : HTTP/2 (http2dialCall) + WebSocket (websocket.) = C2 redondant avec basculement automatique si un canal est bloqué. Capacité de keylogging : captureKeyStrokes confirme que le RAT effectue une capture active des frappes — identifiants, discussions et mots de passe sont en danger. Charge utile basée sur Go : reflectlite, abi.PCLnTabMagic et les chaînes msgpack révèlent qu'il s'agit d'un RAT compilé en Go, plus difficile à rétro-ingénierer et qui contourne souvent les signatures AV. Sérialisation MessagePack : msgpack. indique une messagerie C2 binaire compacte, réduisant l'empreinte réseau et contournant le DPI. Réflexion en mémoire : *reflectlite.Type et *abi.UncommonType sont utilisés pour la résolution dynamique de fonctions — une évasion courante pour éviter les imports statiques. C2 WebSocket furtif : Le trafic WebSocket sur le port 443 se fond dans les applications web légitimes, rendant la détection par surveillance réseau plus difficile.

Le binaire dumpé connectstart.bin (extrait des chaînes en mémoire de Process Hacker du processus Overlord RAT) a été chargé dans Binary Ninja pour analyse statique. La vue des chaînes révèle un module keylogger entièrement structuré intégré dans la charge utile, ainsi qu'un espace de noms de commandes d'agent clair (overlord-client/cmd/agent/keylogger.*). Cela confirme qu'Overlord RAT est livré avec une architecture d'agent modulaire où le keylogger est un sous-système dédié contrôlé via des commandes C2.
Chemin du module : overlord-client/cmd/agent/keylogger.* – espace de noms de package Go clair pour l'agent keylogger. (Keylogger).Start/ .Stop – démarre et arrête le keylogger sur commande C2. (Keylogger).IsRunning – vérifie si le keylogger est déjà actif. (Keylogger).captureLoop – boucle principale qui capture continuellement les frappes. (*Keylogger).logKey – fonction de capture brute des frappes. (Keylogger).getWindowTitle – récupère le titre de la fenêtre active (contexte pour chaque frappe). (Keylogger).flushBuffer / .flushLoop / .FlushNow – vidage périodique des frappes capturées vers le disque ou le C2. (Keylogger).ListFiles / .ReadFile / .DeleteFile / .ClearAll (Keylogger).rotateFile / .cleanupOldLogs – rotation et nettoyage des logs pour éviter la détection.