
Configuración de malware y extracción de payload
Con el inminente fin de vida útil de Python 2 (1 de enero de 2020), CAPEv1 será eliminado gradualmente. Actualice a la versión de Python 3 lo antes posible.
CAPE es un sandbox de malware. Está derivado de Cuckoo y está diseñado para automatizar el proceso de análisis de malware con el objetivo de extraer cargas útiles y configuración del malware. Esto permite a CAPE detectar malware basándose en firmas de cargas útiles, así como automatizar muchos de los objetivos de la ingeniería inversa de malware y la inteligencia de amenazas.
Hay una versión comunitaria en línea que es gratuita para que cualquiera la pruebe:
https://cape.contextis.com/submit
CAPE puede detectar varias técnicas o comportamientos de malware, así como familias específicas de malware, desde su ejecución inicial sobre una muestra. Esta detección puede luego desencadenar una ejecución adicional con un paquete específico, con el fin de extraer la carga útil del malware y posiblemente su configuración, para un análisis más profundo.
CAPE funciona controlando el malware a través de un depurador personalizado y hooks de API. La detección para activar un paquete de CAPE puede basarse en firmas de API o Yara. El depurador utiliza firmas Yara o hooks de API para permitir establecer puntos de interrupción en instrucciones individuales, regiones de memoria o llamadas a funciones. Una vez que se alcanza una región de interés, puede ser manipulada y volcada para su procesamiento y análisis, y posiblemente para el análisis de configuración.
Las técnicas o comportamientos que CAPE detecta y para los cuales tiene paquetes incluyen:
Los paquetes para estos comportamientos volcarán las cargas útiles que se están inyectando, extrayendo o descomprimiendo para su posterior análisis. Esto suele ser la carga útil del malware en forma desempaquetada.
CAPE crea automáticamente un volcado de proceso para cada proceso, o, en el caso de una DLL, la imagen del módulo DLL en memoria. Esto es útil para muestras empaquetadas con empaquetadores simples, donde a menudo el volcado de la imagen del módulo está completamente desempaquetado. Las firmas Yara pueden activarse en los volcados de proceso, posiblemente resultando en un envío con un paquete específico o análisis de configuración.
CAPE también tiene un paquete que puede desempaquetar dinámicamente muestras que utilizan UPX 'hackeado' (modificado), muy popular entre los autores de malware. Estas muestras se ejecutan en el depurador de CAPE hasta su OEP (punto de entrada original), momento en el que son volcadas, reparadas y sus importaciones se reconstruyen automáticamente, listas para el análisis.
Actualmente CAPE tiene paquetes específicos que vuelcan configuración y cargas útiles para las siguientes familias de malware:
CAPE tiene analizadores/decodificadores de configuración para las siguientes familias de malware, cuyas cargas útiles son extraídas automáticamente por un paquete de comportamiento:
Muchas otras familias de malware tienen sus cargas útiles extraídas automáticamente por paquetes de comportamiento, para las cuales CAPE utiliza firmas Yara para detectar las cargas útiles. Esta lista está creciendo e incluye:
Los datos de configuración pueden ser generados por paquetes de familia, o en cargas útiles resultantes de paquetes de comportamiento. Luego se puede realizar el análisis de configuración mediante detección basada en Yara y el análisis de configuración basado en cualquiera de los marcos de análisis de configuración de CAPE, el marco RATDecoders de malwareconfig.com y DC3-MWCP (Centro de Cibercrimen de Defensa - Analizador de Configuración de Malware). También se incluyen los numerosos analizadores/decodificadores de malwareconfig.com, que incluyen, entre otros: Sakula, DarkComet, PredatorPain y PoisonIvy. Gracias a Kevin Breen/TechAnarchy por este marco y analizadores (https://github.com/kevthehermit/RATDecoders), y a DC3 por su marco (https://github.com/Defense-Cyber-Crime-Center/DC3-MWCP). Un agradecimiento especial a Jason Reaves (@sysopfb) por el analizador de TrickBot y a Fabien Perigaud por el analizador de PlugX.
También se incluyen paquetes de utilidad: 'DumpOnAPI' permite volcar un módulo cuando llama a una función API específica que puede ser especificada en la interfaz web. 'DumpConfigRegion' permite volcar la región de memoria que contiene información de C2 u otros datos de configuración para llamadas API de uso común. Estos paquetes pueden ser útiles para desempaquetar/volcar rápidamente muestras o configuraciones novedosas. El paquete 'Trace' permite acceso rápido al depurador al aceptar cuatro puntos de interrupción (valores RVA) para establecer en instrucciones, tras lo cual se mostrará un breve rastro de instrucciones. Un parámetro opcional 'base-on-api' permite que la base de la imagen sea establecida mediante una llamada API.
El depurador de CAPE permite establecer puntos de interrupción en lectura, escritura o ejecución de una dirección o región de memoria, así como el modo de paso a paso. Esto permite un control fino sobre la ejecución del malware hasta que sea posible volcar las regiones de memoria de interés, que contienen código o datos de configuración. Los puntos de interrupción pueden establecerse dinámicamente mediante código de paquete, hooks de API o firmas Yara. Gracias a la biblioteca distorm incorporada, el depurador puede mostrar el desensamblado de instrucciones durante el modo de paso a paso o cuando se alcanzan puntos de interrupción, resultando en rastros de instrucciones.
Los procesos, módulos y regiones de memoria pueden ser volcados de diversas maneras por CAPE mediante el uso de una API simple. Estos volcados pueden luego ser escaneados y analizados en busca de información de configuración. Los módulos ejecutables se reparan al ser volcados y también pueden tener sus importaciones reconstruidas automáticamente (basado en Scylla: https://github.com/NtQuery/Scylla). Los paquetes pueden escribirse basándose en hooks de API, el depurador de CAPE, o una combinación de ambos. Actualmente hay varios otros paquetes de comportamiento y de familias de malware y analizadores en desarrollo, así que estén atentos.
El repositorio que contiene el código de las DLL de monitor que forman la base de estos paquetes es uno distinto: https://github.com/ctxis/capemon. Este repositorio está organizado en ramas para los distintos paquetes.
CAPE está derivado de spender-sandbox (https://github.com/spender-sandbox), que a su vez está derivado de Cuckoo Sandbox (https://github.com/cuckoosandbox), así que gracias a Brad Spengler, Claudio Guarnieri, Jurriaan Bremer y los innumerables otros contribuyentes de Cuckoo sin los cuales este trabajo no sería posible. También depende de Yara (https://github.com/VirusTotal/yara) de VirusTotal. Gracias a Decalage (@decalage2) por oletools, Didier Stevens y peepdf (@peepdf) por las herramientas PDF, MalwareCantFly por Vba2Graph y Matt Holley (@mrmolley) por binGraph. Un gran agradecimiento también a doomedraven (@D00m3dR4v3n), Sandor Nemes (@sandornemes), Kevin Ross y Enzo (@enzok) por su apoyo y contribuciones.
Por favor, contribuya a este proyecto ayudando a crear nuevos paquetes para más familias de malware, empaquetadores, técnicas o analizadores de configuración. Alternativamente, contacte a @CapeSandbox o Kevin O'Reilly para más detalles sobre el desarrollo de CAPE.
sudo ./kvm-qemu.sh all <username>sudo ./cuckoo.sh all cape* Todos los scripts contienen help -h, pero por favor revise los scripts para entender lo que hacen.