Herramienta de análisis y manipulación de Magic Numbers orientada a SOC/NOC, Pentesting y Forense Digital.
- ¿Qué son los Magic Numbers?
- Funcionalidades
- Instalación
- Uso
- Magic Numbers soportados
- Perspectiva Defensiva — SOC/NOC
- Perspectiva Ofensiva — Técnicas reales de abuso
- Casos de uso legítimos
- Referencias MITRE ATT&CK
- Disclaimer
- Autor
Los Magic Numbers son los primeros 1 a 8 bytes de un archivo que actúan como firma de identidad del formato real, independientemente de la extensión declarada.
$ xxd imagen.jpg | head -1
00000000: ffd8 ffe0 0010 4a46 4946 0001 ... # FF D8 FF → JPEG confirmado
La extensión de un archivo no define su tipo real. Los magic numbers sí.
Herramientas como file, xxd o binwalk comparan estos bytes contra una base de firmas conocidas para determinar el tipo real del contenido. Esta herramienta te permite leer, detectar y modificar esos bytes de forma rápida desde la terminal.
| Función | Flag | Descripción |
|---|---|---|
| Detectar tipo | -d |
Lee los primeros bytes del archivo e identifica el tipo |
| Modificar magic number | -t <TIPO> |
Sobreescribe la cabecera con la firma del tipo indicado |
| Magic number personalizado | -m <HEX> |
Inyecta una firma hexadecimal arbitraria |
| Scan de directorio | -s |
Detecta archivos cuyo magic number no coincide con su extensión |
| Backup automático | — | Se crea un .bak antes de cualquier modificación |
# Clonar el repositorio
git clone https://github.com/comandre-ex/MagicBytes.git
cd MagicBytes
# Dar permisos de ejecución
chmod +x mbytes.sh
# Dependencias (normalmente ya presentes en Linux)
# xxd, dd, xxd — parte del paquete vim-common / coreutilsRequisitos: Bash 4+, xxd, dd. Probado en Debian/Ubuntu/Kali.
# Sintaxis general
./mbytes.sh [opciones] -f <archivo>
# Detectar el tipo real de un archivo
./mbytes.sh -d -f imagen_sospechosa.jpg
# Modificar el magic number a JPEG
./mbytes.sh -f shell.php -t JPEG
# Inyectar magic number hexadecimal personalizado
./mbytes.sh -f archivo.bin -m FFD8FFE0
# Escanear el directorio actual en busca de archivos con extensión falsa
./mbytes.sh -s
# Panel de ayuda
./mbytes.sh -hSalida esperada:
[+] Backup creado: shell.php.bak
[+] Magic number modificado correctamente
| Formato | Magic Number (HEX) | ASCII | Descripción |
|---|---|---|---|
| JPEG | FF D8 FF |
— | Imagen JPEG |
| PNG | 89 50 4E 47 0D 0A 1A 0A |
.PNG.... |
Imagen PNG |
| GIF | 47 49 46 38 |
GIF8 |
Imagen GIF (87a / 89a) |
25 50 44 46 |
%PDF |
Documento PDF | |
| ZIP | 50 4B 03 04 |
PK.. |
Archivo ZIP |
| RAR | 52 61 72 21 1A 07 00 |
Rar!... |
Archivo RAR |
| MP3 | FF FB |
— | Audio MP3 |
| WAV | 52 49 46 46 |
RIFF |
Audio WAV (RIFF) |
| EXE | 4D 5A |
MZ |
Ejecutable Windows (MZ) |
| TAR | 75 73 74 61 72 |
ustar |
Archivo TAR (POSIX) |
Para inyectar un formato no listado, usa -m con el hex de la firma directamente.
Comprender la manipulación de magic numbers es crítico para detectar evasión y ocultamiento en archivos maliciosos.
| Escenario | Indicador | Riesgo |
|---|---|---|
.jpg con magic number MZ (EXE) |
Ejecutable disfrazado de imagen | Crítico |
.pdf con cabecera PK (ZIP) |
Documento con contenido comprimido embebido | Alto |
.mp3 con firma ZIP o RAR |
Posible exfiltración encubierta / esteganografía | Alto |
| Magic number válido pero extensión incoherente | Bypass de whitelists de extensión | Medio |
# Verificar el tipo real de un archivo
file archivo_sospechoso.jpg
xxd archivo_sospechoso.jpg | head -2
# Comparar extensión vs tipo real en masa (directorio actual)
for f in *; do echo "$f -> $(file -b "$f")"; done
# Análisis profundo — archivos embebidos y firmas múltiples
binwalk archivo_sospechosorule MagicNumber_EXE_Mismatch {
meta:
description = "Archivo con extensión no-ejecutable pero header MZ (EXE/DLL)"
author = "SOC Team"
reference = "T1036 - Masquerading"
strings:
$mz = { 4D 5A }
condition:
$mz at 0 and not filename matches /\.(exe|dll|sys|scr|com)$/i
}Para defender un sistema, primero debes entender cómo atacarlo.
Todo lo descrito a continuación debe ejecutarse únicamente en entornos autorizados.
Aplicaciones web que validan el tipo de archivo por su magic number pueden ser engañadas:
# Prepender la firma JPEG a un webshell PHP
echo -ne '\xFF\xD8\xFF' | cat - shell.php > shell.jpg
# Con mbytes.sh
./mbytes.sh -f shell.php -t JPEGEl servidor acepta el archivo como imagen. Si ejecuta PHP, se obtiene RCE.
Los motores antivirus aplican reglas por tipo de archivo. Al corromper los primeros bytes de un ejecutable malicioso, el motor puede clasificarlo incorrectamente y no aplicar las reglas de detección correspondientes.
# Comprimir datos sensibles, cambiar firma a JPEG
zip datos.zip informe_confidencial.xlsx
./mbytes.sh -f datos.zip -t JPEG
mv datos.zip "foto_vacaciones.jpg"
# El DLP lo procesa como imagen y no inspecciona el contenidoArchivos multimedia con magic numbers manipulados pueden actuar como canales de C2, embebiendo instrucciones en su contenido sin levantar alertas en el tráfico de red monitorizado.
Las herramientas de carving forense (Autopsy, Foremost, Scalpel) dependen de magic numbers para recuperar archivos eliminados. Corromper la cabecera antes de borrar el archivo dificulta activamente la recuperación de evidencia:
# Corromper magic number y luego eliminar de forma segura
./mbytes.sh -f evidencia.pdf -m $(openssl rand -hex 8)
shred -u evidencia.pdf- Pentesting / CTF — Bypass de validaciones en File Upload vulnerabilities
- Análisis forense — Identificación de archivos con extensiones manipuladas
- SOC/NOC — Generación de muestras de prueba para validar reglas YARA/SIGMA
- Red Team — Simulación de técnicas de evasión para evaluar controles
- Entrenamiento — Comprensión de formatos de archivo a nivel de bytes
| Técnica | ID | Descripción |
|---|---|---|
| Masquerading | T1036 | Disfrazar archivos con extensiones o firmas falsas |
| Obfuscated Files or Information | T1027 | Ofuscar contenido malicioso |
| Indicator Removal | T1070 | Anti-forensics, borrado de evidencia |
Recursos adicionales:
- OWASP: Unrestricted File Upload
- File Signatures Database — Gary Kessler
- Linux
filecommand internals — magic(5)
Esta herramienta fue desarrollada con fines educativos y de investigación en ciberseguridad. El uso de esta herramienta para actividades ilegales, no autorizadas o fuera del alcance de un pentest acordado está estrictamente prohibido. El autor no se responsabiliza del mal uso. Úsala únicamente en entornos donde tengas autorización explícita y por escrito.
Irving SA — Comandre-ex
Si te resultó útil, deja una ⭐ en el repositorio.