17173 > 新闻中心 > 木马动态新闻 > 深入探索 木马现形 ――特洛伊木马原理分析

深入探索 木马现形 ――特洛伊木马原理分析

2004-10-30 22:04:23 神评论
特洛伊木马是如何工作的

  一般的木马程序都包括客户端和服务端两个程序,其中客户端是用于攻击者远程控制植入木马的机器,服务器端程序即是木马程序他所做的第一步是要把木马的服务器端。攻击者要通过木马攻击你的系统,程序植入到你的电脑里面。

  目前木马入侵的主要途径还是先通过一定的方法把木马执行文件弄到被攻击者的电脑系统里,利用的途径有邮件附件、下载软件中等,然后通过一定的提示故意误导被攻击者打开执行文件,比如故意谎称这个木马执行文件,是你朋友送给你贺卡,可能你打开这个文件后,确实有贺卡的画面出现,但这时可能木马已经悄悄在你的后台运行了。一般的木马执行文件非常小,大部分都是几K到几十K,如果把木马捆绑到其他正常文件上,你很难发现,所以,有一些网站提供的软件下载往往是捆绑了木马文件的,你执行这些下载的文件,也同时运行了木马。

  木马也可以通过Script、ActiveX及Asp.CGI交互脚本的方式植入,由于微软的浏览器在执行Senipt脚本存在一些漏洞。攻击者可以利用这些漏洞传播病毒和木马,甚至直接对浏览者电脑进行文件操作等控制。前不久献出现一个利用微软Scripts脚本漏洞对浏览者硬盘进行格式化的HTML页面。如果攻击者有办法把木马执行文件下载到攻击主机的一个可执行WWW目录夹里面,他可以通过编制CGI程序在攻击主机上执行木马目录。此外,木马还可以利用系统的一些漏洞进行植人,如微软著名的US服务器溢出漏洞,通过一个IISHACK攻击程序即可使IIS服务器崩溃,并且同时攻击服务器,执行远程木马执行文件。

  当服务端程序在被感染的机器上成功运行以后,攻击者就可以使用客户端与服务端建立连接,并进一步控制被感染的机器。在客户端和服务端通信协议的选择上,绝大多数木马使用的是TCP/IP协议,但是也有一些木马由于特殊的原因,使用UDP协议进行通讯。当服务端在被感染机器上运行以后,它一方面尽量把自己隐藏在计算机的某个角落里面,以防被用户发现;同时**某个特定的端口,等待客户端与其取得连接;另外为了下次重启计算机时仍然能正常工作。木马程序一般会通过修改注册表或者其他的方法让自己成为自启动程序。

  木马的隐藏方式

  1.在任务栏里隐藏

  这是最基本的隐藏方式。如果在windows的任务栏里出现一个莫名其妙的图标,傻子都会明白是怎么回事。要实现在任务栏中隐藏在编程时是很容易实现的。我们以VB为例。在VB中,只要把from的Visible属性设置为False,ShowInTaskBar设为False程序就不会出现在任务栏里了。

  2.在任务管理器里隐藏

  查看正在运行的进程最简单的方法就是按下Ctrl+Alt+Del时出现的任务管理器。如果你按下Ctrl+Alt+Del后可以看见一个木马程序在运行,那么这肯定不是什么好木马。所以,木**千方百计地伪装自己,使自己不出现在任务管理器里。木马发现把自己设为 "系统服务“就可以轻松地骗过去。

  因此,希望通过按Ctrl+Alt+Del发现木马是不大现实的。

  3.端口

  一台机器有65536个端口,你会注意这么多端口么?而木马就很注意你的端口。如果你稍微留意一下,不难发现,大多数木马使用的端口在1024以上,而且呈越来越大的趋势;当然也有占用1024以下端口的木马,但这些端口是常用端口,占用这些端口可能会造成系统不正常,这样的话,木马就会很容易暴露。也许你知道一些木马占用的端口,你或许会经常扫描这些端口,但现在的木马都提供端口修改功能,你有时间扫描65536个端口么?

  4.隐藏通讯

  隐藏通讯也是木马经常采用的手段之一。任何木马运行后都要和攻击者进行通讯连接,或者通过即时连接,如攻击者通过客户端直接接人被植人木马的主机;或者通过间接通讯。如通过电子邮件的方式,木马把侵入主机的敏感信息送给攻击者。现在大部分木马一般在占领主机后会在1024以上不易发现的高端口上驻留;有一些木**选择一些常用的端口,如80、23,有一种非常先进的木马还可以做到在占领80HTTP端口后,收到正常的HTTP请求仍然把它交与Web服务器处理,只有收到一些特殊约定的数据包后,才调用木马程序。

  5.隐藏隐加载方式

  木马加载的方式可以说千奇百怪,无奇不有。但殊途同归,都为了达到一个共同的目的,那就是使你运行木马的服务端程序。如果木马不做任何伪装,就告诉你这是木马,你会运行它才怪呢。而随着网站互动化避程的不断进步,越来越多的东西可以成为木马的传播介质,Java Script、VBScript、ActiveX.XLM....几乎WWW每一个新功能部会导致木马的快速进化。

  6.最新隐身技术

  在Win9x时代,简单地注册为系统进程就可以从任务栏中消失,可是在Windows2000盛行的今天。这种方法遭到了惨败。注册为系统进程不仅仅能在任务栏中看到,而且可以直接在Services中直接控制停止。运行(太搞笑了,木马被客户端控制)。使用隐藏窗体或控制台的方法也不能欺骗无所不见的Admlin大人(要知道,在NT下,Administrator是可以看见所有进程的)。在研究了其他软件的长处之后,木马发现,Windows下的中文汉化软件采用的陷阱技术非常适合木马的使用。

  这是一种更新、更隐蔽的方法。通过修改虚拟设备驱动程序(VXD)或修改动态遵掇库 (DLL)来加载木马。这种方法与一般方法不同,它基本上摆脱了原有的木马模式---**端口,而采用替代系统功能的方法(改写vxd或DLL文件),木**将修改后的DLL替换系统已知的DLL,并对所有的函数调用进行过滤。对于常用的调用,使用函数转发器直接转发给被替换的系统DLL,对于一些相应的操作。实际上。这样的事先约定好的特种情况,DLL会执行一般只是使用DLL进行**,一旦发现控制端的请求就激活自身,绑在一个进程上进行正常的木马操作。这样做的好处是没有增加新的文件,不需要打开新的端口,没有新的进程,使用常规的方法监测不到它。在往常运行时,木马几乎没有任何瘫状,且木马的控制端向被控制端发出特定的信息后,隐藏的程序就立即开始运作。

  特洛伊木马具有的特性

  1.包含干正常程序中,当用户执行正常程序时,启动自身,在用户难以察觉的情况下,完成一些危害用户的操作,具有隐蔽性

  由于木马所从事的是 "地下工作",因此它必须隐藏起来,它会想尽一切办法不让你发现它。很多人对木马和远程控制软件有点分不清,还是让我们举个例子来说吧。我们进行局域网间通讯的常用软件PCanywhere大家一定不陌生吧?我们都知道它是一款远程控制软件。PCanywhere比在服务器端运行时,客户端与服务器端连接成功后,客户端机上会出现很醒目的提示标志;而木马类的软件的服务器端在运行的时候应用各种手段隐藏自己,不可能出现任何明显的标志。木马开发者早就想到了可能暴露木马踪迹的问题,把它们隐藏起来了。例如大家所熟悉木马修改注册表和而文件以便机器在下一次启动后仍能载入木马程式,它不是自己生成一个启动程序,而是依附在其他程序之中。有些木马把服务器端和正常程序绑定成一个程序的软件,叫做exe-binder绑定程序,可以让人在使用绑定的程序时,木马也入侵了系统。甚至有个别木马程序能把它自身的exe文件和服务端的图片文件绑定,在你看图片的时候,木马便侵人了你的系统。它的隐蔽性主要体现在以下两个方面:

  (1)不产生图标

  木马虽然在你系统启动时会自动运行,但它不会在 "任务栏"中产生一个图标,这是容易理解的,不然的话,你看到任务栏中出现一个来历不明的图标,你不起疑心才怪呢!

  (2)木马程序自动在任务管理器中隐藏,并以"系统服务"的方式欺骗操作系统。

  2.具有自动运行性。

  木马为了控制服务端。它必须在系统启动时即跟随启动,所以它必须潜人在你的启动配置文件中,如win.ini、system.ini、winstart.bat以及启动组等文件之中。

  3.包含具有未公开并且可能产生危险后果的功能的程序。

  4.具备自动恢复功能。

  现在很多的木马程序中的功能模块巴不再由单一的文件组成,而是具有多重备份,可以相互恢复。当你删除了其中的一个,以为万事大吉又运行了其他程序的时候,谁知它又悄然出现。像幽灵一样,防不胜防。

  5.能自动打开特别的端口。

  木马程序潜人你的电脑之中的目的主要不是为了破坏你的系统,而是为了获取你的系统中有用的信息,当你上网时能与远端客户进行通讯,这样木马程序就会用服务器客户端的通讯手段把信息告诉黑客们,以便黑客们控制你的机器,或实施进一步的人侵企图。你知道你的电脑有多少个端口?不知道吧?告诉你别吓着:根据TCP/IP协议,每台电脑可以有256乘以256个端口,也即从0到65535号 "门",但我们常用的只有少数几个,木马经常利用我们不大用的这些端口进行连接,大开方便之 "门"。

  6、功能的特殊性。

  通常的木马功能都是十分特殊的,除了普通的文件操作以外,还有些木马具有搜索cache中的口令、设置口令、扫描目标机器人的IP地址、进行键盘记录、远程注册表的操作以及锁定鼠标等功能。上面所讲的远程控制软件当然不会有这些功能,毕竟远程控制软件是用来控制远程机器,方便自己操作而已,而不是用来黑对方的机器的。

  中木马后出现的状况

  对于一些常见的木马,如SUB7、BO2000、冰河等等,它们都是采用打开TCP端口**和写人注册表启动等方式,使用木马克星之类的软件可以检测到这些木马,这些检测木马的软件大多都是利用检测TCP连结、注册表等信息来判断是否有木马人侵,因此我们也可以通过手工来侦测木马。

  也许你会对硬盘空间莫名其妙减少500M感到习以为常,这的确算不了什么,天知道Windows的临时文件和那些乌七八糟的游戏吞噬了自己多少硬盘空间。可是,还是有一些现象会让你感到警觉,一旦你觉得你自己的电脑感染了木马,你应该马上用杀毒软件检查一下自己的计算机,然后不管结果如何,就算是Norton告诉你,你的机器没有木马,你也应该再亲自作一次更深人的调查,确保自己机器安全。经常关注新的和出名的木马的特性报告,这将对你诊断自己的计算机问题很有帮助。

  (1)当你浏览一个网站,弹出来一些广告窗口是很正常的事情,可是如果你根本没有打开浏览器,而览浏器突然自己打开,并且进入某个网站,那么,你要小心。

  (2)你正在操作电脑,突然一个警告框或者是询问框弹出来,问一些你从来没有在电脑上接触过的间题。

  (3)你的Windows系统配置老是自动莫名其妙地被更改。比如屏保显示的文字,时间和日期,声音大小,鼠标灵敏度,还有CD-ROM的自动运行配置。

  (4)硬盘老没缘由地读盘,软驱灯经常自己亮起,网络连接及鼠标屏幕出现异常现象。

  这时,最简单的方法就是使用netstat-a命令查看。你可以通过这个命令发现所有网络连接,如果这时有攻击者通过木马连接,你可以通过这些信息发现异常。通过端口扫描的方法也可以发现一些弱智的木马,特别是一些早期的木马,它们捆绑的端口不能更改,通过扫描这些固定的端口也可以发现木马是否被植入。

  当然,没有上面的种种现象并不代表你就绝对安全。有些人攻击你的机器不过是想寻找一个跳板。做更重要的事情;可是有些人攻击你的计算机纯粹是为了好玩。对于纯粹处于好玩目的的攻击者,你可以很容易地发现攻击的痕迹;对于那些隐藏得很深,并且想把你的机器变成一台他可以长期使用的肉鸡的黑客们,你的检查工作将变得异常艰苦并且需要你对入侵和木马有超人的敏感度,而这些能力,都是在平常的电脑使用过程日积月累而成的。

  我们还可以通过软件来检查系统进程来发现木马。如利用进程管理软件来查看进程,如果发现可疑进程就杀死它。那么,如何知道哪个进程是可疑的呢?教你一个笨方法,有以下进程绝对是正常的:EXPLORER.EXE、KERNEL32.DLL、MPREXE.EXE、MSGSRVINTERNAT.EXE、32.EXE、SPOOL32.EXEIEXPLORE.EXE(如果打开了IE),而出现了其他的、你没有运行的程序的进程就很可疑了。一句话,具体情况具体分析。

  木马是如何启动的

  作为一个优秀的木马,自启动功能是必不可少的,这样可以保证木马不会因为你的一次关机操作而彻底失去作用。正因为该项技术如此重要,所以,很多编程人员都在不停地研究和探索新的自启动技术,并且时常有新的发现。一个典型的例子就是把木马加入到用户经常执行的程序 (例如explorer.exe)中,用户执行该程序时,则木马自动发生作用。当然,更加普遍的方法是通过修改Windows系统文件和注册表达到目的,现经常用的方法主要有以下几种:

  1.在Win.ini中启动

  在Win.ini的[windows]字段中有启动命令"load="和"run=",在一般情况下 "="后面是空白的,如果有后跟程序,比方说是这个样子:

  run=c:\\windows\\file.exe

  load=c:\\windows\\file.exe

  要小心了,这个file.exe很可能是木马哦。

  2.在System.ini中启动

  System.ini位于Windows的安装目录下,其[boot]字段的shell=Explorer.exe是木马喜欢的隐藏加载之所,木马通常的做法是将该何变为这样:shell=Explorer.exefile.exe。注意这里的file.exe就是木马服务端程序!

  另外,在System.中的[386Enh]字段,要注意检查在此段内的"driver=路径\\程序名"这里也有可能被木马所利用。再有,在System.ini中的[mic]、[drivers]、[drivers32]这3个字段,这些段也是起到加载驱动程序的作用,但也是增添木马程序的好场所,现在你该知道也要注意这里喽。

  3.利用注册表加载运行

  如下所示注册表位置都是木马喜好的藏身加载之所,赶快检查一下,有什么程序在其下。

  4.在Autoexec.bat和Config.sys中加载运行

  请大家注意,在C盘根目录下的这两个文件也可以启动木马。但这种加载方式一般都需要控制端用户与服务端建立连接后,将己添加木马启动命令的同名文件上传到服务端覆盖这两个文件才行,而且采用这种方式不是很隐蔽。容易被发现,所以在Autoexec.bat和Confings中加载木马程序的并不多见,但也不能因此而掉以轻心。

  5.在Winstart.bat中启动

  Winstart.bat是一个特殊性丝毫不亚于Autoexec.bat的批处理文件,也是一个能自动被Windows加载运行的文件。它多数情况下为应用程序及Windows自动生成,在执行了Windows自动生成,在执行了Win.com并加截了多数驱动程序之后

  开始执行 (这一点可通过启动时按F8键再选择逐步跟踪启动过程的启动方式可得知)。由于Autoexec.bat的功能可以由Witart.bat代替完成,因此木马完全可以像在Autoexec.bat中那样被加载运行,危险由此而来。

  6.启动组

  木马们如果隐藏在启动组虽然不是十分隐蔽,但这里的确是自动加载运行的好场所,因此还是有木马喜欢在这里驻留的。启动组对应的文件夹为C:\\Windows\\start menu\\programs\\startup,在注册表中的位置:HKEY_CURRENT_USER\\Software\\Microsoft\\windows\\CurrentVersion\\Explorer\\shell

  Folders Startup="c:\\windows\\start menu\\programs\\startup"。要注意经常检查启动组哦!

  7.*.INI

  即应用程序的启动配置文件,控制端利用这些文件能启动程序的特点,将制作好的带有木马启动命令的同名文件上传到服务端覆盖这同名文件,这样就可以达到启动木马的目的了。只启动一次的方式:在winint.ini.中(用于安装较多)。

  8.修改文件关联

  修改文件关联是木马们常用手段 (主要是国产木马,老外的木马大都没有这个功能),比方说正常情况下TXT文件的打开方式为Notepad.EXE文件,但一旦中了文件关联木马,则txt文件打开方式就会被修改为用木马程序打开,如著名的国产木马冰河就是这样干的. "冰河"就是通过修改HKEY_CLASSES_ROOT\\txtfile\\whell\\open\\command下的键值,将“C:\\WINDOWS\OTEPAD.EXE本应用Notepad打开,如著名的国产HKEY一CLASSES一ROOT\\txt闹e\\shell\\open\\commandT的键值,将 "C:\\WINDOWS\OTEPAD.EXE%l"改为 "C:\\WINDOWS\\SYSTEM\\SYSEXPLR.EXE%l",这样,一旦你双击一个TXT文件,原本应用Notepad打开该文件,现在却变成启动木马程序了,好狠毒哦!请大家注意,不仅仅是TXT文件,其他诸如HTM、EXE、ZIP.COM等都是木马的目标,要小心搂。

  对付这类木马,只能经常检查HKEY_C\\shell\\open\\command主键,查看其键值是否正常。

  9.捆绑文件

  实现这种触发条件首先要控制端和服务端已通过木马建立连接,然后控制端用户用工具软件将木马文件和某一应用程序捆绑在一起,然后上传到服务端覆盖源文件,这样即使木马被删除了,只要运行捆绑了木马的应用程序,木马义会安装上去。绑定到某一应用程序中,如绑定到系统文件,那么每一次Windows启动均会启动木马。

  10.反弹端口型木马的主动连接方式

  反弹端口型木马我们已经在前面说过了,由于它与一般的木马相反,其服务端 (被控制端)主动与客户端 (控制端)建立连接,并且**端口一般开在80,所以如果没有合适的工具、丰富的经验真的很难防范。这类木马的典型代表就是网络神偷"。由于这类木马仍然要在注册表中建立键值注册表的变化就不难查到它们。同时,最新的天网防火墙(如我们在第三点中所讲的那样),因此只要留意也可在网络神偷服务端进行主动连接时发现它。




















































































































































【来源:】