现在的位置: 首页 > 综合 > 正文

邪恶的RING0注射ShellCode脆弱的PE加载机制

2013年08月23日 ⁄ 综合 ⁄ 共 1036字 ⁄ 字号 评论关闭

ZwCreateProcessEx 是个非常非常好的东西,虽然他是个UNDOC.但是如果你仔细阅读过WIN2K的SRC,并且非常了解PE的运行机制,你会发现一些很有趣的东西。

这对目前的所有NT内核的系统来说都是致命的
可以用来做什么?

1. 制造漏洞
2. 提升权限
3. 拿来写病毒
4. 拿来写各种木马
5. 各种ROOTKIT

但是这里我只想很简单的说一下原理。我只希望这样的东西只用来讨论而已,当然这不是纯理论
在后面有个简单的EXAMPLES

其实你阅读过2K的SRC,分析过PE的加载,就会发现所有的进程在创建时都是由一个THREAD开始

而NtCreateThread有个很趣的参数 ThreadContext .这就是关键

在任何进程创建时,第一次调用的 NtCreateThread 中的 ThreadContext->Eax 都是这个进程被分配的在内存中的基址,然而这个时候进程甚至没有开始加载,但正是这个没有被加载的进程,系统却已经为他分配好了一个正常进程所需要的一切

那么我们就可以利用这个地址用ZwAllocateVirtualMemory为我们的代码分配一段空间,然后把我们的SHELLCODE写进去,我的这个例子仅仅是打开一个MessageBox并显示一句简单的字符串.

但是这并不妨碍你把你的病毒代码又或者是一整个木马写进去...只要你想

也许第一个 100% Ring0 Virus 或者 Ring0 Housr 就诞生了

在这只后,你只需要把ThreadContext->Eax的地址修正,进程就能被顺利的加载。并且首先被运行的就是我的SHELLCODE, 并且这个小玩意只有一个SYS,除此之外再没有任何多余的东西了

下面是个例子只是为了证明这个理论可以变成实际,驱动没有做任何的处理。并且可以正常的加载与卸载, 也没有从链表中移走,你可以用任何驱动管理工具来终止他

在驱动加载后,你再运行任何的进程都将会被注入我的SHELLCODE..

PS: 请原谅我说的非常之模糊,毕竟我不想 100% Ring0 Virus 或者别的什么诞生与这篇文章

命令行 loader 加载 loader -u 卸载

如果这时候你用OD附加打开的进程,你会发现我的SHELLCODE就在你附加的进程的头部,仿佛天生就是这个进程的一部分,而实际上你不可能在这个进程的文件中发现他们。是不是很有趣,呵呵

而且可以注进目前的任何可执行文件,包括ICESWORD,卡巴,NOD32..想想某一天突然发现你的杀毒软件或者防火墙本身就是个木马或者毒源吧,那简直太有趣了

抱歉!评论已关闭.