Saltar a contenido

Binwalk - Herramienta de análisis de firmware

"Clase de la hoja"

########################################################################################################################################################################################################################################################## Copiar todos los comandos
########################################################################################################################################################################################################################################################## Generar PDF seleccionado/button

■/div titulada

"Notificación" clase="notificación" ¡Conseguir todos los comandos de binwalk copiados al portapapeles! ■/div titulada

Binwalk es una poderosa herramienta de análisis de firmware diseñada para analizar, ingeniería inversa y extraer imágenes de firmware. Es ampliamente utilizado en la investigación de seguridad de IoT, análisis de sistemas incrustados y forenses digitales para identificar firmas de archivos, extraer archivos incrustados y analizar la estructura de firmware.

Uso básico

Análisis simple del firmware

# Basic signature scanning
binwalk firmware.bin
binwalk router_firmware.bin
binwalk iot_device.bin

# Analyze multiple files
binwalk *.bin
binwalk firmware1.bin firmware2.bin firmware3.bin

# Recursive directory scanning
binwalk -r /path/to/firmware/
binwalk -r ./firmware_samples/

Productos de Verbose

# Verbose mode for detailed information
binwalk -v firmware.bin

# Quiet mode (minimal output)
binwalk -q firmware.bin

# Show only specific types
binwalk -B firmware.bin  # Show only file signatures
binwalk -E firmware.bin  # Show only entropy analysis

File Signature Analysis

Escaneo de firmas

# Standard signature scanning
binwalk firmware.bin

# Detailed signature analysis
binwalk -B firmware.bin

# Show raw signature data
binwalk -R firmware.bin

# Architecture analysis
binwalk -A firmware.bin

# Compression analysis
binwalk -C firmware.bin

Firmas personalizadas

# Use custom signature file
binwalk -f custom_signatures.txt firmware.bin

# Use custom magic file
binwalk -m custom_magic firmware.bin

# Combine multiple signature sources
binwalk -f sig1.txt -f sig2.txt firmware.bin

Extracción de archivos

Extracción básica

# Extract all identified files
binwalk -e firmware.bin

# Extract with matryoshka (recursive extraction)
binwalk -Me firmware.bin

# Extract to specific directory
binwalk -e -C /tmp/extracted firmware.bin

# Preserve symbolic links during extraction
binwalk -e --preserve-symlinks firmware.bin

Extracción selectiva

# Extract specific file types
binwalk -D "jpeg image:jpg" firmware.bin
binwalk -D "zip archive:zip" firmware.bin
binwalk -D "gzip compressed:gz" firmware.bin

# Extract everything with dd
binwalk --dd=".*" firmware.bin

# Extract with custom rules
binwalk -D "filesystem:fs" firmware.bin

Opciones avanzadas de extracción

# Extract with size limits
binwalk -e -M 10000000 firmware.bin  # Max 10MB files

# Extract with depth limits
binwalk -e -d 3 firmware.bin  # Max depth of 3

# Extract with specific tools
binwalk -e --run-as=root firmware.bin

Entropy Analysis

Análisis básico de la entropía

# Generate entropy graph
binwalk -E firmware.bin

# Save entropy data to file
binwalk -E -J firmware.bin

# Entropy analysis with custom block size
binwalk -E -K 1024 firmware.bin

# Fast entropy analysis
binwalk -E -F firmware.bin

Entropy Visualization

# Generate entropy plot
binwalk -E -N firmware.bin

# High-resolution entropy analysis
binwalk -E -H firmware.bin

# Entropy analysis with markers
binwalk -E -B firmware.bin

Interpretación entropía

# Analyze encryption/compression patterns
binwalk -E -v firmware.bin

# Compare entropy across files
binwalk -E firmware1.bin firmware2.bin

# Entropy analysis with offset
binwalk -E -O 0x1000 firmware.bin

Control de apagado y longitud

Trabajando con Offsets

# Start analysis at specific offset
binwalk -O 0x1000 firmware.bin
binwalk -O 4096 firmware.bin

# Analyze specific length
binwalk -L 0x10000 firmware.bin
binwalk -L 65536 firmware.bin

# Combine offset and length
binwalk -O 0x1000 -L 0x5000 firmware.bin

Offsets hexadecimal y decimal

# Hexadecimal offsets
binwalk -O 0x8000 firmware.bin

# Decimal offsets
binwalk -O 32768 firmware.bin

# Large file analysis
binwalk -O 0x100000 -L 0x200000 firmware.bin

Comparación y Diffing

Comparación de archivos

# Compare two firmware files
binwalk -W firmware1.bin firmware2.bin

# Show differences only
binwalk -K firmware1.bin firmware2.bin

# Detailed comparison
binwalk -W -v firmware1.bin firmware2.bin

Análisis de versiones

# Compare firmware versions
binwalk -W old_firmware.bin new_firmware.bin

# Identify changes between versions
binwalk -K -B old_fw.bin new_fw.bin

Características del análisis avanzado

Desmontaje y análisis del código

# Disassemble executable code
binwalk -I firmware.bin

# Architecture-specific analysis
binwalk -A -v firmware.bin

# Show instruction opcodes
binwalk -x firmware.bin

Análisis del sistema de archivos

# Identify filesystem types
binwalk -y filesystem firmware.bin

# Extract filesystem structures
binwalk -e -y filesystem firmware.bin

# Analyze filesystem metadata
binwalk -y filesystem -v firmware.bin

Análisis de la compresión

# Analyze compression algorithms
binwalk -z firmware.bin

# Detailed compression information
binwalk -C -v firmware.bin

# Extract compressed data
binwalk -e -C firmware.bin

Sistema Plugin

Gestión de plugins

# List available plugins
binwalk --list-plugins

# Use specific plugins
binwalk -% firmware.bin

# Plugin-specific analysis
binwalk --plugin=entropy firmware.bin

Plugins personalizados

# Load custom plugin
binwalk --plugin-path=/path/to/plugins firmware.bin

# Multiple plugins
binwalk --plugin=plugin1 --plugin=plugin2 firmware.bin

Output and Logging

Control de productos

# Save output to file
binwalk firmware.bin > analysis.txt

# Specify output directory
binwalk -o /tmp/binwalk_output firmware.bin

# Log to specific file
binwalk --log=analysis.log firmware.bin

# CSV output format
binwalk --csv firmware.bin

Opciones de formato

# JSON output
binwalk --json firmware.bin

# Detailed verbose output
binwalk -v -B -E firmware.bin

# Minimal output
binwalk -q -B firmware.bin

Análisis práctico Flujos de trabajo

Análisis de Firmware Router

# Complete router firmware analysis
binwalk -Me router_firmware.bin

# Extract filesystem
binwalk -e router_firmware.bin
cd _router_firmware.bin.extracted/

# Analyze extracted files
find . -name "*.bin" -exec binwalk \\\\{\\\\} \;

# Look for configuration files
find . -name "*.conf" -o -name "*.cfg"

Análisis de dispositivos IoT

# IoT firmware analysis workflow
binwalk -E iot_firmware.bin  # Check entropy
binwalk -B iot_firmware.bin  # Identify signatures
binwalk -Me iot_firmware.bin # Extract everything

# Analyze extracted content
cd _iot_firmware.bin.extracted/
ls -la
file *

# Look for interesting files
find . -name "*.key" -o -name "*.pem" -o -name "passwd"

Análisis del sistema integrado

# Embedded system firmware analysis
binwalk -A embedded_fw.bin  # Architecture analysis
binwalk -I embedded_fw.bin  # Instruction analysis
binwalk -e embedded_fw.bin  # Extract files

# Analyze bootloader
binwalk -O 0x0 -L 0x10000 embedded_fw.bin

# Analyze main firmware
binwalk -O 0x10000 embedded_fw.bin

Análisis forense y de seguridad

Malware Analysis

# Analyze suspicious firmware
binwalk -E suspicious_firmware.bin  # Check for encryption
binwalk -B suspicious_firmware.bin  # Identify file types
binwalk -Me suspicious_firmware.bin # Extract all files

# Look for embedded executables
find _suspicious_firmware.bin.extracted/ -type f -executable

# Analyze entropy patterns
binwalk -E -N suspicious_firmware.bin

Detección de backdoor

# Look for hidden files
binwalk -R firmware.bin

# Entropy analysis for hidden data
binwalk -E -v firmware.bin

# Extract and analyze all components
binwalk -Me firmware.bin
grep -r "backdoor\|debug\|telnet" _firmware.bin.extracted/

Cryptographic Analysis

# Identify encrypted sections
binwalk -E firmware.bin

# Look for cryptographic signatures
binwalk -B firmware.bin|grep -i "crypt\|key\|cert"

# Extract potential key material
binwalk -D "private key:key" firmware.bin

Integración con otras herramientas

Combinando con Hexdump

# Analyze specific offsets found by binwalk
binwalk firmware.bin|grep "JFFS2"
hexdump -C -s 0x40000 -n 512 firmware.bin

Usando con cuerdas

# Extract strings from identified sections
binwalk -e firmware.bin
strings _firmware.bin.extracted/*|grep -i "password\|key\|admin"

Integración con el Comando de Archivo

# Verify binwalk findings
binwalk -e firmware.bin
cd _firmware.bin.extracted/
for f in *; do echo "=== $f ==="; file "$f"; done

Automatización y scripting

Batch Analysis Script

#!/bin/bash
# Automated firmware analysis script

FIRMWARE_DIR="$1"
OUTPUT_DIR="analysis_results_$(date +%Y%m%d_%H%M%S)"

mkdir -p "$OUTPUT_DIR"

for firmware in "$FIRMWARE_DIR"/*.bin; do
    echo "Analyzing: $firmware"
    base_name=$(basename "$firmware" .bin)

    # Basic analysis
    binwalk "$firmware" > "$OUTPUT_DIR/$\\\\{base_name\\\\}_analysis.txt"

    # Entropy analysis
    binwalk -E "$firmware" > "$OUTPUT_DIR/$\\\\{base_name\\\\}_entropy.txt"

    # Extract files
    binwalk -Me "$firmware" -C "$OUTPUT_DIR"

    echo "Completed: $firmware"
done

echo "Analysis completed. Results in $OUTPUT_DIR"

Supervisión continua

#!/bin/bash
# Monitor directory for new firmware files

WATCH_DIR="/path/to/firmware/uploads"
ANALYSIS_DIR="/path/to/analysis/results"

inotifywait -m -e create "$WATCH_DIR" --format '%f'|while read filename; do
    if [[ "$filename" == *.bin ]]; then
        echo "New firmware detected: $filename"

        # Wait for file to be completely uploaded
        sleep 5

        # Analyze the firmware
        binwalk -Me "$WATCH_DIR/$filename" -C "$ANALYSIS_DIR"

        # Generate report
        binwalk "$WATCH_DIR/$filename" > "$ANALYSIS_DIR/$\\\\{filename\\\\}_report.txt"

        echo "Analysis completed for: $filename"
    fi
done

Optimización del rendimiento

Manejo de archivos grande

# Analyze large firmware files efficiently
binwalk -q -B large_firmware.bin

# Use specific offsets for large files
binwalk -O 0x100000 -L 0x100000 large_firmware.bin

# Parallel analysis of multiple files
parallel binwalk \\\\{\\\\} ::: *.bin

Gestión de memoria

# Limit memory usage for large extractions
binwalk -e -M 100000000 firmware.bin  # Limit to 100MB

# Process files in chunks
split -b 50M large_firmware.bin chunk_
for chunk in chunk_*; do binwalk "$chunk"; done

Problemas comunes

Problemas de extracción

# Debug extraction issues
binwalk -e -v firmware.bin

# Force extraction with dd
binwalk --dd=".*" firmware.bin

# Check extraction dependencies
binwalk --list-plugins

Cuestiones de reconocimiento de firmas

# Update signature database
binwalk --update

# Use verbose mode for debugging
binwalk -v -B firmware.bin

# Try different signature files
binwalk -f /usr/share/binwalk/magic/* firmware.bin

Cuestiones de ejecución

# Use faster analysis options
binwalk -q -B firmware.bin

# Skip entropy analysis for speed
binwalk -B firmware.bin

# Analyze specific sections only
binwalk -O 0x10000 -L 0x50000 firmware.bin

Consideraciones de seguridad

Safe Analysis Environment

# Analyze in isolated environment
docker run -v $(pwd):/data -it binwalk_container binwalk /data/firmware.bin

# Use virtual machine for analysis
# Always analyze suspicious firmware in isolated environment

Manejo de Malí Firmware

# Analyze without extraction (safer)
binwalk -B suspicious_firmware.bin

# Limited extraction
binwalk -e -d 1 suspicious_firmware.bin

# Monitor system during analysis
# Use process monitoring tools

Casos de uso avanzado

Modificación de firmware Detector

# Compare original and modified firmware
binwalk -W original_firmware.bin modified_firmware.bin

# Identify injection points
binwalk -K original_firmware.bin modified_firmware.bin

# Analyze differences
binwalk -e original_firmware.bin
binwalk -e modified_firmware.bin
diff -r _original_firmware.bin.extracted/ _modified_firmware.bin.extracted/

Análisis de la cadena de suministro

# Analyze firmware from different vendors
for vendor_fw in vendor_*.bin; do
    echo "=== Analyzing $vendor_fw ==="
    binwalk -B "$vendor_fw"
    echo
done

# Compare firmware versions
binwalk -W firmware_v1.bin firmware_v2.bin

Investigación y Desarrollo

# Extract and analyze bootloaders
binwalk -O 0x0 -L 0x10000 firmware.bin

# Analyze update mechanisms
binwalk -B firmware.bin|grep -i "update\|upgrade"

# Study compression algorithms
binwalk -C -v firmware.bin

Buenas prácticas

Metodología de análisis

  1. Siempre empezar con el escaneo básico de firma
  2. Realizar análisis de entropía para identificar secciones encriptadas/comprimidas
  3. Extraer archivos sistemáticamente utilizando métodos apropiados
  4. Verificar archivos extraídos con herramientas adicionales
  5. Document findings and maintain analysis logs

Directrices de seguridad

  • Analizar el firmware desconocido en entornos aislados
  • Nunca ejecute binarios extraídos en sistemas de producción
  • Usar control de versiones para muestras de firmware y resultados de análisis
  • Mantener la cadena de custodia para el análisis forense
  • Seguir la divulgación responsable de vulnerabilidades descubiertas

Consejos de eficiencia

  • Use niveles de verbosidad apropiados para diferentes fases de análisis
  • Procesamiento paralelo de palanca para múltiples archivos
  • Implementar flujos de trabajo de análisis automatizados para tareas rutinarias
  • Mantener estructuras de directorio organizadas para los resultados de análisis
  • Utilizar scripting para estandarizar los procedimientos de análisis

Binwalk es una herramienta esencial para el análisis de firmware e ingeniería inversa. Su conjunto de características integrales lo hace invaluable para investigadores de seguridad, analistas forenses y desarrolladores de sistemas integrados. Cuando se utiliza correctamente, proporciona información profunda sobre la estructura de firmware y puede revelar vulnerabilidades de seguridad, funcionalidad oculta y modificaciones maliciosas.