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.

··Feeds·Contacto·Privacidad·© 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
320399hace 6 díasRevisado 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 embebidas dentro de firmware e imágenes 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 con 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

root@kitploit:~
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 necesita cmake, un compilador de C++20, y las bibliotecas de desarrollo zlib, liblzma, lz4 y zstd (los descompresores usados por --extract). En Debian/Ubuntu: sudo apt install cmake g++ zlib1g-dev liblzma-dev liblz4-dev libzstd-dev. Para compilar sin una (una compilación mínima o solo de identificación), configure con -DMORIA_OPTIONAL_CODECS=ON y el códec faltante simplemente se deshabilita.

El binario moria es autocontenido: todos los conjuntos de firmas están embebidos 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 release descargado simplemente se ejecuta). Para usar firmas externas en lugar de las embebidas (para probar un nuevo .toml sin recompilar, por ejemplo), pase --sigs DIR o establezca $MORIA_SIGDIR.

Uso

La salida es legible por humanos por defecto. Pase -j para JSON.

root@kitploit:~
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 members without extracting
moria --broad <path>      # also load the ~2.5k general file-type signatures
moria --help

Extracción

-e descomprime los formatos reconocidos bajo <file>.extracted/, un directorio por región (0x<offset>-<type>/), más un manifest.json que mapea desplazamientos a rutas. Recurre automáticamente en contenedores anidados y reconstruye imágenes UBI volumen por 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 aún devuelve todo lo recuperado.

Descomprimido en proceso, sin herramientas externas y sin 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
  • Archivos comprimidos e imágenes: ZIP, tar, cpio, ISO 9660, Android sparse, Android boot
  • Kernels y envoltorios: U-Boot uImage, U-Boot FIT, flujos independientes gzip / xz / zstd / lz4
  • Paquetes de firmware: RAE Systems / Honeywell RFP (tabla de secciones; descomprime con LZARI cada sección)

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 las magics de contenedores de firmware de proveedores y se carga por defecto.
  • signatures-generated/ contiene ~2.5k magics de tipos de archivo generales derivadas de la base de datos de magics de file(1) y se carga solo con --broad.

Para agregar un formato, coloque un .toml en signatures/. Un pequeño validador en C++ solo es necesario para comprobaciones que la capa declarativa no puede expresar, como CRCs o punteros entre bloques.

Alcance

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

Licencia

MIT, ver LICENSE.

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

Descargar herramienta