Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
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.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
moria — Identificación y extracción de firmware IoT | Kitploit
Herramientas/GitHubGitHub/nmatt0/moria
Seguridad de Sistemas EmbebidosSeguridad IoTIngeniería InversaRecopilación de InformaciónAnálisis de MalwareForensia DigitalUtilidades y FrameworksSeguridad de Hardware e IoTAnálisis de BinariosAnálisis de Firmware
GitHub
42256142hace 1 díaRevisado por Kitploit

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
nmatt0/moria

moria

Identificación y extracción de firmware IoT

Ver Repositorio

moria

Identificación y extracción de firmware IoT

moria identifica archivos y las estructuras incrustadas dentro de imágenes de firmware e IoT (sistemas de archivos, kernels, bootloaders, archivos comprimidos, claves) y descomprime la mayor parte de lo que encuentra, sin root. Reporta cada hallazgo con un desplazamiento en bytes, un tipo y una puntuación de confianza, y habla JSON limpio para que los scripts y los agentes LLM puedan manejarlo con la misma facilidad que las personas.

Por qué moria

  • Extrae un amplio conjunto de sistemas de archivos en proceso, sin sudo: SquashFS, ext2/3/4, F2FS, XFS, btrfs, HFS+, NTFS, EROFS, JFFS2, UBIFS y más.
  • Recursivo por defecto. Un SquashFS envuelto en gzip dentro de un volumen UBI se descomprime hasta el final.
  • Detecta ejecutables empaquetados. Detecta ELF/PE/Mach-O empaquetados con UPX en todas las arquitecturas a partir del trailer PackHeader verificado por checksum (formato, método y tamaños), y marca stubs cuyo encabezado fue puesto a cero o alterado para derrotar a upx -d.
  • Determinista. La misma entrada siempre produce la misma salida; la resolución de conflictos no tiene desempate aleatorio.
  • Seguro ante entradas hostiles. Cada lectura está verificada en límites, cada escritura pasa por openat + O_NOFOLLOW (sin path-traversal ni escape por symlink), y la descompresión está acotada contra bombas.
  • Identificación primero. Un árbol legible por defecto, JSON (-j) para herramientas, con desplazamientos y confianza en cada hallazgo.

Compilación e instalación

cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j
cmake --install build --prefix ~/.local     # or /usr/local (needs sudo)

La compilación requiere cmake, un compilador de C++20 y las bibliotecas de desarrollo zlib, liblzma, lz4 y zstd (los descompresores que usa --extract). En Debian/Ubuntu: sudo apt install cmake g++ zlib1g-dev liblzma-dev liblz4-dev libzstd-dev. Para compilar sin una de ellas (una compilación mínima o solo de identificación), configure con -DMORIA_OPTIONAL_CODECS=ON y el códec faltante simplemente se desactiva.

El binario moria es autocontenido: todos los conjuntos de firmas están incrustados en tiempo de compilación, por lo que el binario funciona en cualquier lugar sin nada instalado junto a él (cp build/moria ~/.local/bin es suficiente, y un binario de versión descargado simplemente se ejecuta). Para usar firmas externas en lugar de las incrustadas (para probar un nuevo .toml sin recompilar, por ejemplo), pase --sigs DIR o establezca $MORIA_SIGDIR.

Uso

La salida es legible por humanos de forma predeterminada. Pase -j para JSON.

moria <file>               # identify: a findings tree with offsets, types, and confidence
moria <dir>                # scan a tree: a type summary plus the notable files
moria -j <file>            # JSON, for tools and agents
moria -e <file>            # extract to <file>.extracted/   (-C DIR to choose the output dir)
moria -c <file>            # carve raw byte ranges to <file>.carved/ (no parsing)
moria -E <file>            # entropy pass: flag unidentified / possibly-encrypted regions
moria --list <archive>     # list tar/cpio/zip/cab/CE-ROM members without extracting
moria --broad <path>       # also load the ~2.5k general file-type signatures
moria --unpack-executables # unpack executables inside other extracted output (cfbf/msi files)
moria --help

Extracción

-e descomprime los formatos reconocidos en <file>.extracted/, un directorio por región (0x<offset>-<type>/), además de un manifest.json que asigna los offsets a las rutas. Se adentra de forma recursiva en los contenedores anidados automáticamente y reconstruye las imágenes UBI volumen a volumen. Las protecciones (--depth, --max-files, --max-bytes y un límite de ratio de descompresión) acotan la entrada hostil; una protección activada detiene esa rama y aun así devuelve todo lo recuperado.

Descomprimido en proceso, sin herramientas externas ni sudo:

  • Sistemas de archivos: SquashFS, ext2/3/4, F2FS, FAT12/16/32, exFAT, NTFS, HFS+/HFSX, XFS, btrfs, JFFS2, UBI/UBIFS, romfs, YAFFS2, cramfs, EROFS, ReiserFS
  • Archivos e imágenes: ZIP, tar, cpio, MS-CAB (stored/MSZIP/LZX), archivos compuestos CFBF / Windows Installer .msi, ISO 9660, Android sparse, Android boot
  • Kernels y wrappers: U-Boot uImage, U-Boot FIT, Windows CE XIP ROM (nk.bin / .cos), flujos independientes gzip / xz / zstd / lz4, Ingenic jzlzma (LZ77 por hardware)
  • Paquetes de firmware: RAE Systems / Honeywell RFP (tabla de secciones; descomprime con LZARI cada sección); Artosyn OTRA (AR8030 / VT4 / VR04; verificado con SHA-256, descomprime con LZO1X cada partición, o expone el cuerpo de la flash en bruto en imágenes planas)
  • Almacenes de configuración: entorno de U-Boot, ESP32 NVS, hives del registro de Windows CE (.hv)

Firmas

  • signatures/ es el núcleo escrito a mano: sistemas de archivos de firmware, contenedores, kernels y formatos comunes, cada uno con validación estructural.
  • signatures-firmware/ contiene los magics de contenedores de firmware de proveedores y se carga por defecto.
  • signatures-generated/ contiene ~2.5k magics de tipos de archivo generales derivados de la base de datos de magics de file(1) y solo se carga con --broad.

Para añadir un formato, coloca un .toml en signatures/. Solo se necesita un pequeño validador en C++ para las comprobaciones que la capa declarativa no puede expresar, como los CRC o los punteros entre bloques. La semántica de los campos (magic_offset, endianness del magic, firmas cortas, restricciones blandas, el contrato del validador) está documentada en SIGAUTHORING.md.

Alcance

moria realiza identificación estructural, extracción y carving. El escaneo de secretos/credenciales, el SBOM, el análisis de CVE y de licencias son una herramienta aparte (mithril).

Licencia

MIT, véase LICENSE.

Parte del manejo de formatos en disco es una reimplementación limpia de los algoritmos de otros proyectos de código abierto, escrita de forma independiente contra la propia capa de E/S de moria (sin copiar código fuente): el descompresor UCL/NRV2B y los unfiltros CTO de UPX/UCL (GPL-2.0, solo algoritmos), y el diseño de metadata-commit y de lista de saltos CTZ de littlefs (BSD-3-Clause), y el diseño de página/objeto de SPIFFS (MIT).

Descargar herramienta