Arnés de emulación y pruebas independiente para Cobalt Strike Aggressor Scripts (.cna) que valida la sintaxis, simula las APIs de Beacon y ejecuta BOFs mediante COFFLoader sin un teamserver.
CnaEmulator es un arnés de desarrollo, emulación y pruebas independiente y de propósito general para Cobalt Strike Aggressor Scripts (.cna). Permite a investigadores de seguridad, desarrolladores de herramientas y autores de BOF validar la sintaxis de scripts, simular comandos alias de la consola de Beacon y ejecutar Beacon Object Files (BOFs) en memoria directamente a través de COFFLoader64.exe sin necesidad de lanzar un teamserver o un cliente GUI.
[!WARNING] Descargo de responsabilidad: Este código fue generado completamente con Antigravity y aún no ha sido revisado.
check):
.cna utilizando el motor subyacente Sleep 2.1.bof_pack):
datap de Cobalt Strike:
'i': entero de 4 bytes's': short de 2 bytes'z': cadena terminada en nulo con prefijo de longitud (prefijo strlen + 1)'Z': cadena UTF-16LE ancha con prefijo de longitud'b': búfer binario con prefijo de longitudbeacon_inline_execute):
beacon_inline_execute($bid, $bof_data, "go", $packed_args).COFFLoader64.exe go <bof_path> <hex_args> como subproceso hijo.test):
<script>.cna.tests o <script>.tests.console):
beacon> ) que soporta alias registrados, argumentos, documentación de ayuda y ejecución en vivo..
├── .gitignore # Reglas de Git ignore para binarios compilados y bytecode
├── COFFLoader64.exe # Relocalizador y cargador COFF en memoria independiente de 64 bits
├── cna_emulator.bat # Script lanzador de CLI conveniente
├── README.md # Documentación completa y guía de uso
├── TESTING.md # Informe de verificación de componentes y puertas de calidad
├── TEST_SPEC.md # Especificación de pruebas de 48 escenarios y 7 categorías
└── CnaEmulator/ # Componente Java CNA Emulator
├── .gitignore # Reglas de Git ignore para la subcarpeta CnaEmulator
├── CnaEmulator.java # Código fuente del emulador y puente del motor Sleep
├── CnaEmulator.class # Bytecode compilado
├── CnaEmulator.jar # JAR de bytecode empaquetado
├── build.bat # Script de compilación para compilar y empaquetar CnaEmulator
├── test.bat # Script ejecutor de pruebas independiente (48 escenarios)
└── tests/ # Suite de pruebas y fixtures
├── TestCnaEmulator.java # Arnés de pruebas de 48 escenarios
└── fixtures/ # Fixtures de prueba universales
├── sample_bof.cna # Aggressor Script de ejemplo independiente
├── sample_bof.cna.tests # Suite de pruebas complementaria
├── multi_alias.cna # Script de ejemplo multi-alias
└── multi_alias.cna.tests # Suite de pruebas complementaria multi-alias
| Requisito | Descripción y Configuración |
|---|---|
| Java JDK (17+) | Binarios java y javac. Configure JAVA_HOME con la ruta de su JDK y asegúrese de que %JAVA_HOME%\bin esté en PATH. |
Sleep 2.1 (sleep.jar) | Motor de scripting para Aggressor Scripts. Descárguelo de Sleep 2.1 o cópielo de Cobalt Strike. Configure SLEEP_JAR (por ejemplo, set "SLEEP_JAR=C:\path\to\sleep.jar"), o coloque sleep.jar en la carpeta raíz o en CnaEmulator\. |
Cargador en Memoria (COFFLoader64.exe) | Binario cargador independiente (por ejemplo, compilado de trustedsec/COFFLoader). Colocado en el directorio raíz o sobrescrito mediante COFFLOADER_PATH. |
Configuración Rápida del Entorno (cmd.exe):
set "JAVA_HOME=C:\path\to\jdk-17"
set "PATH=%JAVA_HOME%\bin;%PATH%"
set "SLEEP_JAR=C:\path\to\sleep.jar"
Antes de ejecutar las clases compiladas o el JAR, compile CnaEmulator.java:
Usando el Script de Compilación:
CnaEmulator\build.bat
O Compilación y Empaquetado Manual:
:: 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 ..
Puede invocar CnaEmulator usando cualquiera de los siguientes métodos desde el directorio raíz del proyecto:
El script lanzador maneja automáticamente el descubrimiento del JDK, la configuración del classpath y la resolución de rutas:
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 sintaxis de Aggressor Script y compila árboles AST mediante Sleep 2.1 sin ejecutar código:
cna_emulator.bat check <path\to\script.cna>
Ejemplo con fixture incluido:
cna_emulator.bat check CnaEmulator\tests\fixtures\sample_bof.cna
Salida de Ejemplo:
[*] Checking syntax of: CnaEmulator\tests\fixtures\sample_bof.cna
[+] sample_bof.cna syntax OK
run)Ejecuta un alias Aggressor declarado, empaqueta argumentos en formato binario (bof_pack), resuelve el archivo objeto (script_resource) e invoca COFFLoader64.exe para ejecutar el BOF en la memoria del invocador:
cna_emulator.bat run <path\to\script.cna> <alias_name> [arguments...]
Ejemplo con fixture incluido:
cna_emulator.bat run CnaEmulator\tests\fixtures\sample_bof.cna sample_bof run test_target
Salida de Ejemplo:
[*] 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)