写在前面的话 自从HijackThis这个强力工具出现以后,各大论坛就不乏求道解惑的帖子。 而网上各种版本的中文教程也层出不穷,但都大同小异,特别是对于HijackThis的运作机理剖析不够, 以至于很多人盲目使用,轻则没有效果,重则损坏系统,让好好的一个工具成了摆设。 本文依据 bleepcomputer.com 的 HijackThis Tutorial & Guide 翻译而来。 文章详细分析了HijackThis的运行机制和修复手段,对每一个区段都作了详细的说明,并随着版本的更新而不断修订。 HijackThis项目详解 R0,R1,R2,R3 区段 这一个区段包括Internet Explorer起始页、主页以及Url搜索钩子。 R0 对应于Internet Explorer起始页和搜索助手。 R1 对应于Internet Explorer搜寻功能和其他特性。 R2 目前没被使用。 R3 对应于 Url 搜索钩子。Url搜寻钩子用于当你在浏览器的地址栏中键入一个http:// 或者ftp:// 等协议的地址的时候。 当你输入这种地址时,浏览器将会尝试靠它自己理解选择正确的协议,如果失败了它将会使用在 R3 区段中列出的 UrlSearchHook 试着找到你输入的地址。 注册表键: Code:
HKLM\Software\Microsoft\Internet Explorer\Main,Start Page HKCU\Software\Microsoft\Internet Explorer\Main: Start Page HKLM\Software\Microsoft\Internet Explorer\Main: Default_Page_URL HKCU\Software\Microsoft\Internet Explorer\Main: Default_Page_URL HKLM\Software\Microsoft\Internet Explorer\Main: Search Page HKCU\Software\Microsoft\Internet Explorer\Main: Search Page HKCU\Software\Microsoft\Internet Explorer\SearchURL: (Default) HKCU\Software\Microsoft\Internet Explorer\Main: Window Title HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings: ProxyOverride HKCU\Software\Microsoft\Internet Connection Wizard: ShellNext HKCU\Software\Microsoft\Internet Explorer\Main: Search Bar HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\URLSearchHooks HKLM\Software\Microsoft\Internet Explorer\Search,CustomizeSearch= HKCU\Software\Microsoft\Internet Explorer\Search,CustomizeSearch HKLM\Software\Microsoft\Internet Explorer\Search,SearchAssistant 例子列表 R0 - HKCU\software\Microsoft\Internet Explorer\Main,Start = http://www.google.com/ 一个通常的疑问是紧接着其中一些项目的Obfuscated代表什么意思。 当某项被标注为Obfuscated的时候意味着它将难以被察觉或者了解。 在间谍软件术语中那意谓着间谍软件或者劫持程序藉由把数值转换成它容易地了解,但人类难以理解的一些其它的形式来隐藏它们的项目, 例如把项目以十六进制的形式加入注册表。这是隐藏它们的存在且使其难以被移除的惯用伎俩。 如果你不认识R0和R1中任何一个所指向的网站,并且你想要改变它,那么你可以让 HijackThis 安全地修复它们, 使它们不会对你的 Internet Explorer 设置造成危害。如果你想看看它们是怎样的网站,你可以去访问那些站点, 而且如果它有许多弹出窗口和链接,你几乎可以总是删除它们。需要注意的是如果R0/R1指向的是一个文件, 当你用 HijackThis 修复该项目时,Hijackthis 将不会删除指定的文件,你必须手动删除它。 有些以下划线(_)结束的特定的 R3 项目。比如它会看起来像是下面这个例子: R3 - URLSearchHook: (no name) - {CFBFAE00-17A6-11D0-99CB-00C04FD64497}_ - (no file) 注意 CLSID,它是在 {} 之间的那些数字,有一个 _ 跟在它的末尾,用 HijackThis 移除它们有些时候可能会有困难。 要修复它你需要去下面的注册表键手动删除指定的注册表项目: HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\URLSearchHooks 删除在它下面的你想要移除的CLSID项目。请不要改动 CFBFAE00-17A6-11D0-99CB-00C04FD64497 这个CLSID,因为它是合法的默认值之一。 除非你认识被用于 UrlSearchHook 的软件,否则你通常应该 Google 一下并在做过一些研究之后,再让 HijackThis 修复它。 F0,F1,F2,F3 区段 这些区段包括从你的.ini文件,system.ini,win.ini以及注册表中等效的位置加载的应用程序。 F0 对应于 system.ini中的 Shell= 语句。在 system.ini 的 shell= 语句在 Windows 9X 及以下(ME也有使用?)的操作系统中被用于 指定哪个程序会为作为操作系统的外壳。外壳是负责加载你的桌面,处理窗囗管理,而且让使用者与系统互动的程序。当Windows启动时, 在shell语句之后列出的任何的程序都会被载入,并且充当默认的外壳。有一些程序可以被做为合法的外壳替代品, 但是他们通常已经不再被使用。 Windows 95 和 98 (Windows ME?)使用 Explorer.exe 作为它们的默认外壳。Windows 3.X 使用 Progman.exe 作为它的外壳 。 也可以在与 shell= 的同一行上列出多个将在Windows加载同时启动的其他程序,例如 Shell=explorer.exe badprogram.exe。 当 Windows 启动的的时候,这一行将会载入两个程序。 F1 对应于在 win.ini 中的 Run= 或者 Load= 项目。在 Run= 或者 Load= 之后列出的任何的程序将会在Windows启动的时候载入。 Run= 语句 主要在 Windows 3.1,95和98 时期用于保持和较旧的程序的向后兼容性。大多数的现代程序不再使用这个 ini 设定, 而且如果你并不使用较旧的程序你可以确定它们是可疑的。而Load= 语句被用于为你的硬件加载驱动程序。 F2 和 F3 项目对应于 F0 和 F1 的等效位置,但是它们在Windows XP,2000 和 NT中改为在注册表中储存。 这些版本的Windows通常不使用 system.ini 和 win.ini 文件。 他们使用被称为 IniFileMapping 的一个功能来代替向后相容性。 IniFileMapping 将.ini文件的所有的内容加入注册表中,用键来存储.ini中的的每一行。 当你运行一个需要从.ini文件中读取它的设置的程序时,它将会首先检查注册表键: HKEY_LOCAL_MACHINE\software\Microsoft\ windows nt\CurrentVersion\ IniFileMapping 做.ini 映射, 如果顺利找到将会改为读取来自那里的设置。你可以看到这个键包含了IniFileMapping所引用的.ini文件。 在 F2 经常出现的另外一个项目是UserInit项,对应于Windows NT,2000,XP以及2003中的: HKLM\Software\Microsoft\ windows nt\CurrentVersion\Winlogon\Userinit。 这个键指明哪个程序应该在用户登陆之后启动。这个键的默认程序是 C:\windows\system32\userinit.exe。 Userinit.exe是为你的用户账户恢复自己的的配置,字型,色彩等设置的程序。可以通过将要运行的程序以逗号隔开来增加的更多的程序。 举例来说: HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit=C:\windows\system32\userinit.exe,c:\windows\badprogram.exe。 当你登录的时候,这两个程序都会启动,这是一个常被特洛伊木马、劫持程序和间谍软件所利用的位置。 注册表键: Code:
HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\IniFileMapping 使用的文件: c:\windows\system.ini c:\windows\win.ini 例子列表 F0- system.ini: shell=Explorer.exe Something.exe Code:
F2-REG:system.ini: UserInit=userinit,nddeagnt.exe 对于 F0 ,如果你见到一个类似 Shell=Explorer.exe something.exe 的描述,那么你应该确实的删除它。你通常可以删除这些项目,F2-REG:system.ini: shell=explorer.exe beta.exe 但是你应该查询 Google 和在下面列出的网站。 对于 F1 项目你应该google下在这里找到的项目以确定他们是否合法的程序。你也可以在下面的网站搜寻这些项目看看它是什么。 对于 F2, 如果你见到 “UserInit=userinit.exe,” 有或者没有 “nddeagnt.exe”,就像上述的例子中那样,那么你可以不理会它。 如果你见到 UserInit=userinit.exe(注意没有逗点) 那仍然没有问题,因此你应该不需要理会它。 如果你在 userinit.exe 后面发现其它的项目,那很可能是特洛伊木马或其他的恶意程序。 F2 Shell=也是一样:如果你单独见到 “explorer.exe”,它应该没有问题,否则,如果类似上面的例子, 那么它可能是潜在的特洛伊木马或恶意程序。你通常可以删除这些项目,但是你应该查询 Google 和在下面列出的站点。 请注意当修复这些项目的时候 HijackThis 不会删除除与它关连的文件。你一定要手动删除这些文件。 你可以在下面的站点寻找相关信息: Bleeping Computer Startup Database Answers that work Greatis Startup Application Database Pacman's Startup Programs List Pacman's Startup Lists for Offline Reading Kephyr File Database Wintasks Process Library N1,N2,N3,N4 区段 这些区段对应于Netscape和 Mozilla 浏览器的起始页和默认搜索页。 这些项目被储存在C:\Documents and Settings\YourUserName\Application Data 文件夹下不同的位置的 prefs.js 文件中。 Netscpae4 项目在通常存储在应用程序目录的 prefs.js 文件中,类似下面的位置C:\Program Files\Netscape\user\default\prefs.js。 N1 对应Netscape4 启始页和默认搜寻页。 N2 对应Netscape6 启始页和默认搜寻页。 N3 对应Netscape7 启始页和默认搜寻页。 N4 对应Mozilla 启始页和默认搜寻页。 使用的文件:prefs.js 由于间谍程序和劫机程序大多倾向于瞄准Internet Explorer所以这些项目通常是安全的。如果您发现在这里列出的网站不是您设置的, 您可以使用HijackThis修复它。目前只有一个已知的会改变这些设定的网站,就是在这里被讨论的 Lop.com。 O1 区段 这个区段对应主机(Host)文件重定向。 主机文件包含主机名(hostnames)到IP地址的映射。举例来说,如果我在我的主机文件中输入: 127.0.0.1 www.bleepingcomputer.com 当你试图访问 www.bleepingcomputer.com 的时候,它将会检查主机文件,查看项目并将其转换成IP地址 127.0.0.1 而不是它的正确地址。 主机文件重定向是指,一个劫持程序修改了你的主机文件,在你的试图访问一个特定的网站时候将你重定向到另外一个网站。 因此如果某人增加一个项目类似于: 127.0.0.1 www.google.com 那么当你试图访问 www.google.com 时你会被重定向到 127.0.0.1 这个你自己的计算机的地址。 例子列表 O1 - Hosts: 192.168.1.1 www.google.com 使用的文件:主机文件是能被任何文本文件编辑程序编辑的一个文本文件,在不同操作系统被预先设定储存在下列的位置中,除非你选择了不同的安装路径 - Code:
操作系统 位置 在Windows NT/2000/XP中主机文件的位置能够通过修改注册表键来改变。Windows 3.1 C:\WINDOWS\HOSTS Windows 95 C:\WINDOWS\HOSTS Windows 98 C:\WINDOWS\HOSTS Windows ME C:\WINDOWS\HOSTS Windows XP C:\WINDOWS\SYSTEM32\DRIVERS\ETC\HOSTS Windows NT C:\WINNT\SYSTEM32\DRIVERS\ETC\HOSTS Windows 2000 C:\WINNT\SYSTEM32\DRIVERS\ETC\HOSTS Windows 2003 C:\WINDOWS\SYSTEM32\DRIVERS\ETC\HOSTS 注册表键: HKEY_LOCAL_MACHINE\system\CurrentControlSet\Service\Tcpip\Parameter\: DatabasePath 如果你见到某个项目类似于上面的例子,并且你知道他们不是作为特定的原因存在的,你可以安全地移除他们。 如果你发现一个项目的主机文件位于 C:\Windows\Help\Host,这意味着你感染了 CoolWebSearch。 如果主机文件不在上表中的操作系统的默认位置上,那么它很有可能是由于被感染而引起的,你应该让 HijackThis 修复它。 你也可以下载Hoster程序使你能够恢复默认的主机文件。只要下载Hoster程序并运行它,点击Restore Original Hosts按钮然后退出即可。 O2 区段 这个区段对应于浏览器辅助程序对象(Browser Helper Object)。 浏览器辅助程序对象是为你的浏览器扩充功能的插件。他们可能被用于间谍程序和合法的程序,像是 Google 工具栏和 Adobe Acrobat Reader。 当你要决定是否移除它们的时候,你最好先研究下它们是否可能是合法的。 注册表键: HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects 例子列表 O2 - BHO: NAV Helper - {BDF3E430-B101-42AD-A544-FADC6B084872}- C:\Program Files\Norton Antivirus\NavShExt.dll 这里有一个由Tony Klein 编译的关于浏览器辅助程序对象和工具栏的已知 CSLIDs 的优良列表,在这里: CLSID 列表 。 当查阅列表的时候,使用列出的在花括弧({})之间的数字作为 CLSID。 这些列出的 CLSID 相关的注册表项目包含了关于浏览器辅助程序对象和工具栏的信息。 当你用 HijackThis 修复这一类型的项目的时候, HijackThis 将会尝试删除列出的引起问题的文件。 有时即使Internet Explorer已经关闭,文件却仍然在使用中。如果在你用 HijackThis 修复它之后,文件仍然存在, 建议你重新启动进入安全模式删除有问题的文件。 O3 区段 这个区段对应于Internet Explorer 工具栏。 这些是在Internet Explorer的导航栏的下面的工具栏以及菜单。 注册表键: HKLM\Software\Microsoft\Internet Explorer\Toolbar 例子列表 O3 - Toolbar: Norton Antivrius - {42CDD1 BF-3 FFB-4238-8AD1-7859DF00B1D6} - C:\Program Files\Norton Antivirus\NavShExt.dll 这里有一个由Tony Klein 编译的关于浏览器辅助程序对象和工具栏的已知 CSLIDs 的优良列表,在这里: CLSID 列表 。 当查阅列表的时候,使用列出的在花括弧({})之间的数字作为 CLSID。 这些列出的 CLSID 相关的注册表项目包含了关于浏览器辅助程序对象和工具栏的信息。 当你用 HijackThis 修复这一类型的项目的时候, HijackThis 将会尝试删除列出的引起问题的文件。 有时即使Internet Explorer已经关闭,文件却仍然在使用中。如果在你用 HijackThis 修复它之后,文件仍然存在, 建议你重新启动进入安全模式删除有问题的文件。 O4 区段 这个区段对应在确定的注册表键处和启动文件夹中列出的将自动在Windows 启动时被加载的应用程序。 在这里被列出的注册表键适用于 Windows XP,NT,和 2000。如果它们也适用于其他的操作系统,请告诉我: 如果它看起来像一个注册表键,它应该在下面列出注册表键列表之中。 Startup: 这些项目提及的应用程序藉由把它们放入已登录的使用者的启动组中来加载。 Global Startup: 这些项目提及的应用程序藉由把他们放入所有的使用者的启动组中来加载。 启动注册表键: Code:
HKLM\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce
HKCU\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce HKLM\Software\Microsoft\Windows\CurrentVersion\RunServices HKCU\Software\Microsoft\Windows\CurrentVersion\RunServices HKLM\Software\Microsoft\Windows\CurrentVersion\Run HKCU\Software\Microsoft\Windows\CurrentVersion\Run HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnceEx 注意: HKLM 代表 HKEY_LOCAL_MACHINE,而 HKCU 代表 HKEY_CURRENT_USER。 O11 区段 |