长亭百川云 - 文章详情

“考古”之cs4.2内存特征绕过

零队

66

2024-07-13

        特征出自:https://www.elastic.co/cn/blog/detecting-cobalt-strike-with-memory-signatures

        简单来讲,就是当cs在profile中设置sleep_mask为true时,Beacon会在进入sleep之前在内存中混淆自身,但是这个操作只会混淆字符串和数据,而负责进行加解密的代码部分不会混淆,且在内存中可以被标记出来,这就成了cs的内存特征之一

        文章中给出了x64和x86的特征值:

$a_x64 = {4C 8B 53 08 45 8B 0A 45 8B 5A 04 4D 8D 52 08 45 85 C9 75 05 45 85 DB 74 33 45 3B CB 73 E6 49 8B F9 4C 8B 03}

        可以看到确实能被检测出来:

        下面开始绕过,还是先解密dll(解密相关请看我以前的文章:https://mp.weixin.qq.com/s/fhcTTWV4Ddz4h9KxHVRcnw),然后用ida打开beacon.dll,找到特征对应的地方:

        其实它这个规则匹配的就是功能代码部分,对应的伪代码是这一段:

        由于它是基于程序一小块功能来进行匹配的,那么我们稍微改变一下程序的逻辑或者算法,那么就能改变局部的机器码,细看一下汇编代码,发现可以在这里动手:

        第一条指令是把eax的值给ecx,第二条指令是把eax+4的值给edx,那么很明显这两条指令交换顺序是不影响的,其中mov ecx, [eax]对应的机器码是8B 08,mov edx, [eax+4]对应的机器码是8B 50 04,把他们交换下顺序即可:

        然后两条指令成功交换了执行顺序:

        改完过后就匹配不到了:

        x64的修改也是同样的思路,想研究的就自己去实践下吧。

        本文只是作者前段时间一次内部技术分享中的一个小节,获得更多内容的方式在下面(打个小广告):

青藤云安全招聘

岗位:渗透测试工程师(红队方向)

base:上海、南京

薪资待遇:15-40k

工作内容:

1、参与公司红队评估、护网项目

2、研究最新漏洞和技术

3、对安服人员进行技术赋能

任职要求:

1、熟练掌握各种渗透测试技巧、熟练运用各类安全工具

2、具有丰富的实战经验可独立完成红队工作

3、至少熟悉一种语言(java/python/c/c++/c#/golang/rust等),能编写渗透工具或exp,具有代码审计能力者佳

4.对安全有浓厚的兴趣,有较强的钻研能力,有良好的团队精神

加分项:

1、拥有大型企业内外网渗透经验或大型HW攻击方经验,对APT有深入研究或实践经验

2、开发过安全工具、平台

3、发布过高质量原创文章

4、在各大SRC平台有较好的排名

        请给我一个与您并肩作战的机会,简历投递备注来自零队公众号,邮箱:wenyue.wang@qingteng.cn

相关推荐
关注或联系我们
添加百川云公众号,移动管理云安全产品
咨询热线:
4000-327-707
百川公众号
百川公众号
百川云客服
百川云客服

Copyright ©2024 北京长亭科技有限公司
icon
京ICP备 2024055124号-2