CobaltStrike是一款渗透测试神器,支持http/https、tcp、smb等多种通信方式。
在hvv防守方、应急响应等场景中,都有检测CobaltStrike的需求。
通常使用yara规则去匹配内存或者文件,但缺点如不支持3.x、只支持http/https的beacon等
其技术原理是
但缺点是
鉴于以上两种方案各有缺点,CobaltStrike的特征到底是什么?
我认为有两个通用的特征
ETW可以记录WinINet的进程id、线程id、url、请求头、返回状态码、返回头等信息
在应急中,可以通过进程id、线程id、url进一步排查,进而阻断其网络和进程。
用C#写了个简单的工具WinINetLogger
sRDI本身具有很强的隐蔽性,在内存中可以任意编码、加密。
但正如前文提到的内核检测方案中,其调用系统api时,调用者的内存属性有问题。
内核检测方案
正常调用系统api时,调用者内存属性一般为IMAGE类型,并且不可写。
但也有例外如C#和V8等包含jit即时编译的代码。
此时就需要结合CobaltStrike自身的特征
分析调用堆栈时,如果这些api的调用者内存有问题,那么就可以确定是CobaltStrike
https://github.com/howmp/CobaltStrikeDetect
processhacker.zip
Microsoft-Windows-WinINet/UsageLog
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
kaoyange 网络上如何检测呢