安全矩阵

 找回密码
 立即注册
搜索
查看: 2576|回复: 0

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

[复制链接]

855

主题

862

帖子

2940

积分

金牌会员

Rank: 6Rank: 6

积分
2940
发表于 2021-11-28 14:56:29 | 显示全部楼层 |阅读模式
原文链接:“考古”之cs4.2内存特征绕过

特征出自:https://www.elastic.co/cn/blog/d ... h-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}$a_x86 = {8B 46 04 8B 08 8B 50 04 83 C0 08 89 55 08 89 45 0C 85 C9 75 04 85 D2 74 23 3B CA 73 E6 8B 06 8D 3C 08 33 D2}        可以看到确实能被检测出来:

        下面开始绕过,还是先解密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的修改也是同样的思路,想研究的就自己去实践下吧。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2025-4-23 00:16 , Processed in 0.013737 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表