来源:
http://www.ns-bbs.com/te...sp?id=189 一、 引言
特洛伊木马是 Trojan Horse 的中译,是借自"木马屠城记"中那只木马的名称。古希腊有大军围攻特洛伊城,逾年无法攻下。有人献计制造一只高二丈的大木马假装作战马神,攻击数天后仍然无功,遂留下木马拔营而去。城中得到解围的消息,及得到"木马"这个奇异的战利品,全城饮酒狂欢。到午夜时份,全城军民尽入梦乡,匿于木马中的将士开暗门垂绳而下,开启城门及四处纵火,城外伏兵涌入,焚屠特洛伊城。后世称这只木马为"特洛伊木马",现今电脑术语借用其名,意思是"一经进入,后患无穷"。 特洛伊木马原则上它和 Laplink 、 PCanywhere 等程式一样,只是一种远端管理工具。而且本身不带伤害性,也没有感染力,所以不能称之为病毒(也有人称之为第二代病毒);但却常常被视之为病毒。原因是如果有人不当的使用,破坏力可以比病毒更强。
二、木马攻击原理
特洛伊木马是一个程式,它驻留在目标电脑里,可以随电脑自动启动并在某一连接进行侦听,在对接收的资料识别后,对目标电脑执行特定的****作。 木马,其实只是一个使用连接进行通讯的网路客户/伺服器程式。
基本概念:网路客户/伺服器模式的原理是一台主机提供伺服器(伺服端),另一台主机接受伺服器(客户端)。作为伺服端的主机一般会开启一个预设的连接埠并进行监听(Listen),如果有客户端向伺服端的这一连接埠提出连接请求(Connect Request),伺服端上的相对应程式就会自动执行,来回覆客户端的请求。对于特洛伊木马,被控制端就成为一台伺服器。
三、特洛伊木马隐身方法
木马程式会想尽一切办法隐藏自己,主要途径有:在工作程序中隐形:将程式设为「系统伺服器」可以伪装自己。当然它也会悄无声息地启动,木马会在每次使用者启动时自动载入伺服器端,Windows 系统启动时自动载入应用程式的方法,「木马」都会用上,如:win.ini、system.ini、注册表等等都是「木马」藏身的好地方。
在 win.ini 档案中,在[WINDOWS]下面,「run=」和「load=」是可能载入「木马」程式的途径,一般情况下,它们的等号后面什么都没有,如果发现后面跟有路径与档案名称不是您熟悉的启动档案,电脑就可能中「木马」了。当然也得看清楚,因为好多「木马」,如「AOL Trojan木马」,它把自身伪装成 command.exe 档案,如果不注意可能不会发现它不是真正的系统启动档案。
在 system.ini 档案中,在[BOOT]下面有个「shell=档案名称」。正确的档案名称应该是「explorer.exe」,如果不是「explorer.exe」,而是「shell= explorer.exe 程式名」,那么后面跟着的那个程式就是「木马」程式,就是说已经中「木马」了。
在注册表中的情况最复杂,使用 regedit 指令开启注册表编辑器,在点击至:「HKEY-LOCAL-MACHINE \Software \Microsoft \Windows \Current Version \Run」目录下,检视键值中有没有自己不熟悉的自动启动档案,副档名为 EXE,这里切记:有的「木马」程式产生的档案很像系统自身档案,想使用伪装蒙混过关,如「Acid Battery v1.0木马」,它将注册表「HKEY-LOCAL-MACHINE \SOFTWARE \Microsoft\Windows\CurrentVersion\Run」下的 Explorer 键值改为 Explorer =「C:\WINDOWS\expiorer.exe」,「木马」程式与真正的 Explorer 之间只有「i」与「l」的差别。当然在注册表中还有很多地方都可以隐藏「木马」程式,如:
「HKEY -CURRENT-USER\Software\Microsoft\Windows\CurrentVersion\Run」、「HKEY-USERS \Software\Microsoft\Windows\CurrentVersion\Run」的目录下都有可能,最好的办法就是在「HKEY-LOCAL-MACHINE\Software\Microsoft\Windows\ CurrentVersion\Run」 下找到「木马」程式的档案名称,再在整个注册表中搜寻即可。
目前,除了上面介绍的隐身技术外,更新、更隐蔽的方法已经出现,那就是-驱动程式及动态连结技术。 驱动程式及动态连结技术和一般的木马不同,它基本上摆脱了原有的木马模式-监听连接,而采用替代系统功能的方法(覆写驱动程式或动态连结)。
这样做的结果是:系统中没有增加新的档案(所以不能用扫瞄的方法搜寻)、不需要间@在 system.ini 档案中,在[BOOT]下面有个「shell=档案名称」。正确的档案名称应该是「explorer.exe」,如果不是「explorer.exe」,而是「shell= explorer.exe 程式名」,那么后面跟着的那个程式就是「木马」程式,就是说已经中「木马」了。
目前,除了上面介绍的隐身技术外,更新、更隐蔽的方法已经出现,那就是-驱动程式及动态连结技术。 驱动程式及动态连结技术和一般的木马不同,它基本上摆脱了原有的木马模式-监听连接,而采用替代系统功能的方法(覆写驱动程式或动态连结)。
这样做的结果是:系统中没有增加新的档案(所以不能用扫瞄的方法搜寻)、不需要开启新的连接(所以不能用连接监视的方法搜寻)、没有新的程序(所以使用程序检视的方法发现不了它,也不能用 kill 程序的方法终止它的执行)。在正常执行时木马几乎没有任何的症状,而一旦木马的控制端向被控端发出特定的讯息后,隐藏的程式就立即开始运作。
四、 特洛伊木马防御原理
知道了木马的攻击原理和隐身方法,我们就可以采取措施进行防御了。
连接埠扫瞄
连接埠扫瞄是检查远端机器有无木马的最好办法,连接埠扫瞄的原理非常简单,扫瞄程式尝试连接某个连接埠,如果成功,则说明连接埠开放,如果失败或超过某个特定的时间(逾时),则说明连接埠关闭。但对于驱动程式/动态连结木马,扫瞄连接是不起作用的。
检视连接
检视连接埠和连接扫瞄的原理基本相同,不过是在本地电脑上使用 netstat -a 检视所有的 TCP/UDP 连接,检视连接要比连接埠扫瞄快,但同样是无法查出驱动程式/动态连结木马,而且仅能在本地电脑使用。
检查注册表
上面在讨论木马的启动方式时已经提到,木马可以使用注册表启动(现在大部分的木马都是使用注册表启动的,至少也把注册表作为一个自我保护的方式),那么,我们同样可以使用检查注册表来发现木马在注册表里留下的痕迹。
寻找档案
寻找木马特定的档案也是一个常用的方法,木马的一个特征档案是 kernl32.exe,另一个是 sysexlpr.exe,只要删除了这两个档案,木马就已经不起作用了。