欧宝娱乐平台网站:【技术分享】基于异常行为检测CobaltStrike
欧宝娱乐app下载 发布时间:2022-07-07

  CS中有很多用于后渗透的攻击模块,它们的加载通常是借助调用Windows DLL的方式来实现

  这意味着攻击者在使用这些内置工具的时候,CS会临时拉起一个进程并使用rundll32.exe实现恶意代码注入

  更重要的是,为了传递输出信息,这些攻击模块会通过命名管道(named pipe)的形式与beacon产生通信

  当然,攻击者能够自行修改命名方式,不过这一点容易被很多人忽视,大家也可以检视下自己平上时有没有这样的习惯,更多内容请参考官方文章

  除了关注管道的命名风格,CS在利用rundll32.exe进行代码注入的过程中,也有一定的行为特征,比如下图中的父子进程关系和参数调用:

  虽然我们的操作系统在日常活动中也会经常用到rundll32.exe,但这里有所不同的是——它被调用时不带任何参数,这种调用过程同样值得防守方加以关注

  对于windows上这类常见的系统进程,日后我会再专门写些文章去深入分析它们的行为基线,此处留个坑先…

  例如通过远程代码注入伪装成svchost.exe,或者注入lsass.exe后从内存中提取访问凭证

  在上述流程的第一步,使用OpenProcess获取进程句柄的活动会被sysmon记录成EID为10的日志

  这其中,0x1fffff 较为惹人注目,其意味着被赋予了所有权限,而我们的CS在代码注入活动中正是这样表现的:

  这类日志不仅会记录API调用过程中的源进程和目标进程,还会记录新线程的起始地址和起始函数等信息

  参考sysmonconfig.xml等配置文件,可以维护一份白名单,对基线外的异常行为加以关注

  当然,进程注入的方式非常多样,而EID 8只关注 CreateRemoteThreat,所以这一监测方式并不总能奏效

  除了进程间访问和远程线程创建之外,被注入的进程可能会产生新的会线进行通信,这时还会有EID 22(DNS query)的记录

  讲到这里,我又想给自己挖个坑了,这一攻击手法其实可以拆解成多个风险行为,结合适当的算法计算出多条风险路径,从而大幅提高告警精确性和置信度

  除了传统检测方法中的 Clustering、Grouping 和 Stack Counting 等,其实还有很多技巧可以结合使用,往往能达到更优的效果

  本质上都是通过命名管道实现令牌模拟(named pipe impersonation),想要了解细节的小伙伴可以参考下这篇文章

  这一过程涉及到可执行文件的创建、系统服务的创建、注册表的修改、文件和服务的清除等步骤,检测点比较多,可以按照下列截图依次分解:

  文件删除这一行为我在实验过程中没能采集到相应日志,期待有相关发现的小伙伴们可以Twitter私信我

  但是理论上该可执行文件的执行后自删除行为也是非常有价值的一个检测点,尤其是结合文件路径和签名状态等信息

  这一阶段中更多的攻击手法就不再赘述了,仅以使用CS的 hashdump 命令从进程内存中窃取凭证为例

  接着,我们可以通过源进程的GUID看看它还干过些什么,结合前文在Execution阶段的分析,我猜它至少创建过命名管道

  果然如此,不仅是创建管道,还有进程间的调用特征(rundll32无参数),甚至还涉及到注册表相关的行为

  这一阶段,结合攻击方要窃取的目标,防守方往往可以把注意力重点集结在 lsass.exe 等关键进程上,尤其会涉及到高权限的访问行为

  只要做好数据采集和质量管理,在相关的必经之路上其实是易守难攻,这时的防守方反而能占据一些优势

  目前网上关于 CobaltStrike 的检测大多集中在流量侧,关于后渗透阶段在主机侧的行为表现,希望本文能起到抛砖引玉的作用

  尽管攻击方的绕过姿势花样迭出,但是一些关键行为路径仍然难以避免或者容易忽视,还有很多宝藏trick亟待挖掘

  最后,本文中大部分技术细节都是浅尝辄止,感兴趣的朋友可以通过我个人主页上的 Twitter 联系我,欢迎同好交流~~