소개
Crush는 디지털 포렌식 분석을 위한 오픈소스 데스크톱 워크벤치로, kalink0 저장소에서 개발되었습니다. ZIP/TAR/7z 아카이브와 iTunes/Android 백업 등을 추출 없이 열어 ABX, SQLite, SEGB, (B)PLIST, Realm, Protobuf, MMKV, 로그 등 다양한 포렌식 관련 형식을 한 화면에서 탐색할 수 있도록 돕습니다.
상세정보
다양한 아카이브 및 백업 직접 열기
ZIP, TAR, 7z, Android adb backup(.ab), iTunes/Finder iOS 백업을 추출 단계 없이 열어 탐색할 수 있습니다. ZIP(ZipCrypto 및 WinZip AES), 7z, 암호화된 Android 백업, 비밀번호 보호 iTunes 백업은 열 때 비밀번호를 묻고, 잘못 입력하면 재시도를 허용합니다.
포렌식용 파일 형식 데이터베이스
Crush는 매직 바이트와 확장자를 기반으로 포렌식에 의미 있는 형식을 식별하며, 선택한 파일에 대해 형식 이름, 플랫폼, 포렌식 관련성, 그리고 명세(specification) 링크를 함께 표시합니다. 전용 뷰어가 없는 형식도 동일한 정보를 제공합니다.
Value Inspector 및 BLOB Inspector
Value Inspector는 선택하거나 붙여넣은 값을 정수, 부동소수점, 여러 가지 타임스탬프 epoch, UUID, 네트워크 주소, 바이트 크기(10진수/2진수) 등 가능한 해석으로 한 번에 보여주며, Linux에서는 선택한 텍스트에 대해 자동으로 갱신됩니다. BLOB Inspector는 Base64/16진수 디코딩, zlib/gzip/lzfse 압축 해제를 연쇄적으로 적용하고 결과를 hex, 텍스트, JSON, XML, plist, ABX, Protobuf(스키마 없음/스키마 기반)로 렌더링하며, 모든 BLOB 셀과 붙여넣은 값에서 사용할 수 있습니다.
무결성 모드
감사 추적을 위한 옵션 기능으로, 파일/ZIP/TAR 원본은 열 때 해시되고, 내보내기 시 crush-export-hashes.txt 해시 매니페스트를 생성합니다. 우측 하단의 상태 배지를 통해 켜고 끌 수 있습니다.
다양한 내장 뷰어
SQLite/Database, Hex, Text(구문 강조 및 인코딩 감지 포함), JSON/XML(접을 수 있는 트리), Plist/BPlist, SEGB v1/v2, ABX(Android Binary XML), Chrome/Android 앱용 LevelDB, MMKV(Tencent의 mmap 기반 key-value 저장소, Android/iOS, “다른 형식으로 열기”를 통해 명시적으로 활성화), 이미지, 미디어(오디오/비디오), 다중 소스 로그 분석 및 포맷 자동 감지 기능을 갖춘 Multi-Log Studio, 스키마리스 및 스키마 디코딩을 지원하는 Protobuf, 페이지 렌더링/텍스트 추출/수정 이력을 제공하는 PDF, Realm Database(스키마 및 테이블 디코딩) 뷰어를 지원합니다.
Peach로 보내기(Send to Peach)
Apple Unified Log 또는 기타 로그 파일을 우클릭 한 번으로 자매 로그 뷰어 peach-forensics에 전달해 태깅과 Splunk 스타일 검색을 수행할 수 있습니다.
패키지 관리자로 설치
Windows에서는 winget과 Scoop으로 설치할 수 있습니다.
- winget:
winget install kalink0.Crush - Scoop:
scoop bucket add forensics https://github.com/kalink0/scoop-forensics후scoop install forensics/crush-forensics - macOS(Homebrew):
brew tap kalink0/forensics→brew trust kalink0/forensics→brew install --cask crush-forensics - Linux는 네이티브 패키지가 아직 제공되지 않으며, Releases 페이지에서 AppImage를 내려받아 사용합니다.
소스로부터 실행(개발 권장)
- 가상 환경을 만들고 활성화합니다(
python -m venv .venv→source .venv/bin/activate). - 의존성을 설치합니다(
python -m pip install --upgrade pip→python -m pip install -e .). - Apple Unified Log 파서 바이너리를 내려받습니다(
python scripts/download_unifiedlog_binaries.py). - peach-forensics 바이너리를 내려받습니다(
python scripts/download_peach_binaries.py). - Crush를 실행합니다(
crush또는python -m crush).
CLI 사용
시작과 동시에 증거 파일이나 케이스 폴더를 열어 트리에 추가할 수 있습니다. 위치 인자와 --open PATH(반복 사용)는 동일하게 동작하며, 호출할 때마다 새 창이 열립니다.
crush /path/to/evidence.zip /path/to/case_foldercrush --open /path/to/evidence.zip --open /path/to/case_folder
활용 예시
WAL이 포함된 SQLite 데이터베이스를 열어 변경 이력과 미커밋 트랜잭션을 검토하거나, RealmDB 뷰어로 객체 단위 데이터를 분석하거나, Chrome/Android 앱의 LevelDB를 CURRENT 파일 단위로 살펴보거나, SEGB/Biome 컨테이너를 추출 없이 탐색하거나, Apple Unified Log(.tracev3/.logarchive)를 Multi-Log Studio로 분석한 뒤 우클릭으로 peach-forensics에 넘겨 태깅과 검색을 이어가는 흐름이 공식 README에서 안내되는 활용 시나리오입니다.
제한 및 확인 사항
Apache-2.0 라이선스로 배포되는 오픈소스 프로젝트이며, 소스 코드는 GitHub 저장소(https://github.com/kalink0/crush-forensics)에서 공개됩니다. 프로젝트는 ccl_bplist(BSD 3-Clause), ccl_segb(MIT), ccl_leveldb(MIT), macos-UnifiedLogs의 unifiedlog_iterator 바이너리(Apache 2.0), Alexis Brignoni의 mmkv-parser(MIT) 등 외부 모듈을 활용하며, Send to Peach 기능은 자매 프로젝트 peach-forensics(Apache-2.0)와 연동됩니다. 버그 신고 및 기능 요청은 GitHub Issues에 Crush 버전(Help → About), 운영체제, 재현 단계를 함께 첨부하도록 안내됩니다.
시스템 요구사항
Python 3.11 이상 환경에서 동작하는 Python(PySide6) 기반 애플리처로, 공식 README는 Linux의 Qt GUI 실행을 위해 libgl1, libegl1, libxcb-xinerama0, libxkbcommon-x11-0(또는 배포판별 equivalent), libmagic1, gstreamer1.0-plugins-base/-good, libpulse0(또는 equivalent) 패키지를 안내합니다. Windows에서는 별도 OS 패키지가 필요하지 않다고 명시되어 있으며, 앱이 실행되지 않을 경우 Microsoft Visual C++ Redistributable 2015-2022(x64) 설치를 안내합니다. Apple Unified Log(.tracev3/.logarchive)와 peach-forensics 연동을 위한 보조 바이너리는 `scripts/download_unifiedlog_binaries.py`와 `scripts/download_peach_binaries.py`로 내려받을 수 있습니다.


