检测Cobalt Strike只使用40行代码

番茄系统家园 · 2022-03-26 06:28:34

无文件落地的木马主要是一段可以自定位的shellcode组成,特点是没有文件,可以附加到任何进程里面执行。一旦特征码被捕获甚至是只需要xor一次就能改变特征码,由于传统安全软件是基于文件检测的,对目前越来越多的无文件落地木马检查效果差。

检测Cobalt Strike只使用40行代码

基于内存行为特征的检测方式,可以通过检测执行代码是否在正常文件镜像区段内去识别是否是无文件木马.由于cobaltstrike等无文件木马区段所在的是private内存,所以在执行loadimage回调的时候可以通过堆栈回溯快速确认是否是无文件木马。

检测只需要40行代码:

  • 在loadimagecallback上做堆栈回溯
  • 发现是private区域的内存并且是excute权限的code在加载dll,极有可能,非常有可能是无文件木马或者是shellcode在运行:

堆栈回溯:

使用:

编译好驱动,加载驱动,之后运行测试看看:

普通生成(x32与x64)测试:

检测Cobalt Strike只使用40行代码

基于VirtualAlloc的C代码测试:

检测Cobalt Strike只使用40行代码

测试结果:

检测Cobalt Strike只使用40行代码

基于powershell的测试:

检测Cobalt Strike只使用40行代码

基于python的测试:

检测Cobalt Strike只使用40行代码

测试结果:

检测Cobalt Strike只使用40行代码

弊端:

目前已知的ngentask.exe、sdiagnhost.exe服务会触发这个检测规则(看样子是为了执行一些更新服务从微软服务端下载了一些shellcode之类的去运行).如果后续优化则需要做一个数字签名校验等给这些特殊的进程进行加白操作.这是工程问题,不是这个demo的问题

一如既往的 github:https://github.com/huoji120/CobaltStrikeDetected

免责声明: 凡标注转载/编译字样内容并非本站原创,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如果你觉得本文好,欢迎推荐给朋友阅读;本文链接: https://m.nndssk.com/dngz/330952NaJXRb.html
猜你喜欢
最新应用
热门应用