另类木马的自动加载技术
木马程序制作者总是在寻找更不易被大家发现的Windows启动时自动加载程序的地方作为木马自启动点。
注册表中Userinit 位置
注册表中Userinit这个项后面带的是系统启动程序,它可以以逗号分隔符的方式跟多个系统启动时需要自动加载的程序,正常情况下的
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowNT\CurrentVersion \Winlogon项下的"Userinit"="C:\WINDOWS\system32\userinit.exe",如图1所示。

图1:Userinit的值
这个键值后可以带一些系统启动时的初始化程序,例如“C:\WINDOWS\system32\userinit.exe,QQ.exe”(不含引号),这里QQ.exe就随系统的启动而运行,如果在QQ.exe后面加逗号再带一个木马程序,或是干脆将QQ.exe替换为木马程序,那么这个木马也就随系统的启动而自动启动了。
利用AutoRun.inf自动启动
Autorun.inf这个文件是很早就存在的,在WinXP以前的其他windows系统(如Win98,2000等),需要让光盘、U盘插入到机器自动运行的话,就要靠autorun.inf。这个文件是保存在驱动器的根目录下的(是一个隐藏的系统文件),它保存着一些简单的命令,告诉系统这个新插入的光盘或硬件应该自动启动什么程序,也可以告诉系统让系统将它的盘符图标改成某个路径下的icon。有些病毒或是木马作者正是利用这一点,通过这个autorun.inf文件,在用户系统完全不知情的情况下,“自动”执行任何命令或木马程序。
AutoRun.inf不仅能应用于光盘和U盘中,同样也可以应用于硬盘中(要注意的是,AutoRun.inf必须存放在磁盘根目录下才能起作用),下面一起来看看AutoRun.inf文件的内容吧。
打开记事本,新建一个文件,将其命名为AutoRun.inf,在AutoRun.inf中键入以下内容:出自 51CTO.COM博客
[AutoRun]
Icon=C:\Windows\System\Shell32.DLL,21
Open=C:\Program Files\ACDSee\ACDSee.exe
其中:
第一行“[AutoRun]”是必须的固定格式,一个标准的AutoRun文件必须以它开头,目的是告诉系统执行它下面几行的命令;
第二行“Icon= C:\Windows\System\Shell32.DLL,21”是给硬盘或光盘设定一个个性化的图标,“Shell32.DLL”是包含很多Windows图标的系统文件,“21”表示显示编号为21的图标,无数字则默认采用文件中的第一个图标;
第三行“Open=C:\Program Files\ACDSee\ACDSee.exe”指出要运行程序的路径及其文件名。
如果把第三行的Open行换为木马文件,必须是.exe、.com、.bat文件,其他格式文件可以使用start.exe打开或使用ShellExecute命令,并将这个AutoRun.inf文件设置为隐藏属性,这样,当对方点击硬盘时就会启动木马。
另外,在AutoRun.inf文件中,也可以运行某个注册表文件,在注册表文件中事先设计好自己想要达到的目的,如想对方共享C盘等,键入以下内容:
[AutoRun]
Open=regedit/s Share.reg ;加/s参数是为了导入时不会显示任何信息。而share.reg是预先写好的注册表程序。
保存AutoRun.inf文件。将Share.reg和AutoRun.inf这两个文件都复制到对方的某个盘的根目录下,这样对方只要双击这个盘就会将Share.reg导入注册表,这样对方电脑重启后黑客也就达到他的目的了。
使用AutoRun.inf文件的方式加载木马不需对方运行木马服务端程序,而只需他双击某盘符就会使木马运行!这样做的好处显而易见,那就是大大的增加了木马运行的主动性!须知许多人现在都是非常警惕的,不熟悉的文件他们轻易的不会运行,而这种方法就很难防范了。
一般说来,黑客会给木马服务端文件改个名字,和系统文件名很相像,然后给木马换个图标,使它看起来像TXT文件、ZIP文件或图片文件等,最后修改木马的资源文件使其不被杀毒软件识别,当服务端用户信以为真时,木马却悄悄侵入了系统。
组策略中的隐藏加载木马
大家所熟知的木马程序一般的启动方式,如加载到“开始”菜单中的“启动”项、记录到注册表的[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]项和[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]项中,更高级的木马还会注册为系统的“服务”程序,以上这几种启动方式都可以在“系统配置实用程序”(在“开始”|“运行”中执行“Msconfig”)的“启动”项和“服务”项中找到它的踪迹。
提示:
Windows2000系统需要下载一个叫msconfig for windows2000的小工具来检查启动项和服务项,也可以从WindowsXP复制一个过来使用。
这里介绍另一种鲜为人知的启动方式,是在“开始”|“运行”中运行“Gpedit.msc”。打开“组策略”,可看到“本地计算机策略”中有两个选项:“计算机配置”与“用户配置”,展开“用户配置”|“管理模板”|“系统”|“登录”,双击“在用户登录时运行这些程序”子项进行属性设置,如图2所示。

图2:组策略中登录时运行程序设置
选定“设置”项中的“已启用”项并单击“显示”按钮弹出“显示内容”窗口,再单击“添加”按钮,在“添加项目”窗口内的文本框中输入要自启动的程序的路径,如图3所示,单击“确定”按钮就完成了。

图3:添加系统启动时就启动的项
重新启动计算机,系统在登录时就会自动启动添加在“登录时运行的项目”里的程序,如果添加的是木马程序,那么一个“隐形”木马就这样诞生了。因为用这种方式添加的自启动程序在系统的“系统配置实用程序”是找不到的,同样在我们所熟知的注册表启动项中也是找不到的,所以很容易躲过检查。
通过这种方式添加的自启动程序虽然被记录在注册表中,但是不在大家都熟知的注册表的[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]项和[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run]项内,而是在注册表的[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\ Explorer\Run]项。
另外Windows 2000/XP在启动过程中,自动加载了很多程序,这些地方也可能成为病毒和木马的自动加载点,如下面一些地方:
(1)注册表中“Load”键值──这是一个埋藏得较深的注册表键值。位于HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows\load主键下。
(2)Windows中加载的服务,它的级别较高,用于最先加载。位于HKEY_LOCAL_MACHINE \System\CurrentControlSet\Services。
(3)Windows Shell──它位于注册表的HKEY_LOCAL_MACHINE\Software\Microsoft \Windows NT\CurrentVersion\Winlogon\下面的Shell字符串类型键值中,基默认值为Explorer.exe,当然可能木马程序会在此加入自身并以木马参数的形式调用资源管理器,以达到欺骗用户的目的。
(4)BootExecute──它位于注册表的HKEY_LOCAL_MACHINE\System\ControlSet001 \Session Manager\下面,有一个名为BootExecute的多字符串值键,它的默认值是“autocheck autochk *”,用于系统启动时的某些自动检查。这个启动项目里的程序是在系统图形界面完成前就被执行的,所以具有很高的优先级。