1、木马病毒的原理及特征分析1特洛伊木马的定义n特洛伊木马(Trojan Horse),简称木马,是一种恶意程序,是一种基于远程控制的黑客工具,一旦侵入用户的计算机,就悄悄地在宿主计算机上运行,在用户毫无察觉的情况下,让攻击者获得远程访问和控制系统的权限,进而在用户的计算机中修改文件、修改注册表、控制鼠标、监视/控制键盘,或窃取用户信息n古希腊特洛伊之战中利用木马攻陷特洛伊城;现代网络攻击者利用木马,采用伪装、欺骗(哄骗,Spoofing)等手段进入被攻击的计算机系统中,窃取信息,实施远程监控2n 特洛伊木马是一种秘密潜伏的能够通过远程网络进行控制的恶意程序。n 控制者可以控制被秘密植入木马的计算
2、机的一切动作和资源,是恶意攻击者进行窃取信息等的工具。他由黑客通过种种途径植入并驻留在目标计算机里。3n 木马可以随计算机自动启动并在某一端口进行侦听,在对目标计算机的的数据、资料、动作进行识别后,就对其执行特定的操作,并接受“黑客”指令将有关数据发送到“黑客大本营”。n 这只是木马的搜集信息阶段,黑客同时可以利用木马对计算 机进行进一步的攻击!这时的目标计算机就是大家常听到的“肉鸡”了!42特洛伊木马病毒的危害性n 特洛伊木马和病毒、蠕虫之类的恶意程序一样,也会删除或修改文件、格式化硬盘、上传和下载文件、骚扰用户、驱逐其他恶意程序。n 除此以外,木马还有其自身的特点:n 窃取内容;远程控制。
3、56n 常见的特洛伊木马,例如Back Orifice和SubSeven等,都是多用途的攻击工具包,功能非常全面,包括捕获屏幕、声音、视频内容的功能。这些特洛伊木马可以当作键记录器、远程控制器、FTP服务器、HTTP服务器、Telnet服务器,还能够寻找和窃取密码。n 由于功能全面,所以这些特洛伊木马的体积也往往较大,通常达到100 KB至300 KB,相对而言,要把它们安装到用户机器上而不引起任何人注意的难度也较大。常见的特洛伊木马7n 对于功能比较单一的特洛伊木马,攻击者会力图使它保持较小的体积,通常是10 KB到30 KB,以便快速激活而不引起注意。这些木马通常作为键记录器使用,它们把受
4、害用户的每一个键击事件记录下来,保存到某个隐藏的文件,这样攻击者就可以下载文件分析用户的操作了。常见的特洛伊木马8n Back Orifice是一个远程访问特洛伊木马的病毒,该程序使黑客可以经TCP/IP网络进入并控制windows系统并任意访问系统任何资源,通过调用cmd.exe系统命令实现自身的功能,其破坏力极大。n SubSeven可以作为键记录器、包嗅探器使用,还具有端口重定向、注册表修改、麦克风和摄像头记录的功能。q SubSeven还具有其他功能:攻击者可以远程交换鼠标按键,关闭/打开Caps Lock、Num Lock和Scroll Lock,禁用Ctrl+Alt+Del组合键,
5、注销用户,打开和关闭CD-ROM驱动器,关闭和打开监视器,翻转屏幕显示,关闭和重新启动计算机 常见的特洛伊木马9n在2006年之前,冰河在国内一直是不可动摇的领军木马,在国内没用过冰河的人等于没用过木马,由此可见冰河木马在国内的影响力之巨大。n 该软件主要用于远程监控,自动跟踪目标机屏幕变化等。冰河原作者:黄鑫,冰河的开放端口7626据传为其生日号。1自动跟踪目标机屏幕变化,同时可以完全模拟键盘及鼠标输入,即在同步被控端屏幕变化的同时,监控端的一切键盘及鼠标操作将反映在被控端屏幕(局域网适用);2记录各种口令信息:包括开机口令、屏保口令、各种共享资源口令及绝大多数在对话框中出现过的口令信息;3
6、获取系统信息:包括计算机名、注册公司、当前用户、系统路径、操作系统版本、当前显示分辨率、物理及逻辑磁盘信息等多项系统数据;4限制系统功能:包括远程关机、远程重启计算机、锁定鼠标、锁定系统热键及锁定注册表等多项功能限制;5远程文件操作:包括创建、上传、下载、复制、删除文件或目录、文件压缩、快速浏览文本文件、远程打开文件(提供了四中不同的打开方式正常方式、最大化、最小化和隐藏方式)等多项文件操作功能;6注册表操作:包括对主键的浏览、增删、复制、重命名和对键值的读写等所有注册表操作功能;常见的特洛伊木马10常见的特洛伊木马n灰鸽子(Hack.Huigezi)是一个集多种控制方法于一体的木马病毒,一旦
7、用户电脑不幸感染,可以说用户的一举一动都在黑客的监控之下,要窃取账号、密码、照片、重要文件都轻而易举。n自2001年,灰鸽子诞生之日起,就被反病毒专业人士判定为最具危险性的后门程序,并引发了安全领域的高度关注。2004年、2005年、2006年,灰鸽子木马连续三年被国内各大杀毒厂商评选为年度十大病毒,灰鸽子也因此声名大噪,逐步成为媒体以及网民关注的焦点。11特洛伊木马的定义n木马与病毒q一般情况下,病毒是依据其能够进行自我复制即传染性的特点而定义的q特洛伊木马主要是根据它的有效载体,或者是其功能来定义的,更多情况下是根据其意图来定义的q木马一般不进行自我复制,但具有寄生性,如捆绑在合法程序中得
8、到安装、启动木马的权限,DLL木马甚至采用动态嵌入技术寄生在合法程序的进程中q木马一般不具有普通病毒所具有的自我繁殖、主动感染传播等特性,但我们习惯上将其纳入广义病毒,也就是说,木马也是广义病毒的一个子类n木马的最终意图是窃取信息、实施远程监控n木马与合法远程控制软件(如pcAnyWhere)的主要区别在于是否具有隐蔽性、是否具有非授权性12特洛伊木马的结构n木马系统软件一般由木马配置程序、控制程序和木马程序(服务器程序)三部分组成13特洛伊木马的基本原理n运用木马实施网络入侵的基本过程14特洛伊木马的基本原理n木马控制端与服务端连接的建立q控制端要与服务端建立连接必须知道服务端的木马端口和I
9、P地址q由于木马端口是事先设定的,为已知项,所以最重要的是如何获得服务端的IP地址q获得服务端的IP地址的方法主要有两种:信息反馈和IP扫描15特洛伊木马的基本原理木马控制端与服务端连接的建立木马控制端与服务端连接的建立16特洛伊木马的基本原理n木马通道与远程控制q木马连接建立后,控制端端口和服务端木马端口之间将会出现一条通道q控制端上的控制端程序可藉这条通道与服务端上的木马程序取得联系,并通过木马程序对服务端进行远程控制,实现的远程控制就如同本地操作17特洛伊木马的传播方式n木马常用的传播方式,有以下几种:q以邮件附件的形式传播n控制端将木马伪装之后添加到附件中,发送给收件人q通过OICQ、
10、QQ等聊天工具软件传播n在进行聊天时,利用文件传送功能发送伪装过的木马程序给对方q通过提供软件下载的网站(Web/)传播n木马程序一般非常小,只有是几K到几十K,如果把木马捆绑到其它正常文件上,用户是很难发现的,所以,有一些网站被人利用,提供的下载软件往往捆绑了木马文件,在用户执行这些下载的文件的同时,也运行了木马q通过一般的病毒和蠕虫传播q通过带木马的磁盘和光盘进行传播18特洛伊木马技术的发展n木马的发展及成熟,大致也经历了两个阶段qUnix阶段qWindows阶段n木马技术发展至今,已经经历了4代q第一代木马n只是进行简单的密码窃取、发送等,没有什么特别之处q第二代木马n在密码窃取、发送等
11、技术上有了很大的进步,冰河可以说是国内木马的典型代表之一q第三代木马n在数据传输技术上,又做了不小的改进,出现了ICMP等类型的木马,利用畸形报文传递数据,增加了查杀的难度q第四代木马n在进程隐藏方面,做了很大的改动,采用了内核插入式的嵌入方式,利用远程插入线程技术,嵌入DLL线程;或者挂接PSAPI(Process Status API),实现木马程序的隐藏19木马的高级技术20驻留在内存n为了生存,病毒要尽可能长时间地驻留在内存中,而不是host程序一结束就完蛋了。n有三种种方法,一是象Funlove那样在系统目录里释放一个文件,并修改注册表或者建立一个系统服务。这种方式很普通,也很普遍,
12、大多数病毒包括蠕虫都这么干。n另一种方式则是感染所有的已运行进程。在Win2K下很容易实现,CreateRemoteThread,但要想在所有Win32平台下实现,则要比较高的技巧。n工作在ring 0病毒,内核模式病毒。21内核模式病毒nWindowsNT/2K环境下第一个以内核模式驱动程序运行,并驻留内存的寄生型病毒是Infis.nInfis作为内核模式驱动程序驻留内存,并且挂钩文件操作,它能够在文件打开时立即感染该文件。n安装程序把病毒拷贝到系统内存中,并在系统注册表中添加该病毒的注册项。该病毒把自己的可执行代码连同自己的PE文件头一起追加到目标文件的末尾,然后从自己代码中提取出一个名为
13、INF.SYS的独立驱动程序,把这个程序保存在%SystemRoot%system32 drivers目录下,修改注册表,保证下一次系统启动时病毒也能够进入运行状态。22检测方法n检查系统驱动程序列表中已经装入的驱动程序的名称,如果在驱动程序列表中发现了病毒驱动程序,说明基本上感染了病毒n病毒可能使用隐藏技术避免在驱动程序列表中出现,需要通过计算机管理器中的驱动程序列表。23病毒的隐藏技术n隐藏是病毒的天性,在业界对病毒的定义里,“隐蔽性”就是病毒的一个最基本特征,任何病毒都希望在被感染的计算机中隐藏起来不被发现,因为病毒都只有在不被发现的情况下,才能实施其破坏行为。为了达到这个目的,许多病毒
14、使用了各种不同的技术来躲避反病毒软件的检验,这样就产生了各种各样令普通用户头痛的病毒隐藏形式。n隐藏窗口&隐藏进程&隐藏文件 q桌面看不到q任务管理器中不可见 q文件中看不到24进程隐藏nWindows 9x中的任务管理器是不会显示服务类进程,结果就被病毒钻了空子,病毒将自身注册为“服务进程”,可以躲避用户的监视。nWindows2000/xp/2003等操作系统上已经无效了,直接使用系统自带的任务管理器便能发现和迅速终止进程运行。25通过DLL实现进程隐藏nWindows系统的另一种“可执行文件”-DLL,DLL文件没有程序逻辑,是由多个功能函数构成,它并不能独立运行,一般都是由进程加载并调
15、用的。n运行DLL文件最简单的方法是利用Rundll32.exe,Rundll/Rundll32是Windows自带的动态链接库工具,可以用来在命令行下执行动态链接库中的某个函数,Rundll32的使用方法如下:Rundll32 Dll FuncName例如我们编写了一个MyDll.dll,这个动态链接库中定义了一个MyFunc的函数,那么,我们通过Rundll32.exe MyDll.dll MyFunc就可以执行MyFunc函数的功能。假设我们在MyFunc函数中实现了病毒的功能,那么我们不就可以通过Rundll32来运行这个病毒了么?在系统管理员看来,进程列表中增加的是Rundll32.
16、exe而并不是病毒文件,这样也算是病毒的一种简易欺骗和自我保护方法 26特洛伊DLL n特洛伊DLL的工作原理是使用木马DLL替换常用的DLL文件,通过函数转发器将正常的调用转发给原DLL,截获并处理特定的消息。n例如,我们知道WINDOWS的Socket1.x的函数都是存放在wsock32.dll中的,那么我们自己写一个wsock32.dll文件,替换掉原先的wsock32.dll(将原先的DLL文件重命名为wsockold.dll)我们的wsock32.dll只做两件事,一是如果遇到不认识的调用,就直接转发给wsockold.dll(使用函数转发器forward);二是遇到特殊的请求(事先
17、约定的)就解码并处理。这样理论上只要木马编写者通过SOCKET远程输入一定的暗号,就可以控制wsock32.dll(木马DLL)做任何操作 27动态嵌入技术 nDLL木马的最高境界是动态嵌入技术,动态嵌入技术指的是将自己的代码嵌入正在运行的进程中的技术。n理论上来说,在Windows中的每个进程都有自己的私有内存空间,别的进程是不允许对这个私有空间进行操作的,但是实际上,我们仍然可以利用种种方法进入并操作进程的私有内存n存在多种动态嵌入技术中:窗口Hook、挂接API、远程线程 28远程线程技术n远程线程技术指的是通过在另一个进程中创建远程线程的方法进入那个进程的内存地址空间。n在进程中,可以
18、通过CreateThread函数创建线程,被创建的新线程与主线程(就是进程启动时被同时自动建立的那个线程)共享地址空间以及其他的资源n通过CreateRemoteThread也同样可以在另一个进程内创建新线程,被创建的远程线程同样可以共享远程进程的地址空间,所以,实际上,我们通过一个远程线程,进入了远程进程的内存地址空间,也就拥有了那个远程进程相当的权限。n这种病毒难以处理。29动态嵌入的实现n动态嵌入的实现步骤q通过OpenProcess 函数打开试图嵌入的进程n因为需要写入远程进程的内存地址空间,所以必须申请足够的权限,包括远程创建线程、远程VM操作、远程VM写权限q为LoadLibrar
19、yW函数线程启动DLL木马准备参数nLoadLibraryW函数是在kernel32.dll中定义的一个功能函数,用于加载DLL文件,它只有一个参数,就是DLL文件的绝对路径名(也就是木马DLL文件的全路径文件名)。由于木马DLL是在远程进程内调用的,所以还需要将这个文件名复制到远程地址空间q计算LoadLibraryW的入口地址,启动远程线程LoadLibraryW,通过远程线程调用木马DLLn可以用远程线程技术启动木马DLL,也可以事先将一段代码复制到远程进程的内存空间,然后通过远程线程起动这段代码30文件隐藏n早期,把病毒文件属性设为隐藏,修改文件不显示隐藏文件。n高级阶段通过HOOK文
20、件读取函数,自动隐藏病毒文件。n公开的主流检测隐藏文件主要有两种方法:第一种是文件系统层的检测,属于这一类的有Ice sword,darkspy,gmer等。n第二种便是磁盘级别的低级检测(Disk Low-Level Scanning),属于这一类的ark也很多,典型代表为rootkit unhooker,(is的插件),rootkit revealer,blacklight等。31加壳n木马再狡猾,可是一旦被杀毒软件定义了特征码,在运行前就被拦截了。n要躲过杀毒软件的追杀,很多木马就被加了壳,相当于给木马穿了件衣服,这样杀毒软件就认不出来了,但有部分杀毒软件会尝试对常用壳进行脱壳,然后再查
21、杀。n除了被动的隐藏外,最近还发现了能够主动和杀毒软件对着干的壳,木马在加了这种壳之后,一旦运行,则外壳先得到程序控制权,由其通过各种手段对系统中安装的杀毒软件进行破坏,最后在确认安全(杀毒软件的保护已被瓦解)后由壳释放包裹在自己体内的木马体并执行之。32通信隐藏n通信隐藏是指利用授权的通信手段和载体进行在系统安全策略允许之外的非授权的通信活动。q通信隐藏主要包括通信内容、流量、信道和端口的隐藏。木马常用的通信隐藏方法是对传输内容加密,这可以采用常见/自定义的加密、解密算法实现,但这只能隐藏通信内容,无法隐藏通信信道。n采用网络隐蔽通道技术不仅可以成功地隐藏通信信道,还可以隐藏通信内容。33网
22、络隐蔽通道nTCP/IP 协议族中,有许多信息冗余可用于建立网络隐蔽通道。木马可以利用这些网络隐蔽通道突破网络安全机制,比较常见的有:qICMP畸形报文传递、qHTTP隧道技术,q自定义TCP/UDP 报文等。n采用网络隐蔽通道技术,如果选用一般安全策略都允许的端口通信,如80端口,则可轻易穿透防火墙和避过入侵检测系统等安全机制的检测,从而具有很强的隐蔽性。34使用TCP协议隐蔽通信-反向连接技术n为了克服服务端在某一端口上侦听易被发现这一缺点,现在服务端不再侦听端口,而是去连接客户端在侦听的某一端口。q这样用一般的port scanner或者fport就发现不了服务端了。q而为了更好的麻痹宿
23、主机,客户端侦听的端口一般是21,80,23这种任何人都要访问的端口。虽然在安装了防火墙的机器上,服务端去连接客户端还是要引起防火墙报警,但是一个粗心的用户很可能会忽略“应用程序xxxxx试图访问xxx.xxx.xxx.xxx通过端口80”这样的警告。n客户端侦听,服务端连接。这就是所谓的反向连接技术了。35使用TCP协议隐蔽通信-反向连接技术n这种反向连接技术要解决的一个问题是,服务端如何找到客户端。由于一般客户端都是拨号上网的,没有一个固定的IP,所以客户端IP不可能硬编码在服务端程序中。qhttp访问获取地址方式。控制端将本机的ip地址更新到存放于ftp空间的文件中,被控端采用http方
24、式访问该文件,从而获取控制端的ip地址。q通过域名获取地址方式。攻击者需要申请一个动态域名,并通过域名解析服务客户端软件如PeanutHull等把域名与控制端主机绑定,再将此域名预先设置在控制端中,则被控端就可以通过访问此域名上线了。q所以还有一种方法是使用RAW socket来收听ECHO REPLY类型的ICMP包,在ICMP数据包的数据去就包含了客户端IP。对于普通用户来说,由于要上网浏览,这样的ICMP包是很少过滤掉的。36使用UDP协议通信n服务端侦听,客户端连接;客户端侦听,服务端连接。方法和安全性与使用TCP协议差不多。需要注意的是UDP不是一个可靠的协议,所以,必须在UDP协议
25、的基础上设计一个自己的可靠的报文传递协议。37用ICMP来通信n既然客户端可以通过发一个ICMP(ECHO REPLY)来告诉服务端它的IP,那为什么不把所有服务端和客户端的通讯都建立在ICMP基础上呢?n服务端向客户端发ICMP(ECHOREQUEST),客户端向服务端发ICMP(ECHO REPLY),然后可以在ICMP基础上建立一个自己的可靠数据报通讯协议。n如果不怕麻烦的话,还可以建立一个TCP over ICMP。由于一般的用户这两类ICMP包都是设为无警告放行的,这种方法的隐秘性还是很强的。38利用ICMP协议建立秘密通道qICMP回显请求(type=0)和回显应答(type=8)
26、报文q规范约定ICMP报文中的标识符和序列号字段由发送端任意选择,因此在ICMP包中标识符、序列号和选项数据等部分都可用来秘密携带信息q由于防火墙、入侵检测系统等网络设备通常只检查ICMP报文的首部,因此使用ICMP建立秘密通道时往往直接把数据放到选项数据中q这类秘密信道可以实现直接的客户端和服务端通信,具有准实时的特点39基于嗅探原理的通信n服务器端是一个sniffer和发包器,它将捕获指定特征的数据包。n客户端是一个发包器和嗅探器,用来发送指定特征的数据包并包括定义的命令以及接收服务器端的数据。n当服务器端捕获到该指定特征的数据包时,变成激活状态,通过分析该数据包,获得客户端发送的命令和客
27、户端的IP地址,然后实现相应的命令,并将执行后的结果发送回客户端,客户端的嗅探部分则接收相应的数据。n所有的数据发送都是通过原始套接字进行。40木马的通信特征n当被控端被植入目标主机或开机自动运行后,将每隔一定时间检查一下网络环境是否能够与控制端建立连接,如果符合连接条件,则向控制端发起连接并上线,而控制端则将上线主机显示出来,以供攻击者选择相应主机进行操作。n同时对上线主机创建一个线程,负责处理与被控端的交互信息,使攻击者能够对被控端主机进行远程控制,向被控端发出各种命令并接收被控端反馈回来的信息和数据。而被控端程序在目标主机上执行接收到的指令并回传处理信息。n通过对数十款主流木马通信数据的
28、分析发现,绝大多数木马为了保证通信质量和效率,通信两端的交互信息都是通过数据包载荷区(data)传输的,因此特征提取的主要研究对象就是数据包的载荷区。41木马的通信特征n反弹式木马定时向控制端主机发出连接请求,并根据其中的特定信息进行相互认证q控制端必须能够认证被控制端,同时通信双方也会采用某个特定的数据包结构进行发送和读取数据,以避免任何第三方数据的干扰和破坏,q被控制端也必须认证控制端以避免任何不被允许的服务端利用其通道的资源。42图例43攻击特征n红黑远控v2009 木马交互数据时,为了可以识别对方,载荷区中的数据是具有特定结构的。其载荷区(data)长度为 71 个字节,其中 0 x4
29、d 53 47 3030 30 36(MSG0006)表示此数据包为此次通信中的第 6 个数据包,0 x3c 4d 73 67 30 30 30 36 3e 31 38 3c 2f 4d 73 67 30 30 30 36 3e(30)表示在这些结构信息n后的 30 个字节才是此木马交互的其他数据信息,图 6数据包载荷段中的各部分信息代表的含义与图 5基本相同。数据包载荷区中的这些特定信息经过特征提取处理之后,就很可能成为多段式的木马网络特征了。44outbreak 特征45控制命令特征n通过对木马工作原理和通信机制的分析可知,木马的控制端向被控制端发送的控制命令也是有限的若干种,同时,就一款远程控制类木马而言,通常攻击者感兴趣或者必须的操作也是相对固定的,那么这些对被控制端的操作指令往往会在控制端向被控端发送的数据流中多次出现,这些信息表现在数据包中的形式也常常是连续的字串。46_ 谢谢!47此课件下载可自行编辑修改,供参考!感谢您的支持,我们努力做得更好!48