映像劫持AV终结者肆虐的元凶

技术与开发

提起AV终结者,许多曾感染过此病毒的朋友还心有余悸。此病毒会禁用用户电脑上的杀毒软件以及相关安全工具,让电脑失去安全保护,用户甚至无法访问与安全相关的网站;病毒难以清除,即使格式化系统分区并重装系统,依旧会再次感染病毒……利用这些厉害的招数,AV终结者初出江湖便一鸣惊人,之后变种频出四处肆虐,无数电脑惨被它“蹂躏”。而让AV终结者名声大振、让用户电脑上的杀毒软件失去作用成为一种摆设的元凶便是它所采用的病毒技术——映像劫持!由于AV终结者“一举成名”,如今越来越多的病毒也开始采用这一技术。映像劫持技术究竟有什么“魅力”,能让如此多的病毒青睐它呢?

映像劫持利用的是系统功能

什么叫映像劫持(IFEO劫持)?简单说就是我本来打算运行QQ程序,双击QQ程序快捷方式后,却打开了其他程序如记事本程序,那就可以说是记事本程序劫持了QQ程序,即要运行的程序被其他程序替代了。而实现这一目的,利用的就是系统映像IFEO(Image File Execution Options)的功能。

IFEO项原本是系统为了调试程序而设置的注册表项目,它位于Windows注册表中的“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options”。此项通常情况下只有管理员和拥有本地系统权限才可对它写入和删除,基于NT架构的Windows操作系统(Windows NT/2000/XP/2003/Vista)在执行程序运行请求时,首先会检查这是否为一个可执行文件,如果是可执行文件它又是何种格式?然后检查该文件是否存在于“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options”。存在即运行,如果不存在,则提示“指定的路径不正确”,或“系统找不到此文件”。

那么病毒是如何利用系统映像达到劫持的目的呢?举个的例子,假设名为“log_1.exe”的病毒想要劫持QQ程序,那么只需要在注册表的“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options”项下新建名为qq.exe的项,在此项中新建一键值为Debugger的字符串,内容为C:\log_1.exe(病毒所在路径),这时你会发现QQ已经无法运行,点击QQ的同时病毒却被运行了,这便是典型的映像劫持。

病毒为何偏爱映像劫持

映像技术对普通用户来说并无多大用处,然而由于它可以被利用来阻止一些程序的运行,同时又使另一些程序获得运行的机会,使得它成了一把双刃剑,一旦被病毒所利用,就有可能反过来对正常的系统造成危害。那么病毒为何喜欢利用映像劫持呢?

1.禁用大量安全软件,为自身运行“扫除障碍”

病毒可以通过这一项,禁用用户电脑中安装的大量安全软件,这是最突出的后果,也是病毒选择利用IFEO劫持的最主要原因。

大部分软件,特别是大型软件,包括杀毒软件和防火墙等安全软件,它们的主要文件,其文件名都是不变的。而映像劫持,恰恰就是以文件名来判断被劫持的程序。

病毒只需要考虑文件名这个因素,收集一个足够全面的安全软件程序名的列表,写一个循环,将在注册表中创建映像劫持项的相关语句作为循环体,在病毒运行时执行这几行代码,就可以将所需的映像劫持项写入注册表,从而把列表上的安全软件“一锅端”。成本是低廉的,而收获却是巨大的。而如果不采用映像劫持技术,要达到同样的目的,病毒可能需要根据不同的安全软件,设计各不相同的方案来应对,实现难度可能要大得多。

只要当病毒进入电脑的时候,杀毒软件不能阻止病毒运行(由于很多用户电脑中的杀毒软件都不是实时更新的,要满足这一点并不困难),那么病毒就会“先下手为强”,抛出映像劫持的“杀手锏”。用户重启系统后,杀毒软件就已经既不能启动,又不能升级了,没有了杀毒软件束缚的病毒,当然就更加可以为所欲为了。病毒不再需要像以前那样,为了在杀毒软件的眼皮底下“苟活”而不断地做免杀,出变种。

2.隐蔽自己,“悄无声息”地启动

一般的病毒、木马,会在一些常见注册表路径(如HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run)下创建启动项,以便达到开机自启动的目的。当用户觉察到自己的系统有异常,通常会注意这些常见的注册表启动项路径,通过观察路径中是否有陌生的项目,来判断系统中是否有病毒木马。

相比之下,IFEO项似乎一直都不引人注意,然而,只要系统有机会发出启动被IFEO劫持的程序的命令,那么Debugger键指向的程序也就会被启动。它是如此隐蔽,而用户又很可能无意中激活它。

试想一下,你可能只是双击了QQ程序,或者当你想要启动你的杀毒软件,但实际上却已经运行了病毒,而你却对此还一无所知。

3.对系统的影响可能一直延续到病毒被清除之后

同样与一般启动项不同,在病毒文件被清除之后,如果没有对相应的IFEO项进行处理,那么文件名被劫持的软件,在运行之时,IFEO劫持项将依然“有效”,这时由于对应的病毒文件已丢失,系统将会提示找不到文件。在清除相应的IFEO劫持项之前,文件名被劫持的软件仍然不能正常运行。

病毒所创建的IFEO劫持项,就像是给我们念的“紧箍咒”,稍有不注意,再次“触雷”,就会前功尽弃。遇到这样的病毒,就必须首先学会“在夹缝中求生”。

该如何应对影像劫持

IFEO劫持并非无懈可击,它的最大局限就是,永远只能针对文件名。在运行被IFEO劫持的安全软件工具之前,只须将程序文件名更改,就不受IFEO劫持的限制了。

当然,这只适用于一些绿色的小软件。而如杀毒软件和防火墙这样架构稍复杂的软件,由于其程序文件之间必须进行交叉,而文件名又是识别的重要标志,因而将默认文件名更改,仍然会导致程序运行不正常。所以,对付IFEO劫持的第一个突破口,恰恰不在于杀毒软件和防火墙,而应该在于其他的小工具,包括针对这些病毒的专杀程序。

当使用了这些工具对病毒进行初步的处理之后,就应该修复注册表中的IFEO项目,从而恢复包括杀毒软件在内的其他安全软件的使用,进一步将病毒清除干净。

对IFEO劫持的预防,也有一些简单易行的办法。在此我们要强调,在对病毒造成的IFEO劫持进行处理时,将IFEO项下所有子键全部删除的做法,以及为了预防IFEO劫持,而将IFEO项本身连子键一起删除的做法,都是不提倡的。IFEO本身就是系统提供的一项正常的功能,其中的一些子键,对系统正常稳定地运行以及程序的调试,起着一定的作用。更何况,即使IFEO项真的被全部删除了,当病毒进入系统时,也可以先加一行语句来自行创建它,因此这种方法实际上并不具有真正的预防能力。

一种相对较为有效的方法是,保留IFEO项以及正常项目,但对它设置相应的权限,将计算机管理员和系统对该路径的操作权限降低,去除其写入权限。经过这样的处理之后,即使病毒进入系统,以管理员或系统的权限启动,也不能直接进行IFEO劫持。