Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CnaEmulator — 用于 Cobalt Strike Aggressor Scripts(.cna)的独立仿真与测试框架,可在没有 teamserver 的情况下验证语法、模拟 Beacon API,并通过 COFFLoader 执行 BOF。 | Kitploit
工具/GitHubGitHub/iterat0r/cnaemulator
动态分析 (沙盒)漏洞利用脚本与自动化后渗透利用渗透测试命令与控制实用工具与框架学习与教育红队Payload 开发
GitHubiterat0r/cnaemulator

CnaEmulator

213137天前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

用于 Cobalt Strike Aggressor Scripts(.cna)的独立仿真与测试框架,可在没有 teamserver 的情况下验证语法、模拟 Beacon API,并通过 COFFLoader 执行 BOF。

查看仓库

CnaEmulator - Cobalt Strike Aggressor 脚本模拟器与模拟测试框架

CnaEmulator 是一个独立、通用的 Cobalt Strike Aggressor 脚本(.cna)开发、模拟与测试框架。它允许安全研究人员、工具开发者和 BOF 作者验证脚本语法、模拟 Beacon 控制台别名命令,并直接通过 COFFLoader64.exe 执行内存中的 Beacon 对象文件(BOF),而无需启动 teamserver 或 GUI 客户端。


[!WARNING] 免责声明:此代码完全由 Antigravity 生成,尚未经过审查。

功能

  1. 语法验证(check):
    • 使用底层 Sleep 2.1 引擎编译 .cna 脚本。
    • 准确检测失控字符串、未转义字符、解析器语法错误和缺失分隔符,并给出精确的文件行号。
  2. Aggressor 函数模拟:
    • 模拟来自 HelpSystems/Fortra Aggressor 脚本文档 的官方 Cobalt Strike Beacon 函数。
    • 为进程注入、令牌操作、文件系统、网络和 GUI 回调 API 提供逼真的模拟值或正向非错误返回值。
  3. 真实 BOF 二进制打包(bof_pack):
    • 实现与 Cobalt Strike 的 datap 二进制格式匹配的原生小端序序列化:
      • 'i':4 字节整数
      • 's':2 字节短整数
      • 'z':带长度前缀的以 null 结尾的字符串(strlen + 1 前缀)
      • 'Z':带长度前缀的宽 UTF-16LE 字符串
      • 'b':带长度前缀的二进制缓冲区
  4. COFFLoader 执行桥接(beacon_inline_execute):
    • 自动拦截 beacon_inline_execute($bid, $bof_data, "go", $packed_args)。
    • 将打包的参数转换为十六进制格式。
    • 作为子进程执行 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 脚本
            ├── 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:~
:: 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 ..

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 脚本语法并编译 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:~
:: Run automated tests on the bundled sample script (executes sample_bof.cna.tests)
cna_emulator.bat test CnaEmulator\tests\fixtures\sample_bof.cna

:: Run automated tests on the bundled multi-alias script (executes multi_alias.cna.tests)
cna_emulator.bat test CnaEmulator\tests\fixtures\multi_alias.cna

:: Run a targeted scenario directly via 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 脚本和 BOF 二进制文件:

root@kitploit:~
:: Validate any external script syntax
cna_emulator.bat check C:\Projects\CustomBof\my_bof.cna

:: Execute external BOF alias commands with live arguments
cna_emulator.bat run C:\Projects\CustomBof\my_bof.cna my_command target_argument

:: Run companion test suites for external scripts
cna_emulator.bat test C:\Projects\CustomBof\my_bof.cna

:: Open interactive console with external script
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] 虚拟 / 桩实现:所有其他 Cobalt Strike API——包括进程执行/注入(bshell、bpowershell、bexecute、bspawn、binject)、令牌操作(bsteal_token、brev2self、bgetuid)、文件系统导航(bpwd、bls、bupload、bdownload)、枢轴(socks、rportfwd)、UI 提示(prompt_text、)和 GUI 钩子(、、、)——均实现为返回正向非错误值(、、、)或无操作块的虚拟桩,以便脚本离线执行而不会失败。

下载工具
要求描述与设置
Java JDK (17+)java 和 javac 二进制文件。将 JAVA_HOME 设置为你的 JDK 路径,并确保 %JAVA_HOME%\bin 在 PATH 中。
Sleep 2.1 (sleep.jar)Aggressor 脚本的脚本引擎。从 Sleep 2.1 下载或从 Cobalt Strike 复制。设置 SLEEP_JAR(例如 set "SLEEP_JAR=C:\path\to\sleep.jar"),或将 sleep.jar 放在根文件夹或 CnaEmulator\ 中。
内存加载器(COFFLoader64.exe)独立加载器二进制文件(例如,从 trustedsec/COFFLoader 编译)。放在根目录中或通过 COFFLOADER_PATH 覆盖。
函数 / 关键字描述
bof_pack打包小端序二进制参数(i、s、z、Z、b),带 4 字节缓冲区长度前缀。
beacon_inline_execute启动 COFFLoader64.exe go <bof.o> <hex_args> 子进程并流式传输实时 stdout。
script_resource跨脚本目录、bin/、../bin/ 和相对路径解析相对资源路径。
openf、readb、closef原生文件系统 I/O,用于将本地 .o BOF 文件读入字节缓冲区。
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