Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
workshop_firmware_reverse_engineering — Taller sobre ingeniería inversa de firmware | Kitploit
Herramientas/GitHubGitHub/emproof-com/workshop_firmware_reverse_engineering
Seguridad de Sistemas EmbebidosAnálisis EstáticoIngeniería InversaAnálisis de MalwareSeguridad de Hardware e IoTAnálisis de BinariosAprendizaje y EducaciónAnálisis de FirmwareLabs y Práctica

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
GitHubemproof-com/workshop_firmware_reverse_engineering

workshop_firmware_reverse_engineering

Taller sobre ingeniería inversa de firmware

Ver Repositorio
44355hace 10 mesesRevisado por Kitploit

Taller: Ingeniería inversa de firmware

Este repositorio contiene las diapositivas y los materiales prácticos del taller de Emproof sobre ingeniería inversa de firmware, presentado en ScapyCon Automotive 2025. El taller está dirigido a un público técnico con experiencia mínima en seguridad y enseña los fundamentos mediante tareas prácticas y autocontenidas. Los temas incluyen

  • análisis básico de ficheros/ELF;
  • cracking de software y keygenning;
  • descifrado de cadenas y triaje de malware;
  • desempaquetado de firmware Linux embebido;
  • análisis bare-metal;
  • detección de criptografía;
  • técnicas de ofuscación/anti-análisis y cómo saltarlas;

Si esto te interesa, echa también un vistazo a la serie de seminarios web técnicos de Emproof con ejercicios adicionales y sesiones grabadas.

El contenido del taller fue diseñado y organizado por Tim Blazytko, con el apoyo de Simran Kathpalia.

Configuración

Para configurar el entorno, clona el repositorio:

root@kitploit:~
git clone https://github.com/emproof-com/workshop_firmware_reverse_engineering
cd workshop_firmware_reverse_engineering

Para varias tareas necesitamos un entorno de ejecución Linux AArch64. Proporcionamos un contenedor Docker basado en Kali Linux con herramientas comunes (p. ej., GNU Binutils, Binwalk) preinstaladas. Esto unifica el entorno en Linux, Windows y macOS, independientemente de la arquitectura de la CPU del host. Para iniciar el contenedor y acceder a la shell, ejecuta:

root@kitploit:~
./docker_run.sh

Nota: La primera ejecución puede tardar un rato en construir la imagen.

Nota (arquitectura): El servicio de Docker Compose establece platform: "linux/arm64".
En hosts x86_64 (macOS/Windows/Linux Intel) Docker Desktop ejecutará la imagen mediante emulación, por lo que la primera compilación y el arranque pueden ser más lentos; es de esperar. En hosts ARM64 nativos (Apple Silicon, servidores ARM) se ejecuta de forma nativa y es más rápido.

Nota: El contenedor Docker también puede ejecutar binarios ARMv7 (armhf). Instalamos el runtime armhf (cargador dinámico + bibliotecas) en la imagen y registramos los manejadores binfmt tanto para aarch64 como para arm mediante el script de inicio.

Además, instala las siguientes herramientas gráficas en tu host para las tareas interactivas de ingeniería inversa (no están incluidas en el contenedor):

  • Ghidra
  • Binary Ninja Free

Ambas herramientas están disponibles para Windows, Linux y macOS.

Nota: Binary Ninja Free no es compatible con AArch64. Para análisis AArch64 usa Ghidra (o una compilación con licencia de Binary Ninja). Por lo tanto, varios laboratorios incluyen un binario compañero ARMv7 (*.armv7) específicamente para Binary Ninja Free; estos también se pueden ejecutar en el mismo contenedor.

Orden de las tareas

Cada tarea es autocontenida en tasks/<name>/ e incluye:

  • samples/ — binarios (y a veces código fuente) utilizados en el ejercicio
  • task.md — el enunciado con instrucciones paso a paso y pistas

Las tareas se pueden realizar de forma independiente, pero proporcionamos un orden recomendado (listado a continuación) que aumenta la dificultad e introduce nuevas técnicas gradualmente. La mayoría de las muestras están dirigidas a ARMv7 (Thumb/ARM32) o AArch64; cuando corresponde, las notas de la tarea indican la arquitectura, las herramientas necesarias y cualquier requisito especial de ejecución.

  • tasks/hello_world: conceptos básicos de los ficheros ELF y análisis de metadatos; primeros pasos en Ghidra / Binary Ninja.

  • tasks/license_check: extrae secretos hardcodeados / desbloquea funciones; parcheo básico para saltarse validaciones (cracking).

  • tasks/game: un sencillo juego de adivinar números; comprende la lógica y crackea el modo de prueba frente al modo completo.

  • tasks/keygenning_1: haz ingeniería inversa de una validación de licencia y escribe un keygen mínimo para generar seriales válidos.

  • tasks/keygenning_2: una tarea de keygenning ligeramente más sofisticada (sales/claves, codificación hexadecimal).

  • tasks/string_encryption: binario con cadenas cifradas (común en malware); identifica el descifrador y recupera las cadenas de forma estática.

  • tasks/mirai: malware embebido que utiliza una rutina de descifrado de cadenas; navega por una base de código más grande, identifica construcciones interesantes y trabaja con cadenas ofuscadas.

  • tasks/embedded_linux_1: firmware Linux embebido con sistema de ficheros; desempaqueta, explora y crackea la información de inicio de sesión de Linux (estilo CTF).

  • tasks/embedded_linux_2: similar, pero encuentra y analiza un binario oculto que no debería estar ahí.

  • tasks/car_demo: análisis de firmware bare-metal: identifica arquitectura, placa, mapa de memoria y artefactos de la cadena de herramientas; extrae credenciales Wi-Fi y endpoints del protocolo.

Licencia

A menos que se indique lo contrario, todos los materiales del taller en este repositorio están licenciados bajo la GNU General Public License, versión 2 (GPL-2.0). Consulta LICENSE para ver el texto completo.

Algunas muestras de terceros / de fuentes externas están excluidas de la GPL y se proporcionan solo para análisis/educación (sin redistribución). Estas son:

  • tasks/mirai/samples/
  • tasks/embedded_linux_1/samples/
  • tasks/embedded_linux_2/samples/

Nota: Si un subdirectorio incluye su propio archivo o encabezado de licencia, esa licencia tiene prioridad sobre el contenido de ese subdirectorio.

Descargar herramienta
  • tasks/iot_diag: volcado de firmware bare-metal de una herramienta de diagnóstico; recrea los diseños de memoria a partir de la hoja de datos y luego encuentra la contraseña para desbloquear el modo de diagnóstico.

  • tasks/crypto_detection: binario AArch64 que realiza operaciones criptográficas con una clave AES hardcodeada; localiza la llamada EVP y rastrea la clave/IV para descifrar sin el programa.

  • tasks/license_check_anti_patching: anti-parcheo mediante suma de comprobación del código; comprende la protección CRC y aprende formas de evadirla.

  • tasks/fibonacci_obfuscation: implementaciones de Fibonacci limpias vs. ofuscadas (switch flattening, computed goto, predicados opacos, ofuscación aritmética, pequeña VM); comprende las técnicas y normalízalas.