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

CobaltStrike插件开发官方指南 Part1 - 详细教学文档

0x01 简介

什么是agscript

agscript(Aggressor Script)是CobaltStrike 3.0+内置的脚本语言,用于:

  • 武装CobaltStrike客户端
  • 对目标主机进行持久性控制
  • 扩展或修改CobaltStrike客户端以满足个性化需求

背景与发展

  • 源于Armitage的开源脚本引擎Cortana
  • 由DARPA的Cyber Fast Track计划支持开发
  • CobaltStrike 3.0重构时引入agscript
  • 目前仍处于起步阶段,未来会持续发展

加载与使用脚本

加载方式:

  1. 图形界面:Cobalt Strike客户端 -> Script Manager -> Load
  2. 命令行:./agscript [host] [port] [user] [password] [/path/to/script.cna]

脚本控制台:

  • 访问路径:View -> Script Console
  • 常用命令:
    • ? "foo":测试Sleep predicate
    • e println("foo");:测试Sleep statement
    • help:列出所有命令
    • load /path/to/script.cna:加载脚本
    • ls:列出已加载脚本
    • proff/profile/pron:性能分析相关
    • troff/tron:功能跟踪相关
    • unload script.cna:卸载脚本
    • x 2 + 2:执行表达式

Sleep语言基础

agscript基于Sleep语言开发,语法类似Perl但需要语句间有空格。

变量类型

$x = "Hello World";          # 字符串
$y = 3;                      # 数字
$z = @(1, 2, 3, "four");     # 数组
$a = %(a => "apple", b => "bat"); # 字典

字符串插值

println("\$a is: $a and \n\$x joined with \$y is: $x $+ $y");
# 输出:$a is: %(d => 4, b => 'bat', c => 'awesome language', a => 'apple') and $x joined with $y is: Hello World3

函数定义

sub addTwoValues {
    println($1 + $2);
}
addTwoValues("3", 55.0);  # 输出:58.0

函数引用:

$addf = &addTwoValues;
[$addf : "3", 55.0];  # 调用方式1
[&addTwoValues : "3", 55.0];  # 调用方式2

变量作用域

  • 全局变量
  • 特殊变量
  • 本地变量(使用local('$x $y $z')声明)

输出函数

  • &println:带换行输出
  • &printAll:输出所有参数
  • &writeb:二进制写入
  • &warn:带文件名和行号的输出(调试用)

交互式操作

自定义命令

command foo {
    println("Hello $1");
}
# 使用:foo bar

参数处理:

  • $1, $2...:按空格分隔的参数
  • $0:原始输入文本(用于包含空格的参数)

控制台文本颜色

在双引号字符串中使用转义:

  • \cX:设置颜色(X为颜色值)
  • \U:添加下划线
  • \o:重置格式

0x02 CobaltStrike客户端扩展

快捷键绑定

bind Ctrl+H {
    show_message("Hello World!");
}

支持修饰符:Ctrl, Shift, Alt, Meta

弹出菜单

添加菜单项:

popup help {
    item("&Homepage", { url_open("https://www.cobaltstrike.com"); });
    item("&Support", { url_open("https://www.cobaltstrike.com/support"); });
    separator();
    item("&About", { openAboutDialog(); });
}

添加子菜单:

popup pgraph {
    menu "&Layout" {
        item "&Circle" { graph_layout($1, "circle"); }
        menu "&Tree" {
            item "&Bottom" { graph_layout($1, "tree-bottom"); }
            item "&Left" { graph_layout($1, "tree-left"); }
        }
    }
}

覆盖已有菜单:
使用&popup_clear清除已注册项

自定义输出格式

set EVENT_SBAR_LEFT {
    return "[" . tstamp(ticks()) . "] " . mynick();
}
set EVENT_SBAR_RIGHT {
    return "[lag: $1]";
}

事件管理

基本事件处理:

on ready {
    show_message("Ready for action!");
}

监听所有事件:

on * {
    local('$handle $event $args');
    $event = shift(@_);
    $args = join(" ", @_);
    $handle = openf(">>eventspy.txt");
    writeb($handle, "[$event] $args");
    closef($handle);
}

总结

本文档详细介绍了:

  1. agscript的基本概念和加载方式
  2. Sleep语言的核心语法
  3. CobaltStrike客户端的扩展方法
    • 快捷键绑定
    • 菜单定制
    • 输出格式设置
    • 事件处理

关键点:

  • agscript基于Sleep语言,语法类似Perl但需要空格
  • 通过脚本可以完全定制CobaltStrike的界面和功能
  • 事件系统可以监听和响应CobaltStrike的各种状态变化
  • 脚本可以通过图形界面或命令行加载

后续开发应关注CobaltStrike官方API的更新,随着agscript的发展,会有更多功能可用。

CobaltStrike插件开发官方指南 Part1 - 详细教学文档 0x01 简介 什么是agscript agscript(Aggressor Script)是CobaltStrike 3.0+内置的脚本语言,用于: 武装CobaltStrike客户端 对目标主机进行持久性控制 扩展或修改CobaltStrike客户端以满足个性化需求 背景与发展 源于Armitage的开源脚本引擎Cortana 由DARPA的Cyber Fast Track计划支持开发 CobaltStrike 3.0重构时引入agscript 目前仍处于起步阶段,未来会持续发展 加载与使用脚本 加载方式: 图形界面:Cobalt Strike客户端 -> Script Manager -> Load 命令行: ./agscript [host] [port] [user] [password] [/path/to/script.cna] 脚本控制台: 访问路径:View -> Script Console 常用命令: ? "foo" :测试Sleep predicate e println("foo"); :测试Sleep statement help :列出所有命令 load /path/to/script.cna :加载脚本 ls :列出已加载脚本 proff/profile/pron :性能分析相关 troff/tron :功能跟踪相关 unload script.cna :卸载脚本 x 2 + 2 :执行表达式 Sleep语言基础 agscript基于Sleep语言开发,语法类似Perl但需要语句间有空格。 变量类型 字符串插值 函数定义 函数引用: 变量作用域 全局变量 特殊变量 本地变量(使用 local('$x $y $z') 声明) 输出函数 &println :带换行输出 &printAll :输出所有参数 &writeb :二进制写入 &warn :带文件名和行号的输出(调试用) 交互式操作 自定义命令 参数处理: $1 , $2 ...:按空格分隔的参数 $0 :原始输入文本(用于包含空格的参数) 控制台文本颜色 在双引号字符串中使用转义: \cX :设置颜色(X为颜色值) \U :添加下划线 \o :重置格式 0x02 CobaltStrike客户端扩展 快捷键绑定 支持修饰符:Ctrl, Shift, Alt, Meta 弹出菜单 添加菜单项: 添加子菜单: 覆盖已有菜单: 使用 &popup_clear 清除已注册项 自定义输出格式 事件管理 基本事件处理: 监听所有事件: 总结 本文档详细介绍了: agscript的基本概念和加载方式 Sleep语言的核心语法 CobaltStrike客户端的扩展方法 快捷键绑定 菜单定制 输出格式设置 事件处理 关键点: agscript基于Sleep语言,语法类似Perl但需要空格 通过脚本可以完全定制CobaltStrike的界面和功能 事件系统可以监听和响应CobaltStrike的各种状态变化 脚本可以通过图形界面或命令行加载 后续开发应关注CobaltStrike官方API的更新,随着agscript的发展,会有更多功能可用。