Cobalt Strike Aggressor Script 编写初探
未完待续(这文章也暂时懒得更新了,不过之前有段时间在自己实现并集成一系列nday,钓鱼,提权,权限维持等,比开源脚本要强大,但精力有限现在在做其他的事情)。。。
Aggressor Script是Cobalt Strike的内置脚本语言,可以极大的拓展Cobalt Strike的功能,官方资料位于:https://www.cobaltstrike.com/aggressor-script/index.html
以下仅为个人入门学习所理解,如有错误感谢指正
除了Script Manager还有一个Script Console可以用来配置,调试和管理脚本
Script Console提供如下命令:
开发中可以通过e声明变量或者方法,通过x评估表现和打印结果
还可以通过agscript执行cna脚本
./agscript [host] [port] [user] [password] [/path/to/script.cna]
我没仔细看过sleep语言,只大致知道Aggressor Script支持如下3种变量定义:
对于字符串 整型等直接通过 $ 定义,例如 $a = 1; $a = “lol”;
对于数组需要 @ ,例如 $a = @(1, 2, 3, "four");
对于字典需要 % ,例如 $a = %(a => "apple", b => "bat", c => "awesome language", d => 4);
声明方法用sub,例如声明一个addTwoValues方法
sub addTwoValues { println($1 + $2); } addTwoValues("3", 55.0);
将该方法存为cna格式文件并通过Script Manager载入即可在Script Console看到计算结果
还可以通过command为Script Console注册命令,例如注册一个foo命令并接受一个传入参数
command foo { println("Hello $1"); }
在Aggressor Script种提供了许多方法,例如 alias 作用是在Beacon控制台中创建别名命令,官方例子如下:
alias("foo", { btask($1, "foo!"); });
btask也是一个方法,更多方法参考:https://www.cobaltstrike.com/aggressor-script/functions.html
例如bshell方法,让Beacon通过cmd.exe执行命令,该方法接收两个参数,分别是Beacon的id和命令内容
当我们拿下许多系统有需要批量执行系统命令就可以很容易的通过编写Aggressor Script来实现,当然Aggressor Script强大在于可以定制自己的Cobalt Strike集成各种0day易于使用。
让Beacon执行cmd的脚本如下:
alias("lol", { bshell($1, $2); });
和shell命令没什么区别、对于批量执行命令,我们需要拿到所有Beacon的id,通过beacons()方法即可
这个时候就可以轻松实现批量执行命令了,如下:
command fuckall { $cmd = $1; foreach %binfo (beacons()) { $id = %binfo['id']; bshell($id, $cmd) } }
load该脚本然后在Script Console执行fuckall whoami即可向所有傀儡机执行whoami命令
其他的玩法以后再写、未完待续
标签: cobaltstrike
评论:
你是衣冠楚楚的人 而我只是一个打满补丁的猴子
-
小博客一个,没必要伤害她
热门文章
存档
标签
最新评论
- yz
想想你喜欢什么,想做什么,找好一个自己的... - 小屿
@Jahan:testfun1024#p... - Jahan
Hello dear Xia0 i a... - brave
@万:你的手机应该是anroid7.0以... - jhsy
新版的cookie机制应该又变了. 而且... - 小屿
@janto:无兴趣 - janto
新版的这些好像不起作用了,deviceI... - hunk
正在研究,可否发一份新源码?todz$1... - miffy
请问可以加个好友咨询下吗? - vegetableChicken
@Snkrs:我也遇到和你一样的问题了,...
2019-01-23 10:11