利用MGF病毒进入RING0的方法及技术分析

时间:2022-05-24 10:15:34

利用MGF病毒进入RING0的方法及技术分析

摘 要:本文从概念、原理以及日常生活中的运用对利用MGF病毒进入RING0的方法技术进行阐述。不同种类的病毒,它们的使用千差万别,正常程序使用了类似病毒的操作甚至借鉴了某些病毒的技术,从对莫国防病毒的运用方面来看,病毒还有可利用性。

关键词:病毒;技术;防护

中图分类号:TP311.1

1 RING0简单介绍

RING设计的初衷是将系统权限与程序分离出来,使之能够让OS更好的管理当前系统资源,也使得系统更加稳定。CPU将特权级别分为4个级别:RING0,RING1,RING2,RING3。Windows只使用其中的两个级别RING0和RING3,RING0只是操作系统使用,RING3都可以用。尽管有CPU的特权级别作保护,但如果普通应用程序企图执行RING0指令,则Windows会显示“非法指令”,错误信息。因为WINDOWXP本身漏洞很多,Windows XP的系统使用一天死机很多回是非常正常的。举个RING权限的最简单的例子:一个停止响应的应用程式,它运行在比RING0更高的指令环上,你不必大费周章的想着如何使系统回复运作,这期间,只需要启动任务管理器便能轻松终止它,因为它运行在比程式更低的RING0指令环中,拥有更高的权限,可以直接影响到RING0以上运行的程序,当然有利就有弊,RING保证了系统稳定运行的同时,也产生了一些十分麻烦的问题。比如一些OS虚拟化技术,在处理RING指令环时便遇到了麻烦,系统是运行在RING0指令环上的,但是虚拟的OS毕竟也是一个系统,也需要与系统相匹配的权限。而RING0不允许出现多个OS同时运行在上面,最早的解决办法便是使用虚拟机,把OS当成一个程序来运行。后来才有了更新的技术解决了此问题。

2 利用MGF病毒进入RING0的方法

MGF病毒是非常有名的病毒,它通过修改NTLDR文件进入ring0,进入ring0到底能做些什么呢?其实能做的事情很多的,不过网上有很多进入ring0的代码说实话没有什么用,首先他们进入ring0了后,代码仍然在0x80000000以下空间,如果有进程上下文切换,那么代码所在页就会被调换出去,解决方法是用ExAllocatePool申请一块非分页内存,将需要运行的代码拷贝过去,最后创建一个系统线程就可以了,这样你的代码就和驱动程序的代码一样,IRQL =PASSIVE_LEVEL,如何利用MGF病毒呢?我们可以使用MGF留在GDT中的callgate,利用这个调用门,就可以成功进入ring0。

系统的引导过程中的重要角色就是NTLDR,NTLDR主要作用就是装载Ntbootdd.sys文件,还有将x86的实模式转到winXP的保护模式下等工作,装载GDT(全局描述符表)也包括其中(由实模式切换到保护模式之前的准备工作中装载GDT就完成的了)。创建一个调用门,那么系统启动的时候就会将调用门装载。其实进入RING0:就是在WINXP用和CIH一样的技术,往GDT添加CALLGATE,在WIN 2000/XP/2003里把CALLGATE写入NTLDR里,然后重启计算机病毒生效,这是独一无二的技术,这当然也是WINDOWS 2000/XP/2003的一个漏洞。这种方法可以驻留内存:由于所有dll模块装入内存后,在文件头只使用1K空间,还有3K空间剩余,所以本病毒把自身的3K放入kernel32.dll的空隙里,剩下2K放在user32.dll里,但WIN98比较特殊,剩下2K用vxd的_PageAllocate分配空间。MGF毒驻留不靠建立进程和GlobalAlloc内存,而是插入模块的空隙里,因此在任务管理器里是看不到病毒的,更终止不了它在内存感染文件,所以本病毒难杀就难在这里,很多杀毒软件要么找不到本病毒,即使找到了也杀不了或杀不干净,束手无策。现在进入ring0的方法又有很多了,例如可以参考利用结构化异常处理以及利用中断门的方法进入RING0;利用驱动程序进入RING0;利用读写物理内存的方法来读写GDT所在的物理内存,在GDT上生成自己的调用门来进入ring0。那么到底用什么来确认NTLDR中包含有这个过程?可以根据Maureen提出的,用Bochs调试NTLDR,来监视NTLDR在切换到保护模式的时候所做的一切。莫国防病毒采用的方法是在NTLDR中搜索GDT域的空闲区,创建调用门,然后我们就可以利用这个CALLGATE来进入RING0了。这个方法非常巧妙,之所以不用选择子系统08h所对应的描述符,因为如果操作系统检测到描述符对应的代码和数据的地址都在0x80000000H以下运行的话,修改NTLDT后需要重起才会生效,会被认为是非法进入RING0,然后系统崩溃。

3 病毒防护的良好习惯

目前病毒十分猖狂,各用户要注意防范,并养成安全用机习惯。下面谈几点病毒防范技术。(1)安装操作系统前应准备好操作系统补丁和杀病毒软件、防火墙软件。安装时,必须拨掉网线,否则新装的操作系统在很短的时间内就会感染病毒,然后立即打补丁并安装杀病毒软件和防火墙软件。(2)关闭病毒入侵和传播通常使用的端口,如1433、137、138、139和445这些端口。强烈建议用户关闭这些端口,关闭后将无法再使用网上邻居和文件共享功能。如果要传递文件可以使用QQ或其他方式。(3)操作系统的登录账户密码不能设置过于简单或空密码,必须设置复杂一点。否则系统无任何安全可言,连接上网络后,肯定会感染病毒。防范病毒通过系统漏洞入侵的主要方法是打补丁、不设置密码或过于简单的密码。设置的密码过于简单,再给操作系统打补丁都是于事无补的,这种情况下,病毒可以非常快的猜出密码,实现直接入侵和系统感染。很多用户不设置或设置用于简单的密码,其实并不是方便了自己,而是方便了黑客或病毒的入侵。再次提示:一旦操作系统的密码被黑客拿到手,那么你上网所有的操作都会被黑客知道,你在任何网页中所输入的登录用户名和密码都会被黑客盗取。最近国内很多网络银行客户资金被盗就是因为用户缺乏安全意识和没有安全使用机器。而且现在有专门用于盗取用户密码和账户的病毒,这种盗取用户网络银行资金的方法是先将病毒破解或者获得的密码,发给病毒操控者,然后成功盗取用户的资金。(4)病毒软件一定要随时升级,不要怕麻烦,一般每天都会有新的病毒出现。

MGF病毒进入RING0的方法,有很多巧妙之处,比如MGF病毒在局域网的传播上面是通过破解掉远程主机的共享密码(密码由病毒生成),然后把病毒复制到目标机器的启动文件夹,目标机器一旦重启,病毒就开始感染。可以说,MGF病毒真是个“好”病毒。

参考文献:

[1][美]David A.Solomon.计算机网络管理[M].北京:清华大学出版社,1999.

[2][美]Douglas er.TCP/IP网络互连技术[M].北京:清华大学出版社,1998.

[3]佘志龙.Google Android SDK开发范例大全(3版)[M].北京:人民邮电出版社,2011.

作者单位:兰州资源环境职业技术学院 教务处,兰州 730021

上一篇:探讨广域网环境下的信息系统通信机制 下一篇:IPv6网络中基于数据挖掘的入侵检测系统研究