|
在特洛伊木马防御方面,由于网络木马具有相当高的复杂性和行为不确定性,因此防范木马需要将监测与预警、通信阻断、系统加固及修复、应急管理等多种技术综合集成实现。下面主要说明近几年的特洛伊木马防范技术。
|
|
|
|
基本原理是根据特洛伊木马在受害计算机系统上留下的网络通信端口号痕迹进行判断,如果某个木马的端口在某台机器上开放,则推断该机器受到木马的侵害。例如冰河使用的监听端口是7626,Back Orifice 2000则是使用54320等。于是,可以利用查看本机开放端口的方法来检查自己是否被植入了木马。查看开放端口的技术有:①系统自带的netstat命令;②用端口扫描软件远程检测机器。
|
|
|
|
基本原理是根据特洛伊木马在受害计算机系统上对重要系统文件进行修改留下的痕迹进行判断,通过比对正常的系统文件变化来确认木马的存在。这些重要文件一般与系统的自启动相关,木马通过修改这些文件使得木马能够自启动。例如,在Windows系统中,Autostart Folder、Win.ini、System.ini、Wininit.ini、Winstart.bat、Autoexec.bat、Config.sys、Explorer Startup等常被木马修改。以检查System.ini文件为例,在[BOOT]下面有一个“shell=文件名”。正确的文件名应该是“explorer.exe”,如果不是“explorer.exe”,而是“shell=explorer.exe程序名”,那么后面跟着的那个程序就是木马程序,就说明计算机系统已经被安装上木马。
|
|
|
|
Windows类型的木马常通过修改注册表的键值来控制木马的自启动,该方法的基本原理是检查计算机的注册表键值异常情况以及对比已有木马的修改注册表的规律,综合确认系统是否受到木马侵害。如下图所示,Windows木马经常将注册表修改成以下信息。
|
|
|
|
|
在Windows系统中,通过regedit命令打开注册表编辑器,再点击至“HKEY_ LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run”目录下,查看键值中有没有异常的自动启动文件,特别是扩展名为EXE的文件。例如,“Acid Battery v1.0木马”会将注册表“HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run”下的Explorer键值改为Explorer=“C:\Windows\expiorer.exe”,而且“木马”程序与真正的Explorer之间只有“i”与“l”的差别。
|
|
|
|
Rootkit是典型的具有隐藏能力的特洛伊木马。目前,检测Rootkit的技术有三类,分别叙述如下:
|
|
|
第一类是针对已知的Rootkit进行检测,这种方法基于Rootkit的运行痕迹特征来判断计算机系统是否存在木马。这种方式主要的缺点是只能针对特定的已知的Rootkit,而对未知的Rootkit几乎无能为力。
|
|
|
第二类是基于执行路径的分析检测方法。其基本原理是安装Rootkit的系统在执行一些操作时,由于要完成附加的Rootkit的功能,如隐藏进程、文件等,则需要执行更多的CPU指令,通过利用x86系列的CPU提供的步进模式(stepping mode),在CPU每执行一条指令后进行计数,将测量到的结果与正常的干净的系统测得的数据进行比较,然后根据比较的差异,判断系统是否可能已被安装了Rootkit。这种方法不仅限于已知的Rootkit,对于所有通过修改系统执行路径来达到隐藏和执行功能目的的Rootkit都有很好的作用。patchfinder就是从实用的角度实现了EPA,patchfinder2在Win 2000平台上实现了执行路径分析技术,它是一个设计复杂的检测工具,可以用来检测系统中的库和内核是否被侵害。利用patchfinder工具,可以发现许多Rootkit,例如Hacker Defender、APX、Vaniquish、He4Hook等。
|
|
|
第三类是直接读取内核数据的分析检测方法,该方法针对通过修改内核数据结构的方法来隐藏自己的Rootkit,其基本原理是直接读取内核中的内部数据以判断系统当前的状态。比如,针对修改系统活动进程链表来隐藏进程的Rootkit,可以直接读取KiWaitInListHead和KiWaitOutListHead链表来遍历系统内核线程链表ETHREAD,从而获得当前系统的实际进程链表来检测隐藏进程。Klister是实现该方法的实例,它是Windows 2000平台下的一组简单的工具,用来读取内核的数据结构,以获得关于系统状态的可靠的信息,诸如所有的进程。Klister包括一个内核模块和一些用户态的程序,这些用户态程序与内核模块通信以显示内核的数据结构。最有趣的地方是被内核调度代码使用的线程链表,当读取这些链表时,就可以确定得到的是包括了系统内所有线程的链表,包括被隐藏进程的线程,因此可以建立一个系统内所有进程的列表,从而检测出潜伏的Rootkit。
|
|
|
|
在网络中安装入侵检测系统,通过捕获主机的网络通信,检查通信的数据包是否具有特洛伊木马的特征,或者分析通信是否异常来判断主机是否受到木马的侵害。根据特洛伊木马的植入方法,防止特洛伊木马植入主要有下面几种方法:
|
|
|
. 不轻易安装未经过安全认可的软件,特别是来自公共网的软件。
|
|
|
. 提供完整性保护机制,即在需要保护的计算机上安装完整性机制,对重要的文件进行完整性检查。例如安装一种起完整性保护作用的设备驱动程序,这些程序拦截一些系统服务调用,禁止任何新的模块的载入,从而使系统免于Rootkit的危害。
|
|
|
. 利用漏洞扫描软件,检查系统存在的漏洞,然后针对相应的漏洞,安装补丁软件包。
|
|
|
|
特洛伊木马的传播和运行都依赖于网络通信,基于网络阻断特洛伊木马的技术方法的原理是利用防火墙、路由器、安全网关等网络设备,对特洛伊木马的通信进行阻断,从而使得特洛伊木马的功能失效或限制其传播。
|
|
|
|
清除特洛伊木马的技术方法有两种:手工清除方法和软件清除方法。其工作原理是删除特洛伊木马在受害机器上留下的文件,禁止特洛伊木马的网络通信,恢复木马修改过的系统文件或注册表。目前,市场上有专业的清除特洛伊木马的工具。
|
|
|