APP下载

基于NDIS中间层的木马防护机制研究及实现

2013-12-18洪双喜

电子科技 2013年5期
关键词:端口号木马病毒信息库

洪双喜,雷 涛

(华北水利水电学院信息工程学院,河南郑州 450011)

随着社会信息化以及信息网络化的迅速发展,网络安全问题日益突出且越来越复杂,已经成为亟待解决的问题,并引起各方的关注。目前以木马病毒对网络系统信息进行的窃取、篡改行为最为突出,这对网络用户的信息安全构成了巨大威胁。与此同时,各种病毒程序,尤其是木马程序通过计算机网络渗透到PC机中,窃取秘密信息,给信息系统或个人带来严重威胁。比较有名的杀毒软件如360、瑞星等杀毒软件可以对计算机起到良好的保护作用,但对已经潜入计算机的网银型木马病毒的通信拦截就有限。通过对基于包过滤技术网络安全的研究[1],本文采用基于NDIS中间层技术,对木马工作周期中的网络通信阶段进行实时监视,通过对进程运行时产生的网络通信数据进行分析和判定,达到识别防范木马通信的目的。

1 网络驱动接口规范(NDIS)体系结构

网络驱动接口规范(Network Driver Interface Specification,NDIS)是微软和3Com公司在1989年制定了一套开发Windows平台网络驱动程序的标准[2],NDIS提供了一套标准的接口,用于实现传输驱动程序和网卡驱动程序之间的相互通信,使得网络驱动程序的跨平台性更好,所有传输层驱动程序都需要调用NDIS接口来访问网络。NDIS在Windows中的拓扑结构如图1所示。一般情况NDIS包含符合NDIS规范的3种常见驱动程序类型:(1)NDIS小端口驱动程序(Miniport Driver)。有两个基本功能:其一,管理一个网络接口卡(NIC),包括通过NIC收发数据。其二,提供与高层驱动程序之间的接口,例如中间层驱动程序和传输协议驱动程序。(2)NDIS协议驱动程序(Protocol Driver)。传输协议在NDIS驱动程序层次结构中属于最高层驱动程序,而它经常在实现传输层协议的传输驱动程序中被用作最底层驱动程序,例如TCP/IP或IPX/SPX。传输协议驱动程序分配包,从应用程序中将数据拷贝到包中,并通过调用NDIS函数将这些包发送到低层驱动程序中。传输协议驱动程序也为从下层驱动程序中接收包提供了接口。协议驱动程序将接收到的数据转换成相应的客户应用数据。(3)NDIS中间层驱动程序(Intermediate Driver)。NDIS中间驱动位于小端口驱动和协议驱动之间,这样可以在网卡驱动程序和协议驱动程序之间插入自己的NDIS过滤驱动程序,在该层驱动程序可以截获所有网络报文并加以处理,执行效率较高。

图1 NDIS拓扑结构

2 木马种类特征及通信方式

2.1 木马的特征和种类

木马的特征主要有:自动运行性,欺骗性,自动恢复性,顽固性和隐蔽性。隐蔽性是木马的首要特征。根据木马程序对计算机的具体动作方式,可以把现有的木马程序分为:(1)远程控制型木马。(2)密码发送型木马。(3)破坏型木马。(4)键盘记录型木马。(5)即时通讯型木马。(6)网银型木马。(7)FTP型木马。上述类型木马中以密码发送型木马和网银型木马造成的损失最大。

密码发送型木马是找到所有的隐藏密码,并在受害者不知情的情况下将其发送到指定信箱。网银型木马专门针对网络银行攻击,采用记录键盘和系统动作的方法盗取网银账号和密码,并发送到作者指定的邮件,直接导致用户的经济损失。通过对木马病毒的特征及种类分析[3],大部分木马病毒与主控机进行通信,以接受主控机指令并发送所窃取的各种重要信息,是木马病毒有别于其他病毒或蠕虫的最大特点。

2.2 木马病毒的通信方式

木马病毒的通信方式主要有[4]:(1)传统的客户∕服务通信模式。即木马病毒打开某个端口进行监听以获得主控机的连接消息,以便与之进行通信交流。(2)端口寄生模式。就是木马病毒利用目标机上一个已经打开的端口进行监听,遇到指令就进行解释执行;由于这时木马实际上是寄生在已有的系统服务之上,因此无法通过系统端口扫描发现此类木马病毒。(3)端口反弹模式。由于绝大多数防火墙都严格限制由外向内的连接请求,故工作在传统客户∕服务通信模式下的木马往往很难奏效。而端口反弹型木马则恰恰相反,它利用了防火墙对由内向外的连接请求通常不加限制的特点,将主控机作为服务器,而目标机作为客户,主动向外发出连接请求。如将主控机监听端口设为80,伪装成Web服务器,则目标机的通信请求都会被防火墙误认为是HTTP请求而予以通行。(4)利用应用层协议。木马为避开新端口以增加其隐蔽性,往往会利用现有的高层协议,如HTTP协议、FTP协议或SMTP协议进行通信交流。为此木马主控机会伪装成一个支持CGI的HTTP服务器,在80端口监听连接请求。而目标机则可以利用协议与主控机进行通信交流,传送目标机中的重要敏感信息。(5)利用ICMP协议。木马病毒利用ICMP协议进行通信交流,可有效避免被端口扫描工具所察觉,增强其隐蔽性。但由于ICMP协议不是一个可靠的有连接传输,因此只能用于传递一些敏感信息,而不适用于进行实时图像传输和远程控制。同时由于目前基于ICMP的攻击方式很多,有些防火墙阻塞了ICMP包,在这种情况下,利用ICMP协议的木马病毒就失灵了。

3 木马防护平台的设计与实现

3.1 系统的框架结构

通过对木马病毒通信特征及方式的分析可知,大部分木马病毒都要主动与外界进行联系,并建立连接,把用户的重要信息发送出去。如果在应用层进行拦截,木马病毒可以轻松绕过,从而无法进行有效拦截。针对这些特征,本文提出利用在NDIS中间层加入一个过滤驱动,使所有进行通信的数据包都要经过这个过滤驱动的过滤,并特别对主动对外联系的数据包进行重点分析。为不影响数据包的传输速率,减少对数据包的处理时间,本文通过分析数据包的IP地址、相应的端口号及进程,对数据包进行检测,而不对数据包的内容进行分析。在该层的过滤驱动不需要关心报文的收发,网络报文的收发操作由NDIS中的协议驱动和小端口驱动负责。以发送报文为例,如图2所示,在处理过程中,为降低丢包率,NDIS中间层驱动在截获完整的报文后,直接放入网络报文队列,对于分片报文,则进入分片重组队列,重组完成后再放入网络报文队列。

图2 木马防护系统结构

木马防护平台采用多线程技术,其中排队处理线程专门负责网络报文的排队,报文分析线程处理队列中的报文。为减少对报文的处理时间,报文分析线程首先查看包的IP地址和端口号,然后和IP信息库进行比对,如果IP信息库中存在此IP地址,并且相应的安全标记显示为安全,则认为发往此目的的IP数据包安全。如果IP信息库中不存在此IP地址,则说明此数据包是一个进程主动向外发送的,报文分析线程把端口号发送给IP信息库管理程序,然后IP信息库管理程序通过端口号查出该端口号属于哪一个进程,再判断该进程是否为正常进程。如果属于非法进程,则把该数据包丢弃。如果是正常进程,IP信息库管理程序把此IP地址、相应的端口号和进程加入到信息库中,设安全标记为安全,然后把数据包向下正常发送出去。对于计算机接收到的数据包,对该数据包的IP地址和信息库进行匹配,如果信息库中存在此IP地址,则把该数据包直接向上传送,如果不存在,则把此IP地址和端口号添加到信息库中,同时IP信息库管理程序把拥有该端口号的进程名也添加进去。

3.2 IP信息库的管理及结构

IP信息库是本文提出的木马防护平台的核心模块之一,信息库管理程序对信息库进行管理,实现查找、修改、删除等功能。同时信息库管理程序具有判断进程合法性的功能。它通过一个合法进程表对一个进程进行判断。如果该进程在合法表中,则该进程合法,否则通过下列规则进行判断。其所依据的判断规则[5]如下:

(1)如果进行网络通信的进程名与系统进程名(如services.exe)相同,但其路径不在系统进程目录(system32)下,则为不合法。

(2)如果进行网络通信的进程名与系统进程名相似,如程svch0st.exe与系统进程svchost.exe相似,则为不合法。

(3)如果进程运行时自动发送电子邮件,则将此进程名进行显示给用户,由用户对此邮件的行为进行判断,判断结果存入IP信息库,如果是合法进程则同时添加到合法进程表中。

(4)如果进程使用ICMP协议进行通信,则将进程名显示给用户。通过和用户交互进行判断。判断结果存入IP信息库。如果是合法进程则同时添加到合法进程表中。

(5)如果进程主动向外进行连接,则将进程名显示给用户,通过和用户交互进行判断。判断结果存入IP信息库。同时如果是合法进程则添加到合法进程表中。

第(1)条规则和第(2)条规则基于木马程序的进程隐藏原理进行判定;第(3)条规则基于木马程序传输信息的途径进行判定;第(4)条规则基于木马程序的通信隐藏原理进行判定;第(5)条规则基于木马程序网络通信的端口及其状态进行判定。

IP信息库结构如图3所示,其中每一条记录显示出一个进程,其所用的端口号和进行通信的目的IP地址及相应的安全标记。

图3 IP信息库记录数据结构

由于一台PC机所访问的IP地址并不是很多,本文采用哈希方法进行检索,这在很大程度上提高了对记录的检索速度,对于一个给定的IP地址,首先计算它的哈希值,找到相应的位置,然后进行比对,如果不是,再看该记录的下一个记录是否为空,如果不为空则向下查找。

3.3 数据包截获的实现与测试结果

中间层过滤驱动捕获接收和发送的数据包是NDIS_PACKET格式,通过调用NdisQueryPacket函数获取得到NDIS_PACKET包的内容[6],得到传输数据包的内容,判断所捕获的是不是TCP∕UDP包或其他协议包,并取得包中所含的IP地址和端口号,将得到的IP地址和端口号交给数据包分析线程。该线程通过DeviceIoControl函数和应用层的IP信息库管理程序进行相互通信,通过信息库管理程序对接收到的IP地址和IP信息库进行匹配,如果匹配成功并且安全,则将数据包传向上层驱动继续进行收包,或者向下层驱动继续发包,完成整个数据包的发送或者接收。以发送工作流程为例,如图4所示。

图4 数据包发送流程

测试环境是在Windows XP系统下进行,由于该机制工作在内核层,所以在虚拟机下进行测试。文中采用3种木马病毒及常用的Ping命令进行了测试,测试结果如表1所示。

表1 防护平台测试结果

该机制开始时会对通信速率有一定的影响,并且有时需要和用户进行交互,但随着IP信息库和合法进程表的信息增加,通信速率会迅速恢复到正常,并且和用户交互的次数也迅速减少。

4 结束语

本文采用NDIS中间层过滤驱动技术实现了对数据包捕获和分析,通过分析数据包IP地址、端口号和其对应进程的合法性,能够实现对木马病毒通信的拦截和木马进程发现,这在很大程度上降低了对数据包的处理时间,使发送和接收数据包速率没有明显下降。下一步改进方向:在基于统计学的基础上,对一部分可疑数据包中数据进行安全分析,以达到降低木马病毒的漏报率和误报率,同时结合防火墙和杀毒软件能更好地实现对木马程序的拦截和查杀。

[1]柳岸,龙雅琴,古乐野.基于包过滤技术的网络安全的研究[J].计算机应用,2006,26(9):2160 -6162.

[2]陈小爱,刘海涛.基于NDIS中间层的通信安全机制的设计与实现[J].微型电脑应用,2008,24(8):6 -8.

[3]李斯.浅析木马程序攻击手段及防范技术[J].网络安全技术与应用,2009(8):16-18.

[4]朱明,徐骞,刘春明.木马病毒分析及其检测方法研究[J].计算机工程与应用,2003(28):176 -179.

[5]钟明全,李焕洲,唐彰国,等.基于网络驱动技术的木马通信检测系统[J].计算机工程,2010,36(9):150 -152.

[6]杨志程,舒辉,董卫宇.基于NDIS通信技术的木马病毒分析[J].计算机工程,2008,34(10):147-149.

猜你喜欢

端口号木马病毒信息库
校园网木马的入侵与防范
在Docker容器中安装应用程序
借助BIM构建动态造价信息库的新思路
浅谈以java为基础的Socket通信简介及实现
基于普元EOS平台的信息库的设计与实现
大盘鸡 等
Winsock编程在《计算机网络基础》教学中的应用
基于Android系统的互动展示APP的研究与设计
病毒播报