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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CnaEmulator — 팀서버 없이 Cobalt Strike Aggressor Scripts(.cna)의 구문을 검증하고, Beacon API를 모킹하며, COFFLoader를 통해 BOF를 실행하는 독립형 에뮬레이션 및 테스트 하네스입니다. | Kitploit
도구/GitHubGitHub/iterat0r/cnaemulator
Dynamic Analysis (Sandboxing)ExploitationScripting & AutomationPost-ExploitationPenetration TestingCommand and ControlUtilities & FrameworksLearning & EducationRed TeamingPayload Development
GitHub
213137일 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
iterat0r/cnaemulator

CnaEmulator

팀서버 없이 Cobalt Strike Aggressor Scripts(.cna)의 구문을 검증하고, Beacon API를 모킹하며, COFFLoader를 통해 BOF를 실행하는 독립형 에뮬레이션 및 테스트 하네스입니다.

저장소 보기

CnaEmulator - Cobalt Strike Aggressor Script 에뮬레이터 및 모의 하네스

CnaEmulator는 Cobalt Strike Aggressor Script(.cna)를 위한 독립 실행형 범용 개발, 에뮬레이션 및 테스트 하네스입니다. 보안 연구원, 도구 개발자, BOF 작성자가 팀서버나 GUI 클라이언트를 실행하지 않고도 스크립트 구문을 검증하고, Beacon 콘솔 별칭 명령을 시뮬레이션하며, COFFLoader64.exe를 통해 인메모리 BOF(Beacon Object File)를 직접 실행할 수 있게 해줍니다.


[!WARNING] 면책 조항: 이 코드는 Antigravity로 완전히 생성되었으며 아직 검토되지 않았습니다.

기능

  1. 구문 검증 (check):
    • 기반이 되는 Sleep 2.1 엔진을 사용하여 .cna 스크립트를 컴파일합니다.
    • 폭주 문자열, 이스케이프되지 않은 문자, 파서 구문 오류, 누락된 구분자를 정확한 파일 줄 번호와 함께 정확하게 감지합니다.
  2. Aggressor 함수 에뮬레이션:
    • HelpSystems/Fortra Aggressor Script 문서의 공식 Cobalt Strike Beacon 함수를 에뮬레이션합니다.
    • 프로세스 인젝션, 토큰 조작, 파일시스템, 네트워크, GUI 콜백 API에 대해 현실적인 모의 값 또는 양의 비오류 반환 값을 제공합니다.
  3. 실제 BOF 바이너리 패킹 (bof_pack):
    • Cobalt Strike의 datap 바이너리 형식과 일치하는 네이티브 리틀 엔디언 직렬화를 구현합니다:
      • 'i': 4바이트 정수
      • 's': 2바이트 short
      • 'z': 길이 접두사가 붙은 null 종료 문자열(strlen + 1 접두사)
      • 'Z': 길이 접두사가 붙은 와이드 UTF-16LE 문자열
      • 'b': 길이 접두사가 붙은 바이너리 버퍼
  4. COFFLoader 실행 브리지 (beacon_inline_execute):
    • beacon_inline_execute($bid, $bof_data, "go", $packed_args)를 자동으로 가로챕니다.
    • 패킹된 인수를 16진수 형식으로 변환합니다.
    • COFFLoader64.exe go <bof_path> <hex_args>를 자식 서브프로세스로 실행합니다.
    • 라이브 BOF 콘솔 출력을 실시간으로 stdout에 직접 스트리밍합니다.
  5. 범용 컴패니언 테스트 스위트 및 자동 검증 (test):
    • 컴패니언 <script>.cna.tests 또는 <script>.tests 시나리오 스위트를 자동으로 검색하고 실행합니다.
    • 대상 지정 CLI 시나리오 테스트 및 자동 별칭 가드 절 검증을 지원합니다.
  6. 대화형 Beacon 콘솔 (console):
    • 등록된 별칭, 인수, 도움말 문서, 라이브 실행을 지원하는 대화형 명령 프롬프트(beacon> )입니다.

디렉터리 레이아웃

root@kitploit:~
.
├── .gitignore                # 컴파일된 바이너리 및 바이트코드에 대한 Git 무시 규칙
├── COFFLoader64.exe          # 64비트 독립 실행형 인메모리 COFF 재배치 및 로더
├── cna_emulator.bat          # 편리한 CLI 런처 스크립트
├── README.md                 # 포괄적인 문서 및 사용 가이드
├── TESTING.md                # 컴포넌트 검증 보고서 및 품질 게이트
├── TEST_SPEC.md              # 48개 시나리오 7개 카테고리 테스트 명세
└── CnaEmulator/              # Java CNA 에뮬레이터 컴포넌트
    ├── .gitignore            # CnaEmulator 하위 폴더에 대한 Git 무시 규칙
    ├── CnaEmulator.java      # 에뮬레이터 소스 코드 및 Sleep 엔진 브리지
    ├── CnaEmulator.class     # 컴파일된 바이트코드
    ├── CnaEmulator.jar       # 패키징된 바이트코드 JAR
    ├── build.bat             # CnaEmulator를 컴파일하고 패키징하는 빌드 스크립트
    ├── test.bat              # 독립 실행형 테스트 러너 스크립트 (48개 시나리오)
    └── tests/                # 테스트 스위트 및 픽스처
        ├── TestCnaEmulator.java  # 48개 시나리오 테스트 하네스
        └── fixtures/             # 범용 테스트 픽스처
            ├── sample_bof.cna        # 독립 실행형 샘플 Aggressor Script
            ├── sample_bof.cna.tests  # 컴패니언 테스트 스위트
            ├── multi_alias.cna       # 다중 별칭 샘플 스크립트
            └── multi_alias.cna.tests # 다중 별칭 컴패니언 테스트 스위트

요구 사항 및 사전 준비

빠른 환경 설정 (cmd.exe):

root@kitploit:~
set "JAVA_HOME=C:\path\to\jdk-17"
set "PATH=%JAVA_HOME%\bin;%PATH%"
set "SLEEP_JAR=C:\path\to\sleep.jar"

사용 가이드

1. 소스에서 컴파일

컴파일된 클래스나 JAR을 실행하기 전에 CnaEmulator.java를 컴파일하십시오:

빌드 스크립트 사용:

root@kitploit:~
CnaEmulator\build.bat

또는 수동 컴파일 및 패키징:

root@kitploit:~
:: 소스를 바이트코드로 컴파일
javac -cp "%SLEEP_JAR%" -d CnaEmulator CnaEmulator\CnaEmulator.java

:: 실행 가능한 바이트코드 JAR로 패키징
cd CnaEmulator
jar cfe CnaEmulator.jar CnaEmulator *.class
cd ..

2. 실행 방법

프로젝트 루트 디렉터리에서 다음 방법 중 하나를 사용하여 CnaEmulator를 호출할 수 있습니다:

방법 A: 배치 스크립트 런처 (권장)

런처 스크립트는 JDK 검색, 클래스패스 설정, 경로 확인을 자동으로 처리합니다:

root@kitploit:~
cna_emulator.bat <action> [arguments...]

방법 B: 컴파일된 실행 가능 JAR

root@kitploit:~
java -cp "CnaEmulator\CnaEmulator.jar;%SLEEP_JAR%" CnaEmulator <action> [arguments...]

방법 C: 직접 클래스 바이트코드

root@kitploit:~
java -cp "CnaEmulator;%SLEEP_JAR%" CnaEmulator <action> [arguments...]

3. 핵심 액션 및 사용 예제

A. 스크립트 구문 검증 (check)

코드를 실행하지 않고 Sleep 2.1을 통해 Aggressor Script 구문을 검증하고 AST 트리를 컴파일합니다:

root@kitploit:~
cna_emulator.bat check <path\to\script.cna>

번들 픽스처를 사용한 예제:

root@kitploit:~
cna_emulator.bat check CnaEmulator\tests\fixtures\sample_bof.cna

샘플 출력:

root@kitploit:~
[*] Checking syntax of: CnaEmulator\tests\fixtures\sample_bof.cna
[+] sample_bof.cna syntax OK

B. 라이브 BOF 디스패치로 명령 실행 (run)

선언된 Aggressor 별칭을 실행하고, 인수를 바이너리 형식(bof_pack)으로 패킹하고, 오브젝트 파일(script_resource)을 확인한 후 COFFLoader64.exe를 호출하여 호출자 메모리에서 BOF를 실행합니다:

root@kitploit:~
cna_emulator.bat run <path\to\script.cna> <alias_name> [arguments...]

번들 픽스처를 사용한 예제:

root@kitploit:~
cna_emulator.bat run CnaEmulator\tests\fixtures\sample_bof.cna sample_bof run test_target

샘플 출력:

root@kitploit:~
[*] Invoking: sample_bof 1 run test_target
[*] Tasked beacon: Executing sample_bof with action: run

[+] [COFFLoader Bridge] Executing: COFFLoader64.exe go sample_bof.o
    | Got contents of COFF file
    | Running/Parsing the COFF file
    | Ran/parsed the coff
    | Outdata Below:
    | ...
[+] [COFFLoader Bridge] Completed with exit code: 0

C. 자동화된 테스트 배터리 및 회귀 테스트 (test)

CnaEmulator test는 자동화된 테스트 실행을 제공합니다:

root@kitploit:~
cna_emulator.bat test <path\to\script.cna> [alias] [arguments...]

실행 모드:

  1. 대상 지정 시나리오 실행: 명령줄에 <alias>와 [arguments...]가 지정된 경우 해당 특정 시나리오만 실행됩니다.
  2. 컴패니언 테스트 파일 검색: 인수가 제공되지 않으면 CnaEmulator는 스크립트 옆에 있는 컴패니언 테스트 파일을 확인합니다:
    • <script_dir>\<script_name>.cna.tests
    • <script_dir>\<script_name>.tests 발견되면 컴패니언 파일의 모든 시나리오 줄이 순차적으로 실행됩니다.
  3. 동적 별칭 검사 및 가드 테스트: 컴패니언 테스트 파일이 없으면 CnaEmulator는 등록된 모든 명령 별칭을 검사하고, 잘못된 인수 개수가 처리되지 않은 예외를 발생시키지 않고 사용법 오류를 출력하도록 보장하는 가드 절 테스트를 실행합니다.

예제:

root@kitploit:~
:: 번들 샘플 스크립트에 대한 자동화된 테스트 실행 (sample_bof.cna.tests 실행)
cna_emulator.bat test CnaEmulator\tests\fixtures\sample_bof.cna

:: 번들 다중 별칭 스크립트에 대한 자동화된 테스트 실행 (multi_alias.cna.tests 실행)
cna_emulator.bat test CnaEmulator\tests\fixtures\multi_alias.cna

:: CLI를 통해 대상 지정 시나리오 직접 실행
cna_emulator.bat test CnaEmulator\tests\fixtures\sample_bof.cna sample_bof query

컴패니언 테스트 파일 작성 (<script>.cna.tests): .cna 스크립트 옆에 일반 텍스트 파일을 만드십시오. 비어 있지 않은 각 비주석 줄은 별칭과 해당 매개변수를 지정합니다:

root@kitploit:~
# Sample BOF Companion Test Suite
# Format: <alias> [arguments...]
sample_bof run test_target
sample_bof query

D. 대화형 시뮬레이션 Beacon 콘솔 (console)

등록된 별칭, 명령 기록, 시뮬레이션 실행을 지원하는 대화형 beacon> 프롬프트를 시작합니다:

root@kitploit:~
cna_emulator.bat console <path\to\script.cna>

대화형 세션 예제:

root@kitploit:~
====================================================================
  CnaEmulator Interactive Beacon Console
  Loaded Script: sample_bof.cna
====================================================================
Type 'help' to see registered commands, or 'exit' to quit.

beacon> help
Registered Beacon Commands:
  - sample_bof : Sample BOF execution command

beacon> sample_bof run local_target
[*] Tasked beacon: Executing sample_bof with action: run
[+] [COFFLoader Bridge] Executing: COFFLoader64.exe go sample_bof.o
...
beacon> exit

4. 외부 BOF 프로젝트 테스트

CnaEmulator는 완전히 범용적이며 파일시스템의 모든 디렉터리나 외부 저장소에 있는 Aggressor Script 및 BOF 바이너리를 테스트할 수 있습니다:

root@kitploit:~
:: 외부 스크립트 구문 검증
cna_emulator.bat check C:\Projects\CustomBof\my_bof.cna

:: 라이브 인수로 외부 BOF 별칭 명령 실행
cna_emulator.bat run C:\Projects\CustomBof\my_bof.cna my_command target_argument

:: 외부 스크립트에 대한 컴패니언 테스트 스위트 실행
cna_emulator.bat test C:\Projects\CustomBof\my_bof.cna

:: 외부 스크립트로 대화형 콘솔 열기
cna_emulator.bat console C:\Projects\CustomBof\my_bof.cna

5. CnaEmulator 자체 테스트 스위트 실행

CnaEmulator에 대한 완전한 48개 시나리오 명세 준수 테스트 스위트를 실행하려면:

root@kitploit:~
CnaEmulator\test.bat

예상 결과:

root@kitploit:~
====================================================================
  Execution Summary
====================================================================
  Total Scenarios : 48
  Passed          : 48
  Failed          : 0
  Assertions      : 172
  Elapsed Time    : ~2800 ms
====================================================================
[+] ALL 48 TEST SCENARIOS PASSED CLEANLY (100% SPECIFICATION CONFORMANCE)

에뮬레이션된 함수 카탈로그

실제 구현 (기능 엔진 및 서브프로세스 브리지)

[!NOTE] 더미 / 스텁 구현: 프로세스 실행/인젝션(bshell, bpowershell, bexecute, bspawn, binject), 토큰 조작(bsteal_token, brev2self, bgetuid), 파일시스템 탐색(bpwd, bls, bupload, bdownload), 피버팅(socks, rportfwd), UI 프롬프트(prompt_text, ), GUI 훅(, , , )을 포함한 다른 모든 Cobalt Strike API는 양의 비오류 값(, , , )을 반환하거나 no-op 블록으로 구현되어 스크립트가 실패 없이 오프라인으로 실행됩니다.

도구 다운로드
요구 사항설명 및 설정
Java JDK (17+)java 및 javac 바이너리. JAVA_HOME을 JDK 경로로 설정하고 %JAVA_HOME%\bin이 PATH에 있는지 확인하십시오.
Sleep 2.1 (sleep.jar)Aggressor Script용 스크립팅 엔진. Sleep 2.1에서 다운로드하거나 Cobalt Strike에서 복사하십시오. SLEEP_JAR를 설정하거나(예: set "SLEEP_JAR=C:\path\to\sleep.jar"), 루트 폴더 또는 CnaEmulator\에 sleep.jar를 배치하십시오.
인메모리 로더 (COFFLoader64.exe)독립 실행형 로더 바이너리(예: trustedsec/COFFLoader에서 컴파일). 루트 디렉터리에 배치하거나 COFFLOADER_PATH로 재정의하십시오.
함수 / 키워드설명
bof_pack4바이트 버퍼 길이 접두사와 함께 리틀 엔디언 바이너리 인수(i, s, z, Z, b)를 패킹합니다.
beacon_inline_executeCOFFLoader64.exe go <bof.o> <hex_args> 서브프로세스를 생성하고 라이브 stdout을 스트리밍합니다.
script_resource스크립트 디렉터리, bin/, ../bin/, 상대 경로 전반에 걸쳐 상대 리소스 경로를 확인합니다.
openf, readb, closef로컬 .o BOF 파일을 바이트 버퍼로 읽기 위한 네이티브 파일시스템 I/O입니다.
btask, berror, blog, blog2태스킹, 상태, 오류 메시지를 stdout/stderr로 포맷하고 출력합니다.
beacon_command_register별칭, 요약, 도움말 세부 정보를 라이브 명령 카탈로그에 등록합니다.
beacon_commands, beacon_command_detail대화형/콘솔 사용을 위해 등록된 명령 목록과 도움말 텍스트를 조회합니다.
barch"x64"를 반환합니다.
bdata, beacon_info모의 Beacon 메타데이터 해시(id: 1, pid: 13020, user: SYSTEM, arch: x64)를 반환합니다.
beacons, beacon_ids활성 시뮬레이션 beacon 배열(["1"])을 반환합니다.
alias, command명령 블록을 대화형 또는 CLI 디스패치를 위한 실행 가능한 클로저로 바인딩합니다.
prompt_confirm
popup
menu
item
on
1
"NT AUTHORITY\SYSTEM"
"C:\Windows\System32"
true