特洛伊木马(简称为“木马”,英文为trojan)由于不感染其他的文件,也不破坏计算机系统,同时也不进行自我的复制,所以木马不具有传统计算机病毒的特征。由于目前市面上的杀病毒软件一般都直接支持对木马的查杀,所以大家习惯于将木马称为“木马病毒” 。
01、木马的特征和类型
在恶意代码家族中,木马主要用来作为远程控制和窃取用户隐私信息,它同时具有计算机病毒和后门程序的特征。
1.木马的特征
一般的木马程序包括客户端和服务器端两个程序,其中客户端用于攻击者远程控制植入木马的计算机(即服务器端),而服务器端即是植入木马程序的远程计算机。当木马程序或带有木马的其他程序执行后,木马首先会在系统中潜伏下来,并修改系统的配置参数,每次启动系统时都能够实现木马程序的自动加载。有时,木马程序会修改某一类型文件的关联,从而使木马的潜伏变得更加容易,并不易被用户发现。如图6-19所示,运行木马的客户端和服务器端在工作方式上属于客户机/服务器模式(Client/Server,C/S),其中,客户端在本地主机执行,用来控制服务器端。而服务器端则在远程主机上执行,一旦执行成功该主机就中了木马,就可以成为一台服务器,可以被控制者进行远程管理。
▍图6-19 木马的系统组成
木马通常采取如图6-20所示的方式实施攻击:配置木马(伪装木马)→传播木马(通过文件下载或电子邮件等方式)→运行木马(自动安装并运行)→信息泄露→建立连接→远程控制。
▍图6-20 木马的运行过程
目前,木马入侵的主要途径是通过电子邮件的附件或文件下载等方式,将木马程序复制到用户的计算机中,然后通过修改系统配置文件或故意误导用户(如谎称有人给你送贺卡)使木马程序悄悄地在后台执行。一般的木马程序只有几KB到几十KB的大小,所以当木马程序隐藏在正常的文件中后用户一般很难发现。
木马也可以通过脚本、ActiveX及ASP.CGI交互脚本的方式植入,由于IE浏览器在执行脚本时存在一些漏洞,这就为攻击者植入木马提供了便利。例如,曾出现过一个利用微软公司的Scripts脚本漏洞对用户的硬盘进行格式化的HTML页面。
2.常见木马的种类
从木马程序产生以来,不但其隐蔽性得到加强,而且木马的编写和控制技术及功能也在不断加强。从总体来看,可以对目前已发现的木马程序进行以下的分类。
1)远程控制型木马。远程控制型木马一般集成了其他木马和远程控制软件的功能,实现对远程主机的入侵和控制,包括访问系统的文件,截取主机用户的私人信息(包括系统帐号、银行账号等)。在木马家族中,远程控制型木马是数量最多的一种,也是危害最大的一种,它可以让攻击者完全控制已植入木马的主机,从事一些甚至连本地用户本身都不能顺利进行的操作。大家熟知的冰河就是一个远程控制型木马,当服务端程序运行时,客户端只要能够知道服务器的IP地址,就会方便地实现远程控制,从事像键盘记录、上传和下载信息、修改注册表等操作。
2)密码发送型木马。密码发送型木马是专门为了窃取别人计算机上的密码而编写的,木马一旦被执行,就会自动搜索内存、Cache、临时文件夹以及其他各种包含有密码的文件,如Windows Server操作系统的SAM文件中保存的Administrator账户密码等。一旦搜索到有用的密码,木马就会利用免费的电子邮件服务将密码发送到指定的邮箱,从而达到非法窃取别人计算机上密码的目的。这种木马的设计目的是找到所有的隐藏密码并且在用户不知道的情况下把密码发送到指定的信箱。
3)键盘记录型木马。键盘记录型木马的设计目的主要是用于记录用户的键盘敲击,并且在日志文件(log文件)中查找密码。该类木马分别记录用户在线和离线状态下敲击键盘时的按键信息。攻击者在获得这些按键信息后,很容易就会得到用户的密码等有用信息,包括用户可能在网上输入的银行账号。当然,在该类木马中,记录信息的返回一般也通过邮件发送功能来完成。
4)破坏型木马。破坏型木马的功能比较单一,即破坏已植入木马的计算机上的文件系统,轻则使重要数据被删除,重则使系统崩溃。破坏型木马的功能与计算机病毒有些相似,不同的是木破坏型木马的激活是由攻击者控制的,并且传播能力也比病毒慢。
5)DoS攻击型木马。随着DoS (Denial of Service,拒绝服务)和DDoS(Distributed Denial of Service,分布式拒绝服务)攻击越来越广泛的应用,与之相伴的DoS攻击型木马也越来越流行。当黑客入侵了一台主机并植入了DoS攻击型木马,那么这台主机就成为黑客进行DoS攻击的最得力助手。黑客控制的主机越多,发起的DoS攻击也就越具有破坏性。由此可以看出,DoS攻击型木马的危害不是体现在被植入木马的主机上,而是攻击者利用它作为攻击信息的发起源头来攻击其他的计算机,从而使被攻击的计算机瘫痪。另外,还有一种称之为邮件炸弹的木马,它有些类似于DoS攻击型木马,一旦某台主机被植入并运行了木马,木马就会随机自动生成大量的邮件,并将其发送到特定的邮箱中,直到对方的邮件服务器瘫痪为止。
6)代理型木马。在计算机网络中,代理是一种被广泛使用的技术。所谓代理其实就是一个跳板或中转,即两台主机之间的通信必须借助另一台主机(该主机在网络中称为代理服务器)来完成。代理型木马被植入主机后,像DoS攻击型木马一样,该主机本身不会遭到破坏。其实,代理型木马这样做的初衷便是掩盖自己的足迹,谨防别人发现自己的身份。通过代理型木马,攻击者可以在匿名的情况下使用Telnet远程登录程序以及ICQ、QQ、IRC等即时信息程序,从而隐蔽自己的踪迹。
7)FTP木马。FTP木马使用了网上广泛使用的FTP功能,通过FTP使用的TCP 21端口来实现主机之间的连接。现在新型的FTP木马还加上了密码功能,这样只有攻击者本人才知道正确的密码,从而进入对方的计算机。FTP木马是出现比较早的一类木马。
8)程序杀手木马。程序杀手木马的功能就是关闭对方计算机上运行的某些程序(多为专门的防病毒或防木马程序),让其他的木马安全进入,实现对主机的攻击。
9)反弹端口型木马。反弹端口型木马主要是针对防火墙而设计的。防火墙一般将网络分为内、外两部分,其中主要目的是保护内网资源。所以防火墙会对从外网进入内网的数据包进行严格的分析和过滤,而对从内网发往外网的数据包不作较多的处理。而木马的工作原理与防火墙正好相反,一般情况下,木马的攻击多由客户端发起,所以当被攻击者位于防火墙的内部时,位于外网的客户端将无法与位于内网的服务器端建立连接。针对这类情况,便出现了反弹端口型木马。反弹端口型木马的服务端使用主动端口,客户端使用被动端口。木马定时监测控制端的存在,发现控制端可以连接后便立即弹出端口来主动连接控制端打开的主动端口。多数反弹端口型木马被动端口设置为80端口以避开用户使用端口扫描软件发现木马的存在。很显然,防火墙一般是不会封闭80端口的,否则所有的Web页面将无法打开。
10)硬件木马。硬件木马是指插入原始电路的微小的恶意电路。这种电路潜伏在原始电路之中,在电路运行到某些特定的值或条件时,使原始电路发生本不该有的情况。这种恶意电路可对原始电路进行有目的性的修改,如泄露信息给攻击者,使电路功能发生改变,甚至直接损坏电路。硬件木马能够实现对专用集成电路(ASIC)、微处理器、微控制器、网络处理器、数字信号处理器(DSP)等硬件的修改。
另外,随着比特币、勒索软件等应用的流行,在已有木马不断产生新的变种的同时,还出现了一些新的木马类型,如挖矿木马可以利用网络中的计算机的帮助攻击者进行挖矿,以赚取比特币;另外,新的木马与僵尸程序结合,实施网络勒索攻击等。
02、木马的隐藏方式
由于木马所从事的是“地下工作”,因此为了防止“别人”发现它,它必须采取一定的方式隐藏起来。木马开发者一开始就想到了可能暴露木马踪迹的问题。例如木马会修改注册表和系统文件,以便计算机在下一次启动后仍能载入木马程序,而不需要生成一个启动程序。有些木马在服务器端实现了与正常程序的绑定,这种绑定称之为“exe-binder绑定程序”,可以在使用被绑定的正常程序时实现木马的入侵。有些木马程序能把它自身的exe可执行文件和服务端的图片文件(如扩展名为.jpg、.bmp的图片文件)绑定,在用户打开图片时,木马便侵人了系统。总体来看,木马主要通过以下几种方式进行隐藏。
1.在“任务栏”里隐藏
这是木马最常采用的隐藏方式。为此,如果用户在Windows的“任务栏”里发现莫名其妙的图标,应怀疑可能是木马程序在运行。但现在的许多木马程序已实现了在任务栏中的隐藏,当木马运行时已不会在任务栏中显示其程序图标。
2.在“任务管理器”里隐藏
在任务栏的空白位置单击鼠标右键,在出现的快捷菜单中选择“任务管理器”,打开其“进程”列表,就可以查看正在运行的进程。在进程列表中如果看到一些来路不明的名称,这时可以怀疑是木马程序。为了隐藏自己,现在的一些木马程序已实现了在进程中的伪装,使自己不出现在任务管理器里。有时,木马程序会将自己伪装为“系统服务”进程以骗过用户。
3.隐藏通信方式
隐藏通信也是木马经常采用的手段之一。通过前面的介绍读者已经明白任何木马运行后都要和攻击者(客户端)进行通信连接。这种连接一般有直接连接和间接连接两种方式,其中“直接连接”是指攻击者通过客户端直接接人植有木马的主机(服务器端);而“间接连接”即是如通过电子邮件、文件下载等方式,木马把侵入主机的敏感信息送给攻击者。现在大部分木马一般会在植入主机后,通过TCP或UDP端口进行驻留,而且有些木马多选择一些像53、80、23等常用的端口。例如,有一种木马还可以做到在通过80端口进行HTTP连接后,在收到正常的HTTP请求时仍然将其交给Web服务器进行处理,只有收到一些特殊约定的数据包时才调用木马程序。
4.隐藏加载方式
木马在植入主机后如果不采取一定的方式运行也就等于在用户的计算机上拷入了一个无用的文件,为此在木马值入主机后需要伺机运行。在运行时,如果木马不做任何伪装可以会被用户很快发现,所以木马必须采取非常隐蔽的方式通过欺骗用户来运行。
木马为了控制服务端,必须在系统启动时跟随启动,所以它必须潜入用户计算机的启动配置文件中,如win.ini、system.ini、winstart.bat以及启动组文件等。目前,随着一些互功网站的大量应用,为木马的植入和运行提供了方便之门,像Java Script、VBScript、ActiveX、XML等WWW的每一个新功能已几乎成为木马入侵的媒介。
5.通过修改系统配置文件来隐藏
木马可以通过修改VXD(虚拟设备驱动程序)或DLL(动态