Github项目地址: https://github.com/g1an123/AsyncRAT_C2_Search
碎碎念
上学期参与RAT对抗课题研究。第一次接触APT狩猎,完全不知道从何下手,感谢老师、学长们的帮助。
在对于AsyncRAT 外层TLS(ECDHE)流量的解密上,尝试了中间人攻击等方法,但还是因为比赛、学业上的事情搁置了很久。
直到大年初二,躺在床上刷先知社区偶然发现T0daySeeker师傅的文章,师傅说用win7就可以解决流量解密的问题🤯(当然涉及到加密套件的问题,建议看看原文),【也提醒了我还有个项目没做完(doge)】。
后来熬了两个晚上终于把脚本搞定了(为什么是晚上呢,因为白天要出去玩🐶)。
按照正常的故事情节,第三天本来是要跟老师对进度,但是呢,好巧不巧,电脑💻屏幕被砸碎了😭(让我本就不多的压岁钱🧧更薄了)。于是磨磨蹭蹭就开学了。
开学后就开始着手做公网探测了,还做了一些和fofa收录的对比。发现主流搜索引擎识别AsyncRAT C2仅有TLS证书一个特征,明显收录范围很窄。
OK故事到这里,应该是优化脚本后,开个服务器库库开扫。但是并没有,一个是发现优化后效果仍不理想(如果有师傅有什么比较好的优化点子💡欢迎随时踢我)。没错,后来就是考试和学业让我的进度一拖再拖。
看到微步已经完成相关的拓线研究🧐,于是便萌生开源主机发现脚本的想法。
脚本也处于能用就行的状态,望各位师傅见谅。
背景
AT&T Alien Labs 最近披露了一场历时 11 个月 AsyncRAT 攻击活动。攻击者采用钓鱼页面传递初始 JavaScript 文件,涉及 300 多个样本和 100 多个域名。这次攻击选择目标经过仔细挑选,其中包括美国关键基础设施管理者。为了规避检测,加载器使用了大量混淆和反沙箱技术,同时 DGA 域每周更新一次。值得注意的是,攻击仍在持续进行中,不断有新的域和 AsyncRAT 样本注册。
AsyncRAT 是 2019 年发布的开源远程访问工具,可被用作远程访问特洛伊(RAT)。攻击过程包括通过恶意钓鱼网页传递 JavaScript 文件,利用多层混淆和反分析技术。攻击者还灵活使用反沙箱技术,通过计算受害者虚拟机概率,巧妙规遍各个受害者,成功逃避检测。最终,脚本执行下载 AsyncRAT 客户端。
总体而言,这场攻击呈现出精心策划、持续时间长、具有高度混淆和反分析技术的异步远程访问工具活动。攻击者通过选择特定目标、采用反沙箱技术和使用动态域名生成器,成功地更新网络基础设施,从而有效地逃避了检测。
copy from 微步 哈哈哈哈
检测方法
TLS证书
优:命中率100%,也是各大搜索引擎最常用的。
缺:收录范围窄,有经验的apt组织在使用前都会修改证书名。
关于TLS证书的选择:
建立连接使用的证书和密钥均从win7主机生成的p12证书提取。win7主机下通信加密套件默认选择生成的TLS_RSA_WITH_AES_128_CBC_SHA
而非具有前向安全的TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
(加密套件的优先级可以调整), 且其生成的p12证书没有密码保护,直接提取私钥,规避证书格式引起的问题。
以fofa为例,进行了以下验证。(实验日期3月2日)
1. 收录语法测试
- fofa规则
app="AsyncRAT"
数据量与cert.issuer="AsyncRAT"
一致,共1,682条,811条ip。 - 反向搜索一致
app="AsyncRAT" && cert.issuer!="AsyncRAT"
数据量0条
2. 服务器收录方案验证
用自己的服务器配置了以下AsyncRAT服务进行验证。
验证结果:fofa仅通过是否AsyncRAT字样进行确定,没有脚本表现好。
IP:111.92.241.26
- 4404部署0.5.3版本正常证书名
- 5505部署0.5.3 Hacker Server
- 8808部署0.5.8版本正常证书名
- 9909 部署0.5.8HackerC2 Server
验证语句:
app=”AsyncRAT” && ip=”111.92.241.26”
fofa验证结果:8808收录,而9909通过修改证书名,躲过了fofa的特征搜索。
4404收录,而5505通过修改证书名,躲过了fofa的特征搜索。
服务器部署截图:
Ping包
优:稳定且准确率高
通过流量分析提取出AsyncRAT的ping包 重放进行特征识别,由于高版本对流量进行了gzip加密,所以高低版本需要分别发包验证。
client发送信息代码部分
Server服务端收到结果返回信息代码部分
JARM指纹
优:用来做辅助验证挺不错的
用JA3S 也可以,需要注意的是高低版本指纹也不一致。
对比
结果对比:fofa:1682条, 脚本:220条。
猜测1482条数据的AsyncRAT 服务已经下线。
判断依据:
- fofa更新时间距今较久,最近更新的数据皆可通过验证。
- 使用sslscan,nmap,openssl均为time out ,猜测服务已经下线
- 本地生成木马链接服务端,无法链接成功。
(截图懒得放了,有点多)
功能
探测识别AsyncRAT C2 工具服务端,方便安全研究人员进行apt组织追踪,情报拓线。覆盖目前官方仓库所有版本。(我也不知道咋吹了)
使用方法
- 检测单个端口:
python3 AsyncRAT_C2_Seearch.py host port
- 公网检测、ip、ip段检测,查看
C2公网发现探测.py
# scan_ip_range("186.137.33.1", "C") # 扫描ip段,可指定C B段
# ip_scan("218.204.179.10") # 扫描单个ip
# ip_scan("161.97.151.222",7788) # 扫描单个端口
# process_target_csv("target1.csv") # 扫描文件
# scan_ip_range_from_file("ip_range.txt") # 从文件中获取ip段扫描
运行环境:Macos 12.5
其他环境暂未测试
项目地址:
Github: https://github.com/g1an123/AsyncRAT_C2_Search
鸣谢
感谢老师的耐心指导,学长们的帮助,尤其浩然哥在中间人攻击解密等问题上给予了莫大的帮助😁。
石总@smc帮忙优化了公网探测脚本,优化后的版本尚未放出,敬请期待😋。