安全研究🧐 三月 27, 2024

AsyncRAT C2发现

文章字数 5.6k 阅读约需 5 mins. 阅读次数 1000000

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. 收录语法测试

  1. fofa规则app="AsyncRAT"数据量与cert.issuer="AsyncRAT"一致,共1,682条,811条ip。
  2. 反向搜索一致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 服务已经下线。

判断依据:

  1. fofa更新时间距今较久,最近更新的数据皆可通过验证。
  2. 使用sslscan,nmap,openssl均为time out ,猜测服务已经下线
  3. 本地生成木马链接服务端,无法链接成功。

(截图懒得放了,有点多)

功能

探测识别AsyncRAT C2 工具服务端,方便安全研究人员进行apt组织追踪,情报拓线。覆盖目前官方仓库所有版本。(我也不知道咋吹了)

使用方法

  1. 检测单个端口:
python3 AsyncRAT_C2_Seearch.py  host  port

  1. 公网检测、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帮忙优化了公网探测脚本,优化后的版本尚未放出,敬请期待😋。

0%