
Configuration de malware et extraction de payload
Avec la fin de vie imminente de Python 2 (1er janvier 2020), CAPEv1 sera abandonné. Veuillez passer à la version Python 3 dès que possible.
CAPE est un bac à sable pour malwares. Il est dérivé de Cuckoo et conçu pour automatiser le processus d'analyse des malwares dans le but d'extraire les charges utiles et la configuration des malwares. Cela permet à CAPE de détecter les malwares sur la base de signatures de charge utile, ainsi que d'automatiser de nombreux objectifs de rétro-ingénierie des malwares et de renseignement sur les menaces.
Il existe une version communautaire en ligne, gratuite pour tous :
https://cape.contextis.com/submit
CAPE peut détecter un certain nombre de techniques ou de comportements de malwares, ainsi que des familles de malwares spécifiques, dès son premier lancement sur un échantillon. Cette détection peut alors déclencher un nouveau lancement avec un package spécifique, afin d'extraire la charge utile du malware et éventuellement sa configuration, pour une analyse plus approfondie.
CAPE fonctionne en contrôlant le malware via un débogueur sur mesure et des hooks API. La détection pour déclencher un package CAPE peut être basée sur des signatures API ou Yara. Le débogueur utilise des signatures Yara ou des hooks API pour permettre de placer des points d'arrêt sur des instructions individuelles, des régions mémoire ou des appels de fonction. Une fois qu'une zone d'intérêt est atteinte, elle peut être manipulée et sauvegardée pour traitement et analyse, et éventuellement pour l'analyse de configuration.
Les techniques ou comportements que CAPE détecte et pour lesquels il existe des packages incluent :
Les packages pour ces comportements sauvegarderont les charges utiles injectées, extraites ou décompressées pour une analyse plus approfondie. Il s'agit souvent de la charge utile du malware sous forme non packée.
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. Cela est utile pour les échantillons packés avec des packers simples, où souvent le dump de l'image du module est complètement dépacké. Les signatures Yara peuvent se déclencher sur les dumps de processus, ce qui peut entraîner une soumission avec un package spécifique ou une analyse de configuration.
CAPE dispose également d'un package qui peut dépaquer dynamiquement les échantillons utilisant UPX « cracké » (modifié), très populaire auprès des auteurs de malwares. Ces échantillons sont exécutés dans le débogueur de CAPE jusqu'à leur OEP (point d'entrée original), où ils sont sauvegardés, corrigés et leurs importations sont automatiquement reconstruites, prêts pour l'analyse.
Actuellement, CAPE dispose de packages spécifiques pour extraire la configuration et les charges utiles des familles de malwares suivantes :
CAPE dispose d'analyseurs/décodeurs de configuration pour les familles de malwares suivantes, dont les charges utiles sont automatiquement extraites par un package comportemental :
De nombreuses autres familles de malwares voient leurs charges utiles automatiquement extraites par des packages comportementaux, pour lesquels CAPE utilise des signatures Yara pour détecter les charges utiles. Cette liste s'agrandit et inclut :
Les données de configuration peuvent être produites soit par les packages de familles, soit dans les charges utiles résultant des packages comportementaux. L'analyse de configuration peut ensuite être effectuée sur ces données grâce à la détection basée sur Yara, et à l'analyse de configuration basée sur l'un des frameworks d'analyse de configuration de CAPE, le framework RATDecoders de malwareconfig.com et DC3-MWCP (Defense Cyber Crime Center - Malware Configuration Parser). Les nombreux analyseurs/décodeurs de malwareconfig.com sont également inclus, comprenant entre autres : Sakula, DarkComet, PredatorPain et PoisonIvy. Merci à Kevin Breen/TechAnarchy pour ce framework et ces analyseurs (https://github.com/kevthehermit/RATDecoders), et à DC3 pour leur framework (https://github.com/Defense-Cyber-Crime-Center/DC3-MWCP). Un merci spécial à Jason Reaves (@sysopfb) pour l'analyseur TrickBot et à Fabien Perigaud pour l'analyseur PlugX.
Des packages utilitaires sont également inclus : 'DumpOnAPI' permet de sauvegarder un module lorsqu'il appelle une fonction API spécifique qui peut être spécifiée dans l'interface web. 'DumpConfigRegion' permet de sauvegarder la région mémoire contenant les informations C2 ou d'autres données de configuration pour les appels API couramment utilisés. Ces packages peuvent être utiles pour dépaquer/sauvegarder rapidement de nouveaux échantillons ou configurations. Le package 'Trace' permet un accès rapide au débogueur en acceptant quatre points d'arrêt (valeurs RVA) à définir sur des instructions, où une courte trace d'instructions sera produite. Un paramètre optionnel 'base-on-api' permet de définir la base d'image par appel API.
Le débogueur CAPE permet de définir des points d'arrêt sur la lecture, l'écriture ou l'exécution d'une adresse ou d'une région mémoire, ainsi qu'un mode pas à pas. Cela permet un contrôle fin de l'exécution du malware jusqu'à ce qu'il soit possible de sauvegarder les régions mémoire d'intérêt, contenant du code ou des données de configuration. Les points d'arrêt peuvent être définis dynamiquement par le code du package, les hooks API ou les signatures Yara. Grâce à la bibliothèque distorm intégrée, le débogueur peut afficher le désassemblage des instructions en mode pas à pas ou lorsque des points d'arrêt sont atteints, produisant ainsi des traces d'instructions.
Les processus, modules et régions mémoire peuvent être sauvegardés de diverses manières par CAPE via une API simple. Ces sauvegardes peuvent ensuite être scannées et analysées pour obtenir des informations de configuration. Les modules exécutables sont corrigés lors de la sauvegarde et peuvent également voir leurs importations automatiquement reconstruites (basé sur Scylla : https://github.com/NtQuery/Scylla). Les packages peuvent être écrits en se basant sur des hooks API, le débogueur CAPE, ou une combinaison des deux. Un certain nombre d'autres packages et analyseurs comportementaux et de familles de malwares sont actuellement en développement, alors restez à l'écoute.
Le dépôt contenant le code des DLL de surveillance qui forment la base de ces packages est distinct : https://github.com/ctxis/capemon. Ce dépôt est organisé en branches pour les différents packages.
CAPE est dérivé de spender-sandbox (https://github.com/spender-sandbox), lui-même dérivé de Cuckoo Sandbox (https://github.com/cuckoosandbox), donc merci à Brad Spengler, Claudio Guarnieri, Jurriaan Bremer et les innombrables autres contributeurs de Cuckoo sans qui ce travail ne serait pas possible. Il dépend également de Yara (https://github.com/VirusTotal/yara) de VirusTotal. Merci à Decalage (@decalage2) pour oletools, Didier Stevens et peepdf (@peepdf) pour les outils PDF, MalwareCantFly pour Vba2Graph et Matt Holley (@mrmolley) pour binGraph. Un grand merci également à doomedraven (@D00m3dR4v3n), Sandor Nemes (@sandornemes), Kevin Ross et Enzo (@enzok) pour leur soutien et leurs contributions.
N'hésitez pas à contribuer à ce projet en aidant à créer de nouveaux packages pour d'autres familles de malwares, packers, techniques ou analyseurs de configuration. Vous pouvez également contacter @CapeSandbox ou Kevin O'Reilly pour plus de détails sur le développement de CAPE.
sudo ./kvm-qemu.sh all <username>sudo ./cuckoo.sh all cape* Tous les scripts contiennent une aide -h, mais veuillez consulter les scripts pour comprendre ce qu'ils font.