陈洪昌
(西安电子科技大学 电子信息攻防对抗与仿真重点实验室,陕西 西安 710071)
木马技术探析
陈洪昌
(西安电子科技大学 电子信息攻防对抗与仿真重点实验室,陕西 西安 710071)
互联网的开放性在给人们带来便利的同时,也加快了恶意代码的传播。黑客利用木马程序隐藏在用户计算机中,对受害用户进行信息窃取、破坏数据、监控用户行为等操作。文中介绍了计算机木马的原理、植入技术、隐藏技术。并通过研究目前最新的杀毒软件的查杀原理,实现了针对杀毒软件中特征码查杀以及主动防御技术的绕过,并在安装具备这两种功能的杀毒软件的Windows 7操作系统中成功免杀,可成功绕过杀毒软件的查杀。
木马;主动防御;免杀技术
互联网的开放性给人们带来了便利,也加快了恶意代码的传播,特别是人们可以直接从网站获得恶意代码源码或通过网络交流代码。很多编程爱好者把自己编写的恶意代码放在网上公开讨论,发布自己的研究成果,直接推动了恶意代码编写技术的发展。所以目前网络上流行的恶意代码及其变种层出不穷,攻击特点多样化。随着计算机的发展以及网络水平的不断提高,特洛伊木马的技术也日趋多样化,这在很大程度上推动了木马技术的发展。
在计算机网络安全中,木马[1]是指一类伪装成合法程序或隐藏在合法程序中的恶意代码,这些代码或者执行恶意行为,或者为非授权访问系统的特权功能而提供后门。木马是一种危害大、检测困难的高级攻击工具,感染了木马的计算机将面临数据丢失和机密泄露的危险。
大多数木马程序都包括客户端和服务器端[2-4]两部分。服务器端是植入到目标计算机的部分,客户端是安装在自己PC机上的部分,作用是用来连接木马服务器端,监视或者控制目标计算机。当服务器端在目标计算机上被执行后,木马便会打开一个默认的端口进行监听,当客户端向服务器端发起连接请求时,服务器端的相应程序就会自动运行来应答客户端的请求,当服务器端程序与客户端建立连接后,服务器端就可以在目标计算机中执行由客户端发出的指令,并将数据传回到客户端,以达到控制目标主机的目的。
通过电子邮件附件夹带的方式,是应用最广泛的方法。控制端将木马程序以附件或图标等形式夹在邮件中发送出去,例如漂亮的网页或电子贺卡等。当用户点击这些图标的同时也下载了木马程序。
夹带在一些共享软件中。黑客经常将特洛伊木马程序做进这些软件中,这种方式用得较多且成功的概率也大。比如,常称之为某个共享软件的升级版或者是系统补丁等,大多数人都希望自己用的是最新版本,这样当用户下载时相应地也把木马程序下载到自己的机器上了。
通过网页脚本程序植入。木马和网页捆绑在一起,当用户浏览到该网页,就会在不知不觉中下载其捆绑的木马并执行。其中网页是网页木马的核心部分,特定的网页代码使得网页被打开时,木马能随之下载和执行。木马就是普通的木马文件,被捆绑在网页里,能够跟随网页自动打开,实现各种木马功能。有利用Activex控件实现的网页木马;也有欺骗型网页木马;更多的网页木马是利用IE浏览器的漏洞来实现的。
木马被植入到目标主机后,通常利用各种手段来隐藏自己,以避免被发现追踪,尽可能延长其在目标主机中的生存期。要让木马在主机中消失得无影无踪,需要对木马进行多种隐藏[5]处理。下面对目前提高木马隐蔽性[6]的方式进行介绍。
启动隐藏是木马在计算机启动的时候进行隐藏加载从而达到不被用户发现的目的。经典的启动隐藏方式有:修改计算机启动项,修改注册表,新建服务,更改配置文件,替换组策略等方法。但是,这种启动方式由于涉及到系统的敏感文件,因此比较容易被安全工具检测到。
文件隐藏一般分为两种隐藏方式,一是对木马文件进行一定的伪装,使用户认为该文件为合法文件。二是隐藏木马文件,不被用户发现。对于第一种隐藏方式,一般木马文件会修改自身的属性以及将文件名设置成与一些无害的文件同名,来达到混淆视听的目的。对于第二种隐藏方式,木马文件会在运行后删除自身,并将其放置到系统目录或者用户比较少浏览的目录下,甚至引导区都可以成为木马文件用来隐藏的位置。
通信隐藏[7],主要有主机中通信所用到的各个方面的隐藏,如通信端口,流量和内容。对通信内容使用加密或者替换数据包的发送顺序可以实现对通信内容的隐藏。通信端口的隐藏可以使用HOOK技术或者端口复用技术来实现。通信中产生的流量可以使用隐蔽通道的方法实现,在TCP/IP的协议中存在大量的冗余信息,利用这些信息建立隐蔽通道可以实现隐藏流量,突破安全机制的目的。
进程隐藏的目的是为了让正在运行的木马程序不被用户发现。进程的隐藏有两个实现方向:让木马进程不在进程列表中显示;让木马的进程彻底消失,不以一个进程或服务的方式工作。前者利用HOOK技术,控制安全工具的相关调用,使其不能检测到当前运行的木马进程或服务。后者则是依靠远程线程或DLL注入等方式将木马代码注入到合法的进程中,用户一般很难发现合法进程中的注入木马部分,从而实现在进程或者服务层面上的真正隐藏。
内核模块隐藏是指木马将程序中的内核模块部分进行隐藏处理。为了不被安全工具中检测程序驱动信息模块检测出木马中存在的恶意内核代码,内核模块的隐藏处理是必不可少的。要实现对程序内核模块的隐藏,黑客一般采用Rootkit[8-14]技术。
所谓主动防御[15-22],是相对于传统被动防御软件而言的。主动防御具备以下优势:病毒查杀的实时性、专业的病毒检测规则库、自动判断新病毒。
API挂钩[23]就是通过挂钩来找到需要修改的API函数的入口点,改变它的地址使其指向新的自定义函数。API挂钩最初并不是为了杀毒软件服务而设计的。最早的时候开发人员对于Windows提供的API功能不满意,为了修改这些API,使之能更好地服务于程序,开发人员设计了API挂钩的方法。按照挂钩的方式,有两层的挂钩方法,分别是用户模式挂钩和内核模式挂钩。
在用户模式中,以下的一些API经常被恶意程序调用来实现恶意功能。例如:文件操作API,CreateFile[19-20]和WriteFile[19-20],这两个API分别用来创建和写入一个文件;动态库操作API,LoadLibrarey和FreeLibrary,这两个API用于创建和释放操作动态链接库的句柄;进程、线程操作API,CreateProcess和CreateRemoteThread,前者用于创建一个进程,后者用来注入远程线程,其中CreateRemoteThread这个API是大部分安全软件的关注对象。还有WriteProcessMemory这个用来写入进程内存的API和WinExec这个执行命令的API也是安全软件中危险级别比较高的API。
根据恶意程序的特性,网络连接是必不可少的部分。大多数主动防御安全软件对于未经验证的程序发起的网络连接也会进行拦截。用于建立连接的API也通常会被认为是恶意程序在调用的API,如:connect,accept,listen和bind。
API的调用时通过加载其所在的DLL模块来实现的。这其中最主要的DLL是kerne132.d11[19],user32.d11[19]和gdi.dllo kerne132.d11[19]属于内核文件,主要负责管理系统内存、操作数据和处理中断,系统启动后,kerne132.d11就占据一块区域,该区域的属性为写保护,之后其他程序都不能使用这个区域。User32.d11则是提供与用户进行交互的接口,其中有界面、消息等。gdi.dll是Windows GDI图形用户界面相关程序,包含的函数用来绘制图像和显示文字。而建立网络连接的API则是在w2_32.d11模块中被定义。
Windows API[20]调用通过查找导入地址表(IAT)的虚拟地址来查找相应的API函数并对其进行调用。程序中调用的API函数的执行代码不在程序的实现代码中,而是在一个或多个DLL中。当可移植的执行体(PE)文件被装入内存时,Windows就会通过装载器把DLL装入,并会调用导入函数的指令和函数实际所处地址联系起来,这也就是动态链接的概念,这部分需要导入地址表来实现。这个动态链接的方法在代码中实现表现为LoadLibrary[23]和GetProcAddress[23]两个API的配合。LoadLibrary加载需要调用DLL模块到代码中,并返回一个模块句柄HMODULE,GetProcAddress利用前面返回的句柄的需要调用的API名称,得到该API的地址,通过API的地址就可以实现对API的调用。这两个函数位于kerne132.d11中,这也是前面提到kerne132.d11会在启动时驻留在特定写保护区域的原因。简单地说,API的调用就是程序通过IAT表来查找API函数实际地址的过程。
根据API的调用流程,利用IAT的特性,修改IAT中某个API的地址,让它指向另一个函数的入口点,那么目标进程中的相应API就会被重定位到用户指定的函数上去,这就是用户模式API挂钩技术。
与用户模式挂钩中IAT类似,内核模式的系统调用挂钩需要用到的是SSDT(System Services Descriptor Table)系统服务描述符表,这个表把ring3的Windows API和ring0的内核级API联系起来。SSDT与IAT不同,它并不仅仅是一个包含有大量地址的索引表,另外其中还带有许多有用的信息。内核中的系统服务描述符表有两个:一个是KeServiceDescriptorTable,由ntoskrnl.exe导出;另一个是KeServiceDescriptorTableShadow,没有导出。
虚拟机技术就是利用虚拟机对程序的执行进行监控,判断其危害性并反馈给用户的一项技术。通过模拟CPU的指令系统,内存管理系统,操作系统,应用程序编程接口(API)调用来实现在原始主机上构造一个虚拟机,并用来监控恶意程序的行为。这是一个纯粹的环境,恶意程序在其中运行和当前的系统环境相隔离,在恶意程序运行时对该程序进行脱壳、解密、行为判断等功能。在虚拟机中,恶意程序的动态脱壳操作就不会对系统环境造成影响,待脱壳完成后即可对恶意程序进行更加深入的程序行为监控。
从运行行为上来看,一个程序如果对操作系统进行可疑的操作,如修改注册表,添加系统服务,或者在系统目录下创建文件等,传统的查毒方式会使用特征码比对和API挂钩技术对程序的行为进行监控,但是这样的查毒方式很容易通过简单的代码修改来绕过。而虚拟机查毒技术则是让程序在虚拟环境下运行后,观察操作系统的运行状态,例如注册表中发生变化,系统服务中服务的ServiceDll键值被删除或者改写,system32目录下有新创建的文件等操作就会一目了然。相比于传统的恶意程序查杀方式,这种查毒的技术显然更有效。目前,虚拟机的查毒技术也在不断地发展,一些相关产品也己经用于人们的日常生活中,如沙盒技术。
本次免杀测试[14]的测试系统为安装了64位Windows 7操作系统的虚拟机,测试免杀的杀毒软件为赛门铁克公司的Symantec Endpoint Protection。在该杀毒软件中装载了主动防御的模块SONAR。
将未经过免杀处理的木马服务端server.exe放入虚拟机,并对其进行病毒扫描。如图1所示,杀毒软件检测出Trojan Horse风险。
图1 检测到风险
然后使用免杀技术对木马服务端进行免杀处理,将处理过的木马服务端放入虚拟机中并进行病毒扫描。如图2所示,杀毒软件发现风险为0,服务端成功绕过杀毒软件的检测。
图2 未发现风险
运行木马服务端后,如图3所示在控制端可以看到木马己经上线,IP地址为192.168.179.134,操作系统为Windows 7 SP1。实验证明,木马的免杀技术对于拥有主动防御引擎的杀毒软件Symantec Endpoint Protection是有效的。
图3 木马服务端成功上线
对于一个计算机的完整安全系统来说,如果只突破其操作系统自带的安全机制是不够的。随着网络的普及以及人们安全意识的提高,一台计算机中往往会安装有杀毒软件。因此,木马的免杀技术对于木马的可存活性也是至关重要的。本文通过研究目前最新的杀毒软件的查杀原理,实现了针对杀毒软件中特征码查杀以及主动防御技术的绕过,并在装有具备这两种功能的杀毒软件的Windows 7操作系统中成功免杀。
[1] Trostle J T,Mitre Corp,Bedford Ma.Multiple Trojan horse systems and covert channel analysis[C].Tokyo:Computer Security Foundations Workshop IV,1991:22-33.
[2] Ahsan K,Kundur D.Pratical data hiding in TCP/IP[C].French Rrviera:Proceeding Worksshop on Multimedia Security at ACM Multimedia,2002.
[3] Wikipedia.The definition of Rootkit [EB/OL].(2012-12-26)[2014-07-03]www.http://en.wikipedia.org/wild/Rootkit.
[4] 胡和君.Windows Rootkit技术研究与应用[D].成都:电子科技大学,2009.
[5] 斯鲁杰.DLL木马隐藏技术研究[D].西安:西安电子科技大学,2011.
[6] 刘牧星.木马攻击与隐藏技术研究[D].天津:天津大学,2006.
[7] 王德强.恶意代码设计和分析技术的研究与实现[D].北京:清华大学,2005.
[8] 曹峰.木马病毒隐藏方法研究与实现[D].成都:电子科技大学,2012.
[9] 王超.基于特洛伊木马技术的计算机远程控制研究与实现[D].郑州:解放军信息工程大学,2009.
[10]毛辉.木马原理分析与系统实现[D].西安:西安科技大学,2011.
[11]蒋晓峰.面向开源程序的特征码免杀与主动防御突破研究[D].上海:上海交通大学,2010.
[12]崔甲.Rootkit的分类方法和检测技术研究[D].成都:电子科技大学,2007.
[13]徐昊.Win32平台下内核技术的研究与应用[D].上海:上海交通大学,2007.
[14]赵丽.木马检测方法的研究与实现[D].兰州:兰州理工大学,2008.
[15]高晓飞,申普兵.网络安全主动防御技术[J].计算机安全,2009(1):38-40.
[16]庄颖杰.新型木马技术的研究与分析[J].计算机工程.2004(12):318-319.
[17]罗改龙,程胜利.基于端口复用技术的木马研究[J].计算机工程,2007(8):165-169.
[18]蔺聪,黑霞丽.木马的植入与隐藏技术分析[J].信息安全与通信保密,2009(7):53-55.
[19]潘爱民.Windows内核原理与实现[M].北京:电子工业出版社,2010.
[20]Jeffrey Richter.Windows核心编程[M].北京:机械工业出版社,2008.
[21]赵玉明.木马技术揭秘与防御[M].北京:电子工业出版社,2011.
[22]胡明.Windows网络编程技术[M].北京:科学出版社,2008.
[23]孙鑫,余安萍.VC++深入详解[M].北京:电子工业出版社,2008.
《电子科技》欢迎投稿
《电子科技》杂志(月刊),设置栏目有:电子·电路、协议·算法及仿真、图像·编码与软件、保密及网络安全、光电·材料、专题综述等。欢迎业界专家、教授、学者及工程技术人员、教师、学生投稿。来稿应以反映当前国内外电子科学技术领域中的先进理论、创新成果及发展趋势,并有实际的应用背景,以及相应的实验结果。
投稿请登录:www.dianzikeji.org 联系电话:029-88202440
Research on the Trojan Horse Technology
CHEN Hongchang
(Key Lab.of Electronic Information Countermeasure and Simulation,Xidian University,Xi’an 710071,China)
The openness of the Internet brings people both convenience and security problems.Malicious codes are spreading quickly.Hackers use Trojans hidden in the affected user’s computer to steal information,destroy data,monitor user behavior and so on.This paper introduces the principles of the computer Trojan horse,the basic module,implant technology and hidden technology.By studying the latest antivirus software’s killing principle,it realizes the bypassing of both the killing of featured codes in antivirus software and active defense technologies.It is killing exempt in installing the Windows 7 operating system which has antivirus software with the two functions and can successfully bypass the killing of antivirus software.
trojan horse;active defense;anti-anti-virus technology
2014- 09- 21
陈洪昌(1988—),男,硕士研究生。研究方向:信息安全。E-mail:chenhclz@163.com
10.16180/j.cnki.issn1007-7820.2015.04.041
TP309
A
1007-7820(2015)04-154-04