APP下载

基于Unix系统的嗅探软件工作机制及实现

2018-03-13徐书欣赵景

现代电子技术 2018年6期
关键词:信息安全

徐书欣+赵景

摘 要: 网络嗅探技术是一把双刃剑,对于网络攻击者和网络防御者都有着重要的意义。信息安全管理人员可以在网络安全运维中通过网络嗅探随时掌握网络的实际情况;对攻击者来说,其良好的隐蔽性是一种有效收集信息的手段,并且可以辅助进行IP欺骗。网络嗅探对信息安全的威胁来自其被动性和非干扰性,给Internet安全带来了极大的隐患。阐述网络嗅探和共享式网络的定义,目的是进一步分析共享式网络下的嗅探工作机制,通过采用共享式网络下基于Unix系统的嗅探程序结构的分析方法,提出使用开发库LibPcap下的函数设计嗅探软件的编程流程的结论,进而得到嗅探软件设计分析的结果。

关键词: 嗅探软件; 信息安全; Unix系统; IP欺骗; 共享式网络; 编程流程

中图分类号: TN711?34; TP393.08 文献标识码: A 文章编号: 1004?373X(2018)06?0057?04

Abstract: Network sniffer technology is a double?edged sword which is of great significance for both network attackers and defenders. Information security management personnel can keep track of actual network conditions by means of network sniffing during network security operation and maintenance. For attackers, its good concealment is an effective information collection means, and can help with IP spoofing. The threat of network sniffing to information security comes from its passivity and non?interference, which poses a great danger to Internet security. The definitions of network sniffing and shared network are elaborated in this paper for the purpose of further analyzing work mechanism of sniffing in shared network. By adopting the Unix system based analysis method of sniffer program structure in shared network, it concludes that functions in LibPcap development library can be used to design programming flow of sniffer software, so as to obtain the analysis result of sniffer software design.

Keywords: sniffer software; information security; Unix system; IP spoofing; shared network; programming flow

网络嗅探技术目前发展已经非常完善,对信息安全管理人员在监控网络间的数据传输、排除网络故障方便具有不可替代的协助作用,是网络监控系统的实现基础,备受信息安全管理人员的青睐。与此同时,网络嗅探也给互联网安全带来了很大的不安全因素,许多黑客常常直接或间接借助网络嗅探的方法,造成网络用户口令被盗、机密数据被截取等一系列连锁性安全事件,目前是黑客们常用的手段之一。

1 共享式网络下的嗅探原理

1.1 网络嗅探技术

网络嗅探又叫作网络监听 (Network Sniffing)[1?2],是指利用计算机的网络接口在对方未知的情况下截获其计算机通信内容的一种技术。在网络空间安全领域,网络嗅探技术是一把双刃剑,对于网络攻击者和网络防御者都有著重要的意义。网络管理员可以在网络安全运维中通过网络嗅探随时掌握网络的实际情况;对黑客而言,它是一种有效收集信息的手段,并且可以辅助进行IP欺骗,其只接收不发送的特性也使其拥有良好的隐蔽性。网络嗅探技术的能力范围目前只限于局域网[3],在当前以以太网为主的局域网环境下,网络嗅探技术具有原理简单、易于实现、难以被察觉的优势。

1.2 共享式网络

共享式网络的典型代表是总线型网络和星型网络,采用集线器或交换机进行设备之间的连接,其主要特征是只有一条通信信道[4?5],该信道可以供网络中的所有节点公用,信道上发送的数据可以被网络中的所有节点转发并被所有其他的节点接收,分组的地址地段在分组时应被哪台机器接收。一旦收到分组,各机器将检查它的地址地段,如果是发给自己的,则处理该分组,否则将它丢弃。

1.3 共享式网络下的嗅探原理

在共享传输介质的以太网中,所有的通信都是广播的[6],即该局域网中的任何一台节点都可以接收到在信道上传递的数据帧,网络中的工作站如何处理接收到的数据帧,取决于该数据帧的真实目的地址和主机网卡的接收方式。数据帧地址一般有两种类型[7]:一种是发往单机的数据帧,其数据帧的目的地址是接收节点主机的物理地址;另一种是广播数据帧,其数据帧的目的地址的每一位都为1,表示该数据帧可以让节点上所有主机接收并处理。endprint

在真实的网络环境下,报文的收发都是由工作站上的网卡来完成的,与工作站上安装的OS无关。网卡中的驱动程序翻译出报文中的目的物理地址,然后按照工作站网卡驱动设置的接收模式来判断是否应该接收数据。在需要接收数据的同时产生中断服务信号通知工作站的中央处理器,如果不该接收就丢弃。一般情况下,工作站上的网卡只对目的地址是本机物理地址的数据帧和广播数据帧进行响应,也就是说,如果想让局域网内的某台工作站能够对数据包进行嗅探,首先要对工作站网卡的接收模式进行相应设置,网卡一般有以下四种接收模式:

1) 广播模式(Broadcast):在该模式下,网络中的广播信息都能够被网卡接收。

2) 组播模式(Multicast):在该模式下,设网络中的组播数据网卡都能够接收。

3) 直接模式(Unicast):在这种模式下,只有目的地址是本机物理地址的数据帧才能被网卡接收。

4) 混杂模式(Promiscuous):在这种模式下,所有通过该网卡的信息都能被接收,而不管该信息是否传送给它。

一般而言,工作站的网卡都工作在广播、组播或者直接模式下。网卡接口一般应该只响应与本机物理地址相匹配的数据帧和广播帧,对于其他数据帧都直接进行简单的丢弃处理。但是,当用户把网卡的工作模式设置为“混杂模式”时,网卡就能够接收所有传递给它的报文。这实际上就是嗅探的基本原理:让网卡接收所有能接收的数据,也就是让主机处于监听模式。

当把某工作站的网卡设置为“混杂模式”后,该工作站就可以监听并嗅探到同一个网段下的所有工作站发送的数据帧[8?9]。网卡接收到数据包后,就会将其传送到上一层来处理,如果在这一阶段使用嗅探软件来提供一定的捕获和过滤机制,就可以达到监听人们所希望知道的信息的目的。

2 共享式网络下的嗅探机制

网络嗅探可以通过软件和硬件两种方式来实现。硬件嗅探器通常称为协议分析仪,它的明显特点恰恰是软件嗅探器所欠缺的,处理速度很高,但是价格昂贵。软件嗅探器的优点是价格便宜、易于使用,缺点是功能往往有限,因此会造成可能无法抓取网络上所有的传输数据的后果,或效率容易受限,目前大部分用户主要以使用软件嗅探器为主。

2.1 以太网工作协议

共享式以太网的传输采用广播的方式[1],一般情况下,工作站的网络接口只能接收到发送给自己的数据包,除此之外的其他数据都被过滤丢弃掉。该过滤机制可以作用在合法物理地址层(链路层)、合法IP地址层(网络层)和合法端口层(传输层)三个层次,工作流程如图1所示。

图1 以太网工作协议

Fig. 1 Work protocol of Ethernet

合法MAC地址层(链路层)就是平时接触的网卡和网卡驱动程序,主要通过网卡驱动程序来判断所接收到数据包的目标地址进行过滤,正常情况下,网卡只响应与目标区域、本地网络接口一致的物理地址的数据包以及目标区域内广播数据包。当网卡接收到这些有用的数据帧时,自身内置的单片程序就解析出数据帧中的目的物理地址,同时产生中断信号通知CPU,操作系统进行中断处理后把数据帧中所有的有用数据转递给网络层作下一步处理,否则将数据包丢弃。

合法IP地址层(网络层)判断目的IP地址是否为本机固定IP地址,以决定是将数据包传递到传输层处理还是丢弃。

合法端口层(传输层)判断对应的目标端口是否在本机处于打开状态,以判断是根据TCP/UDP协议向应用层提交其内容,还是丢弃。

网卡在混杂模式工作时,所有流经网卡的数据帧不管目的MAC地址是否匹配本地MAC地址,都会被网卡驱动程序上交给网络层。通过网络层处理程序判断目的IP地址是否为本机固定IP地址,来决定是传递给传输层进行下一步处理还是丢弃,通过这一特定的机制,保证上层应用能够抓到本不属于自己的“数据包”。

2.2 嗅探的主要工作機制

如果要让用户的嗅探工具能够真正“抓到”数据包,需要提供一个虚拟的微端口网卡驱动接口。作为网卡驱动与上一协议层应用的“中间层”,它将网卡设置成混杂模式,接收上层应用的各种抓包请求,以保证能够抓获所有经过该网卡发送和接收的数据包,并对抓获的数据包进行过滤,把与嗅探工具要求设置相符合的数据过滤后进行返回。为此,数据链路层网卡驱动上传的数据要么进入正常的TCP/IP协议栈模块[10],要么传递到分组捕获过滤区域,对于接收到的异地数据包,前者通过比较目的IP地址进行丢弃处理,后者要根据上层应用的需求进行上传或者丢弃,如图2所示。

图2 两种不同的分组处理模式

Fig. 2 Two different packet processing modes

在实际应用中,流经网卡的数据流量里存在无用或对嗅探主机来说没用的数据,为了提高嗅探的效率,需要对数据包首先进行过滤处理,网络嗅探效率的关键是网络嗅探模块过滤机制的设计是否合理。通常从以下几个方面对数据包进行过滤:

1) 站过滤:根据网卡的物理地址,专门筛选出来自一台主机或服务器的数据。

2) 协议过滤:根据传输层协议和网络层协议中的特性进行数据筛选,如选择UDP数据而非TCP数据。

3) 服务过滤:根据端口号来选择特定类型服务进行数据包的筛选。

4) 通用过滤:通过数据包中某一特定位置开始(如某一偏移的十六进制值),筛选出具有某些共同数据特征的特定数据包。

数据包的筛选可以在抓获前进行,用户首先设置好过滤条件,这样系统只抓获满足筛选条件的数据包,这种方法非常适合于缓冲区空间有限而避免无用数据过多造成溢出现象;也可以在捕获后进行,首先捕获所有的数据包,在设置好过滤条件后,只显示满足条件的数据包,这种方法广泛使用于首先抓取数据包,然后再根據要求筛选出有问题的数据来进一步处理。

目前,大多数操作系统都提供有分组捕获过滤机制(也称“中间人”机制)。在Unix/Linux类操作系统中,其主要有BSD系统中的BPF(Berkeley Packet Filter)、SVR4中的DLPI(Date Link Interface)和Linux中的SOCK_PACKET类型套接字3种分组捕获过滤机制。目前大部分嗅探软件都是依照上述机制来建立的。

3 共享式网络下的嗅探实现

3.1 系统无关捕获函数库

由于数据包捕获及过滤模块都工作在内核层,它们的具体实现完全依赖于操作系统本身。而且考虑到系统的可移植性,避免用户空间程序可以不依赖于具体的操作系统,这就需要提供系统无关捕获函数库,而且需要在包捕获和过滤模块之上建立该函数库,保证用户空间程序能够使用该函数库提供的一整套与操作系统无关的调用接口,通过调用接口与系统内核部分传递信息。

3.2 基于Unix系统的开发库LibPcap

Unix系统的典型代表BSD(Berkeley Software Distribution)下的监听程序结构由网卡驱动程序、BPF捕获机制和LibPcap三部分构成。当把网卡的接收模式设置为混合模式后,通过网卡驱动程序就可以监听共享网络中的所有数据帧,然后BPF通过设置的筛选条件与所有监听到的数据帧进行对比,若信息一致则将该数据帧从网卡驱动程序的缓冲区中拷贝到核心缓冲区,如图3所示。

网卡驱动程序和BPF捕获机制对任何软件开发者来说都是透明的,因此,最核心的部分是如何在系统中使用LibPcap。在LibPcap模块中用户程序和操作系统内核交互用来实现根据用户要求生成过滤指令、管理用户缓冲区、负责用户程序和内核的交互等工作,而这些细节对软件开发者来说是隐藏的,开发者只需要使用其提供的功能函数即可。使用LibPcap库捕获数据包的编程流程如图4所示。

4 结 语

在共享网络中,网络嗅探具有隐蔽性强、网络信息泄露不易被发现的特点,这主要是网络安全的主要威胁来自于非主动性和非干扰性,因此对网络攻防双方都有实际意义。本文分析共享式网络下的嗅探原理和嗅探软件的工作机制,结合共享式网络下基于UNIX系统的嗅探程序结构,提出使用开发库LibPcap下的函数设计嗅探软件的编程流程并给出了实现步骤,为进一步开发设计嗅探软件提供了理论基础。

参考文献

[1] 王敏,甘刚,吴雪,等.网络攻击与防御[M].西安:西安电子科技大学出版社,2017:19?21.

WANG Min, GAN Gang, WU Xue, et al. Network attack and defense [M]. Xian: Xidian University Press, 2017: 19?21.

[2] 刘钦.计算机网络信息安全及其防护对策探讨[J].网络安全技术与应用,2016(11):16.

LIU Qin. Discussion on information security and protection countermeasures of computer network [J]. Network security technology and application, 2016(11): 16.

[3] 康文峥,余鹏.交换式网络嗅探与反嗅探研究[J].数字技术与应用,2013(3):70.

KANG Wenzheng, YU Peng. Switched network sniffer and anti?sniffing [J]. Digital technology and application, 2013(3): 70.

[4] 王友亮.目前网络安全技术的缺陷及整合趋势分析[J].网络安全技术与应用,2015(12):38?39.

WANG Youliang. Defect and integration trend analysis of network security technology [J]. Network security technology and application, 2015(12):38?39.

[5] 王宗楠.网络攻击技术与网络安全分析[J].电子技术与软件工程,2015(12):212.

WANG Zongnan. Network attack technology and network security analysis [J]. Electronic technology and software engineering, 2015(12): 212.

[6] 温乃宁,龚尚福.基于Winpcap嗅探器技术分析与实现[J].高校实验室工作研究,2013(1):45?46.

WEN Naining, GONG Shangfu. Technology analysis and implementation based on Winpcap sniffer [J]. Research on laboratory work in colleges and universities, 2013(1): 45?46.endprint

[7] 孙君亮,童艳,卞光浪.提高Unix实时应用软件实时性可靠性关键技术[J].自动化技术与应用,2016(4):26?29.

SUN Junliang, TONG Yan, BIAN Guanglang. Key technology of improving real time reliability of Unix real time application software [J]. Techniques of automation and applications, 2016(4): 26?29.

[8] 于鹏飞,孙春静,薄红岩,等.基于Windows平台的网络嗅探器系统的设计与实现[J].黑龙江科技信息,2017(6):179.

YU Pengfei, SUN Chunjing, BO Hongyan, et al. Design and implementation of network sniffer system based on Windows platform [J]. Heilongjiang science and technology information, 2017(6): 179.

[9] 麦丞程.基于嗅探技术的网络攻击应对策略研究[J].网络安全技术与应用,2015(6):35?36.

MAI Chengcheng. Research on network attack response strategy based on sniffing technology [J]. Network security technology and application, 2015(6): 35?36.

[10] 祝翘楚.Android平台视频嗅探下载软件的设计与实现[D].大连:大连理工大学,2015:52?65.

ZHU Qiaochu. Design and implementation of video sniffer downloading software on Android platform [D]. Dalian: Dalian University of Technology, 2015: 52?65.endprint

猜你喜欢

信息安全
《信息安全与通信保密》征稿函
基于三级等级保护的CBTC信号系统信息安全方案设计
《信息安全研究》2018年(第4卷)总目次
信息安全专业人才培养探索与实践
计算机网络信息安全及防护策略
保护信息安全要滴水不漏
高校信息安全防护
保护个人信息安全刻不容缓
WebSocket技术在信息安全系统中的应用
中国信息安全认证中心