CobaltStrike是一款渗透测试工具,它有一个极好的特点,那就是支持功能扩展,用户可以根据自己的需要进行设计。而对CobaltStrike进行功能扩展就需要用到aggressor脚本,由sleep语言解析。关于sleep语言,网上的资料较少,这里也不做深入的介绍,想查看更多的资料可以访问sleep语法手册和CobaltStrike官网。
这里引用一段语法手册的话,让大家了解一下sleep(自己翻译的,可能有误。。)
The java world currently has Jacl for TCL, Jython for Python, and JRuby for Ruby. One offering is missing from this bunch: what Java scripting language exists for the Perl hackers of the world?Sleep is a Java-based scripting language heavily inspired by Perl. java世界中有用于TCL的Jacl,用于Python的Jython和用于Ruby的JRuby,但在这一系列的(语言)中缺少了一个东西:这个世界上(使用)Perl(的)黑客使用的Java脚本语言是什么?Sleep是一种深受Perl语言启发的基于Java的脚本语言。运行方法 命令行
需要先下载sleep语言
然后在命令行中输入java -jar sleep.jar
然后可以在文件中编写代码,用load命令加载,如load ./test.cna
aggressor脚本的后缀为.cna
CobaltStrike点击script console进入脚本控制台
然后用load命令加载文件,如load /root/Desktop/test/cna
需要注意的是,更改代码文件后需要重新加载时,在命令行中用load命令加载就行,在CobaltStrike脚本控制台中重新加载要用reload,而且重新加载不用带路径,直接写文件名就行,不这样反而会报错。
语法 输出使用println()进行输出,如
println("hello world");变量
使用$来定义变量,注意=符号前后都需要有空格,如
$x = 2; println($x);数组
使用@来定义数组,如
@arr = @('s1','s2',887);#定义数组 println(@arr);#输出整个数组 foreach $i (@arr){#利用循环逐个输出 println($i); }字典
用%来定义字典,如
$y = 34; %dic["key1"] = "value1";#字典是键值对的形式 %dic["k2"] = "v2";#把键设为k2,把键对应的值设为v2 %dic[$y] = "v3"; %dic["k3"] = $y;#变量也可以当成键和值 println(%dic);函数
用sub来定义函数,如
sub fun{#定义函数 println("i am function"); } fun()#调用函数实战
以下将会利用上面的基本知识对CobaltStrike进行一些简单的自定义(功能扩展)
自定义命令利用command进行自定义命令,如
sub fun{ println("i am function"); } command f1{#定义命令f1 fun();#命令内容 }自定义快捷键
用bind自定义快捷键,如
bind Ctrl+W{ show_message("hello");#显示信息(d窗) elog("world");#显示到日志(log)上 }自定义菜单
用popup和menubar来自定义菜单,如
popup menu1{#定义popup函数 item("&apple",{show_message("i am apple")});#定义某一项的名字和内容 separator();#加分割 item("&orange",{show_message("i am orange")});#这一项名字为orange,点击后会输出i am orange } menubar("fruits","menu1");#用menubar来收写好的popup函数,相当于上面是函数的定义,下面是调用(使用)自定义beacon的按钮(菜单)
用popup beacon_bottom来进行定义,如
popup beacon_bottom{ menu "sites"{ item("&baidu",{url_open("http://www.baidu.com")}); item("&cctv",{url_open("http://www.cctv.com")}); } }
或
popup beacon_bottom{ menu "sites"{ item "baidu" { url_open("http://www.baidu.com"); } item "cctv" { url_open("http://www.cctv.com"); } } }总结
这里介绍的虽然只是aggressor脚本和sleep语言的比较基础的内容,但是通过这些内容已经可以了解编写CobaltStrike功能扩展的思路和基本方法(新增菜单、按钮、命令之类的不都属于功能拓展吗,要进行更深入更贴近实战的学习,可以去github上看看大佬们的脚本。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)