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

mie

 
 
 

日志

 
 

尝试绕过session隔离、杀毒软件的主动防御、Windows DEP数据执行保护等机制,实现ring0层注入dll到用户态(ring3)进程(6)  

2012-01-20 00:04:25|  分类: sr |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

尝试绕过session隔离、杀毒软件的主动防御、Windows DEP数据执行保护、数字签名认证等机制,实现ring0层注入dll到用户态(ring3)进程(5)  
http://zhanyonhu.blog.163.com/blog/static/1618604420119183720324/?suggestedreading&wumii


【分支讨论】关于64位系统数字签名的问题讨论
http://zhanyonhu.blog.163.com/blog/static/16186044201202001124336/


2012.01.20: 
        看来,过数字签名的做法,目前是不太可取的。购买数字签名的成本,远比过数签要低得多。——因为,修改bootmgr之后,还得让杀软无法扫描到,这样一来,难度就加大了很多。——杀软仅仅计算bootmgr的MD5值,就可以判断bootmgr是否被感染了。
        
        那么,目前还是先重新整理一下之前的版本(不能过DEP的)。在这过程中,也发现几个问题。比如,无论是win7还是xp,对于驱动的安全校验都更严格一些。而win7 x64下,驱动必须是64位的,并且是加了数字签名的。数字签名的验证,一个是安装的时候,一个加载的时候。
        重新整理的工作很繁杂,而且部署环境也很麻烦。所以,我一拖再拖,一直拖到现在。期间,有不少朋友和我联系,但由于最近比较烦躁,网络也一直有问题,所以回复得比较晚。说一下,如果是询问技术思路,恕不能奉告,我只能告诉一句话:看操作系统原理。

2012.01.21: 
        终于整理完之前的代码,并就如何通过常规方式关闭DEP简单地总结了一下。

        之前,因为这个方法不支持DEP,所以放弃。后来想,其实它可以用来做游戏辅助的加载模块,也就是过NP、TP等。有需要的朋友可以与我联系。这种方法是要求必须重启才能生效的,并且是关闭了DEP,支持2k到win7/2008,但是不支持64位系统(因为这种方式并还有缺陷,所以,先不处理64位的)。——不过,费用不会太低的,也不会高。



        我们再来讨论APC。win7的APC中加入了多种限制,这一点,研究的人不多,至少没有什么公开的资料。经过本人的测试,win7下,APC方式存在几个比较严重的问题,其中一个就是session隔离。也就是说,我们又回到了最初的“突破session隔离”上。此外,这个问题会导致IRP挂起,从而导致关机蓝屏(关机时发现有未完成的IRP,并且Cancel IRP失败)。之所以讨论APC方式,是因为之前有个朋友告诉我不需要这么麻烦,于是,我趁此机会试验了一下,但是结论是,不可行。
        其实,win7,ring3即可突破session隔离,这个也就是我去年的这个时候做的工作。然而,奇怪的是,ring0层,驱动中居然无法突破session隔离!不管怎么说,APC方式还是有问题,甚至,如果我们试图对wininit.exe进程进行注入,其结果是windows的当前登录会话直接被切断!session 1会话居然没了!windows在session隔离上做的工作还真不少!


2012.01.28: 
        总结一下。目前的问题是,如果突破了DEP,就无法过数字签名;如果过数字签名,就无法过杀软的安全检测;如果过杀软的安全检测,就无法过主动防御、session隔离、DEP等。似乎很难找到一种完美的方法。不得不承认,直接干掉杀软,再禁掉数字签名检测,这是最简单直接的方法,——以前很不喜欢这种过于粗鲁的处理方式。然而,一旦这样做了,就等于告诉用户,他的电脑已经被控制了。
        所以,我将继续寻找其他方法。好在,虽然目前的方法还没有试验完,我已经想到其他几种方法,其中,有一两种是应该可以完美兼容各种情况的。在此之前,我需要先试验此前的方法;而在我试验此前的方法之前,我需要先深入了解一下各种病毒的写法。
        下一站:对各种类型的病毒,编写测试代码,同时了解一下杀毒方法。

2012.01.29:

【分支讨论】关于DEP数据执行保护机制的windows实现

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


        回家待了几天,心情好了不少,过来半天就又老样子,,,每天都在混日子。于是,重新开始这个邪恶的工作。继续。

        总算是大致了解了DEP的实现。其实,windows的实现也很简单,要想关闭DEP也不是什么难事,重新设置CPU的标志位,修改共享内存数据区,等等。问题是,这样处理安全不?会不会带来新的问题?另外,我能否修改CPU的标志位(会不会是不可逆的操作)?这些去年也都想过。

【分支讨论】GDI内核栈的初始化问题
http://zhanyonhu.blog.163.com/blog/static/16186044201203002521857/


2012.01.30:
        
下一站:开始验证去年下半年想到的那个方法的可行性。这次的版本,先按照当时的想法走一遍;下一个版本,把方法优化一下,因为新方法的改动太大,很容易被察觉,——如果想不被察觉,需要做不少的工作。

2012.01.31:
【分支讨论】PE文件过数字签名认证问题  
http://zhanyonhu.blog.163.com/blog/static/1618604420120318442036/

2012.02.02:

        明天晚上休息,后天即可完成新思路的验证。对于新思路的认证,目前简单处理,换成了另外一种更简洁的实现思路。

2012.02.04:
       密码安全。最近几个月经常玩某个游戏,因为有免费得到的金币,所以,经常去玩。在里面花金币也比较随意,于是被盯上了,两个帐号的金币全被盗取。我一看不对劲,就查自己的电脑,看看有没有木马,结果是没有。如果说其中一个帐号的密码很简单,但是另外一个帐号的密码应该不至于被盗。
       和这个游戏的客服联系,查询到金币被购买会员赠送给了其他几个人。也就确认是被盗了。而且,这个盗取只在几分钟之内完成,并且基本上是没有使用木马,那只能是这个游戏公司有内鬼了,或者是他们的那套机制早就泄露了。
       如果说,还是有木马,只不过隐藏得比较深,似乎也不至于,——这里面的利益真的值得花这么大的气力?   反正以后是不敢在自己的机器上玩这个游戏了,太危险了。        
       另外一方面也看出,还是得低调,要不然,总会被盯上。


2012.02.05:  

        版本二A 试验版本,测试失败,无效。原因不清楚。这种方法在系统登录之后启用,可以生效;在系统启动时操作,则无效。另外,基本上确定,任何一种方法都难免存在缺陷,所以,之前那种希望100%地隐藏的做法,是不太可行的。
        我试图从Windows内核中找到失败的具体原因,从而为下一个测试版本作准备,但是,由于实力有限,没能找到原因。

        下一个测试版本将牵涉到过多的其他领域的技术,测试也更加复杂,每一个小改动,都得经过多次系统重启才能完成。暂时跳过这个,进入到版本三A的试验。

2012.02.06:  
        玩玩ring0 hook。结果,ssdt hook总是编译不通过,同时SSDT表没有符号链接,郁闷。明天重写,然后没增加一部分代码,就编译一次,看看到底是什么原因导致的。
        元宵。

2012.02.12:
        前些天因为一些事情,没的心情,继续。

【分支讨论】【★☆★】KnownDlls 与 MoveFileEx(重启替换文件MOVEFILE_DELAY_UNTIL_REBOOT )  
http://zhanyonhu.blog.163.com/blog/static/1618604420121124246221/

【分支讨论】windows引导之执行体初始化,存储管理部分的简单分析
http://zhanyonhu.blog.163.com/blog/static/16186044201211242456633/

        上次提到KnownDlls,经过一段时间的了解,发现这里很可能也是可以利用的,当然了,利用的方法不是传统的方法,而是改良过的,实现也很复杂。然而,经过一段时间的试验,发现似乎无效。
        ——Windows加载KnownDlls方面,还是预先考虑了很多可能被攻击的因素,小辈我又低估了windows。在别人还没攻击过,就事先考虑到了,这才是厉害,找别人的漏洞容易,防范则很难。所以说,最好的防守就是攻击。

        我需要再写一个驱动来继续分析KnownDlls的机制。

2012.02.16:

         晕。过数字签名的问题,已经说了,如果要过数签,就得修改NTLDR,或者MBR,或者其他bootkit,而这些都很容易会被杀软发现(我要的是和杀软和谐共处)。所以,过数签很难和过杀软+主防兼容。我容易么,为了这个,我不得不去查阅内核资料等,在上面的几个讨论分支中,由于没有公开的资料,不得不自己逆向,,,


2012.02.19:
        经过周末的努力,目前已经完成【版本四A】的开发。【版本四A】采用的技术,可能会被一些反外挂软件捕获到。不过不要紧,我会再后面专门将其改造成可以过NP、GP、TP等保护的升级版本(【版本四B】),并在下周针对几个主流的反外挂和杀软主防进行验证测试。这个版本基于了前几个版本的shellcode,所以,稳定性也相当好,有需要的可以联系本人(不要和我说几百,几百块是不可能买到的,如果想几百块买到,我即使给了,也是浪费,我相信不尊重技术研发的人是无法真正利用技术的)——毕竟只是注入了dll,要想利用,还得自己写dll的,这些dll都是有特定要求的,否则就会蓝屏。
        这个版本还是不支持数签和64位系统,支持数签就没法过杀软。不过,目前我已经不在乎这个了,所以,后面会专门出一个版本来过数签,当然了,它将会被主动防御扫描到。——要想不被扫描到,还得做很多很多工作,思路我是有的,但实现较复杂,可能即使实现了,也没法有对等的回报,所以,先不管它。

        下面将对KnownDlls进行进一步的研究。


2012.02.20:

        【版本三A】将是一个激动人心的作品,它将几乎实现【版本一】的全部效果,并且,支持过DEP,但是对少数进程不作注入(出于安全考虑),算是一点小遗憾,不过,它的隐藏度甚至比【版本一】更高,常规方法无法检测到任何痕迹(除了驱动程序文件本身和相应的驱动注册表项)。——昨晚初步想了一下,基本上确定是可行的,让我小小地兴奋了一会儿,哈哈。——它是【版本一】的替代。

        【版本五A】的开发,主要是验证一个思路,效果和【版本四A】相当。

         至于KnownDlls的研究,网上的一些文章也提及到了,不过,这些都是理论性的,经过本人的验证,发现要想利用KnownDlls,那是相当之难的(ssdt hook的话,可能会很简单,不过我很反感hook)。

         后面将趋向于追求“无宿、无主、无驱、无模”的境界,即,没有依存性,不依赖于某个进程和模块(sys/dll),也就是尽量不hook;无主进程;无驱动模块,或者驱动隐藏;无dll模块,或者模块隐藏,乃至某些很牛*的软件都检测不出来。

 

2012.02.21:

          昨天后来又想了一下,【版本三】系列 将是一个非常强大的版本。除了可以过DEP、主动防御、第三方安全分析工具的检测,还可以过数字签名,并且是无痕迹地过数字签名!当然了,安装的时候,可能无法过某些安全软件的数字签名检测(可以过微软的数签),不过这不要紧,第一,这不是我所关心的;第二,安装这个工作,自有其他人完成,不需要我多虑的。

          一点点的小瑕疵是,对极少数进程,将无法注入。不过,这个可以接受,因为,其他大部分进程,包括杀软、游戏保护,都将被注入。所以,这是可以接受的。

         在完成【版本五A】【版本六A】【版本七A】【版本八A】四个版本之后,将全力实现【版本三】,希望我的分析没有问题,那么,届时,一个强大的ring0 dll注入新方法将诞生,他将远远超过【版本一】。

         话说过数签还是很难的,无痕迹地过数签则是相当难。我们可不能直接修改NTLDR之类的,这理论可行(前面提到已经被实现了),却无法实际使用。——我们可不能直接修改NTLDR,因为系统还在运行的时候,我们没这个权限。即使通过某些方法修改成功了,也很快被杀软发现。所以,要想无痕迹地过数签,修改NTLDR是不可行的。那么,必须想狠招。当然,我已经有思路了,只是实现起来还有一定难度。

         当然,即使无痕迹地过了数签,也不意味着就非常完美了。还有驱动和dll的文件在那儿,还有注册表项在那儿,甚至需要对系统作一些手脚,这些都难免留下痕迹,所以,这些痕迹的清理工作又是另外一个技术环节。——要知道,这里可不能通过简单的ring0 hook之类的手段实现,否则,前功尽弃,直接暴露了自己,还不如不处理。——当然,这些也不是我要考虑的问题,痕迹清理应该由其他熟悉的人来完成,我的任务仅仅是注入,并且是安全地注入,不会被察觉。

         所以,此前的几个方法,都是基于这个考量的,它们都不会被察觉,但是或多或少存在缺憾,最大的缺憾就是数签,这直接意味着无法在64位系统中运行。

2012.02.22:
——要实现起来,何其难! 真要实现了无痕迹过数签,基本上得是对操作系统了如指掌了。我确信自己还没有这个实力,虽然曾梦想着编写操作系统,但那已经很遥远的事情了;如果实现了这个,基本上也知道怎么写一个较完整的操作系统了,虽没法真正去写一个,至少了解了,也算是圆了那个梦。

尝试绕过session隔离、杀毒软件的主动防御、Windows DEP数据执行保护等机制,实现ring0层注入dll到用户态(ring3)进程(7)  
http://zhanyonhu.blog.163.com/blog/static/1618604420122325425415/

By:zhanyonhu
  评论这张
 
阅读(2105)| 评论(3)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

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

页脚

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