Extraction de configuration et de payload de malware
Un bac à sable est utilisé pour exécuter des fichiers malveillants dans un environnement isolé tout en instrumentant leur comportement dynamique et en collectant des artefacts médico-légaux.
CAPE est dérivé de Cuckoo v1 qui propose les fonctionnalités de base suivantes sur la plateforme Windows :
CAPE complète la sortie traditionnelle du bac à sable de Cuckoo avec plusieurs ajouts clés :
Il existe une instance de démonstration gratuite en ligne que tout le monde peut utiliser :
https://capesandbox.com - Pour l'activation du compte, contactez https://twitter.com/capesandbox
Cuckoo Sandbox a commencé en tant que projet Google Summer of Code en 2010 au sein de The Honeynet Project. Il a été initialement conçu et développé par Claudio Guarnieri, la première version bêta a été publiée en 2011. En janvier 2014, Cuckoo v1.0 a été publiée.
2015 a été une année charnière, avec un fork significatif dans l'histoire de Cuckoo.
Le développement du moniteur original et de la méthode de hooking d'API a été arrêté dans le
projet principal de Cuckoo. Il a été remplacé par un moniteur alternatif
utilisant un format de signature restructuredText compilé via la chaîne d'outils Linux,
créé par Jurriaan Bremer.
À peu près à la même époque, un fork appelé Cuckoo-modified a été créé par Brad « Spender » Spengler, poursuivant le développement du moniteur original avec des améliorations significatives, notamment le support 64 bits et surtout l'introduction du compilateur Microsoft Visual Studio.
Au cours de la même année, le développement d'un outil dynamique en ligne de commande d'extraction de configuration et de charge utile appelé CAPE a commencé chez Context Information Security par Kevin O'Reilly. Le nom a été inventé comme acronyme de « Config And Payload Extraction » et la recherche originale se concentrait sur l'utilisation de hooks d'API fournis par la bibliothèque Detours de Microsoft pour capturer les charges utiles et configurations de malwares dépaquetés. Cependant, il est devenu évident que les hooks d'API seuls offrent une puissance et une précision insuffisantes pour permettre le dépaquetage de charges utiles ou de configurations à partir de malwares arbitraires.
Pour cette raison, des recherches ont commencé sur un nouveau concept de débogueur permettant de contrôler et instrumenter précisément les malwares tout en évitant l'utilisation des interfaces de débogage Microsoft, afin d'être aussi furtif que possible. Ce débogueur a été intégré dans l'outil en ligne de commande preuve de concept basé sur Detours, combinant avec les hooks d'API et résultant en des capacités très puissantes.
Lorsque les premiers travaux ont montré qu'il serait possible de remplacer Microsoft Detours par le moteur de hooking d'API de Cuckoo-modified, l'idée de CAPE Sandbox est née. Avec l'ajout du débogueur, du dépaquetage automatisé, de la classification basée sur YARA et de l'extraction de configuration intégrée, en septembre 2016 à la 44con, CAPE Sandbox a été publiquement publié pour la première fois : CAPE version 1.
À l'été 2018, le projet a eu la chance de voir le début d'énormes contributions d'Andriy « doomedraven » Brukhovetskyy, un contributeur de longue date de Cuckoo. En 2019, il a commencé la tâche titanesque de porter CAPE vers Python 3 et en octobre de cette année-là, CAPEv2 a été publié.
CAPE a été continuellement développé et amélioré pour suivre le rythme des avancées tant dans les malwares que dans les capacités des systèmes d'exploitation. En 2021, la capacité de programmer le débogueur de CAPE pendant la détonation via des scans YARA dynamiques a été ajoutée, permettant la création de contournements dynamiques pour les techniques anti-bac à sable. Windows 10 est devenu le système d'exploitation par défaut, et d'autres ajouts significatifs incluent le bureau interactif, la capture de charge utile AMSI (Anti-Malware Scan Interface), le « syscall hooking » basé sur Microsoft Nirvana et les contre-mesures de syscall direct/indirect basées sur le débogueur.

Les malwares peuvent être classifiés dans CAPE via trois mécanismes :

L'analyse peut être effectuée à l'aide du propre framework de CAPE, alternativement les frameworks suivants sont supportés : RATDecoders, DC3-MWCP, MalDuck, ou MaCo
def extract_config(data): qui sera appelé par cape_utils.py et 0 complications.

CAPE tire parti de nombreuses techniques ou comportements de malwares pour permettre la capture de charges utiles dépaquetées :
Ces comportements entraîneront la capture des charges utiles injectées, extraites ou décompressées pour une analyse plus approfondie. De plus, CAPE crée automatiquement un dump de processus pour chaque processus, ou, dans le cas d'une DLL, l'image du module DLL en mémoire. Ceci est utile pour les échantillons empaquetés avec des packers simples, où souvent le dump de l'image du module est entièrement dépaqueté.
En plus des mécanismes de dépaquetage « passif » par défaut de CAPE, il est possible d'activer le dépaquetage « actif » qui utilise des points d'arrêt pour détecter l'écriture dans des régions mémoire nouvellement allouées ou protégées, afin de capturer les charges utiles dépaquetées le plus tôt possible avant l'exécution. Ceci est activé via la case à cocher de soumission web ou en spécifiant l'option unpacker=2 et est désactivé par défaut car cela peut affecter la qualité de la détonation.
CAPE peut être programmé via une signature YARA pour dépaquetter des packers spécifiques. Par exemple, les packers de type UPX sont très courants et, bien que dans CAPE ils entraînent la capture passive des charges utiles dépaquetées, la capture par défaut est effectuée après que la charge utile dépaquetée a commencé à s'exécuter. Par conséquent, en détectant dynamiquement les packers dérivés d'UPX via une signature YARA personnalisée et en définissant un point d'arrêt sur la dernière instruction du packer, il est possible de capturer la charge utile à son point d'entrée original (OEP) avant qu'elle n'ait commencé à s'exécuter.


L'option dump-on-api permet de dumper un module lorsqu'il appelle une fonction API spécifique qui peut être spécifiée dans l'interface web (par exemple dump-on-api=DnsQuery_A).
Le débogueur a permis à CAPE de continuer à évoluer au-delà de ses capacités originales, qui incluent désormais des contournements dynamiques anti-évasion. Étant donné que les malwares modernes tentent couramment d'éviter l'analyse dans les bacs à sable, par exemple en utilisant des pièges temporels pour la virtualisation ou la détection de hooks d'API, CAPE permet de développer des contre-mesures dynamiques combinant des actions du débogueur dans des signatures Yara pour détecter les malwares d'évasion pendant leur détonation, et effectuer une manipulation du flux de contrôle pour forcer l'échantillon à détoner complètement ou à sauter les actions d'évasion.

Un accès rapide au débogueur est possible avec les options de soumission bp0 à bp3 acceptant des valeurs RVA ou VA pour définir des points d'arrêt, où une courte trace d'instructions sera produite, régie par les options count et depth (par exemple bp0=0x1234,depth=1,count=100).

Pour définir un point d'arrêt au point d'entrée du module, ep est utilisé au lieu d'une adresse (par exemple bp0=ep). Alternativement, break-on-return permet un point d'arrêt sur l'adresse de retour d'une API hookée (par exemple break-on-return=NtGetContextThread). Un paramètre optionnel base-on-api permet de définir la base d'image pour les points d'arrêt RVA par appel API (par exemple base-on-api=NtReadFile,bp0=0x2345).

Les options action0 à action3 permettent d'effectuer des actions lorsque les points d'arrêt sont atteints, comme dumper des régions mémoire (par exemple action0=dumpebx) ou changer le flux de contrôle d'exécution (par exemple action1=skip). La documentation de CAPE contient d'autres exemples de telles actions.
Le dépôt contenant le code du moniteur de CAPE est distinct.
Il existe un dépôt communautaire de signatures contenant plusieurs centaines de signatures développées par la communauté CAPE. Toute nouvelle fonctionnalité communautaire doit être poussée vers ce dépôt. Plus tard, elles peuvent être déplacées vers le noyau si les développeurs sont capables et disposés à les maintenir.
Veuillez contribuer à ce projet en aidant à créer de nouvelles signatures, analyseurs ou contournements pour d'autres familles de malwares. Beaucoup sont en cours de développement, alors surveillez cet espace.
Un grand merci à @D00m3dR4v3n pour avoir porté seul CAPE vers Python 3.
Python3
Seul rooter doit être exécuté en tant que root, le reste en tant qu'utilisateur cape. L'exécution en tant que root va perturber les permissions.
conf !kvm-qemu.sh et cape2.sh DOIVENT ÊTRE exécutés depuis une session tmux pour éviter tout problème lié au système d'exploitation si la connexion ssh se coupe.<username> par un modèle réel.<WOOT> à l'intérieur !sudo ./kvm-qemu.sh all <username> 2>&1 | tee kvm-qemu.logsudo ./cape2.sh base 2>&1 | tee cape.logconf.systemctl restart <nom_du_service>journalctl -u <nom_du_service>-h pour le menu d'aide. Exécuter le service en mode débogage (-d) peut également aider.-h, mais veuillez vérifier les scripts pour comprendre ce qu'ils font.git pullpython3 utils/community.py -waf voir -h avant pour être sûr de comprendregit add --all
git commit -m '[STASH]'
git pull --rebase origin master
# résoudre les conflits (rebase) si nécessaire
git reset HEAD~1
# assurez-vous que le dépôt kevoreilly a été ajouté en tant que remote (à faire une seule fois)
git remote add kevoreilly https://github.com/kevoreilly/CAPEv2.git
# assurez-vous que toutes vos modifications sont validées sur la branche que vous allez fusionner
git commit -a -m '<votre message de commit ici>'
# récupérez les modifications du dépôt kevoreilly
git fetch kevoreilly
# fusionnez la branche master de kevoreilly dans votre branche actuelle
git merge kevoreilly/master
# résolvez les conflits de fusion si nécessaire
# poussez vers votre dépôt si souhaité
git push
Si vous utilisez CAPEv2 dans votre travail, veuillez le citer comme spécifié dans le menu GitHub « Cite this repository ».
pefile car chacune épingle la version qu'elle souhaite.
pefile car vous l'avez déjà installée. Et voilà, plus de douleur.