
Crea automáticamente reglas YARA a partir de documentos maliciosos.

Halogen es una herramienta para automatizar la creación de reglas YARA basadas en los archivos de imagen incrustados dentro de un documento malicioso. Esto puede ayudar a los profesionales de ciberseguridad a escribir reglas de detección para amenazas maliciosas, así como ayudar a los respondedores a identificar la amenaza particular con la que están tratando. Actualmente, Halogen es capaz de crear reglas basadas en archivos JPG y PNG.

python3 halogen.py -h
usage: halogen.py [-h] [-f FILE] [-d DIR] [-n NAME] [--png-idat] [--jpg-sos] [--jpg-sof2sos] [--jpg-jump] [-c CONTAINER] [--clam] [--rprefix RPREFIX]
Halogen: Automatically create yara rules based on images embedded in office documents.
optional arguments:
-h, --help show this help message and exit
-f FILE, --file FILE File to parse
-d DIR, --directory DIR
directory to scan for image files.
-n NAME, --rule-name NAME
specify a custom name for the rule file
--png-idat For PNG matches, instead of starting with the PNG file header, start with the IDAT chunk.
--jpg-sos For JPG matches, skip over the header and look for the Start of Scan marker, and begin the match there.
--jpg-sof2sos for JPG matches, skip over the header and match the SOF all the way to the SOS + 45 bytes of the data within the SOS.
--jpg-jump for JPG matches, skip over the header and identify the sof, the sos and then read the actual image data take that data and look for repeated bytes. Skip those bytes and then
create 45 bytes of raw image data.
-c CONTAINER, --container CONTAINER
specify a clamav container type defaults to CL_TYPE_MSOLE2, CL_TYPE_OOXML_WORD, CL_TYPE_OOXML_XL, CL_TYPE_OOXML_PPT
--clam generate a clam rule instead of a yara rule
--rprefix RPREFIX specify a clamav ruleset prefix
Hemos incluido algunos archivos de documento de prueba con imágenes incrustadas para que puedas probarlo. Ejecutar python3 halogen/halogen.py -d tests/ > /tmp/halogen_test.yara producirá el archivo YARA de prueba que contiene todas las imágenes encontradas dentro de los archivos del directorio tests/.
Luego puedes ejecutar yara -d /tmp/halogen_test.yara tests/ y observar qué imágenes coinciden con qué archivos.
--png-idat puedes comenzar en el chunk IDAT encontrado dentro de un archivo PNG. También redujimos los bytes devueltos al coincidir con el chunk IDAT.--jpg-sos.--jpg-sof2sos, que lee el marcador Start of Frame (SOF) hasta que se encuentra el SOS, y luego lee 45 bytes adicionales. Esto es útil si el estándar --jpg-sos te da falsos positivos.--jpg-jump que lee los datos de imagen comprimidos y crea un salto hexadecimal en la salida YARA si encuentra bytes de imagen repetidos. Esto nos permite coincidir con el SOF y SOS del archivo, así como con algunos de los datos más únicos en la imagen.Por favor, envía pull requests en python3 e informa cualquier error que encuentres como issues.