Análisis de Archivos y Seguridad en Binarios
Relacionado: 12 Introduccion a la Criptografiaseguridad. Forense de memoria de sistema completo. Rootkits y Hooking. VirusTotal. Immunity debugger y Ghidra.
1. Análisis de la Estructura de un Archivo
-
Binwalk: Permite analizar la estructura de un archivo binario.
-
Extracción de datos con
ddygunzip:dd if=main.cvd bs=1 skip=512 count=100 | gunzipEsto extrae 100 bytes del archivo
main.cvd, comenzando desde el byte 512, y los descomprime. -
Uso de
dupara mostrar tamaño de archivos ordenados:du -sh | sort -hMuestra el tamaño de los archivos y los ordena de menor a mayor.
El tamaño de la muestra es un factor importante en el análisis.
-
Para extraer
stringsutilizamosrabin2 -zrabin2 -z archivo.bin -
Decodificación en Base64 con Rabin2:
RABIN2_DEBASE64=1 rabin2 --zz &

2. Extracción de Cadenas y Análisis de Texto en Binarios
-
Evitar problemas con binarios al usar
grep:grep -aEo "patrón" archivo- La opción
-aevita problemas al buscar en archivos binarios. -rpermite buscar en todos los archivos dentro de una carpeta.grepbusca byte por byte, lo que puede generar problemas con UTF-16 si no se usa correctamente.
- La opción

-
Metadatos de imágenes (
ExifTool):exiftool imagen.png- Extrae metadatos de archivos
.png,.jpg,.mp3, entre otros.
- Extrae metadatos de archivos
3. Análisis de Entropía y Esteganografía
- Entropía en archivos:
- Si la entropía cambia dentro de un archivo, significa que tiene dos partes diferenciadas.
- Una alta entropía sugiere que el contenido está cifrado o comprimido.
- Es importante revisar si la entropía es natural.
Los archivos JPEG son imágenes comprimidas, por lo que suelen tener alta entropía, al igual que otros archivos comprimidos.
- Esteganografía:
- Se trata de ocultar información dentro de otro contenido sin ser detectado.
- Rabin2 puede encontrar información oculta en Base64.
- FLOSS solo analiza archivos PE.
- UPX es un compresor de ejecutables PE que facilita su distribución.
- FLOSS busca
stringsen distintas codificaciones.
4. Análisis de Malware y Clasificación
-
WannaCry (
wnarypt0r):- Tiene una lista de archivos que cifra automáticamente.
- WannaCrypt es el algoritmo de cifrado que utiliza el ransomware.
-
Políglotas (
Polyglots):- Un polígloto es un archivo que se comporta de manera diferente dependiendo del software que lo interprete.
- Ejemplo: Un archivo con cabecera HTML puede abrirse como una imagen en un visor gráfico, ignorando la cabecera HTML.
-
DNS Esteganografía:
- Se pueden ocultar datos dentro de paquetes DNS para exfiltrar información.
5. Documentación y Clasificación
-
Registro de hallazgos en un README:
- Se documenta el análisis de la muestra para referencia futura.
-
Codificación en Base64:
- Base64 convierte datos de 8 bits a 6 bits, lo que disminuye su tamaño.
-
Clasificación de archivos con
ssdeep:ssdeep archivo- Extrae el tamaño del archivo y su hash fuzzy para comparaciones.
-
PowerShell y
ps1:- Un
.ps1puede contener una DLL dentro de una variable, permitiendo la ejecución sin necesidad de escribir un archivo DLL en disco.
- Un
YARA: Reglas y Uso en Análisis de Binarios
YARA es una herramienta diseñada para la identificación y categorización de archivos basándose en patrones y firmas. Se usa comúnmente en la detección de malware, análisis forense y clasificación de archivos binarios.
Uso básico de YARA
Para ejecutar YARA con una regla específica sobre un archivo, se usa el siguiente comando:
yara rule.yar archivoDonde rule.yar es el archivo que contiene la regla YARA y archivo es el archivo a analizar.
1. Definición de Números Mágicos
- Números mágicos son valores específicos dentro de un archivo que identifican su formato.
- En YARA, se pueden definir patrones de números mágicos para reconocer diferentes tipos de archivos.
- Ejemplo:
4D 5A(en hexadecimal) es la firma de los ejecutables PE en Windows. - Esto indica que el archivo tiene tanto parte binaria como textual.
- Ejemplo:
Ejemplo de regla YARA para detectar archivos PE:
rule DetectPE {
strings:
$mz = { 4D 5A } // Firma PE (MZ)
condition:
$mz at 0
}Esta regla detectará cualquier archivo que contenga 4D 5A en los primeros bytes.
2. Endianness en YARA
-
YARA reconoce estructuras en Big Endian y Little Endian.
-
Ejemplo:
5A 4Den Little Endian significa que el archivo es PE porque en C los datos se almacenan en este orden. -
Se puede especificar en YARA que el valor debe estar al principio con:
uint16(0) == 0x5A4DEsto verifica que el archivo comienza con la firma
MZ, asegurando que es un ejecutable PE.
3. Detección de Cifrado XOR en YARA
- YARA puede detectar patrones en archivos cifrados con XOR.
- El cifrado XOR es usado en malware para ocultar cadenas y evitar detección.
Ejemplo de regla para detectar datos en XOR:
rule XOR_Encoded {
strings:
$xor_pattern = "playgame" xor
condition:
$xor_pattern
}Esto detecta la palabra playgame aunque haya sido cifrada con una operación XOR.
4. Uso de Base64 en YARA
-
Para detectar una cadena en Base64, se puede definir una variable con la representación codificada.
-
En PowerShell, una variable puede contener una cadena en Base64 como:
$text = "playgame" -
En YARA, se puede buscar directamente una representación en Base64:
rule DetectBase64 { strings: $encoded = "cGxheWdhbWU=" base64 // "playgame" en Base64 condition: $encoded }
5. Uso de Operadores en YARA
- En YARA, el símbolo
#indica cardinalidad, es decir, cuántas veces aparece un patrón. - Se puede combinar con
uint16(0) ==para verificar ubicaciones específicas. entry_pointen un PE define el punto de inicio real del código ejecutable.
Ejemplo de regla que detecta ejecutables PE con una entrada específica:
rule PE_EntryPoint {
condition:
uint16(0) == 0x5A4D and entry_point < filesize
}Esto verifica que el archivo tiene la firma MZ y que el entry_point está dentro del tamaño válido del archivo.
6. Comandos Útiles en Análisis con YARA
-
Visualizar el contenido de un archivo en
vi(Linux):vi archivoPermite inspeccionar manualmente un archivo sospechoso.
-
Eliminar las dos últimas líneas de un archivo de texto:
head -n -2 texto > text.ps1Guarda el archivo sin las dos últimas líneas.
Conclusión
YARA es una herramienta poderosa para la detección de malware y la clasificación de archivos binarios. Con reglas bien diseñadas, se pueden detectar patrones específicos en archivos ejecutables, analizar cifrados XOR, identificar estructuras en Base64 y verificar entradas de código en PE.
Si necesitas más ejemplos o adaptación a un caso específico, dime y lo detallamos más.