
Imaginary C2 est un outil python qui vise à aider dans l'analyse comportementale (réseau) des malwares. Imaginary C2 héberge un serveur HTTP qui capture les requêtes HTTP vers des domaines/IPs sélectionnés de manière ciblée. De plus, l'outil vise à faciliter la relecture des réponses Command-and-Control capturées et des charges utiles servies.
auteur : Felix Weyne (site web) (Twitter)
Imaginary C2 est un outil Python qui vise à aider dans l'analyse comportementale (réseau) des logiciels malveillants. Imaginary C2 héberge un serveur HTTP qui capture les requêtes HTTP vers des domaines/IP sélectionnés. De plus, l'outil vise à faciliter la relecture des réponses Command-and-Control capturées/des charges utiles servies.
En utilisant cet outil, un analyste peut fournir au malware des réponses réseau cohérentes (par exemple, des instructions C&C pour que le malware exécute). De plus, l'analyste peut capturer et inspecter les requêtes HTTP vers un domaine/IP qui est hors ligne au moment de l'analyse.

Imaginary C2 fournit deux scripts pour convertir les captures de paquets (PCAP) ou les archives de session Fiddler en définitions de requêtes qui peuvent être analysées par Imaginary C2. Grâce à ces scripts, l'utilisateur peut extraire les URL et domaines des requêtes HTTP, ainsi que les réponses HTTP. De cette façon, on peut rapidement rejouer les réponses HTTP pour une requête HTTP donnée.
Prérequis : Imaginary C2 nécessite Python 2.7 et Windows. Modules : Actuellement, Imaginary C2 contient trois modules et deux fichiers de configuration :
Définitions de requêtes : Chaque requête (HTTP) définie dans la configuration des requêtes se compose de deux paramètres :
Paramètre 1 : Chemin d'URL de requête HTTP (également appelé urlType)
| Valeur | Signification |
|---|---|
| fixed | Définir le chemin d'URL comme une chaîne littérale |
| regex | Définir un motif regex à faire correspondre sur le chemin d'URL |
Paramètre 2 : Source de réponse HTTP (également appelé sourceType)
| Valeur | Signification |
|---|---|
| data | Imaginary C2 répondra avec le contenu d'un fichier sur le disque |
| python | Imaginary C2 exécutera un script Python. La sortie du script Python définit la réponse HTTP. |
Imaginary C2 peut être utilisé pour simuler l'hébergement de composants et de fichiers de configuration de TrickBot. De plus, il peut également être utilisé pour simuler les serveurs d'injection web de TrickBot.
Lors de l'exécution, le téléchargeur TrickBot se connecte à un ensemble d'adresses IP codées en dur pour récupérer quelques fichiers de configuration. L'un de ces fichiers de configuration contient les emplacements (adresses IP) des serveurs de plugins TrickBot. Le téléchargeur TrickBot télécharge les plugins (modules) depuis ces serveurs et les déchiffre. Les modules déchiffrés sont ensuite injectés dans une instance de svchost.exe.

L'un des plugins de TrickBot s'appelle injectdll, un plugin responsable des webinjects de TrickBot. Le plugin injectdll récupère régulièrement un ensemble mis à jour de configurations de webinject. Pour chaque site web (bancaire) ciblé dans la configuration, l'adresse d'un serveur webfake est définie. Lorsqu'une victime navigue vers un site web (bancaire) ciblé par TrickBot, son navigateur est secrètement redirigé vers le serveur webfake. Le serveur webfake héberge une réplique du site web ciblé. Ce site web réplique est généralement utilisé dans une attaque d'ingénierie sociale pour frauder la victime.
La vidéo ci-dessous montre le téléchargeur TrickBot s'exécutant dans svchost.exe et se connectant à Imaginary C2 pour télécharger deux modules. Chaque module téléchargé est injecté dans une instance nouvellement créée de svchost.exe. Le module webinject tente de voler les mots de passe enregistrés du navigateur et exfiltre les mots de passe volés vers le serveur TrickBot. Lors de la visite d'un site bancaire ciblé, TrickBot redirige le navigateur vers le serveur webfake. Dans la démo, le serveur webfake héberge le message : « Default imaginary C2 server response » (vidéo complète).

| Nom du fichier | Fonction |
|---|
| 1. imaginary_c2.py | Héberge le serveur HTTP simple de Python. Module principal. |
| 2. redirect_to_imaginary_c2.py | Modifie le fichier hosts de Windows et la table de routage (IP) de Windows. |
| 3. unpack_fiddler_archive.py & unpack_pcap.py | Extrait les réponses HTTP des captures de paquets. Ajoute les domaines et URL de requêtes HTTP correspondants aux fichiers de configuration. |
| 4. redirect_config.txt | Contient les domaines et IP qui doivent être redirigés vers localhost (vers le serveur HTTP Python). |
| 5. requests_config.txt | Contient les définitions de chemins d'URL avec les sources de données correspondantes. |