Windows环境下基于协议分析的入侵检测程序分析与实现

2019-01-24 05:44刁红艳
电子元器件与信息技术 2018年11期
关键词:监听网卡数据包

刁红艳

(无锡南洋职业技术学院,江苏 无锡 214081)

0 引言

互联网的共享性使得全球的计算机网络处于“半透明化”状态。这种“半透明化”让网络随时都有可能受到不明攻击。网络防火墙技术在软件和硬件上给网络提供了一定程度上的安全保障。随着网络技术和移动互联网的蓬勃发展,入侵检测技术是继防火墙技术后又一个非常重要和实用的技术。入侵检测系统可以弥补防火墙技术上“无法检测加密的Web流量”、“防范能力有限”等的缺点,为网络系统的安全提供了实时的入侵或访问检测,立即采取适合的防范方案,例如记录访问或入侵证据、跟踪入侵或访问的痕迹、及时断开或恢复网络的连接等。入侵检测技术可以让系统在受到外来不安全因素攻击时及时得到检测和监控,能向系统发出预警信号,并能有效地把入侵攻击带来的损失尽可能地降到最低[1-2]。在网络入侵检测系统中,非常重要的部分是有效监听网络上传送的数据包,高效地捕获数据包,进一步分析所捕获的数据,进行可靠的网络安全管理。入侵检测系统还能把入侵信息进行收集、整理,并加入到系统知识库中,以防止系统再次受到类似的攻击。在本论文中,利用Winpcap程序在Windows环境下用C++编写了一个抓包程序,对满足TCP、UDP、IP、ICMP四种协议的数据包进行数据捕获,并将相关信息存入到指定文档中进行显示,以供分析研究。

1 Winpcap

Winpcap是Windows平台的下一个免费的、公共的网络访问系统[3]。这个公共的网络访问系统提供了四个基本功能:一是捕获原始的数据包;二是过滤掉特殊的数据包。也就是按照自定义的规则,将发往应用程序的某些特殊的数据包(可能包含不安全因素的数据包)过滤掉;三是发送原始的数据包;四是收集网络通信过程中的统计的各种传送数据的信息。其中的第一个功能——捕获的原始数据包,包含了那些在共享网络上各主机发送或者接收到的数据包,以及主机与主机相互之间传送的若干数据包。

Winpcap这个公共的免费的网络访问系统的与众不同的特征是独立于主机的协议(比如因特网的TCP/IP协议)而发送或接收原始的数据包。不过,Winpcap仅仅只是监听在共享网络上相互之间传送的数据包,它并不能过滤掉或者控制住其他应用程序进行的数据包的接收和发送。

这个网络访问系统提供给用户两个不同层次的编程接口。其中的一个接口是基于Libpcap的wpcap.dll接口,另一个接口是位于底层的packet.dll接口。位于底层的包捕获驱动程序实际上是一个基于协议的网络驱动程序。通过对NIDS系统中函数的常规调用,给Windows系统提供了一种能力,即捕获和发送原始的数据包。接口Packet.dll是对BPF模型驱动程序进行访问的API接口,它有一套符合libpcap接口的函数库[4]。

2 数据包捕获程序主要程序分析

2.1 获得网卡接口

在数据包捕获程序的实施过程里,当主机为双网卡或者多张网卡时,捕获程序可以分别获得多张网卡各自的结构信息和地址信息,可以对多张网卡分别进行操作。返回的alldevs队列首部为逻辑网卡,其他操作可以不进行。

为了获得设备列表,并把设备列表打印到显示端,可以用如下程序来实现。

if (pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL, &alldevs, errbuf) == -1)

{fprintf(stderr,"Error in pcap_findalldevs: %s ", errbuf);exit(1);}

for(d=alldevs; d; d=d->next)

{fprintf(stderr,"%d. %s", ++i, d->name)if (d->description)fprintf(stderr," (%s) ",d->description);elsefprintf(stderr," (No description available) ");}

2.2 主程序分析

在主程序中,选取了网卡接口号后,系统就跳转到选择的相应设备,此时便开始监听过程。跳转到已选设备并打开适配器,在第一个if语句中,分别需要判断的是设备名、要捕捉的数据报部分、混杂模式、读取超时时间、远程机器验证及错误缓冲池的相关参数,其中的65536端口就是要捕捉的数据包的部分。这样,不同的数据链路层上的每个数据包的数据信息就能保证全部被捕获到了。如果判断失败,就释放设备列表,并提示Winpcap功能不支持,不进入监听状态。代码如下所示。

for(d=alldevs, i=0; i< inum-1 ;d=d->next,i++);if ((adhandle= pcap_open(d->name, 65536,PCAP_OPENFLAG_PROMISCUOUS, 1000, NULL,errbuf )) == NULL)

{fprintf(stderr," Unable to open the adapter. %s is not supported by Winpcap ");pcap_freealldevs(alldevs);fclose(fp);retu rn -1;}

在获得相关数据包信息前,首先检查数据链路层,为了简单,在此只考虑以太网。若检查不成功则释放设备类表,不进入监听状态。代码如下:

if(pcap_datalink(adhandle) != DLT_EN10MB)

{fprintf(stderr," This program works only on Ethernet networks. ");pcap_freeallde vs(alldevs);fclose(fp);return -1;}

运行了上面这个程序以后,可以获得接口的掩码,若接口没有地址,可以假设一个C类的掩码,该功能代码如下。

if(d->addresses != NULL)

netmask=((struct sockaddr_in *)(d->addresses->netmask))->sin_addr.S_un.S_addr;else netmask=0xffffff;

编译上述程序并设置其相应的过滤器,判断成功后进入监听状态,若判断不成功给出响应的告警提示并释放设备列表。

判断成功后进入监听环节,开始捕捉数据包。判断超时时间,并将时间戳转换成可识别的格式,并开始记录IP数据包报头信息。代码如下:

while((res = pcap_next_ex( adhandle,&header, &pkt_data)) >= 0){if(res == 0)continue;num++;local_tv_sec = header->ts.tv_sec;ltime=localtime(&local_tv_sec);trftime(timestr, sizeof timestr, "%H:%M:%S",ltime);fprintf(fp," %d.%s,%.6d,len:%d ",num,timestr, header->ts.tv_usec, header->len);DecodeEthPkt(header, pkt_data);}

判断数据包类型后,可调用相应的子程序来对数据包内容分析,并最终输出到图1的文档1.txt中。

3 运行及输出结果

3.1 程序运行

在编译程序前,首先要确认该机器上安装了Winpcap程序,并有WpdPack包存在,修改Microsoft Visual C++的相关配置:

第一步,打开Project中的settings,在Link的Object中加入 wpcap.lib,Packet.lib和 wsock32.lib。

第二步,打开Tools中 的Directories,在Include files和Library files中添加路径到WpdPack包中对应的INCLUDE和LIB文件。

选择设备后,系统就开始进入监听状态,Ctrl+C或者关闭该窗口,此时监听过程结束。

3.2 输出结果

监听过程中监听到的数据包信息都记录到了如图1所示1.txt中。数据包按照监听到的先后顺序进行编号,每个数据包中的内容包括:捕获到数据包的时间、数据包长度、源以太网地址、目标以太网地址、版本号IP头长度、服务类型、总长、ID号码、协议类型、源端口号、目标端口号等数据包信息等数据包信息[5-6]。

4 结论

图1 输出结果图Fig.1 Output result diagram

网络一旦被入侵,系统的保密性、数据完整性和网络可用性就可能会受到破坏。带着不同企图的网络入侵者,对系统安全性的破坏程度也就不同。不过,无论系统的哪一个特性被破坏,都会对计算机系统和整个网络的安全构成严重威胁,可能会造成不同程度的各种损失,对人类正常的工作、生活与学习产生各种程度不良的影响。作为对于研究入侵检测系统的程序设计,本论文里的这些程序实现了基本的数据包捕获的功能,并能够在Windows环境下运行[7-8]。对于输出结果的处理采取了记录到指定文档中的方式,更加方便读取和研究,以便记录入侵痕迹,制定防范措施,用以防止网络再次受到类似的入侵。计算机网络系统的安全是一个国际化的大问题。而且,随着移动互联网技术以及移动终端的推陈出新,网络入侵的形式可能会越来越多,规模会越来越大,今后的入侵检测技术也必须要得到技术上的大提升才能应对各种复杂、多变的入侵形式。当下和今后,入侵检测技术会在“分布式入侵检测、智能化入侵检测和能全面提高安全防御方案”三个方向发展起来。我们要做的就是通过各种入侵检测技术的研究,能尽量减少网络系统受到各种攻击的可能[9-10],从而维护网络环境的和平与发展。这条路任重而道远。

猜你喜欢
监听网卡数据包
千元监听风格Hi-Fi箱新选择 Summer audio A-401
Server 2016网卡组合模式
SmartSniff
网络监听的防范措施
应召反潜时无人机监听航路的规划
挑战Killer网卡Realtek网游专用Dragon网卡
RHEL7 Network Teaming(网卡绑定)配置与测试
局域网监听软件的设计
视觉注意的数据包优先级排序策略研究
移动IPV6在改进数据包发送路径模型下性能分析