Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
moria — IoT 펌웨어 식별 및 추출 | Kitploit
도구/GitHubGitHub/nmatt0/moria
Embedded Systems SecurityIoT SecurityReverse EngineeringInformation GatheringMalware AnalysisDigital ForensicsUtilities & FrameworksHardware & IoT SecurityBinary AnalysisFirmware Analysis
GitHub
422561421일 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
nmatt0/moria

moria

IoT 펌웨어 식별 및 추출

저장소 보기

moria

IoT 펌웨어 식별 및 추출

moria는 펌웨어 및 IoT 이미지 내부에 포함된 파일과 구조(파일시스템, 커널, 부트로더, 아카이브, 키)를 식별하고, 발견한 대부분의 항목을 root 권한 없이 압축 해제합니다. 각 발견 항목을 바이트 오프셋, 유형, 신뢰도 점수와 함께 보고하며, 깔끔한 JSON을 출력하므로 스크립트와 LLM 에이전트가 사람만큼 쉽게 구동할 수 있습니다.

moria를 사용하는 이유

  • sudo 없이 프로세스 내에서 광범위한 파일시스템을 추출합니다: SquashFS, ext2/3/4, F2FS, XFS, btrfs, HFS+, NTFS, EROFS, JFFS2, UBIFS 등.
  • 기본적으로 재귀 처리합니다. UBI 볼륨 내부의 gzip으로 감싸진 SquashFS를 끝까지 압축 해제합니다.
  • 패킹된 실행 파일을 탐지합니다. 체크섬으로 검증된 PackHeader 트레일러(포맷, 방식, 크기)를 통해 여러 아키텍처의 UPX로 패킹된 ELF/PE/Mach-O를 탐지하고, upx -d를 무력화하기 위해 헤더가 0으로 채워지거나 변조된 스텁도 표시합니다.
  • 결정론적입니다. 동일한 입력은 항상 동일한 출력을 생성하며, 충돌 해결에 무작위 타이브레이크가 없습니다.
  • 적대적 입력에서도 안전합니다. 모든 읽기는 경계 검사를 거치고, 모든 쓰기는 openat + O_NOFOLLOW를 통해 이루어지며(경로 순회나 심볼릭 링크 탈출 불가), 압축 해제는 폭탄 공격에 대비해 제한됩니다.
  • 식별 우선. 기본적으로 읽기 쉬운 트리를 제공하고, 도구용으로는 JSON(-j)을 제공하며, 모든 발견 항목에 오프셋과 신뢰도를 표시합니다.

빌드 및 설치

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

빌드에는 cmake, C++20 컴파일러, 그리고 zlib, liblzma, lz4, zstd 개발 라이브러리(--extract에서 사용하는 압축 해제기)가 필요합니다. Debian/Ubuntu에서는 sudo apt install cmake g++ zlib1g-dev liblzma-dev liblz4-dev libzstd-dev를 실행하세요. 하나 없이 빌드하려면(최소 빌드 또는 식별 전용 빌드), -DMORIA_OPTIONAL_CODECS=ON으로 구성하면 누락된 코덱은 단순히 비활성화됩니다.

moria 바이너리는 자체 포함되어 있습니다. 모든 시그니처 세트가 빌드 시점에 내장되므로, 바이너리는 함께 설치된 것이 아무것도 없는 환경에서도 어디서든 동작합니다(cp build/moria ~/.local/bin이면 충분하며, 다운로드한 릴리스 바이너리는 그냥 실행됩니다). 내장된 시그니처 대신 외부 시그니처를 사용하려면(예를 들어 재빌드 없이 새로운 .toml을 테스트하려면), --sigs DIR을 전달하거나 $MORIA_SIGDIR을 설정하세요.

사용법

출력은 기본적으로 사람이 읽을 수 있는 형식입니다. JSON을 원하면 -j를 전달하세요.

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

추출

-e는 인식된 포맷을 <file>.extracted/ 아래에 풀어내며, 리전별로 하나의 디렉터리(0x<offset>-<type>/)를 만들고, 오프셋을 경로에 매핑하는 manifest.json을 함께 생성합니다. 중첩된 컨테이너로 자동 재귀하며 UBI 이미지는 볼륨 단위로 재구성합니다. 가드(--depth, --max-files, --max-bytes, 그리고 압축 해제 비율 상한)가 악의적인 입력을 제한하며, 가드에 걸리면 해당 분기를 중단하고 복구된 모든 것은 그대로 반환합니다.

외부 도구나 sudo 없이 프로세스 내에서 압축을 해제합니다:

  • 파일시스템: SquashFS, ext2/3/4, F2FS, FAT12/16/32, exFAT, NTFS, HFS+/HFSX, XFS, btrfs, JFFS2, UBI/UBIFS, romfs, YAFFS2, cramfs, EROFS, ReiserFS
  • 아카이브 및 이미지: ZIP, tar, cpio, MS-CAB (stored/MSZIP/LZX), CFBF 복합 파일 / Windows Installer .msi, ISO 9660, Android sparse, Android boot
  • 커널 및 래퍼: U-Boot uImage, U-Boot FIT, Windows CE XIP ROM (nk.bin / .cos), 독립형 gzip / xz / zstd / lz4 스트림, Ingenic jzlzma (하드웨어 LZ77)
  • 펌웨어 패키지: RAE Systems / Honeywell RFP (섹션 테이블; 각 섹션을 LZARI로 압축 해제); Artosyn OTRA (AR8030 / VT4 / VR04; SHA-256 검증, 각 파티션을 LZO1X로 압축 해제하거나 플랫 이미지에서는 원시 플래시 본문을 노출)
  • 구성 저장소: U-Boot environment, ESP32 NVS, Windows CE 레지스트리 하이브 (.hv)

시그니처

  • signatures/는 직접 작성한 핵심으로, 펌웨어 파일시스템, 컨테이너, 커널, 일반 포맷을 포함하며 각각 구조적 검증을 수행합니다.
  • signatures-firmware/는 벤더 펌웨어 컨테이너 매직을 보유하며 기본적으로 로드됩니다.
  • signatures-generated/는 file(1)의 magic 데이터베이스에서 파생된 약 2.5k개의 일반 파일 타입 매직을 보유하며 --broad 옵션에서만 로드됩니다.

포맷을 추가하려면 signatures/에 .toml 파일을 넣으면 됩니다. CRC나 블록 간 포인터처럼 선언적 계층으로 표현할 수 없는 검사에만 소규모 C++ 검증기가 필요합니다. 필드 의미(magic_offset, magic 엔디언, 짧은 시그니처, 소프트 제약, 검증기 계약)는 SIGAUTHORING.md에 문서화되어 있습니다.

범위

moria는 구조적 식별, 추출, 카빙을 수행합니다. 시크릿/자격 증명 스캔, SBOM, CVE, 라이선스 분석은 별도의 도구(mithril)입니다.

라이선스

MIT, LICENSE 참조.

일부 온디스크 포맷 처리는 다른 오픈소스 프로젝트의 알고리즘을 moria 자체의 I/O 계층에 맞춰 독립적으로 작성한 깔끔한 재구현입니다(소스 코드 복사 없음): UPX/UCL의 UCL/NRV2B 압축 해제기와 CTO 언필터(GPL-2.0, 알고리즘만), littlefs의 메타데이터 커밋 및 CTZ 스킵 리스트 레이아웃(BSD-3-Clause), 그리고 SPIFFS의 페이지/오브젝트 레이아웃(MIT)입니다.

도구 다운로드