
Marco modular de recopilación y correlación de artefactos de análisis de malware
Subparse es un marco modular desarrollado por Josh Strochein, Aaron Baker y Odin Bernstein. El marco está diseñado para analizar e indexar archivos maliciosos y presentar la información encontrada durante el análisis en un visor web con capacidad de búsqueda. El marco es modular, utilizando un motor de análisis central, módulos de análisis y una variedad de enriquecedores que agregan información adicional a los índices de malware. Los principales valores de entrada para el marco son directorios de archivos maliciosos, que el motor de análisis central o un motor de análisis especificado por el usuario analiza antes de agregar información adicional de cualquier motor de enriquecimiento especificado por el usuario, todo antes de indexar la información analizada en un índice de Elasticsearch. La información recopilada se puede buscar y ver a través de un visor web, que también permite filtrar por cualquier valor obtenido de cualquier archivo. Actualmente hay 3 motores de análisis: los motores de análisis predeterminados (PEParser, OLEParser y ELFParser), y 2 motores de enriquecimiento (ABUSEEnricher y CAPEEnricher).
Para comenzar a usar Subparse, es necesario instalar y configurar algunos programas requeridos/recomendados antes de intentar trabajar con nuestro software.
| Software | Estado | Enlace |
|---|---|---|
| Docker | Requerido | Guía de instalación |
| Python3.8.1 | Requerido | Guía de instalación |
| Pyenv | Recomendado | Guía de instalación |
Después de instalar el software requerido/recomendado en su sistema, hay algunos otros pasos que deben realizarse para instalar Subparse.
sudo get apt install build-essential pip3 install -r ./requirements.txt
docker-compose up
Nota: Esto puede tomar un poco de tiempo debido a la descarga de las imágenes y la configuración de los contenedores que necesitará Subparse.
Opciones de línea de comandos disponibles para subparse/parser/subparse.py:
| Argumento | Alternativa | Requerido | Descripción |
|---|---|---|---|
| -h | --help | No | Muestra el menú de ayuda |
| -d SAMPLES_DIR | --directory SAMPLES_DIR | Sí | Directorio de muestras para analizar |
| -e ENRICHER_MODULES | --enrichers ENRICHER_MODULES | No | Módulos enriquecedores a utilizar para análisis adicionales |
| -r | --reset | No | Restablecer/eliminar todos los datos en el clúster de Elasticsearch configurado |
| -v | --verbose | No | Mostrar salida detallada de la línea de comandos |
| -s | --service-mode | No | Entra en modo de servicio permitiendo agregar más muestras al SAMPLES_DIR mientras se procesa |
Para ver los resultados de los analizadores de Subparse, navegue a localhost:8080. Si tiene problemas para ver el sitio, asegúrese de que el contenedor se haya iniciado en Docker y que no haya otro proceso ejecutándose en el puerto 8080 que pueda impedir que el sitio esté disponible.
Antes de ejecutar cualquier analizador, se recopila información general sobre la muestra independientemente del tipo de archivo subyacente. Esta información incluye:
Los analizadores SOLO se ejecutan en muestras que coinciden con el tipo de archivo. Por ejemplo, los archivos PE tendrán por defecto el PEParser ejecutado contra ellos debido a que el tipo de archivo se corresponde con aquellos que el PEParser puede examinar.
Estos módulos son opcionales y SOLO se ejecutarán si se especifican mediante la bandera -e | --enrichers en la línea de comandos.
La vista web de Subparse se construyó usando Bootstrap para su CSS, lo que permite utilizar cualquier CSS incorporado de Bootstrap al desarrollar sus propios archivos Vue.js de analizador/enriquecedor personalizado. También hemos proporcionado un ejemplo para cada uno para ayudar a comenzar, y hemos implementado algunos widgets personalizados para facilitar el proceso de desarrollo y promover la estandarización en la forma en que se muestra la información. Todos los archivos Vue.js se utilizan para mostrar dinámicamente la información del analizador/enriquecedor personalizado y se utilizan como plantillas para los datos.
Nota: Las convenciones de nombres tanto de clases como de archivos deben cumplirse estrictamente. Esto es lo primero que se debe verificar si tiene problemas para que su analizador/enriquecedor personalizado se ejecute. La convención de nombres de su analizador/enriquecedor debe usar el mismo nombre en todos los archivos y nombres de clase.
El objeto logger es una implementación singleton del logger predeterminado de Python. Para un uso detallado, consulte la Documentación oficial. Para Subparse, los únicos métodos de registro que recomendamos usar son los niveles de registro para la salida. Estos son: