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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
ProtectMyTooling — 멀티-패커 래퍼로, 다양한 패커, 난독화 도구 및 기타 Red Team 지향 무기들을 데이지 체인 방식으로 연결할 수 있습니다. 아티팩트 워터마킹, IOCs 수집 및 PE 백도어링 기능이 특징입니다. 임플란트를 입력하면 많은 은밀한 작업을 수행하고 난독화된 실행 파일을 출력합니다. | Kitploit
도구/GitHubGitHub/mgeeky/protectmytooling
Indicator of Compromise (IOC) ManagementPenetration Testing FrameworksExploit FrameworksPayload GenerationMalware AnalysisBinary AnalysisRed TeamingPayload Development
GitHubmgeeky/protectmytooling

ProtectMyTooling

멀티-패커 래퍼로, 다양한 패커, 난독화 도구 및 기타 Red Team 지향 무기들을 데이지 체인 방식으로 연결할 수 있습니다. 아티팩트 워터마킹, IOCs 수집 및 PE 백도어링 기능이 특징입니다. 임플란트를 입력하면 많은 은밀한 작업을 수행하고 난독화된 실행 파일을 출력합니다.

저장소 보기
1.1k14810개월 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
웹사이트

1.png

도구 탐지가 아닌 기술 탐지

이 소프트웨어를 공개한 이유는 다음 블로그 게시물에 설명되어 있습니다:

  • ProtectMyTooling - 도구를 탐지하지 말고 기술을 탐지하라

소개

다양한 패커, 프로텍터, 난독화 도구, 셸코드 로더, 인코더, 생성기를 래핑하여 복잡하게 보호된 Red Team 임플란트를 생성하는 스크립트입니다. 악성코드 개발 CI/CD 파이프라인에서 완벽한 동반자로서, 아티팩트에 워터마크를 추가하고, IOC를 수집하며, 백도어 등을 도와줍니다.

ProtectMyToolingGUI.py

3.png

ProtectMyTooling을 사용하면 모든 대화 상자, 인터페이스, 메뉴를 클릭하고, 단일 바이너리를 난독화하기 위해 프로젝트를 생성하고, 가능한 모든 옵션을 클릭하며 그런 넌센스에 시간을 낭비할 필요 없이 신속하게 바이너리를 난독화할 수 있습니다. 바로 핵심으로 안내합니다 - 도구를 난독화하는 것입니다.

목표는 가능한 가장 편리한 인터페이스를 제공하고 단일 바이너리에 결합된 여러 패커의 _데이지 체인_을 활용할 수 있도록 하는 것입니다.

맞습니다 - ProtectMyTooling을 여러 패커와 함께 한 번에 실행할 수 있습니다:``` C:> py ProtectMyTooling.py hyperion,upx mimikatz.exe mimikatz-obf.exe

root@kitploit:~
위 예제는 먼저 `mimikatz.exe`를 Hyperion에 전달하여 난독화한 후, 그 결과를 UPX에 제공하여 압축합니다. 결과적으로 `UPX(Hyperion(file))`이 생성됩니다.

## 기능

- 여러 다른 PE 패커, .NET 난독화 도구, 쉘코드 로더/빌더를 지원합니다.
- 패커의 출력을 다음 패커로 전달하는 체이닝을 허용합니다: `callobf,hyperion,upx`는 아티팩트 `UPX(Hyperion(CallObf(file)))`을 생성합니다.
- 각 난독화 단계에서 IOC를 수집하여 감사 및 블루팀 요청을 충족할 수 있습니다.
- 결과 PE 아티팩트에 사용자 정의 워터마크를 주입하는 기능을 제공합니다 - DOS 스텁, 체크섬, 독립 PE 섹션, 파일의 오버레이에 주입 가능.
- `protected-upload` 및 `protected-execute-assembly` 명령을 제공하는 편리한 Cobalt Strike 어그레서 스크립트가 포함되어 있습니다.
- 직관적인 명령줄 사용법

## 설치

**이 도구는 대부분의 패커가 기본적으로 해당 플랫폼을 대상으로 하므로 Windows에서 작동하도록 설계되었습니다.**

일부 기능은 Linux에서도 정상적으로 작동할 수 있지만, 해당 지원은 완전히 테스트되지 않았으므로 버그 및 문제를 보고해 주시기 바랍니다.

1. 먼저, **AV를 비활성화**하고 `contrib` 디렉토리를 예외에 추가하십시오. 해당 디렉토리에는 AV에 의해 플래그 지정되어 제거될 난독화 도구 및 보호 도구가 포함되어 있습니다.
2. 그런 다음 이 저장소를 클론하십시오.```
PS C:\> git clone --recurse https://github.com/Binary-Offensive/ProtectMyTooling
  1. 실제 설치는 간단합니다:

Windows``` PS C:\ProtectMyTooling> .\install.ps1

root@kitploit:~
**Linux**```
bash# ./install.sh

특징

ScareCrow 패커가 Windows 10에서 실행되려면 WSL이 설치되어 있고 bash.exe를 사용할 수 있어야 합니다 (%PATH%에 있어야 함). 그런 다음 WSL에는 최소 1.16 버전의 golang이 설치되어 있어야 합니다.``` cmd> bash bash$ sudo apt update ; sudo apt upgrade -y ; sudo apt install golang=2:1.18~3 -y

root@kitploit:~
## 설정

지원되는 난독화 도구를 연결하거나 기본 옵션을 변경하거나 **ProtectMyTooling**을 난독화 실행 파일 경로로 지정하려면 `config\ProtectMyTooling.yaml` 설정 파일을 조정해야 합니다.

또한 지원되는 모든 패커의 모든 사용 가능한 옵션을 포함하는 `config\sample-full-config.yaml` 파일이 참조용으로 제공됩니다.

## 친절한 알림

- 생성된 바이너리가 충돌하거나 예상대로 실행되지 않는 경우 - 다른 패커 체인을 사용해 보세요.
- 패커는 생성된 바이너리의 안정성을 보장하지 않으므로 ProtectMyTooling도 마찬가지로 보장할 수 없습니다.
- 체인 구성 시, 연속된 패커가 기대하는 형식에 따라 출력->입력 페이로드 형식을 신중하게 일치시키세요.

---

## 사용법

`ProtectMyTooling`을 처음 사용하기 전에 프로그램의 YAML 설정 파일 `ProtectMyTooling.yaml`을 조정하는 것이 필수적입니다. 
매개변수 처리 순서는 다음과 같습니다:

- 먼저 기본 매개변수가 사용됩니다.
- 그런 다음 YAML에서 가져온 값으로 덮어씁니다.
- 마지막으로 명령줄에 제공된 값이 해당 값을 덮어씁니다.

거기에서 지원되는 패커 경로와 옵션을 활성화하도록 설정해야 합니다.

### 시나리오 1: 간단한 ConfuserEx 난독화

사용법은 매우 간단합니다. 난독화 도구 이름, 입력 및 출력 파일 경로만 전달하면 됩니다:```
C:\> py ProtectMyTooling.py confuserex Rubeus.exe Rubeus-obf.exe

    ::::::::::.:::::::..      ...  :::::::::::.,::::::  .,-::::::::::::::::
     `;;;```.;;;;;;``;;;;  .;;;;;;;;;;;;;;;\''';;;;\'\''',;;;'````;;;;;;;;\'\'''
      `]]nnn]]' [[[,/[[[' ,[[     \[[,  [[     [[cccc [[[           [[
       $$$""    $$$$$$c   $$$,     $$$  $$     $$"""" $$$           $$
       888o     888b "88bo"888,_ _,88P  88,    888oo,_`88bo,__,o,   88,
    .  YMMMb :.-:.MM   ::-. "YMMMMMP"   MMM    """"YUMMM"YUMMMMMP"  MMM
    ;;,.    ;;;';;.   ;;;;'
    [[[[, ,[[[[, '[[,[[['
    $$$$$$$$"$$$   c$$"
    888 Y88" 888o,8P"`
    ::::::::::::mM...        ...     :::    :::::.    :::. .,-:::::/
    ;;;;;;;;\'''.;;;;;;;.  .;;;;;;;.  ;;;    ;;`;;;;,  `;;,;;-'````'
         [[   ,[[     \[[,[[     \[[,[[[    [[[ [[[[[. '[[[[   [[[[[[/
         $$   $$$,     $$$$$,     $$$$$'    $$$ $$$ "Y$c$"$$c.    "$$
         88,  "888,_ _,88"888,_ _,88o88oo,._888 888    Y88`Y8bo,,,o88o
         MMM    "YMMMMMP"  "YMMMMMP"""""YUMMMMM MMM     YM  `'YMUP"YMM

    Red Team implants protection swiss knife.

    Multi-Packer wrapping around multitude of packers, protectors, shellcode loaders, encoders.
    Mariusz Banach / mgeeky '20-'22, <[email protected]>
    v0.16

[.] Processing x86 file: "\Rubeus.exe"
[.] Generating output of ConfuserEx(<file>)...

[+] SUCCEEDED. Original file size: 417280 bytes, new file size ConfuserEx(<file>): 756224, ratio: 181.23%

시나리오 2: 간단한 ConfuserEx 난독화 후 아티팩트 테스트

파일을 난독화한 후 즉시 실행을 시도하여 (제공된 선택적 매개변수도 함께) 옵션 -r --cmdline CMDLINE과 함께 정상 작동하는지 확인할 수도 있습니다:``` C:> py ProtectMyTooling.py confuserex Rubeus.exe Rubeus-obf.exe -r --cmdline "hash /password:foobar"

root@kitploit:~
[...]

[.] Processing x86 file: "\Rubeus.exe" [.] Generating output of ConfuserEx()...

[+] SUCCEEDED. Original file size: 417280 bytes, new file size ConfuserEx(): 758272, ratio: 181.72%

Running application to test it...


(_____ \ | | ) ) | | _____ _ _ ___ | __ /| | | | _ | ___ | | | |/) | | \ | || | |) ) | || | | || ||/|/|_____)__/(_/

v2.0.0

[*] Action: Calculate Password Hash(es)

[] Input password : foobar [] rc4_hmac : BAAC3929FABC9E6DCD32421BA94A84D4

[!] /user:X and /domain:Y need to be supplied to calculate AES and DES hash types!

root@kitploit:~
### 시나리오 3: 워터마킹 및 IOCs 수집을 포함한 복잡한 악성코드 난독화

아래 사용 사례는 입력으로 `beacon.exe`를 받아 순차적으로 `CallObf` -> `UPX` -> `Hyperion` 패커에 전달합니다.

그런 다음 최종 생성된 출력 아티팩트의 DOS Stub에 지정된 `fooobar` 워터마크를 주입하고 해당 아티팩트의 체크섬을 값 `0xAABBCCDD`로 수정합니다.

마지막으로, ProtectMyTooling은 모든 IOCs (md5, sha1, sha256, imphash 및 기타 메타데이터)를 캡처하여 보조 CSV 파일에 저장합니다. 이 파일은 작전이 전개됨에 따라 IOC 매칭에 사용될 수 있습니다.```
PS> py .\ProtectMyTooling.py callobf,upx,hyperion beacon.exe beacon-obf.exe -i -I operation_chimera -w dos-stub=fooobar -w checksum=0xaabbccdd

    [...]

[.] Processing x64 file: "beacon.exe"
[>] Generating output of CallObf(<file>)...

[.] Before obfuscation file's PE IMPHASH:       17b461a082950fc6332228572138b80c
[.] After obfuscation file's PE IMPHASH:        378d9692fe91eb54206e98c224a25f43
[>] Generating output of UPX(CallObf(<file>))...

[>] Generating output of Hyperion(UPX(CallObf(<file>)))...

[+] Setting PE checksum to 2864434397 (0xaabbccdd)
[+] Successfully watermarked resulting artifact file.
[+] IOCs written to: beacon-obf-ioc.csv

[+] SUCCEEDED. Original file size: 288256 bytes, new file size Hyperion(UPX(CallObf(<file>))): 175616, ratio: 60.92%

생성된 IOCs 증거 CSV 파일은 다음과 같습니다:```csv timestamp,filename,author,context,comment,md5,sha1,sha256,imphash 2022-06-10 03:15:52,beacon.exe,mgeeky@commandoVM,Input File,test,dcd6e13754ee753928744e27e98abd16,298de19d4a987d87ac83f5d2d78338121ddb3cb7,0a64768c46831d98c5667d26dc731408a5871accefd38806b2709c66cd9d21e4,17b461a082950fc6332228572138b80c 2022-06-10 03:15:52,y49981l3.bin,mgeeky@commandoVM,Obfuscation artifact: CallObf(),test,50bbce4c3cc928e274ba15bff0795a8c,15bde0d7fbba1841f7433510fa9aa829f8441aeb,e216cd8205f13a5e3c5320ba7fb88a3dbb6f53ee8490aa8b4e1baf2c6684d27b,378d9692fe91eb54206e98c224a25f43 2022-06-10 03:15:53,nyu2rbyx.bin,mgeeky@commandoVM,Obfuscation artifact: UPX(CallObf()),test,4d3584f10084cded5c6da7a63d42f758,e4966576bdb67e389ab1562e24079ba9bd565d32,97ba4b17c9bd9c12c06c7ac2dc17428d509b64fc8ca9e88ee2de02c36532be10,9aebf3da4677af9275c461261e5abde3 2022-06-10 03:15:53,beacon-obf.exe,mgeeky@commandoVM,Obfuscation artifact: Hyperion(UPX(CallObf())),test,8b706ff39dd4c8f2b031c8fa6e3c25f5,c64aad468b1ecadada3557cb3f6371e899d59790,087c6353279eb5cf04715ef096a18f83ef8184aa52bc1d5884e33980028bc365,a46ea633057f9600559d5c6b328bf83d 2022-06-10 03:15:53,beacon-obf.exe,mgeeky@commandoVM,Output obfuscated artifact,test,043318125c60d36e0b745fd38582c0b8,a7717d1c47cbcdf872101bd488e53b8482202f7f,b3cf4311d249d4a981eb17a33c9b89eff656fff239e0d7bb044074018ec00e20,a46ea633057f9600559d5c6b328bf83d

root@kitploit:~
## 지원되는 패커

`ProtectMyTooling`은 난독화기/패커뿐만 아니라 명령줄에서 사용 가능한 모든 종류의 빌더/생성기/쉘코드 로더도 지원하도록 설계되었습니다.

현재 프로그램은 다양한 상용 및 오픈소스 패커/난독화기를 지원합니다. 오픈소스 패커는 프로젝트에 포함되어 있습니다.
상용 패커는 사용자가 제품을 구매하고 `ProtectMyTooling.yaml` 파일에서 위치를 구성하여 스크립트가 해당 파일을 찾을 수 있도록 해야 합니다.

1. [`Amber`](https://github.com/EgeBalci/amber) - EXE/DLL을 입력으로 받아 EXE/PIC 셸코드를 생성하는 리플렉티브 PE 패커
2. [`AtomPePacker`](https://github.com/ORCx41/AtomPePacker) - 고성능 PE 패커
3. [`AsStrongAsFuck`](https://github.com/Charterino/AsStrongAsFuck) - Charterino의 .NET 어셈블리용 콘솔 난독화기
4. [`CallObfuscator`](https://github.com/d35ha/CallObfuscator) - 특정 Windows API를 다른 API로 난독화합니다.
5. [`ConfuserEx`](https://github.com/mkaring/ConfuserEx) - [Martin Karing](https://github.com/mkaring)에서 포크한 인기 있는 .NET 난독화기
6. [`Donut`](https://github.com/TheWover/donut) - EXE/DLL/.NET을 입력으로 받아 PIC 셸코드를 생성하는 인기 있는 PE 로더
7. [`Enigma`](https://enigmaprotector.com/) - 실행 파일의 포괄적인 보호를 위해 설계된 강력한 시스템
8. [`Freeze`](https://github.com/optiv/Freeze) - 입력 EXE/DLL 파일을 가져와 복제된 인증서, 제거된 Golang 특정 IoC 및 부풀려진 크기의 출력 파일을 생성합니다. 작성자: Matt Eidelberg (@Tyl0us).
9. [`Hyperion`](https://nullsecurity.net/tools/binary.html) - 32비트 및 64비트 휴대용 실행 파일을 위한 런타임 암호화기. 참조 구현이며 "Hyperion: Implementation of a PE-Crypter" 논문을 기반으로 합니다.
10. [`IntelliLock`](https://www.eziriz.com/intellilock.htm) - 강력한 라이선스 보안, 고도로 적응 가능한 라이선싱 기능/스키마와 안정적인 어셈블리 보호를 결합합니다.
11. [`InvObf`](https://github.com/danielbohannon/Invoke-Obfuscation) - `Invoke-Obfuscation`(작성자: Daniell Bohannon)을 사용하여 PowerShell 스크립트를 난독화합니다.
12. [`LoGiC.NET`](https://github.com/AnErrupTion/LoGiC.NET) - AnErrupTion이 dnlib을 사용하여 만든 더 발전된 무료 오픈 .NET 난독화기
13. [`Mangle`](https://github.com/optiv/Mangle) - 입력 EXE/DLL 파일을 가져와 복제된 인증서, 제거된 Golang 특정 IoC 및 부풀려진 크기의 출력 파일을 생성합니다. 작성자: Matt Eidelberg (@Tyl0us).
14. [`MPRESS`](https://www.autohotkey.com/mpress/mpress_web.htm) - Vitaly Evseenko의 MPRESS 압축기. 입력 EXE/DLL/.NET/MAC-DARWIN (x86/x64)을 압축합니다.
15. [`NetReactor`](https://www.eziriz.com/dotnet_reactor.htm) - 누구도 코드를 디컴파일하지 못하도록 완전히 차단하는 탁월한 .NET 코드 보호 시스템
16. [`NetShrink`](https://www.pelock.com/pl/produkty/netshrink) - Windows 및 Linux .NET 애플리케이션을 위한 실행 파일 패커(실행 파일 압축기), 애플리케이션 비밀번호 보호기 및 가상 DLL 바인더입니다.
17. [`Nimcrypt2`](https://github.com/icyguider/Nimcrypt2) - 입력 .NET, PE 또는 원시 셸코드를 실행하는 Nim 로더를 생성합니다. 작성자: [(@icyguider)](https://twitter.com/icyguider)
18. [`NimPackt-v1`](https://github.com/chvancooten/NimPackt-v1) - 입력으로 셸코드 또는 .NET 실행 파일을 받아 EXE 또는 DLL 로더를 생성합니다. 제공자: Cas van Cooten [(@chvancooten)](https://twitter.com/chvancooten)
19. [`NimSyscallPacker`](https://github.com/S3cur3Th1sSh1t-Sponsors/NimSyscallPacker) - PE/셸코드/.NET 실행 파일을 가져와 강력한 Nim+Syscalls EXE/DLL 로더를 생성합니다. 작성자: [(@S3cur3Th1sSh1t)](https://twitter.com/ShitSecure)의 스폰서웨어
20. [`Packer64`](https://github.com/jadams/Packer64) - John Adams의 `Packer64` 래퍼
21. [`pe2shc`](https://github.com/hasherezade/pe_to_shellcode) - PE를 셸코드로 변환합니다. 작성자: 저 [@hasherezade](https://twitter.com/hasherezade)
22. [`peCloak`](https://github.com/v-p-b/peCloakCapstone/blob/master/peCloak.py) - 다중 패스 인코더 및 휴리스틱 샌드박스 우회 AV 회피 도구
23. [`peresed`](https://github.com/avast/pe_tools) - **avast/pe_tools**의 _"peresed"_ 를 사용하여 기존 PE 리소스 및 서명을 모두 제거합니다 _(Mimikatz 아이콘을 생각해보세요)._
24. [`peunion`](https://bytecode77.com/pe-union) - 실행 파일(x86 또는 .NET x86/x64)을 암호화하며, 런타임에 복호화되어 메모리에서 실행됩니다.
25. [`ScareCrow`](https://github.com/optiv/ScareCrow) - EDR 회피형 x64 셸코드 로더로 DLL/CPL/XLL/JScript/HTA 아티팩트 로더를 생성합니다.
26. [`sgn`](https://github.com/EgeBalci/sgn) - 여러 개선 사항이 포함된 Go로 포팅된 Shikata ga nai (仕方がない) 인코더. 셸코드를 입력받아 인코딩된 셸코드를 생성합니다.
27. [`SmartAssembly`](https://www.red-gate.com/products/dotnet-development/smartassembly/) - 타사가 소스 코드에 접근하기 어렵게 만들어 역공학 또는 수정으로부터 애플리케이션을 보호하는 난독화기
28. [`sRDI`](https://github.com/monoxgas/sRDI) - DLL을 위치 독립적 셸코드로 변환합니다. 작성자: [Nick Landers, @monoxgas](https://twitter.com/monoxgas)
29. [`Themida`](https://www.oreans.com/Themida.php) - 고급 Windows 소프트웨어 보호 시스템
30. [`UPX`](https://upx.github.io/) - 여러 실행 파일 형식을 위한 무료, 이식 가능, 확장 가능, 고성능 실행 파일 패커입니다.
31. [`VMProtect`](https://vmpsoft.com/) - 비표준 아키텍처의 가상 머신에서 코드를 실행하여 코드를 보호하므로 소프트웨어 분석 및 크래킹이 매우 어렵습니다.

`-L` 옵션을 사용하여 지원되는 패커를 빠르게 나열할 수 있습니다(테이블 열은 터미널 너비에 따라 선택되며, 너비가 넓을수록 더 많은 정보가 표시됩니다):```
C:\> py ProtectMyTooling.py -L
    [...]

    Red Team implants protection swiss knife.

    Multi-Packer wrapping around multitude of packers, protectors, shellcode loaders, encoders.
    Mariusz Banach / mgeeky '20-'22, <[email protected]>
    v0.16

+----+----------------+-------------+-----------------------+-----------------------------+------------------------+--------------------------------------------------------+
| #  |      Name      |     Type    |       Licensing       |            Input            |         Output         |                         Author                         |
+----+----------------+-------------+-----------------------+-----------------------------+------------------------+--------------------------------------------------------+
| 1  |     amber      | open-source |    Shellcode Loader   |              PE             |     EXE, Shellcode     |                       Ege Balci                        |
| 2  | asstrongasfuck | open-source |    .NET Obfuscator    |             .NET            |          .NET          |                 Charterino, klezVirus                  |
| 3  |  atompepacker  | open-source |  PE EXE/DLL Protector |              PE             |        EXE, DLL        |            ORCA (@ORCx41, [email protected])            |
| 4  |    backdoor    | open-source |    Shellcode Loader   |          Shellcode          |           PE           |              Mariusz Banach, @mariuszbit               |
| 5  |    callobf     | open-source |  PE EXE/DLL Protector |              PE             |           PE           |                Mustafa Mahmoud, @d35ha                 |
| 6  |   confuserex   | open-source |    .NET Obfuscator    |             .NET            |          .NET          |                        mkaring                         |
| 7  |  donut-packer  | open-source |  Shellcode Converter  | PE, .NET, VBScript, JScript |       Shellcode        |                        TheWover                        |
| 8  |     enigma     |  commercial |  PE EXE/DLL Protector |              PE             |           PE           |          The Enigma Protector Developers Team          |
| 9  |     freeze     | open-source |    Shellcode Loader   |          Shellcode          |           PE           |                Matt Eidelberg (@Tyl0us)                |
| 10 |    hyperion    | open-source |  PE EXE/DLL Protector |              PE             |           PE           |                   nullsecurity team                    |
| 11 |  intellilock   |  commercial |    .NET Obfuscator    |              PE             |           PE           |                         Eziriz                         |
| 12 |     invobf     | open-source | Powershell Obfuscator |          Powershell         |       Powershell       |                    Daniel Bohannon                     |
| 13 |    logicnet    | open-source |    .NET Obfuscator    |             .NET            |          .NET          |                 AnErrupTion, klezVirus                 |
| 14 |     mangle     | open-source |   Executable Signing  |              PE             |           PE           |                Matt Eidelberg (@Tyl0us)                |
| 15 |     mpress     |   freeware  | PE EXE/DLL Compressor |              PE             |           PE           |                    Vitaly Evseenko                     |
| 16 |   netreactor   |  commercial |    .NET Obfuscator    |             .NET            |          .NET          |                         Eziriz                         |
| 17 |   netshrink    | open-source |    .NET Obfuscator    |             .NET            |          .NET          |                     Bartosz Wójcik                     |
| 18 |   nimcrypt2    | open-source |    Shellcode Loader   |     PE, .NET, Shellcode     |           PE           |                       @icyguider                       |
| 19 |    nimpackt    | open-source |    Shellcode Loader   |       .NET, Shellcode       |           PE           |             Cas van Cooten (@chvancooten)              |
| 20 |   nimsyscall   | sponsorware |    Shellcode Loader   |     PE, .NET, Shellcode     |           PE           |                    @S3cur3Th1sSh1t                     |
| 21 |    packer64    | open-source | PE EXE/DLL Compressor |              PE             |           PE           |                  John Adams, @jadams                   |
| 22 |     pe2shc     | open-source |  Shellcode Converter  |              PE             |       Shellcode        |                      @hasherezade                      |
| 23 |    pecloak     | open-source |  PE EXE/DLL Protector |              PE             |           PE           |     Mike Czumak, @SecuritySift, buherator / v-p-b      |
| 24 |    peresed     | open-source |  PE EXE/DLL Protector |              PE             |           PE           |                  Martin Vejnár, Avast                  |
| 25 |    peunion     |   freeware  | PE EXE/DLL Compressor |           PE, .NET          |           PE           |  Martin Fischer / bytecode77 <[email protected]>   |
| 26 |   scarecrow    | open-source |    Shellcode Loader   |          Shellcode          | DLL, JScript, CPL, XLL |                Matt Eidelberg (@Tyl0us)                |
| 27 |      sgn       | open-source |   Shellcode Encoder   |          Shellcode          |       Shellcode        |                       Ege Balci                        |
| 28 | smartassembly  |  commercial |    .NET Obfuscator    |             .NET            |          .NET          |                        Red-Gate                        |
| 29 |      srdi      | open-source |   Shellcode Encoder   |             DLL             |       Shellcode        |                Nick Landers, @monoxgas                 |
| 30 |    themida     |  commercial |  PE EXE/DLL Protector |              PE             |           PE           |                         Oreans                         |
| 31 |      upx       | open-source | PE EXE/DLL Compressor |              PE             |           PE           | Markus F.X.J. Oberhumer, László Molnár, John F. Reiser |
| 32 |   vmprotect    |  commercial |  PE EXE/DLL Protector |              PE             |           PE           |                        vmpsoft                         |
+----+----------------+-------------+-----------------------+-----------------------------+------------------------+--------------------------------------------------------+

위는 지원되는 패커(packer)들이지만, 그것들이 설정되어 사용할 준비가 되었다는 의미는 아닙니다.
사용을 준비하려면 먼저 필요한 바이너리를 contrib 디렉토리에 제공한 후, 그에 따라 YAML 파일을 구성해야 합니다.

RedWatermarker - 내장 아티팩트 워터마킹

아티팩트 워터마킹 및 IOC 수집

이 프로그램은 전문 레드 팀(Red Team)을 대상으로 하며, 일반적인 임플란트 개발 CI/CD 파이프라인에서 사용하기에 적합합니다.
레드 팀 구성원으로서 저는 항상 모든 임플란트와 일치하는 적절한 품질의 IOC 목록을 제공해야 하며, 기록 유지, 귀속 및 추적성을 위해 모든 임플란트에 워터마크를 표시하는 것이 필수적이라고 생각합니다.

이러한 요구 사항을 충족하기 위해 ProtectMyTooling은 기본적인 지원을 제공합니다.

아티팩트 워터마킹

ProtectMyTooling은 --watermark 옵션을 사용하여 난독화 단계 후 간단하게 워터마크를 적용할 수 있습니다.:``` py ProtectMyTooling [...] -w dos-stub=fooooobar -w checksum=0xaabbccdd -w section=.coco,ALLYOURBASEAREBELONG

root@kitploit:~
또한 `RedWatermarker.py` 스크립트에 포함된 독립 실행 방식이 있습니다.

입력으로 실행 파일 아티팩트를 받고, 워터마크를 삽입할 위치와 삽입할 값을 지정하는 몇 가지 매개변수를 허용합니다.

예제 실행은 PE 체크섬을 0xAABBCCDD로 설정하고, `foooobar`를 PE 파일의 DOS Stub(_This program cannot be run..._을 포함하는 바이트)에 삽입하고, `bazbazbaz`를 파일의 오버레이에 추가한 다음, `.coco`라는 새 PE 섹션을 만들어 파일 끝에 추가하고 해당 섹션을 사전 설정된 마커로 채웁니다.```
py RedWatermarker.py beacon-obf.exe -c 0xaabbccdd -t fooooobar -e bazbazbaz -s .coco,ALLYOURBASEAREBELONG

전체 watermarker 사용법:``` cmd> py RedWatermarker.py --help

root@kitploit:~
                  ;
                  ED.
                 ,E#Wi

j. f#iE###G. EW, .E#t E#fD#W; E##j i#W, E#t t##L E###D. L#D. E#t .E#K, E#jG#W; :K#Wfff; E#t j##f E#t t##f i##WLLLLtE#t :E#K: E#t :K#E: .E#L E#t t##L E#KDDDD###i f#E: E#t .D#W; ,; G: ,; E#f,t#Wi,,, ,WW; E#tiW#G. f#i j. j. E#, : f#i j. E#t ;#W: ; .D#;E#K##i .. GEEEEEEEL .E#t EW, .. : .. EW, E#t .GE .E#t EW, DWi ,K.DL ttE##D. ;W, ,;;L#K;;. i#W, E##j ,W, .Et ;W, E##j E#t j#K; i#W, E##j f. :K#L LWL E#t j##, t#E L#D. E###D. t##, ,W#t j##, E###D. E#GK#f L#D. E###D. EW: ;W##L .E#f L: G###, t#E :K#Wfff; E#jG#W; L###, j###t G###, E#jG#W; E##D. :K#Wfff; E#jG#W; E#t t#KE#L ,W#; :E####, t#E i##WLLLLt E#t t##f .E#j##, G#fE#t :E####, E#t t##f E##Wi i##WLLLLt E#t t##f E#t f#D.L#L t#K: ;W#DG##, t#E .E#L E#t :K#E: ;WW; ##,:K#i E#t ;W#DG##, E#t :K#E:E#jL#D: .E#L E#t :K#E: E#jG#f L#LL#G j###DW##, t#E f#E: E#KDDDD###i j#E. ##f#W, E#t j###DW##, E#KDDDD###E#t ,K#j f#E: E#KDDDD###i E###; L###j G##i,,G##, t#E ,WW; E#f,t#Wi,,,.D#L ###K: E#t G##i,,G##, E#f,t#Wi,,E#t jD ,WW; E#f,t#Wi,,, E#K: L#W; :K#K: L##, t#E .D#; E#t ;#W: :K#t ##D. E#t :K#K: L##, E#t ;#W: j#t .D#; E#t ;#W: EG LE. ;##D. L##, fE tt DWi ,KK:... #G .. ;##D. L##, DWi ,KK: ,; tt DWi ,KK: ; ;@ ,,, .,, : j ,,, .,,

root@kitploit:~
Watermark thy implants, track them in VirusTotal
Mariusz Banach / mgeeky '22, (@mariuszbit)
<[email protected]>

usage: RedWatermarker.py [options]

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

Required arguments: infile Input implant file

Optional arguments: -C, --check Do not actually inject watermark. Check input file if it contains specified watermarks. -v, --verbose Verbose mode. -d, --debug Debug mode. -o PATH, --outfile PATH Path where to save output file with watermark injected. If not given, will modify infile.

PE Executables Watermarking: -t STR, --dos-stub STR Insert watermark into PE DOS Stub (This program cannot be run...). -c NUM, --checksum NUM Preset PE checksum with this value (4 bytes). Must be number. Can start with 0x for hex value. -e STR, --overlay STR Append watermark to the file's Overlay (at the end of the file). -s NAME,STR, --section NAME,STR Append a new PE section named NAME and insert watermark there. Section name must be shorter than 8 characters. Section will be marked Read-Only, non-executable.

root@kitploit:~
현재는 PE 파일 워터마킹만 지원되지만, 향후 Office 문서 및 기타 형식도 추가될 예정입니다.


### IOCs 수집

IOCs는 `ProtectMyTooling` 실행 시 `-i` 옵션을 사용하여 수집할 수 있습니다.

다음 단계에서 수집됩니다:

- 입력 파일에서
- 각 난독화 라운드 후 중간 파일에서
- 최종 출력 파일에서

다음 필드를 CSV 파일 형태로 저장합니다:

- `timestamp`
- `filename`
- `author` - `username@hostname` 형식으로 구성됩니다
- `context` - 레코드가 입력, 출력 또는 중간 파일을 가리키는지 여부
- `comment` - 사용자가 `-I value` 옵션을 통해 조정한 값
- `md5`
- `sha1`
- `sha256`
- `imphash` - PE 임포트 해시(사용 가능한 경우)
- (TODO) `typeref_hash` - .NET TypeRef 해시(사용 가능한 경우)

결과물은 생성된 출력 아티팩트와 같은 위치에 저장되는 `outfile-ioc.csv`라는 CSV 파일입니다. 해당 파일은 APPEND 모드로 기록되므로 이후의 모든 IOC를 수신하게 됩니다.


# RedBackdoorer - 내장 PE 백도어

`ProtectMyTooling`은 PE 실행 파일을 백도어하는 몇 가지 방법을 제공하는 `RedBackdoorer.py` 스크립트를 활용합니다. 
지원은 `backdoor`라는 전용 패커로 제공됩니다. 사용 예:

**입력으로 Cobalt Strike 셸코드를 받아 SGN (Shikata Ga-Nai)으로 인코딩한 다음 SysInternals DbgView64.exe를 백도어하고 Amber EXE 리플렉티브 로더를 생성합니다**```
PS> py ProtectMyTooling.py sgn,backdoor,amber beacon64.bin dbgview64-infected.exe -B dbgview64.exe

    ::::::::::.:::::::..      ...  :::::::::::.,::::::  .,-::::::::::::::::
     `;;;```.;;;;;;``;;;;  .;;;;;;;;;;;;;;;;;;;,;;;'````;;;;;;;;
      `]]nnn]]' [[[,/[[[' ,[[     \[[,  [[     [[cccc [[[           [[
       $$$""    $$$$$$c   $$$,     $$$  $$     $$"""" $$$           $$
       888o     888b "88bo"888,_ _,88P  88,    888oo,_`88bo,__,o,   88,
    .  YMMMb :.-:.MM   ::-. "YMMMMMP"   MMM    """"YUMMM"YUMMMMMP"  MMM
    ;;,.    ;;;';;.   ;;;;'
    [[[[, ,[[[[, '[[,[[['
    $$$$$$$$"$$$   c$$"
    888 Y88" 888o,8P"`
    ::::::::::::mM...        ...     :::    :::::.    :::. .,-:::::/
    ;;;;;;;;.;;;;;;;.  .;;;;;;;.  ;;;    ;;`;;;;,  `;;,;;-'````'
         [[   ,[[     \[[,[[     \[[,[[[    [[[ [[[[[. '[[[[   [[[[[[/
         $$   $$$,     $$$$$,     $$$$$'    $$$ $$$ "Y$c$"$$c.    "$$
         88,  "888,_ _,88"888,_ _,88o88oo,._888 888    Y88`Y8bo,,,o88o
         MMM    "YMMMMMP"  "YMMMMMP"""""YUMMMMM MMM     YM  `'YMUP"YMM

    Red Team implants protection swiss knife.

    Multi-Packer wrapping around multitude of packers, protectors, shellcode loaders, encoders.
    Mariusz Banach / mgeeky '20-'22, <[email protected]>
    v0.16

[.] Processing x64 file :  beacon64.bin
[>] Generating output of sgn(<file>)...
[>] Generating output of backdoor(sgn(<file>))...
[>] Generating output of Amber(backdoor(sgn(<file>)))...

[+] SUCCEEDED. Original file size: 265959 bytes, new file size Amber(backdoor(sgn(<file>))): 1372672, ratio: 516.12%

RedBackdoorer 전체 사용법:``` cmd> py RedBackdoorer.py --help

root@kitploit:~
 ██▀███ ▓█████▓█████▄
▓██ ▒ ██▓█   ▀▒██▀ ██▌
▓██ ░▄█ ▒███  ░██   █▌
▒██▀▀█▄ ▒▓█  ▄░▓█▄   ▌
░██▓ ▒██░▒████░▒████▓
░ ▒▓ ░▒▓░░ ▒░ ░▒▒▓  ▒
  ░▒ ░ ▒░░ ░  ░░ ▒  ▒
  ░░   ░   ░   ░ ░  ░
 ▄▄▄▄   ▄▄▄░  ░  ▄████▄  ██ ▄█▓█████▄ ▒█████  ▒█████  ██▀███ ▓█████ ██▀███
▓█████▄▒████▄  ░▒██▀ ▀█  ██▄█▒▒██▀ ██▒██▒  ██▒██▒  ██▓██ ▒ ██▓█   ▀▓██ ▒ ██▒
▒██▒ ▄█▒██  ▀█▄ ▒▓█    ▄▓███▄░░██   █▒██░  ██▒██░  ██▓██ ░▄█ ▒███  ▓██ ░▄█ ▒
▒██░█▀ ░██▄▄▄▄██▒▓▓▄ ▄██▓██ █▄░▓█▄   ▒██   ██▒██   ██▒██▀▀█▄ ▒▓█  ▄▒██▀▀█▄
░▓█  ▀█▓▓█   ▓██▒ ▓███▀ ▒██▒ █░▒████▓░ ████▓▒░ ████▓▒░██▓ ▒██░▒████░██▓ ▒██▒
░▒▓███▀▒▒▒   ▓▒█░ ░▒ ▒  ▒ ▒▒ ▓▒▒▒▓  ▒░ ▒░▒░▒░░ ▒░▒░▒░░ ▒▓ ░▒▓░░ ▒░ ░ ▒▓ ░▒▓░
▒░▒   ░  ▒   ▒▒ ░ ░  ▒  ░ ░▒ ▒░░ ▒  ▒  ░ ▒ ▒░  ░ ▒ ▒░  ░▒ ░ ▒░░ ░  ░ ░▒ ░ ▒░
 ░    ░  ░   ▒  ░       ░ ░░ ░ ░ ░  ░░ ░ ░ ▒ ░ ░ ░ ▒   ░░   ░   ░    ░░   ░
 ░           ░  ░ ░     ░  ░     ░       ░ ░     ░ ░    ░       ░  ░  ░
      ░         ░              ░


Your finest PE backdooring companion.
Mariusz Banach / mgeeky '22, (@mariuszbit)
<[email protected]>

usage: RedBackdoorer.py [options]

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

Required arguments: mode PE Injection mode, see help epilog for more details. shellcode Input shellcode file infile PE file to backdoor

Optional arguments: -o PATH, --outfile PATH Path where to save output file with watermark injected. If not given, will modify infile. -v, --verbose Verbose mode.

Backdooring options: -n NAME, --section-name NAME If shellcode is to be injected into a new PE section, define that section name. Section name must not be longer than 7 characters. Default: .qcsw -i IOC, --ioc IOC Append IOC watermark to injected shellcode to facilitate implant tracking.

Authenticode signature options: -r, --remove-signature Remove PE Authenticode digital signature since its going to be invalidated anyway.


PE Backdooring consists of two comma-separated options. First one denotes where to store shellcode, second how to run it:

root@kitploit:~
save,run
  |   |
  |   +---------- 1 - change AddressOfEntryPoint
  |               2 - hijack branching instruction at Original Entry Point (jmp, call, ...)
  |               3 - setup TLS callback
  |
  +-------------- 1 - store shellcode in the middle of a code section
                  2 - append shellcode to the PE file in a new PE section

Example:

root@kitploit:~
py RedBackdoorer.py 1,2 beacon.bin putty.exe putty-infected.exe
root@kitploit:~
# Cobalt Strike 통합

`ProtectMyTooling.py`를 PE/.NET 패커/프로텍터 주변의 래퍼로 사용하여 입력 실행 파일을 보호된 압축된 출력 형태로 쉽게 변환한 후 CobaltStrike 내에서 업로드하거나 사용할 수 있도록 하는 스크립트도 있습니다.

아이디어는 업로드된 모든 바이너리나 execute-assembly에서 사용되는 .NET 어셈블리를 자동으로 보호하는 프로세스를 두어, 매번 사용 전에 수동으로 보호하거나 난독화하는 것을 잊어버리지 않도록 하는 것입니다. 실행 파일을 변환하는 자동화된 접근 방식의 추가 이점은, 사용될 때마다 동일한 실행 파일이 보호되어 대상 시스템에서 고유한 샘플이 생성된다는 점입니다. 이는 EDR/AV의 엔터프라이즈 전체 IOC 검색을 효과적으로 속여, 다른 시스템에서 동일한 아티팩트를 찾는 것을 방해할 수 있습니다.

또한, `protected-execute-assembly` 명령은 이름만 주어진 어셈블리를 사전 구성된 어셈블리 디렉터리(`dotnet_assemblies_directory` 설정에 설정)에서 검색하는 기능이 있습니다.

사용 방법:

1. Cobalt Strike에서 `CobaltStrike/ProtectMyTooling.cna`를 로드합니다.
2. 메뉴로 이동하여 모든 옵션을 설정합니다.

![options](https://assets.kitploit.com/production/public/readmes/5634/45a8a4f1c128ccf0c0712410e5972c0197b5089b228eaaed38b5a23fa46ca5fd.png)

3. 그런 다음 Beacon 콘솔에서 다음 명령을 사용할 수 있습니다:

  * `protected-execute-assembly` - 로컬에서 보호되고 압축된 .NET 프로그램을 대상에서 메모리 내 실행합니다.
  * `protected-upload` - 입력 파일을 가져와서 PE 실행 파일이면 보호한 후 해당 파일을 지정된 원격 위치에 업로드합니다.
  * `bofnet_load_protected` - 입력 .NET 어셈블리 파일을 가져와 구성된 .NET 패커 체인을 통과시키고, 생성된 출력을 `bofnet_load`로 로드합니다. [BOFNET](https://github.com/CCob/BOF.NET/)이 별도로 로드되어 있어야 이 기능이 작동합니다.

기본적으로 이 명령들은 입력 파일을 열어 먼저 `CobaltStrike/cobaltProtectMyTooling.py` 스크립트에 전달하고, 이 스크립트가 다시 `ProtectMyTooling.py`를 호출합니다. 바이너리가 난독화되는 즉시 실행/업로드를 위해 Beacon에 전달됩니다.

## Cobalt Strike 관련 옵션

Cobalt Strike 통합에 필요한 옵션 목록입니다:

* `python3_interpreter_path` - Python3 인터프리터 실행 파일의 경로를 지정합니다.
* `protect_my_tooling_dir` - ProtectMyTooling 메인 디렉터리의 경로를 지정합니다.
* `protect_my_tooling_config` - 다양한 패커 옵션이 포함된 ProtectMyTooling 구성 파일의 경로를 지정합니다.
* `dotnet_assemblies_directory` - execute-assembly에서 찾을 수 없는 경우 .NET 어셈블리를 검색할 로컬 경로를 지정합니다.
* `cache_protected_executables` - 이미 보호된 실행 파일을 캐시하고 필요할 때 재사용하려면 활성화합니다.
* `protected_executables_cache_dir` - 캐시된 보호 실행 파일을 저장할 디렉터리의 경로를 지정합니다.
* `default_exe_x86_packers_chain` - 네이티브 x86 EXE 실행 파일용 프로텍터/패커 체인
* `default_exe_x64_packers_chain` - 네이티브 x64 EXE 실행 파일용 프로텍터/패커 체인
* `default_dll_x86_packers_chain` - 네이티브 x86 DLL 실행 파일용 프로텍터/패커 체인
* `default_dll_x64_packers_chain` - 네이티브 x64 DLL 실행 파일용 프로텍터/패커 체인
* `default_dotnet_packers_chain` - .NET 실행 파일용 프로텍터/패커 체인

---

## 알려진 문제

- `ScareCrow`를 Windows에서 실행하는 것은 매우 까다롭습니다. 저에게 효과가 있었던 방법은 다음과 같습니다:
  1. Windows 10에서 실행하고 WSL을 설치합니다(Windows에서 `bash.exe` 명령 사용 가능).
  2. WSL에 `golang`을 버전 `1.16+`로 설치합니다(`1.18`에서 테스트 완료).
  3. `PackerScareCrow.Run_ScareCrow_On_Windows_As_WSL = True`가 설정되어 있는지 확인합니다.

---

## 크레딧 및 사용 기술

- 모든 패커, 난독화기, 변환기, 로더에 대한 크레딧은 해당 저자에게 있습니다. 이 도구는 단순히 그들의 기술을 감싼 래퍼일 뿐입니다!
  - 바라건대 그들 중 누구도 이러한 래퍼를 추가하는 것에 대해 불만을 가지지 않기를 바랍니다. 우려 사항이 있으면 연락 주시기 바랍니다.
  
- _ProtectMyTooling_은 일부 Nim 기반 패커를 위해 **moloch--** 의 [`denim.exe`](https://github.com/moloch--/denim)도 사용합니다.

---

## TODO

- 사용자 정의 PE 인젝터를 작성하여 "프로텍터"로 제공
- Office 문서, WSH 스크립트(VBS, JS, HTA) 및 컨테이너와 같은 다른 파일 형식에 워터마킹 추가
- 가까운 미래에 몇 가지 추가 패커/로더/생성기 지원:
  - [`GadgetToJScript`](https://github.com/med0x2e/GadgetToJScript)
  - [`Limelighter`](https://github.com/Tylous/Limelighter)
  - [`PEZor`](https://github.com/phra/PEzor)
  - [`msfevenom`](https://github.com/rapid7/metasploit-framework) - 입력 셸코드용과 실행 파일용의 두 가지 변형

---

## 면책 조항

이 도구 및 제가 저자인 다른 모든 프로젝트를 불법 목적, 무단 해킹, 사이버 스파이 활동에 사용하는 것을 엄격히 금지합니다.
이 도구 및 제가 배포하는 다른 도구는 전문 침투 테스터, 보안 컨설턴트, 보안 엔지니어 및 기타 보안 담당자가 고객 네트워크의 사이버 방어 역량을 향상시키는 데 도움을 줍니다.
어떠한 경우에도 저자 또는 저작권 소유자는 이 소프트웨어의 불법 사용으로 인한 청구, 손해 또는 기타 책임에 대해 책임을 지지 않습니다.

우려 사항, 저작권 문제, 이 소프트웨어로 인한 위협 또는 기타 문의 사항이 있는 경우 책임감 있게 해결하기 위해 협력할 의향이 있습니다.

이 도구는 주로 오픈 소스 또는 상용 패커/프로텍터/난독화 소프트웨어를 사용하기 위한 편리한 인터페이스를 제공하므로, 사이버 보안 환경에 즉각적인 새로운 위협을 도입하지 않습니다.

---

### ☕ 지원하기 ☕

이 프로젝트와 다른 프로젝트들은 잠 못 이루는 밤과 **많은 노력**의 결과물입니다. 제가 하는 일을 좋아하고 항상 커뮤니티에 환원한다는 점을 감사히 여기신다면,
[커피 한 잔 사주기](https://github.com/sponsors/mgeeky) _(또는 맥주 한 잔이라도)_를 고려해 주세요. 감사합니다! 💪 

---

## 저자```   
   Mariusz Banach / mgeeky, '20-'22
   <mb [at] binary-offensive.com>
   (https://github.com/mgeeky) 
도구 다운로드