Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 

Repository files navigation

MagicBytes 2.0 — Magic Number Analyzer & Modifier

Herramienta de análisis y manipulación de Magic Numbers orientada a SOC/NOC, Pentesting y Forense Digital.

Bash Linux License Version Pentesting


Índice


¿Qué son los Magic Numbers?

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.


Funcionalidades

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

Instalació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 / coreutils

Requisitos: Bash 4+, xxd, dd. Probado en Debian/Ubuntu/Kali.


Uso

# 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 -h

Salida esperada:

[+] Backup creado: shell.php.bak
[+] Magic number modificado correctamente

Magic Numbers Soportados

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)
PDF 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.


Perspectiva Defensiva — SOC/NOC

Comprender la manipulación de magic numbers es crítico para detectar evasión y ocultamiento en archivos maliciosos.

Indicadores de alerta

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

Comandos de detección rápida

# 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_sospechoso

Regla YARA — EXE disfrazado

rule 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
}

Perspectiva Ofensiva — Técnicas reales de abuso

Para defender un sistema, primero debes entender cómo atacarlo.
Todo lo descrito a continuación debe ejecutarse únicamente en entornos autorizados.

1. File Upload Bypass

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 JPEG

El servidor acepta el archivo como imagen. Si ejecuta PHP, se obtiene RCE.

2. Evasión de AV / EDR

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.

3. Evasión de DLP

# 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 contenido

4. C2 encubierto vía Esteganografía

Archivos 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.

5. Anti-Forensics

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

Casos de Uso Legítimos

  • 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

Referencias — MITRE ATT&CK

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:


Disclaimer Legal

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.


Autor

Irving SAComandre-ex

LinkedIn GitHub


Si te resultó útil, deja una ⭐ en el repositorio.

About

Herramienta en Bash para manipular magic numbers orientada a pentesting, análisis SOC/NOC y forense digital. Soporta JPEG, PNG, PDF, ZIP, EXE y más. Mapeada a MITRE ATT&CK T1036 & T1027.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages