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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
PackMyPayload — 페이로드를 출력 컨테이너에 패키징하여 Mark-of-the-Web 플래그를 우회하고 컨테이너 파일 형식과 관련된 위험을 시연하는 PoC입니다. 지원 형식: ZIP, 7zip, PDF, ISO, IMG, CAB, VHD, VHDX | Kitploit
도구/GitHubGitHub/mgeeky/packmypayload
Phishing ToolsContainer SecurityExploit FrameworksPayload GenerationRed TeamingPayload Development
GitHubmgeeky/packmypayload

PackMyPayload

페이로드를 출력 컨테이너에 패키징하여 Mark-of-the-Web 플래그를 우회하고 컨테이너 파일 형식과 관련된 위험을 시연하는 PoC입니다. 지원 형식: ZIP, 7zip, PDF, ISO, IMG, CAB, VHD, VHDX

저장소 보기
1.2k17152년 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

PackMyPayload - 컨테이너화된 악성코드의 새로운 위협

지원 형식으로 이동

이 도구는 입력으로 파일이나 디렉터리를 받아 이를 보관/컨테이너 역할을 하는 출력 파일에 포함시킵니다. 컨테이너 파일 형식에 포함된 악성코드의 새로운 위험을 제시하는 Proof-of-Concept 용도로 사용할 수 있으며, 전문 레드팀 운영자가 초기 접근(Initial Access) 전략을 강화하는 데 도움을 줍니다.

현재 위협 행위자들은 다양한 컨테이너 파일 형식으로 보관된 악성코드를 밀반입하는 것으로 알려져 있으며, 그 예로는 다음과 같습니다:

  • 7zip
  • zip
  • ISO
  • IMG

그들은 페이로드가 파일 콘텐츠 스캐너를 통과하도록 하기 위해 이렇게 하지만, 더 중요한 것은 _파일에 Mark-Of-The-Web 플래그가 설정되는 것을 피하기 위해서_입니다. 공격자들이 MOTW를 원하지 않는 데는 여러 동기가 있으며, 그중 Microsoft Office의 _Protected View_가 항상 포함되었습니다.

만약 공격자가 피해자에게 컨테이너 파일을 제공한다면, 인터넷에서 가져온 Office 문서의 VBA 매크로를 비활성화하는 기반이 우회될 수 있습니다.

배경

2월 7일 Microsoft는 인터넷에서 시작된 VBA 매크로를 차단하는 기본 구성 변경을 발표했습니다. 이는 사용자 워크스테이션과 해당 소프트웨어의 기준 구성을 강화하는 놀라운 진전입니다. 늦은 감이 있지만 일반적인 Windows+Office 설치 환경에 긍정적인 영향을 미치는 중요한 단계입니다.

구현된 동작은 매크로 사용 Office 문서를 MOTW(Mark of the Web) 플래그에 기반하여 구별함으로써 작동한다고 설명됩니다. 이 플래그는 소프트웨어 클라이언트(브라우저, 메일 클라이언트, 파일 압축 프로그램 등)가 인터넷과 같은 신뢰할 수 없는 영역에서 가져온 파일을 표시하는 오염된 레이블 역할을 합니다.

Outflank은 2020년에 MOTW 플래그가 균일하게 전파되지 않는 영역을 지적하며 MOTW에 대해 더 많은 정보를 제공했습니다. 이러한 영역은 방어 격차(Defense Gap) 역할을 하며, 수년간 위협 행위자들에게 일반적으로 악용되어 왔습니다.

그들의 연구는 일부 컨테이너 파일 형식, 즉 ISO, VHD/VHDX는 자동 마운트 또는 자동 추출 시 내부 파일에 MOTW 오염 플래그를 전파하지 않는다는 것을 밝혔습니다. 더욱이 Windows 8+는 더블 클릭 시 이러한 형식을 자동으로 열 수 있어, 이를 악명 높은 감염 운반체로 만들어 MOTW의 보안 조치 역할을 약화시킬 수 있습니다.

데모 - 위협 행위자가 MOTW를 우회하고 매크로를 밀반입하는 방법

실제로 Mark of the Web 플래그가 어떻게 보이는지 살펴보겠습니다:

1. 브라우저를 사용하여 일반 파일 다운로드

1.gif

파일을 다운로드한 후, 파일을 마우스 오른쪽 버튼으로 클릭하고 속성을 확인하세요. 신뢰할 수 없는 영역에서 가져왔기 때문에 파일 차단을 해제하라는 메시지가 표시됩니다.:

motw

이 정보는 Zone.Identifier라는 NTFS ADS(대체 데이터 스트림)에 저장되며, 다음과 같습니다:

zone-identifier

ZoneId=3은 파일을 오염된 것으로 표시하는 역할을 합니다.

2. 해당 파일을 ISO로 패킹

PackMyPayload.py를 사용하여 명령 하나로 파일을 ISO Joliet 디스크에 쉽게 넣을 수 있습니다:

root@kitploit:~
PS> py PackMyPayload.py 7z2107-x64.exe 7z2107-x64.iso

2.gif

3. 간단한 HTTP 서버로 파일 제공, 다운로드, ISO 열기, MOTW 확인

ISO 파일을 생성한 후, Python을 사용하여 HTTP 서버를 모방합니다:

root@kitploit:~
PS> py -m http.server 80

그런 다음 브라우저를 사용하여 ISO 파일을 다운로드합니다.

3.gif

해당 ISO 파일의 속성을 확인하면 MOTW 플래그가 표시된 것을 볼 수 있습니다.

marked

그러나 내부의 7zip 설치 프로그램 EXE 파일은 MOTW 표시가 되어 있지 않습니다!

not-marked


근거

업계의 시선이 Microsoft의 VBA 매크로 차단이라는 용감한 결정에 쏠린 이 기회를 이용하여, 우리는 악용에 대한 세계 기술의 회복력을 높이는 데 최대한 고려하는 전문 보안 연구자로서 현재 위협 행위자의 TTP에 다음 통찰력을 추가하고자 합니다:

위협 행위자는 MOTW가 피싱 페이로드에 미치는 영향을 잘 알고 있습니다. 그들은 오래전에 적응했으며 현재 악성 프로그램을 컨테이너 내부로 밀반입하고 있습니다. 가장 흔히 관찰되는 형식으로는 ISO, IMG, CAB가 있습니다.

저는 Microsoft의 입장에 기반한 모멘텀을 높이고 이러한 회피 경로에 대한 논의를 강화하기 위해 이 도구를 지금 공개합니다.

위에 나열된 확장자를 가진 파일이 신뢰할 수 없는 영역에서 올 때마다, 그리고 적용 가능한 모든 곳에서 해당 파일을 차단(또는 격리)하는 것이 좋습니다:

  • 웹 프록시
  • 메일 스캐닝 엔진
  • 엔드포인트 보호 에이전트 - EDR, XDR, AV
  • 파일 업로드 양식 및 기능

이번에 공개된 도구를 통해 더 많은 레드팀이 논의된 위험을 시뮬레이션하고 파트너 방어 체계 내 탐지 격차를 더 쉽게 식별할 수 있기를 바랍니다.


기능

이 스크립트는 다음과 같은 기능과 장점을 제공합니다:

  • 입력 파일 또는 디렉터리를 출력 컨테이너로 패키징합니다.
  • 기존 컨테이너를 백도어하거나 새로 생성할 수 있습니다.
  • 지원되는 형식에 대해 비밀번호 암호화를 제공합니다.

지원되는 형식:

  • ZIP의 경우, CVE-2022-41091이 악용되면 MOTW를 제거할 수 있습니다. PackMyPayload는 기본적으로 내부 ZIP 파일을 읽기 전용으로 표시하며, --zip-noreadonly 옵션을 사용하지 않는 한 그렇습니다.

설치

  • 이 저장소를 클론합니다.
  • 요구 사항을 설치합니다:
root@kitploit:~
cmd> pip3 install -r requirements.txt

사용 예

  1. 파일이 있는 디렉터리를 ISO로 패킹:
root@kitploit:~
PS> py PackMyPayload.py C:\my\dir malicious.iso -v

+      o     +              o   +      o     +              o
    +             o     +           +             o     +         +
    o  +           +        +           o  +           +          o
-_-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-_-_-_-_-_-_-_,------,      o
   :: PACK MY PAYLOAD (1.2.0)       -_-_-_-_-_-_-|   /\_/\
   for all your container cravings   -_-_-_-_-_-~|__( ^ .^)  +    +
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_-_-''  ''
+      o         o   +       o       +      o         o   +       o
+      o            +      o    ~   Mariusz Banach / mgeeky    o
o      ~     +           ~          <mb [at] binary-offensive.com>
    o           +                         o           +           +

[.] Packaging input file to output .iso (iso)...
Burning files onto ISO:
    Adding file: //malicious.lnk
    Adding file: //malicious.docm
[INFO] [+] File packaged into ISO.
[INFO] Successfully packed input file.

[+] Generated file written to (size: 69632): malicious.iso
  1. VHD/VHDX로 파일을 패킹하려면 Windows에서 상승된 사용자 컨텍스트(예: 로컬 관리자)에서 이 스크립트를 실행해야 합니다. 이는 DISKPART가 물리적 디바이스 개체/네임스페이스에 대한 관리자 액세스를 필요로 하기 때문입니다. 가장 좋은 경험은 Windows Terminal (wt) 또는 ConEmu에서 스크립트를 실행하는 것입니다(ANSI 색상 지원). 출력이 보기 좋지 않으면 -N 플래그로 색상을 비활성화하세요:
root@kitploit:~
PS> py PackMyPayload.py .\evil.lnk .\evil.vhd -v -N

+      o     +              o   +      o     +              o
    +             o     +           +             o     +         +
    o  +           +        +           o  +           +          o
-_-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-_-_-_-_-_-_-_,------,      o
   :: PACK MY PAYLOAD (1.2.0)       -_-_-_-_-_-_-|   /\_/\
   for all your container cravings   -_-_-_-_-_-~|__( ^ .^)  +    +
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_-_-''  ''
+      o         o   +       o       +      o         o   +       o
+      o            +      o    ~   Mariusz Banach / mgeeky    o
o      ~     +           ~          <mb [at] binary-offensive.com>
    o           +                         o           +           +

[.] Packaging input file to output .vhd (vhd)...
[INFO] Drive letters currently occupied:
    X
    C
    Z
    D
[INFO] Will create VHD of size:    1024MB (Dynamic)
[INFO] Will assign VHD letter :    V:
[INFO] Will format VHD with   :    FAT32
[INFO] Creating VHD file...
[+] Created & mounted VHD file on V:\
[.] Packing files into created VHD...
[INFO] Packaged file:
[INFO]     evil.lnk => V:\
[.] Detaching VHD file...
[+] Detached VHD file from V:\
[INFO] [+] File packaged into VHD.
[INFO] Successfully packed input file.

[+] Generated file written to (size: 6311936): evil.vhd

전체 사용법

root@kitploit:~
usage:
+      o     +              o   +      o     +              o
    +             o     +           +             o     +         +
    o  +           +        +           o  +           +          o
-_-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-_-_-_-_-_-_-_,------,      o
   :: PACK MY PAYLOAD (1.3.0)       -_-_-_-_-_-_-|   /\_/\
   for all your container cravings   -_-_-_-_-_-~|__( ^ .^)  +    +
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_-_-''  ''
+      o         o   +       o       +      o         o   +       o
+      o            +      o    ~   Mariusz Banach / mgeeky    o
o      ~     +           ~          <mb [at] binary-offensive.com>
    o           +                         o           +           +

Usage: PackMyPayload.py [options] <infile> <outfile>

options:
  -h, --help            show this help message and exit

Required arguments:
  infile                Input file/directory to be packaged into output archive/container
  outfile               Output file with extension pointing at output format

Options:
  -v, --verbose         Verbose mode.
  -d, --debug           Debug mode.
  -N, --nocolor         Dont use colors in text output.
  -i BACKDOOR, --backdoor BACKDOOR
                        Instead of generating blank new output container/archive, will backdoor existing input one.
  -n NAME, --filename NAME
                        Package input file into archive/container under this filename (may contain relative path).
  -p PASSWORD, --password PASSWORD
                        If output archive/container format supports password protection, use this password to protect
                        output file.
  --out-format {zip,7z,iso,img,cab,pdf,vhd,vhdx}
                        Explicitely define output format disregarding output file's extension. Can be one of
                        following: zip, 7z, iso, img, cab, pdf, vhd, vhdx
  -H HIDE, --hide HIDE  (Supported in ISO/IMG, ZIP) Set hidden attribute on file(s). Cannot be repeated, only comma-
                        separated. Example: --hide icon.ico,evil.exe . Supports wildcards: --hide icon?.*

ZIP specific options:
  --zip-noreadonly      DISABLE ZIP MOTW bypass that is used by default. By default, PackMyPayload marks Office files
                        as Read-Only making ZIP software unable to set MOTW flag on them when extracted. This option
                        disables that behavior.

VHD specific options:
  --vhd-size SIZE       VHD dynamic size in MB. Default: 1024
  --vhd-letter LETTER   Drive letter where to mount VHD drive. Default: will pick unused one at random.
  --vhd-filesystem FS   Filesystem to be used while formatting VHD. Default: FAT32. Supported: fat, fat32, ntfs

=====================================================

Supported container/archive formats:

        - zip
        - 7z
        - iso
        - img
        - cab
        - pdf
        - vhd
        - vhdx

=====================================================

알려진 문제

  • VHD/VHDX 마운트 볼륨에 파일을 복사할 때 디렉터리를 만들 수 없습니다.

TODO

  • MSI 파일 지원 추가

  • MS Office 2007+ 문서에 파일 포함: word -> embeddings -> oleObject1.bin (OLE 스트림) + 조정

  • 다른 이국적인 아카이브 형식 지원 고려 (MOTW 처리나 Windows 기본 지원과 관련 없음):

    • tar
    • cpio
    • pax
    • xar
    • ar
    • mtree
    • shar
    • tar
    • cpgz
    • uu

트리비아

다음 줄을 거울 앞에서 최대한 빠르게 크게 읽어 주시기 바랍니다:

root@kitploit:~
py Pack My Payload dot py

어떤 이들은 이 주문이 고대 DAEMON과 양을 소환한다고 말합니다 ( ͡~ ͜ʖ ͡°)


기여자

다음 기여자분들께 큰 박수와 감사를 드립니다. 이 도구를 향상시키는 데 도움을 주셨습니다:

  • @ChoiSG (@_choisec) - ISO/IMG 컨테이너에서 파일을 숨기는 --hide 플래그 추가
  • Daniel Hauenstein (@dhauenstein) - --hide 플래그 관련 문제 수정

☕ 지원 표시 ☕

이 프로젝트와 다른 프로젝트들은 잠 못 이루는 밤과 많은 노력의 결과입니다. 제 작업이 마음에 들고 제가 항상 커뮤니티에 환원하는 것을 감사하게 생각하신다면, 저에게 커피 한 잔 사 주세요 (또는 맥주가 더 좋습니다) 감사의 표시로! 💪


root@kitploit:~
Mariusz Banach / mgeeky, (@mariuszbit)
<mb [at] binary-offensive.com>
도구 다운로드
형식MOTW 제거 여부?기본 Windows 지원 여부?권한 상승 필요?비고
ZipNo/Yes*YesNo(MOTW는 CVE-2022-41091을 통해 제거됨)
7zip부분적NoNoMOTW는 수동 파일 추출 시에만 제거됨
ISOYesYesNo
IMGYesYesNo
PDF?YesNoPDF 리더의 Javascript 지원에 따라 다름
CABNoYesNo피해자 측에서 몇 번의 추가 클릭 필요
VHDYesYesYes이 스크립트는 현재 디렉터리를 만들 수 없음
VHDXYesYesYes이 스크립트는 현재 디렉터리를 만들 수 없음
  • lha
  • WinZip Pro도 다음 형식의 추출을 지원하므로 추가할 가치가 있을 수 있습니다:

    • B64, BHX, BZ, BZ2, GZ, HQX, LHA, LZH, MIM, TAZ, TBZ,
    • TBZ2, TGZ, TXZ, TZ, UU, UUE, VMDK, XXE, XZ, Z, ZIPX,