
Ambiente di emulazione e testing standalone per Cobalt Strike Aggressor Scripts (.cna) che convalida la sintassi, simula le API di Beacon ed esegue BOF tramite COFFLoader senza un teamserver.
CnaEmulator è un harness di sviluppo, emulazione e testing standalone e general-purpose per Cobalt Strike Aggressor Scripts (.cna). Consente a ricercatori di sicurezza, sviluppatori di tool e autori di BOF di validare la sintassi degli script, simulare comandi alias della console Beacon ed eseguire Beacon Object Files (BOF) in-memory direttamente tramite COFFLoader64.exe senza avviare un teamserver o un client GUI.
[!WARNING] Disclaimer: Questo codice è stato interamente generato con Antigravity e non è ancora stato revisionato.
check):
.cna utilizzando il motore sottostante Sleep 2.1.bof_pack):
datap di Cobalt Strike:
'i': intero a 4 byte's': short a 2 byte'z': stringa null-terminated con prefisso di lunghezza (prefisso strlen + 1)'Z': stringa wide UTF-16LE con prefisso di lunghezza'b': buffer binario con prefisso di lunghezzabeacon_inline_execute):
beacon_inline_execute($bid, $bof_data, "go", $packed_args).COFFLoader64.exe go <bof_path> <hex_args> come sottoprocesso figlio.test):
<script>.cna.tests o <script>.tests.console):
beacon> ) che supporta alias registrati, argomenti, documentazione di help ed esecuzione live..
├── .gitignore # Git ignore rules for compiled binaries & bytecode
├── COFFLoader64.exe # 64-bit Standalone in-memory COFF relocator and loader
├── cna_emulator.bat # Convenient CLI launcher script
├── README.md # Comprehensive documentation and usage guide
├── TESTING.md # Component verification report & quality gates
├── TEST_SPEC.md # 48-scenario 7-category test specification
└── CnaEmulator/ # Java CNA Emulator component
├── .gitignore # Git ignore rules for CnaEmulator subfolder
├── CnaEmulator.java # Emulator source code and Sleep engine bridge
├── CnaEmulator.class # Compiled bytecode
├── CnaEmulator.jar # Packaged bytecode JAR
├── build.bat # Build script to compile and package CnaEmulator
├── test.bat # Standalone test runner script (48 scenarios)
└── tests/ # Test suite and fixtures
├── TestCnaEmulator.java # 48-scenario test harness
└── fixtures/ # Universal test fixtures
├── sample_bof.cna # Standalone sample Aggressor Script
├── sample_bof.cna.tests # Companion test suite
├── multi_alias.cna # Multi-alias sample script
└── multi_alias.cna.tests # Multi-alias companion test suite
| Requisito | Descrizione e Configurazione |
|---|---|
| Java JDK (17+) | Binari java e javac. Imposta JAVA_HOME al percorso del tuo JDK e assicurati che %JAVA_HOME%\bin sia nel PATH. |
Sleep 2.1 (sleep.jar) | Motore di scripting per Aggressor Scripts. Scarica da Sleep 2.1 o copia da Cobalt Strike. Imposta SLEEP_JAR (es. set "SLEEP_JAR=C:\path\to\sleep.jar"), oppure posiziona sleep.jar nella cartella root o in CnaEmulator\. |
Loader In-Memory (COFFLoader64.exe) | Binario loader standalone (es. compilato da trustedsec/COFFLoader). Posizionato nella directory root o sovrascritto tramite COFFLOADER_PATH. |
Setup Rapido dell'Ambiente (cmd.exe):
set "JAVA_HOME=C:\path\to\jdk-17"
set "PATH=%JAVA_HOME%\bin;%PATH%"
set "SLEEP_JAR=C:\path\to\sleep.jar"
Prima di eseguire le classi compilate o il JAR, compila CnaEmulator.java:
Usando lo Script di Build:
CnaEmulator\build.bat
Oppure Compilazione e Packaging Manuale:
:: Compile source to bytecode
javac -cp "%SLEEP_JAR%" -d CnaEmulator CnaEmulator\CnaEmulator.java
:: Package into executable bytecode JAR
cd CnaEmulator
jar cfe CnaEmulator.jar CnaEmulator *.class
cd ..
Puoi invocare CnaEmulator utilizzando uno dei seguenti metodi dalla directory root del progetto:
Lo script launcher gestisce automaticamente il rilevamento del JDK, il setup del classpath e la risoluzione dei percorsi:
cna_emulator.bat <action> [arguments...]
java -cp "CnaEmulator\CnaEmulator.jar;%SLEEP_JAR%" CnaEmulator <action> [arguments...]
java -cp "CnaEmulator;%SLEEP_JAR%" CnaEmulator <action> [arguments...]
check)Valida la sintassi dell'Aggressor Script e compila gli AST tree tramite Sleep 2.1 senza eseguire il codice:
cna_emulator.bat check <path\to\script.cna>
Esempio con fixture inclusa:
cna_emulator.bat check CnaEmulator\tests\fixtures\sample_bof.cna
Output di Esempio:
[*] Checking syntax of: CnaEmulator\tests\fixtures\sample_bof.cna
[+] sample_bof.cna syntax OK
run)Esegue un alias Aggressor dichiarato, impacchetta gli argomenti in formato binario (bof_pack), risolve l'object file (script_resource) e invoca COFFLoader64.exe per eseguire il BOF nella memoria del chiamante:
cna_emulator.bat run <path\to\script.cna> <alias_name> [arguments...]
Esempio con fixture inclusa:
cna_emulator.bat run CnaEmulator\tests\fixtures\sample_bof.cna sample_bof run test_target
Output di Esempio:
[*] 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
test)CnaEmulator test fornisce l'esecuzione automatizzata dei test:
cna_emulator.bat test <path\to\script.cna> [alias] [arguments...]