Harnais autonome d'émulation et de test pour les scripts Aggressor de Cobalt Strike (.cna) qui valide la syntaxe, simule les API Beacon et exécute des BOFs via COFFLoader sans teamserver.
CnaEmulator est un harnais autonome, polyvalent de développement, d'émulation et de test pour les scripts Aggressor Cobalt Strike (.cna). Il permet aux chercheurs en sécurité, aux développeurs d'outils et aux auteurs de BOF de valider la syntaxe des scripts, de simuler les commandes alias de la console Beacon et d'exécuter des Beacon Object Files (BOF) en mémoire directement via COFFLoader64.exe sans lancer de teamserver ni de client GUI.
[!WARNING] Avertissement : Ce code a été entièrement généré avec Antigravity et n'a pas encore été révisé.
check) :
.cna à l'aide du moteur sous-jacent Sleep 2.1.bof_pack) :
datap de Cobalt Strike :
'i' : entier de 4 octets's' : short de 2 octets'z' : chaîne terminée par un null préfixée par la longueur (préfixe strlen + 1)'Z' : chaîne UTF-16LE large préfixée par la longueur'b' : tampon binaire préfixé par la longueurbeacon_inline_execute) :
beacon_inline_execute($bid, $bof_data, "go", $packed_args).COFFLoader64.exe go <bof_path> <hex_args> en tant que sous-processus enfant.test) :
<script>.cna.tests ou <script>.tests.console) :
beacon> ) prenant en charge les alias enregistrés, les arguments, la documentation d'aide et l'exécution en direct..
├── .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
| Exigence | Description et configuration |
|---|---|
| Java JDK (17+) | Binaires java et javac. Définissez JAVA_HOME sur le chemin de votre JDK et assurez-vous que %JAVA_HOME%\bin est dans le PATH. |
Sleep 2.1 (sleep.jar) | Moteur de script pour les scripts Aggressor. Téléchargez depuis Sleep 2.1 ou copiez depuis Cobalt Strike. Définissez SLEEP_JAR (par ex. set "SLEEP_JAR=C:\path\to\sleep.jar"), ou placez sleep.jar dans le dossier racine ou dans CnaEmulator\. |
Chargeur en mémoire (COFFLoader64.exe) | Binaire de chargement autonome (par ex., compilé depuis trustedsec/COFFLoader). Placé dans le répertoire racine ou remplacé via COFFLOADER_PATH. |
Configuration rapide de l'environnement (cmd.exe) :
set "JAVA_HOME=C:\path\to\jdk-17"
set "PATH=%JAVA_HOME%\bin;%PATH%"
set "SLEEP_JAR=C:\path\to\sleep.jar"
Avant d'exécuter les classes compilées ou le JAR, compilez CnaEmulator.java :
Utilisation du script de build :
CnaEmulator\build.bat
Ou compilation et empaquetage manuels :
:: 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 ..
Vous pouvez invoquer CnaEmulator en utilisant l'une des méthodes suivantes depuis le répertoire racine du projet :
Le script lanceur gère automatiquement la découverte du JDK, la configuration du classpath et la résolution des chemins :
cna_emulator.bat <action> [arguments...]
java -cp "CnaEmulator\CnaEmulator.jar;%SLEEP_JAR%" CnaEmulator <action> [arguments...]
java -cp "CnaEmulator;%SLEEP_JAR%" CnaEmulator <action> [arguments...]
check)Valide la syntaxe d'un script Aggressor et compile les arbres AST via Sleep 2.1 sans exécuter le code :
cna_emulator.bat check <path\to\script.cna>
Exemple avec le fixture fourni :
cna_emulator.bat check CnaEmulator\tests\fixtures\sample_bof.cna
Exemple de sortie :
[*] Checking syntax of: CnaEmulator\tests\fixtures\sample_bof.cna
[+] sample_bof.cna syntax OK
run)Exécute un alias Aggressor déclaré, empaquette les arguments au format binaire (bof_pack), résout le fichier objet (script_resource) et invoque COFFLoader64.exe pour exécuter le BOF dans la mémoire de l'appelant :
cna_emulator.bat run <path\to\script.cna> <alias_name> [arguments...]
Exemple avec le fixture fourni :
cna_emulator.bat run CnaEmulator\tests\fixtures\sample_bof.cna sample_bof run test_target
Exemple de sortie :
[*] 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 fournit une exécution de tests automatisée :