基于客户端蜜罐的木马隐蔽通信检测

学术研究A cademic R esearch基于客户端蜜罐的木马隐蔽通信检测张 臣,王轶骏,薛 质(上海交通大学信息安全工程学院,上海200240)[摘 要] 当今流行的木马程序开始采用隐蔽通信

学术研究

A cademic R esearch

基于客户端蜜罐的木马隐蔽通信检测

张 臣,王轶骏,薛 质

(上海交通大学信息安全工程学院,上海200240)

[摘 要] 当今流行的木马程序开始采用隐蔽通信技术绕过蜜罐系统的检测。首先介绍木马常用的隐蔽通信技术以及越来越流行的内核层Rootkit 隐蔽通信技术,并讨论了现阶段客户端蜜罐对于恶意程序的检测方式。针对蜜罐网络通信检测机制的不足,提出了一种有效的改进方案,使用基于NDIS 中间层驱动的网络数据检测技术来获取木马通信数据包。该方案能够有效检测基于网络驱动的Rootkit 隐蔽通信,提取木马关键通信信息,以进行对木马行为的跟踪和分析。[关键词] 客户端蜜罐;隐蔽通信;Rootkit;网络协议驱动;网络协议中间层驱动

[中图分类号] TP393 [文献标识码] A [文章编号] 1009-8054 (2011)02-0049-03

Detection of Trojan Covert Communication based on Client Honeypot

ZHANG Chen,WANG Yi-jun,XUE Zhi

(Institute of Information Security Engineering,Shanghai Jiaotong University,Shanghai 200240,China)[Abstract] Today's popular Trojans begin to use covert communication technology and bypass the detection of honeypot system. This paper first describes the common Trojan covert communication technologies and the growing popular kernel layer Rootkit covert communication technology,then discusses the current client honeypot detecting methods for malware. Aiming at the deficiency of Honeypot detection mechanisms for network communication,an effective improvement scheme is proposed,By using network traffic detection technology based on the NDIS intermediate driver,the Trojans date packets are acquired. This scheme could effectively detect Rootkit covert communication based on network driver and extract the key communication information for Trojan track and analysis.[Keywords] client honeypot;covert communication;Rootkit ;NDIS protocol driver;NDIS intermediate driver

0 引言

现在流行的木马程序,都带有文件和进程隐藏功能以防止被检测和查杀,但如果能捕获木马程序的网络通信数据并进行分析,提取其源目的地址和端口号等信息,便可以获取木马连接的相关信息,再结合反向域名查询以及域名劫持等技术就可以有效对抗当今流行的木马,包括反弹式木马。所以,现在越来越多的木马程序开始利用隐蔽通信技术来绕过安全系统的检测和过滤,而利用内核层Rootkit技术来实现隐蔽通信已经成为当今流行木马的发展方向。针对隐藏连接状态的Rootkit 隐蔽通信技术可以通过捕获木马通信数据来检测和分析木马行为。因此,出现了另外一种Rootkit 隐蔽通信技术,开发自定义的网络驱动接口规范(NDIS)协议驱动而不使用传输控制协议/因特网互联协议(TCP/收稿日期:2009-10-09

作者简介:张臣,1986年生,男,硕士研究生,研究方向:网络攻击与防御;王轶骏,1980年生,男,讲师,研究方向:网络主动防御技术与操作系统安全机制;薛质,1971年生,男,教授,研究方向:计算机通信网、信息安全、网络安全攻防与评测。

[1]

IP) 协议栈来传输数据,从而躲避检测系统对通信数据的捕获。

1 隐蔽通信技术

隐蔽通信技术

[2]

使木马客户端和服务器端的通信更加隐蔽,

通常有如下几种思想方法:

① 隐藏于已存在的通信量中;

② 利用常规协议的源和目的端口,如端口复用技术;③ 通过加密或者隐写技术不以明文传送数据;④ 使用内核层Rootkit 技术隐蔽通信。1.1 协议域隐蔽通信技术

在TCP/IP协议中,有许多信息冗余,可以用来隐藏信息。特别是在协议头格式定义中,有很多字段设计不严以致给建立隐蔽通道提供了机会。常见的协议利用技术有如下几种:

① 域名系统(DNS)隐蔽通道。通过修改DNS 协议请求报文,添加木马程序的通信数据到DNS 报文中;

② Internet控制报文协议(ICMP)隐蔽通道。将木马程序的通信数据隐藏在ICMP 报文格式的选项数据字段进行传送。1.2 内核层Rootkit 隐蔽通信技术

除了上述传统的隐蔽通道技术外,当今流行的木马程序开

信息安全与通信保密 · 2011.2

49

,

学术研究

A cademic R esearch

始向操作系统底层发展。通过内核层Rootkit 技术来隐藏网络数据的通信,使得检测软件难以发现木马程序的通信行为。

(1)分层过滤驱动[3]及挂钩技术修改套接字通信访问

分层过滤驱动是指挂载在常规驱动程序之上的自定义驱动程序,用以截获和修改系统中传输的数据,一般通过过滤和修改I/O请求报文(IRP)实现。内核层Hook 技术是指先将用户自定义的函数替代驱动程序中常规的分发函数,执行完成之后再跳转回原来的函数。通过在网络连接驱动程序上挂载过滤驱动或Hook 网络连接驱动程序上的相关函数,都可以修改系统显示的网络连接信息从而过滤木马通信的连接信息。

(2) NDIS协议驱动木马[4]

TCP/IP协议是常用的传输协议。发送数据时,协议驱动程序会首先分配内存,将应用程序的数据复制到分配的内存中,然后调用NDIS 函数将这些数据发送到下层驱动程序。协议驱动程序也提供下层接口用于接收数据包,之后将接收到的数据提交给应用程序。编写自己的NDIS 协议驱动[5]传输数据可以绕过应用层相关的网络数据嗅探技术,能有效防止监控软件捕获传送的数据,使其检测不到任何通信流量。所以如果在木马服务器和客户端通信中直接使用自定义的NDIS 协议驱动发送和接收数据包,可以有效绕过应用层以及传输驱动程序接口(TDI)层的嗅探技术。2 客户端蜜罐网络连接监控

2.1 客户端蜜罐现状

当今大多数的高交互客户端蜜罐系统[6]主要通过检测系统的文件,注册表和进程行为来判断是否有恶意代码执行。然而对于网络连接尤其是隐蔽通信则缺乏监控或者监控力度不够,这样将导致一些恶意行为无法被检测。如果木马服务端驻留在内存中直接与客户端进行交互,那么上述检测方法无法发现木马。对于普通木马程序,即使发现木马行为也无法有效收集木马的网络通信数据,因而无法对木马程序的行为以及攻击者来源进行深入分析。Capture-HPC[7]是由美国蜜网(Honeynet)项目组发起的开源项目,在各种高交互客户端蜜罐系统中,Capture-HPC是应用最广泛、功能最强大的客户端蜜罐系统之一。由于其开源性易于研究分析,成为当今高交互客户端蜜罐的典型代表。

2.2 Capture-HPC网络通信监控

Capture-HPC 可用于查找网络中的恶意网站及挂载木马的网页,其检测机制基于VMware 虚拟机。当Capture 客户端与Web 服务器交互时,Capture-HPC检测虚拟操作系统的4种系统状态变化:文件系统、注册表、进程和网络连接。Capture-HPC 现有版本对于网络连接的监控是基于TDI 过滤驱动程序实现的。通过将TDI 过滤驱动程序挂载在TCP 和UDP 的连接设备上,这样所有通过TDI 的TCP 或UDP 网络数据以及网络连接状态都可以被Capture-HPC 的监控模块记录下来,从而实现50www.cismag.com.cn 对网络连接的监控。Capture-HPC实现了两个TDI 过滤驱动程序分别监控TCP 和UDP 的网络连接,通过处理所有经过TCP 和UDP 协议驱动的IRP 主分发函数并设置相关的回调例程来实现对网络连接的监控,过滤驱动挂载的实现机制如图1所示。Capture-HPC 网络连接的监控机制是近期刚提出的改进方案,虽然有所弥补长期以来网络连接检测的缺乏,但对于隐蔽通信的监控力度仍然图1 网络连接监控设备不够。由于其网络数据监控技术基于TDI 驱动层,在TDI 层以下的内核驱动层数据隐藏技术,比如前面提到的自定义NDIS 协议驱动木马就可以绕过该检测机制。2.3 NDIS中间层驱动网络通信监控针对上述客户端蜜罐系统网络通信监控机制方面的不足,提出在Capture-HPC 等高交互客户端蜜罐系统中使用基于NDIS 中间层驱动[8]进行网络隐蔽通信监控。2.3.1 NDIS中间层驱动原理及实现NDIS 中间层驱动程序一般位于NDIS 小端口驱动和NDIS 协议驱动之间,既与上层NDIS 协议驱动程序通信,又与下层NDIS 小端口驱动程序通信。NDIS中间层驱动程序的下边界提供了协议入口点函数,通过调用这些函数传递下层NDIS 小端口的请求,此时NDIS 中间层驱动下边界模拟成NDIS 协议驱动程序;NDIS中间层驱动程序的上边界提供了NDIS 小端口的入口指针,上层NDIS 协议驱动程序通过引用这些指针进行通信,此时NDIS 中间层驱动上边界模拟成NDIS 小端口驱动程序。NDIS 中间层驱动实现的关键步骤如下:① 使用NdisIMRegisterLayeredMiniport注册NDIS中间层驱动上边界小端口特征;② 使用NdisRegisterProtocol注册NDIS中间层驱动下边界协议特征;③ 使用NdisIMAssociateMiniport 关联NDIS 中间层驱动上边界接口与NDIS 中间层驱动下边界接口,保存在同一内核结构体中;④ 使用PtBindAdapter 绑定NDIS 中间层驱动下边界和下层的NDIS 小端口驱动从而实现网络适配器设备的绑定;⑤ 使用NdisMRegisterDevice 初始化NDIS 中间层驱动上边界,生成虚拟网络适配器让上层NDIS 协议驱动绑定。2.3.2 NDIS中间层驱动数据传递流程Windows 系统中网络通信数据传递详细流程如图2所示。其中主要讨论了网络数据包通过NDIS 中间层驱动时的过程:当NDIS 协议驱动程序发送网络数据包时,NDIS中间层驱动程序将这些数据包传递到下层的NDIS 小端口驱动。当下层

NDIS 小端口驱动向上发出接收包的指令时,NDIS中间层驱动程序将

,

这些指令消息传递给上层NDIS 协议驱动程序。图2 网络通信流程

在NDIS 中间层驱动程序内部,是通过调用NDIS 库提供的函数向网络下层NDIS 驱动程序发送数据包。由于绑定关系是上层NDIS 协议驱动绑定NDIS 中间层驱动上边界,NDIS中间层驱动上边界再绑定NDIS 中间层驱动下边界,NDIS中间层驱动下边界最后绑定下层NDIS 小端口驱动。数据包从上层NDIS 协议驱动开始逐层往下传递直到最后到达下层NDIS 小端口驱动,然后通过I/O中断将数据包发送到物理网卡。传输过程中每一层的操作方法类似,先进行协议驱动自身需要的数据处理,然后调用NdisSend/NdisCoSendPackets往下发送数据包。NdisSend/NdisCoSendPackets实现过程是根据绑定的协议句柄调用下层协议的MpSend 函数。每层的数据包传递过程如图3所示。

图3 NDIS中间层驱动数据包流程

2.3.3 NDIS中间层驱动截获通信数据

根据上述分析可知,NDIS中间层驱动模拟NDIS 小端口驱动直接与NDIS 协议驱动进行交互。因此,只要NDIS 中间层驱动在木马程序自定义的NDIS 协议驱动之下,便可以截获木马程序发送的任何通信信息。同时也可以截获NDIS 协议驱动以上各层传递发送的网络通信信息,而且只要将NDIS 中间层驱动与所有的NDIS 小端口驱动程序绑定就可以截获来自网卡的任何数据,无论是发往传统的TCP/IP协议栈还是用户自定义的

学术研究

A cademic R esearch

NDIS 协议栈。NDIS中间层驱动程序获取数据包常用方式如下:

① 使用NdisAllocateMemoryWithTag分配内存空间用以保存网络数据包;

② 使用NdisQueryPacket 根据NDIS_PACKET包描述符获取NDIS 数据包缓冲区链表头;

③ 使用NdisQueryBufferSafe 循环遍历NDIS 数据包缓冲区链表,复制网络数据包到已分配的内存空间。

捕获到NDIS 网络数据包后,便能对数据包进行过滤、分析和处理。通过对木马程序发送和接收的数据包进行检测,可以判断分析木马程序的行为以及攻击来源。实验证明NDIS 中间层驱动可以有效截获用户自定义NDIS 协议驱动发送的数据包,而该类数据包能够绕过一般的嗅探软件。

3 结语

基于NDIS中间层驱动的网络数据检测机制能有效对抗Rootkit隐蔽通信技术。对一般的木马程序,无论是基于内核态还是用户态,其网络通信都很难绕过该检测机制,除非攻击者自己编写网

卡驱动。然而网卡驱动与网络适配器关系紧密,编写复杂也不易实现通用性。但基于NDIS 中间层驱动的网络数据检测技术仅防范了隐蔽通信的一个方面,对前面提到的利用协议域的数据隐藏技术、数据加密及隐写技术等应用层的隐蔽通道检测,是今后完善高交互客户端蜜罐对木马网络隐蔽通信检测的主要研究方向。

参考文献

[1] HOLUND Greg,BUTLER James. Rootkit:Subverting theWindows Kernel[M]. [s.l.]:Addison Wesley Professional,2006:281-344.

[2] BAISHAKHI Ray,SHIVAKANT Mishra. Secure and ReliableCovert Channel[C]//ACM. Proceedings of The 4th Annual Workshop on Cyber Security and Information Intelligence Research. New York: ACM Publications,2008:01-03.[3] 张帆,史彩成. 驱动开发技术详解[M]. 北京:电子工业出版社,2009:506-520.

[4] 杨志程,舒辉,董卫宇. 基于NDIS 隐蔽通信技术的木马病毒分析[J]. 计算机工程,2008,34(10):147-149.[5] 刘敬轩,戴英侠. 基于NDIS 的IPSec VPN客户端的设计与实现[J]. 信息安全与通信保密,2006 (12):191-194.[6] 樊迅,王轶骏. 客户端蜜罐原理及应用研究[J]. 信息安全与通信保密,2009(03):69-71.

[7] STEENSON R,SEIFERT C. Capture Client Honeypot[DB/OL].(2007-09-22) [2008-04-05]. h t t p s ://p r o j e c t s . h o n e y n e t . o r g /c a p t u r e -h p c . [8] 谭文,

杨潇,邵坚磊. 寒江独钓—Windows内核安全编程[M].

北京:电子工业出版社,2009:435-483.

信息安全与通信保密 · 2011.2

51

标签: