Aggressor Script官方文档翻译-2.Cobalt Strike
[toc]
Aggressor Script官方文档翻译-2.Cobalt Strike
Cobalt Strike 客户端
Aggressor 脚本引擎是Cobalt Strike的集成特性(the glue feature). 大多数Cobalt Strike对话框和特性都是作为向Aggressor 脚本引擎公开某些接口的独立模块编写的。
Cobalt Strike中内置了一个默认的脚本, default.cna, 这个脚本定义了Cobalt Strike的工具栏按钮,弹出式菜单,它还为大多数Cobalt Strike事件格式化输出。
本章将向您展示这些功能如何工作,并使您能够按照您的需求来塑造Cobalt Strike客户端。
快捷键
脚本可以创建快捷键,使用bind关键字绑定快捷键。这个例子展示了当Ctrl和H同时按下时,在对话框中显示“**Hello World!**”。
1 | bind Ctrl+H { |
效果如下:
快捷键可以是任何ASCII字符或特殊键。快捷键可以有一个或多个修饰符应用于它们,例如:Ctrl, Shift, Alt,或Meta。脚本可以指定修饰符+键。
弹出式菜单
脚本也可以添加到Cobalt Strike的菜单结构或重新定义它。popup关键字为popup钩子构建菜单层次。
下面是定义Cobalt Strike帮助菜单的代码:
1 | popup help { |
效果如下:
该脚本与Help popup钩子挂钩,并定义了几个菜单项。菜单项名称中的&是它的快捷键(keyboard accelerator)。当用户单击每个项时,与它相关联的代码块将执行。
脚本也可以定义带有子元素的菜单。关键字menu定义了一个新菜单。当用户将鼠标悬停在菜单上时,将执行与它相关的代码块,并用于构建子菜单。
这是Pivot Graph(拓扑图)菜单的一个例子:
1 | popup pgraph { |
效果如下:
如果您的脚本为Cobalt Strike菜单钩子指定了一个菜单层次结构,它将添加到已经存在的菜单中。您也可以使用&popup清除功能来清除其他注册菜单项,并重新定义一个符合您个人品位的菜单层次结构。
自定义输出
Aggressor脚本中的set关键字定义了如何格式化事件并将其输出显示给用户。下面是set关键字的示例:
1 | set EVENT_SBAR_LEFT { |
显示效果:
上面的代码定义了Cobalt Strike事件日志中状态栏的内容 (View -> Event Log)。状态栏的左侧显示当前时间和昵称。右边显示Cobalt Strike客户端和团队服务器之间消息的往返时间。
您可以创建自己的文件来覆盖Cobalt Strike默认脚本中的任何设置选项,其中包含您所关心的事件的定义。把脚本加载进Cobalt Strike后Cobalt Strike将使用您的定义来构建。
事件
使用on关键字来定义事件的处理程序。当Cobalt Strike连接到团队服务器并准备好时,ready事件就会触发。
1 | on ready { |
显示效果:
Cobalt Strike为各种情况生成事件。使用*元事件查看Cobalt Strike的所有事件。
1 | on * { |
效果如下:
生成了事件日志。