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

mie

 
 
 

日志

 
 

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

2011-07-13 13:20:46|  分类: sr |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

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

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

 

2011.07.13

今年连续遭遇多个技术难题,还是很难求解的难题。ring0层dll注入是其一。一朋友刚好在从事某方面的开发,而他的这种技术就是我之前提到的新思路所需要使用的。所以,时机上差不多了。

先来总结一下前后的开发过程。

(1)突破Vista/Win7的session隔离。其实Windows 2k/XP/2003都有session隔离(比如远程桌面/多用户同时登录,等)。我的方法也顺便把这些都兼容了。但是,技术是ring3层的,需要和杀毒软件主动防御正面交锋。由于杀毒软件位于驱动层,我的应用层代码又只是使用常规技术,所以,还没交手,我就败下阵来。

(2)ring0驱动层之APC插入、用户层回调。这些都是老办法。对xp系统,还行。对Win7,无效。

(3)**术。后来,我搜索了相关的名词,发现这种技术思路也已有先例,只不过它被用于其他特殊用途。通过和shellcode组合,达到近乎完美的效果。至此,第二阶段结束。

(4)发现偶尔没法注入,或者注入后系统黑屏无法启动。之后发现是DEP作怪。于是,开始想办法。

(5)依此通过屏蔽系统中断、修改内存页表/段表、修改进程控制块和线程控制块的相关控制参数,等等,都未能奏效。通过MDL方式锁定内存并修改之,无效!

回过头来想想,其实,屏蔽CPU的中断位,是一种错误的做法。因为屏蔽的只是当前的CPU的中断,而其他CPU或者CPU核可能还是会中断,还是会触发系统的缺页中断,此时如果进行内存页面交换,结果就是灾难性的了!如果锁定内存总线,那还差不多!——好像现在还没有多根内存总线的PC机器吧?


2011.07.13(2)

再回想一下,此前的做法,修改了内存的页表,但是,我并没有修改快表。这显然是不行的!因为TLB快表也是内存页面保护的一个重要组成部分!

那么,如何修改快表呢?修改快表一定可以解决掉微软的DEP么?我不清楚。不过,微软的硬件DEP机制和软件DEP机制,也无非就那几种技术,应该也没多少创新。计算机发展了这么多年,很多技术都是老技术翻新的。而且,很多技术都是很简单的原理。

现在的问题是,如果灭了快表的保护位,是否就能真的如我所愿了呢?这个尝试的代价有点大。首先,微软应该是使用的硬件TLB快表,但它会不会是软件TLB快表?应该不是,但如果是呢?

其次,快表的结构。对于不同的系统版本,可能又有所不同,我还得再试试。

总之,这个我只能是幻想一下了。不过有一点可以肯定的是,之前没有修改快表,导致了大部分的内存修改都触发了DEP!而少数情况下,内存修改成功,乃是因为,内存页面没有位于快表,而我修改了页表,当触发了缺页中断之后,修改后的页表被快速缓冲到快表,从而,页表和快表统一了!这时候就没有问题,初步绕过了DEP。当然了,由于这种情况极其罕见,所以,我之前只是偶尔成功绕过DEP。

在少数几次绕过页表保护之后,接着,DEP的****保护生效。而我的程序没有处理,所以挂掉。

——当然了,我所理解的DEP,只是几种技术的组合。


至此,我大致推测出前一阶段失败之原因。然而,破除DEP还是很具有挑战性的。究其原因还是因为,我选择的对手太强大了,更可恶的是,他们人太多。再回想一下,我之前就做错了!我可以绕开杀毒软件的主动防御,不和杀毒软件们正面纠缠,那我为什么要和微软的DEP正面交锋?其实,多绕几步路,只要到了山的另一边,就OK了!


2011.07.17
       最近一直还没有开工,主要是作理论准备。一方面,我必须清楚此前失策的原因;另外一方面,先前所需的技术,大约还得等到11月份之后,才能投入测试。所以,最近几个月,将尽量用来考虑失策之原因。

       关于MDL方式写内存。从某种程度上,我的理解,并不能绕开“写时复制”机制,最终还是经过“写时复制”的处理,——我之前都在做“盲人摸象”的试验。另外,
如果开启了DEP,写时复制机制将仅仅针对数据段;如果没有开启DEP,写时复制机制将针对代码段和数据段。当然了,这只是我的个人观点,未必正确。
        如果果真如此,我此前使用各种方法绕开写时复制机制的做法,就是在白费心机了!——具体情况,我将继续探索。


2011.07.18
       堆、栈、静态存储区、代码段、资源段,,,,它们各自的权限如何设定?它们的权限分级在系统底层的每个环节,究竟是怎么实现的?它们对页面的映射机制如何?总不至于让我去读Linux操作系统内核源码吧,我非常没有那个耐性的。
       Windows系统底层,哪里还有patch点?这些patch点如何进行组合,从而实现我所需要的功能?
       我还需要看更多内容才行!

 

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

 

by:zhanyonhu




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

历史上的今天

在LOFTER的更多文章

评论

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

页脚

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