Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

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

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

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
msidump — MSI Dump - 악성 MSI 설치 패키지를 분석하고, 파일, 스트림, 바이너리 데이터를 추출하며 YARA 스캐너를 통합하는 도구입니다. | Kitploit
도구/GitHubGitHub/mgeeky/msidump
Static AnalysisForensicsMalware AnalysisBinary Analysis
GitHubmgeeky/msidump

msidump

MSI Dump - 악성 MSI 설치 패키지를 분석하고, 파일, 스트림, 바이너리 데이터를 추출하며 YARA 스캐너를 통합하는 도구입니다.

저장소 보기웹사이트
232203년 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

msidump

MSI Dump - 악성 MSI 설치 패키지를 분석하고, 파일, 스트림, 바이너리 데이터를 추출하며 YARA 스캐너를 통합하는 도구입니다.

매크로가 활성화된 Office 문서의 경우 oletools mraptor를 빠르게 사용하여 문서의 악성 여부를 판단할 수 있습니다. 더 자세히 분석하려면 oletools olevba나 oledump를 사용할 수 있습니다.

악성 MSI 파일을 분석하기 위해 지금까지는 신뢰할 수 있는 유일한 도구인 lessmsi가 있었습니다. 하지만 lessmsi는 제가 찾던 기능을 구현하지 않았습니다:

  • 빠른 분류(triage)
  • 바이너리 데이터 추출
  • YARA 스캐닝

그래서 msidump가 등장했습니다.

기능

이 도구는 빠른 분류와 악성 MSI 모음에 대한 상세 분석을 돕습니다. 다음을 수행할 수 있습니다:

  • 파일이 의심스러운지 여부를 신속하게 판단
  • 모든 MSI 테이블 나열 및 특정 레코드 덤프
  • CAB의 모든 파일, Binary 데이터, CustomAction의 스크립트 추출
  • YARA 규칙으로 모든 내부 데이터와 레코드 스캔
  • file/MIME 유형 추론을 사용하여 내부 데이터 유형 결정

이 도구는 제가 게시한 블로그 포스트의 동반 도구로 만들어졌습니다:

  • MSI Shenanigans. Part 1 - Offensive Capabilities Overview

제한 사항

  • 이 프로그램은 아직 초기 알파 버전으로, 예상치 못한 오류가 발생하거나 분류/파싱 로직이 변경될 수 있습니다.
  • 이 도구는 Win32 COM WindowsInstaller.Installer 인터페이스에 크게 의존하기 때문에 현재 기본 Linux 플랫폼을 지원할 수 없습니다. wine python msidump.py가 도움이 될 수도 있지만, 아직 시도해보지 않았습니다.

사용 사례

  1. YARA 규칙으로 의심스러운 MSI를 빠르게 분류:
root@kitploit:~
cmd> python msidump.py evil.msi -y rules.yara

1.png

여기서 입력 MSI에 의심스러운 VBScript가 삽입되어 있고 여러 실행 파일이 포함되어 있음을 확인할 수 있습니다.

  1. 이제 이 VBScript를 자세히 살펴보기 위해 해당 레코드만 추출해 보겠습니다.

분류 표에서 이 VBScript가 Binary 테이블에 있음을 확인했습니다. 다음 명령으로 추출합니다:

root@kitploit:~
python msidump.py putty-backdoored.msi -l binary -i UBXtHArj

레코드 덤프는 이름/ID 또는 인덱스 번호(여기서는 7)로 지정할 수 있습니다.

2.png

다른 예시를 살펴보겠습니다. 이번에는 설치 중에 실행될 실행 파일이 Binary 테이블에 저장되어 있습니다:

3.png

해당 파일을 추출하려면 다음을 사용합니다:

root@kitploit:~
python msidump.py evil2.msi -x binary -i lmskBju -O extracted

여기서:

  • -x binary는 Binary 테이블의 내용을 추출하도록 지시합니다.
  • -i lmskBju는 추출할 정확한 레코드를 지정합니다.
  • -O extracted는 출력 디렉터리를 설정합니다.

4.png

최상의 출력 경험을 위해 최대화된 콘솔 창에서 도구를 실행하거나 출력을 파일로 리다이렉션하세요:

root@kitploit:~
python msidump.py [...] -o analysis.log

전체 사용법

root@kitploit:~
PS D:\> python .\msidump.py --help
options:
  -h, --help            show this help message and exit

Required arguments:
  infile                Input MSI file (or directory) for analysis.

Options:
  -q, --quiet           Suppress banner and unnecessary information. In triage mode, will display only verdict.
  -v, --verbose         Verbose mode.
  -d, --debug           Debug mode.
  -N, --nocolor         Dont use colors in text output.
  -n PRINT_LEN, --print-len PRINT_LEN
                        When previewing data - how many bytes to include in preview/hexdump. Default: 128
  -f {text,json,csv}, --format {text,json,csv}
                        Output format: text, json, csv. Default: text
  -o path, --outfile path
                        Redirect program output to this file.
  -m, --mime            When sniffing inner data type, report MIME types

Analysis Modes:
  -l what, --list what  List specific table contents. See help message to learn what can be listed.
  -x what, --extract what
                        Extract data from MSI. For what can be extracted, refer to help message.

Analysis Specific options:
  -i number|name, --record number|name
                        Can be a number or name. In --list mode, specifies which record to dump/display entirely. In --extract mode dumps only this particular record to --outdir
  -O path, --outdir path
                        When --extract mode is used, specifies output location where to extract data.
  -y path, --yara path  Path to YARA rule/directory with rules. YARA will be matched against Binary data, streams and inner files

------------------------------------------------------

- What can be listed:
    --list CustomAction     - Specific table
    --list Registry,File    - List multiple tables
    --list stats            - Print MSI database statistics
    --list all              - All tables and their contents
    --list olestream        - Prints all OLE streams & storages.
                              To display CABs embedded in MSI try: --list _Streams
    --list cabs             - Lists embedded CAB files
    --list binary           - Lists binary data embedded in MSI for its own purposes.
                              That typically includes EXEs, DLLs, VBS/JS scripts, etc

- What can be extracted:
    --extract all           - Extracts Binary data, all files from CABs, scripts from CustomActions
    --extract binary        - Extracts Binary data
    --extract files         - Extracts files
    --extract cabs          - Extracts cabinets
    --extract scripts       - Extracts scripts

------------------------------------------------------

TODO

  • 분류 로직이 여전히 약간 불안정하여 만족스럽지 않습니다. 따라서 지속적으로 재설계하고 더 세분화할 예정입니다.
  • 더 다양한 테스트 샘플 모음에서 테스트해야 합니다.
  • 암호가 있는 ZIP 아카이브 입력 지원 추가
  • 단일 파일 대신 YARA 규칙이 있는 전체 디렉터리를 수집하는 지원 추가
  • 현재 이 도구는 CustomAction Type의 숫자를 평가하여 악성 여부를 판단하는데, 이는 우회 가능성이 있습니다.
    • Type 번호를 적절히 소비하고 플래그로 분해하도록 재작업이 필요합니다.

도구 이름

도구 이름을 지을 때 이미 사용 중인 이름인지 확인하는 것을 잊었습니다. msitools GNU 패키지의 일부인 msidump라는 다른 도구가 있습니다:

  • msidump

☕ 지원하기 ☕

이 프로젝트와 다른 프로젝트들은 잠 못 이루는 밤과 많은 노력의 결과물입니다. 제가 하는 일을 좋아하시고 항상 커뮤니티에 환원하는 점을 감사히 여기신다면, 커피 한 잔 사주기 (또는 맥주라면 더 좋습니다) 감사의 표시로 부탁드립니다! 💪


root@kitploit:~
Mariusz Banach / mgeeky, (@mariuszbit)
<mb [at] binary-offensive.com>
도구 다운로드