注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

mie

 
 
 

日志

 
 

尝试绕过杀毒软件的主动防御,实现ring0层dll注入(2)  

2011-06-02 16:44:47|  分类: sr |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
接:

2011.06.03
继续分析。昨天遇到两个问题:shellcode执行时触发SEH,写入的shellcode代码被自动恢复!(这里都只讨论32位系统)

(1)写入的shellcode代码被自动恢复
        根据我的研究结果,Windows系统的不同版本,对此的技术实现稍有不同。XP sp2和2003 sp1等版本的系统,windows只对汇编指令进行保护!而对写入的数据不做保护!所以,如果写入汇编指令“call 0x12345678”,那么结果是0x12345678被写入,call指令无法写入。这样的结果很严重,会导致系统的指令执行全乱了!——系统黑屏!
        而在Windows 7等系统上,这种保护机制更严格,对所有的数据都进行了保护和自动恢复!

        这种保护机制,应该就是基于x86的段寄存器实现的,具体可以查阅“32位汇编”方面的资料。
        依本人的理解,这个就是所谓的硬件DEP(数据执行保护)!显然,要想破除硬件保护,难度很大,我大致想出了两种方法:直接解除硬件保护和绕过硬件保护。
        解除保护。理论上是可行的,但如果在技术实现上,CPU采用的是不可逆的设定操作,那就没辙了。——不清楚CPU在方面的具体实现,不得而知。
        绕过保护。其实,换在XP系统,注入方法很多。但是Vista之后,系统文件都有了数字签名,替换系统文件的方法也就不太方便了。但是,任何耦合点都是可利用的!所以,绕过这些保护的方法还是有一些的。——思路已有,实现难度较大。

        暂时不考虑破硬件DEP,继续分析之前遇到的代码自动恢复。
        如果直接写入,肯定是被阻止的!但是,为什么通过MDL的方式写入,代码居然自动恢复了?
        首先,MDL不是直接写入特定的内存区域A,而是生成一个新的内存区域拷贝B,对新的内存区域B写入,解锁时,扇入到原先的内存区域A。所以,写入成功了!而是,写入成功的一瞬间,我们查看内存区域,确实发现,数据被正确修改了!然而,个人认为,我们此时看到的,不是真实的内存区域A,其实还是内存区域B,系统将内存区域A在进程中关联为内存区域B。随后,系统在后台自动将B重新扇入到A,然后重新关联内存区域A!
        我之所以得出这样的结论,也是查阅了“内存管理”方面的资料。当然,可能理解还是有问题的。
        于是,“系统在后台自动将B重新扇入到A,然后重新关联内存区域A”,此时,触发硬件DEP,我们同样被无情地“复原”了。

(2)shellcode代码执行触发SEH
        按前面所说,shellcode没法执行了!但是为什么我调试的时候,还是被执行了一次?我的理解是“延迟写入”导致的。于是,我得以侥幸运行了一次没有被恢复的代码。——这里操作系统的处理导致了数据不同步,或者说是出现了“脏数据”?
        至于触发SEH,应该还是硬件DEP了。

明天作最后一次尝试,如果不行,只能是暂时放弃,待以后有空时研究。


20110603:
        继续分析。
        我们来做一些推测。
(a)为什么修改内存,系统会自动恢复?
        因为任何修改内存的操作,都被保存在系统的内存中,系统将修改了的内存区域标记为Dirty(脏数据),然后,“copy-on-write 写时复制”机制就有了用武之地。

 

        ……解决了内存自动恢复的问题!但是,代码无法执行!

 
最终结果:还是黑屏!不过内存数据确实修改成功了!之后系统在某处死锁!不知是何缘故。
 
放弃。

By:zhanyonhu

 

续:尝试绕过杀毒软件的主动防御,实现ring0层dll注入(3)

http://zhanyonhu.blog.163.com/blog/static/1618604420116131050169/

  评论这张
 
阅读(1659)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016