
Cobalt Strike Aggressor Scripts (.cna) के लिए स्टैंडअलोन एमुलेशन और परीक्षण हार्नेस जो सिंटैक्स को मान्य करता है, Beacon APIs को मॉक करता है, और बिना teamserver के COFFLoader के माध्यम से BOFs को निष्पादित करता है।
CnaEmulator Cobalt Strike Aggressor Scripts (.cna) के लिए एक स्टैंडअलोन, सामान्य-उद्देश्य विकास, एमुलेशन, और परीक्षण हार्नेस है। यह सुरक्षा शोधकर्ताओं, टूल डेवलपर्स, और BOF लेखकों को टीमसर्वर या GUI क्लाइंट लॉन्च किए बिना स्क्रिप्ट सिंटैक्स को मान्य करने, Beacon कंसोल alias कमांड्स को सिम्युलेट करने, और COFFLoader64.exe के माध्यम से सीधे इन-मेमोरी Beacon Object Files (BOFs) को निष्पादित करने की अनुमति देता है।
[!WARNING] अस्वीकरण: यह कोड पूरी तरह से Antigravity के साथ जनरेट किया गया था और अभी तक इसकी समीक्षा नहीं की गई है।
check):
.cna स्क्रिप्ट्स को कंपाइल करता है।bof_pack):
datap बाइनरी फॉर्मेट से मेल खाते हुए नेटिव Little-Endian सीरियलाइज़ेशन को लागू करता है:
'i': 4-बाइट इंटीजर's': 2-बाइट शॉर्ट'z': लंबाई-प्रीफिक्स्ड null-टर्मिनेटेड स्ट्रिंग (strlen + 1 प्रीफिक्स)'Z': लंबाई-प्रीफिक्स्ड वाइड UTF-16LE स्ट्रिंग'b': लंबाई-प्रीफिक्स्ड बाइनरी बफरbeacon_inline_execute):
beacon_inline_execute($bid, $bof_data, "go", $packed_args) को इंटरसेप्ट करता है।COFFLoader64.exe go <bof_path> <hex_args> को निष्पादित करता है।test):
<script>.cna.tests या <script>.tests परिदृश्य सूट्स को स्वतः खोजता और निष्पादित करता है।console):
beacon> )।.
├── .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
| आवश्यकता | विवरण और सेटअप |
|---|---|
| Java JDK (17+) | java और javac बाइनरीज़। अपने JDK पथ पर JAVA_HOME सेट करें और सुनिश्चित करें कि %JAVA_HOME%\bin PATH में है। |
Sleep 2.1 (sleep.jar) | Aggressor Scripts के लिए स्क्रिप्टिंग इंजन। Sleep 2.1 से डाउनलोड करें या Cobalt Strike से कॉपी करें। SLEEP_JAR सेट करें (जैसे set "SLEEP_JAR=C:\path\to\sleep.jar"), या sleep.jar को रूट फ़ोल्डर में या CnaEmulator\ में रखें। |
इन-मेमोरी लोडर (COFFLoader64.exe) | स्टैंडअलोन लोडर बाइनरी (जैसे, trustedsec/COFFLoader से कंपाइल किया गया)। रूट डायरेक्टरी में रखा गया या COFFLOADER_PATH के माध्यम से ओवरराइड किया गया। |
त्वरित एनवायरनमेंट सेटअप (cmd.exe):
set "JAVA_HOME=C:\path\to\jdk-17"
set "PATH=%JAVA_HOME%\bin;%PATH%"
set "SLEEP_JAR=C:\path\to\sleep.jar"
कंपाइल किए गए क्लासेस या JAR को चलाने से पहले, CnaEmulator.java को कंपाइल करें:
बिल्ड स्क्रिप्ट का उपयोग करना:
CnaEmulator\build.bat
या मैनुअल कंपाइलेशन और पैकेजिंग:
:: 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 ..
आप प्रोजेक्ट रूट डायरेक्टरी से निम्नलिखित में से किसी भी विधि का उपयोग करके CnaEmulator को इनवोक कर सकते हैं:
लॉन्चर स्क्रिप्ट स्वचालित रूप से JDK डिस्कवरी, क्लासपाथ सेटअप, और पथ रिज़ॉल्यूशन को संभालती है:
cna_emulator.bat <action> [arguments...]
java -cp "CnaEmulator\CnaEmulator.jar;%SLEEP_JAR%" CnaEmulator <action> [arguments...]
java -cp "CnaEmulator;%SLEEP_JAR%" CnaEmulator <action> [arguments...]
check)कोड निष्पादित किए बिना Sleep 2.1 के माध्यम से Aggressor Script सिंटैक्स को मान्य करता है और AST ट्रीज़ को कंपाइल करता है:
cna_emulator.bat check <path\to\script.cna>
बंडल किए गए फिक्स्चर के साथ उदाहरण:
cna_emulator.bat check CnaEmulator\tests\fixtures\sample_bof.cna
नमूना आउटपुट:
[*] Checking syntax of: CnaEmulator\tests\fixtures\sample_bof.cna
[+] sample_bof.cna syntax OK
run)घोषित Aggressor alias को निष्पादित करता है, आर्गुमेंट्स को बाइनरी फॉर्मेट (bof_pack) में पैक करता है, ऑब्जेक्ट फ़ाइल (script_resource) को रिज़ॉल्व करता है, और कॉलर मेमोरी में BOF को निष्पादित करने के लिए COFFLoader64.exe को इनवोक करता है:
cna_emulator.bat run <path\to\script.cna> <alias_name> [arguments...]
बंडल किए गए फिक्स्चर के साथ उदाहरण:
cna_emulator.bat run CnaEmulator\tests\fixtures\sample_bof.cna sample_bof run test_target
नमूना आउटपुट:
[*] 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 स्वचालित टेस्ट निष्पादन प्रदान करता है:
cna_emulator.bat test <path\to\script.cna> [alias] [arguments...]