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
3203926일 전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으로 만들거나 변조한 스텁도 표시합니다.
  • 결정적. 동일한 입력은 항상 동일한 출력을 생성하며, 충돌 해결에 무작위 tie-break가 없습니다.
  • 적대적 입력에도 안전. 모든 읽기는 범위 검사를 거치고, 모든 쓰기는 openat + O_NOFOLLOW를 통과하며(경로 탈출이나 심볼릭 링크 탈출 없음), 압축 해제는 폭탄 공격에 대비해 제한됩니다.
  • 식별 우선. 기본적으로 읽기 쉬운 트리, 도구용으로는 JSON(-j)을 제공하며, 모든 발견 항목에 오프셋과 신뢰도를 표시합니다.

빌드 및 설치

root@kitploit:~
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를 전달하세요.

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

추출

-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
  • 아카이브 및 이미지: ZIP, tar, cpio, ISO 9660, Android sparse, Android boot
  • 커널 및 래퍼: U-Boot uImage, U-Boot FIT, 독립형 gzip / xz / zstd / lz4 스트림
  • 펌웨어 패키지: RAE Systems / Honeywell RFP(섹션 테이블, 각 섹션을 LZARI로 압축 해제)

시그니처

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

포맷을 추가하려면 signatures/에 .toml을 넣으세요. CRC나 블록 간 포인터처럼 선언적 계층으로 표현할 수 없는 검사에만 작은 C++ 검증기가 필요합니다.

범위

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

라이선스

MIT, LICENSE 참조.

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

도구 다운로드