现在恶意和带毒的网站越来越多,让人防不胜防。而各种恶意软件要寄生在Windows系统中,最常用的手段就是修改注册表。
由于Windows的注册表里加载程序的项目繁多,因此查找起来相当困难。总结我帮人清除病毒的经历,发现以下注册表项最容易让病毒利用。
1. 通过IE加载
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Explorer/Browser Helper Objects
这个注册表项的每个子项都保存了一个浏览器助手的信息,所有浏览器助手在用户登录后以dll的方式加载,没有独立的进程,因此很难发现。并且必须在安全模式下才能删除。
例如QQ的IE助手就是用此方法加载(当然它不能算是病毒),注册表项如下:
HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Ext/Stats/{54EBD53A-9BC1-480B-966A-843A333CA162}
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Explorer/Browser Helper Objects/Browser Helper Objects/{54EBD53A-9BC1-480B-966A-843A333CA162}
HKEY_CURRENT_USER/Software/Microsoft/Internet Explorer/Extensions/CmdMapping
HKEY_CURRENT_USER/Software/Microsoft/Internet Explorer/URLSearchHooks
HKEY_LOCAL_MACHINE/Software/Microsoft/Internet Explorer/Extensions
这些注册表项的每个子项都保存了一个IE加载项的信息,在IE启动时加载。
2. 通过Explorer加载
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Explorer/ShellExecuteHooks
这个注册表项的每个值都是监控Explorer消息的钩子程序GUID。
钩子程序为COM组件,由Explorer运行时加载,因此也没有独立的进程,必须在安全模式下才能删除。
通常Windows 2000/XP默认的钩子程序只有一项:
{AEB6717E-7E19-11d0-97EE-00C04FD91972},即Windows Shell,如果还有其它项就要小心了。
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Shell Extensions/Approved
这个注册表项的每个值都是Windows Shell扩展程序的GUID,这些扩展程序能够在特定的时候被调用,
例如弹出右键菜单、进行拖放操作等。
3. 以Windows系统程序方式启动
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Winlogon
值:Shell - 该值指定了Windows Shell的主程序,默认为"Explorer.exe"。有的恶意软件通过修改该值以达到先于Explorer运行的目的。
值:Userinit - 该值指定了用户初始化时要执行的程序文件名(可以用逗号分隔多个文件名),默认为"(Windows文件夹)/system32/userinit.exe,"。
值:UIHost - 该值指定显示Windows XP登录界面的程序,在用户登录时运行,默认为"logonui.exe"。
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Windows
值:AppInit_DLLs - 该值指定了系统级钩子程序的文件名,这些钩子程序为dll文件,在每个应用程序运行时都会加载,监控应用程序的所有消息,该值默认为空。
很少有合法程序会用到该值,据我所知只有"Symantec AntiVirus"和"木马克星"。
关于该值的详细信息,可以查看微软知识库文章KB134655和KB125680。
4. 以IE默认的样式表启动
HKEY_LOCAL_MACHINE/Software/Microsoft/Internet Explorer/Styles
值:User Stylesheet - 该值指定了IE默认读取的样式表文件,木马程序通常能够靠该文件里的脚本将可执行文件写到硬盘上,并修改注册表。在默认情况下该值并不存在。
5. 以常规方式启动
HKEY_CURRENT_USER/SOFTWARE/Microsoft/Windows/CurrentVersion/policies/Explorer/Run
HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Run
HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/RunOnce
HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/RunOnceEx
HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/RunServices
HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/RunServicesOnce
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/policies/Explorer/Run
HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/Run
HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/RunOnce
HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/RunOnceEx
HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/RunService
HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/RunServiceOnce
这些注册项的每个值都是一个应用程序的文件名,在用户登录后自动运行。
HKEY_CURRENT_USER/Software/Microsoft/Windows NT/CurrentVersion/Windows - load
HKEY_CURRENT_USER/Software/Microsoft/Windows NT/CurrentVersion/Windows - run
这两个值的都可以指定在用户登录后自动运行的程序文件名,默认为空。
注:GUID是COM组件的唯一标识符,可以在HKEY_LOCAL_MACHINE/Software/Classes/CLSID下查找到指定GUID的详细信息。