基于NDIS的数据包分析工具的实现
作者: 孙亚
摘要:计算机在遭受各式各样的恶意攻击时,其内部保存的重要信息容易受到未经授权的数据访问、恶意软件传播等安全威胁。文章主要实现了对局域网内网络数据包的嗅探,并将所收集到的数据包进行解析展示,同时对网络内数据流量进行统计,并以折线图形式进行可视化呈现。该系统在Windows 10 1903版本环境下开发。应用程序可运行于Windows 7及以后版本的Windows系统中,同时也可以以兼容模式运行于较早版本中。系统能够完成对局域网内数据包的嗅探、解析、展示,以及流量统计和可视化。经测试,数据包捕获率、解析准确率均达到预期目标,可有效辅助网络安全工作。
关键词:网络安全;NDIS驱动;Npcap;流量监测;网络嗅探;Qt框架
中图分类号:TP393 文献标识码:A
文章编号:1009-3044(2025)08-0086-04
开放科学(资源服务) 标识码(OSID)
0 引言
网络嗅探,其实是指在网络设备通信过程中,利用专业的网络抓包工具得到在网络中流动的二进制数据包,进而对数据包进行解析,收集到分析此网络设备所必需的数据的过程[1]。不过嗅探攻击一般只能对未加密的通信进行探测,如果通信过程有加密,如通过IPSEC或SSL协议,则嗅探攻击无法成功。
近年来,网络的组网方式由共享型逐渐转换为交换型,传统的嗅探技术已经开始呈现它的不足和问题。因此,网络嗅探技术也在不断产生新的变化,主要有对交换机的内存表进行不断攻击,占用大量内存使得交换模式失效的MAC泛滥技术;端口镜像嗅探技术;以伪造的ARP应答来欺骗目标主机,使其更新ARP缓存的ARP欺骗技术即冒充数据传送源地址或目的地址,从而欺骗交换机将数据发送给嗅探者;利用伪造的MAC地址进行对交换机的欺诈的技术等[2]。
本工具实现了对局域网内网络数据包的嗅探,并将所收集到的数据包进行解析展示,以及流量统计和可视化。数据包捕获率、解析准确率均能达到预期目标,可以有效地辅助网络安全工作。
1 技术分析
文中的基于NDIS的网络数据包分析工具所使用的技术主要可以分成两个模块。一个是用于实现过滤数据包并进行流量统计的驱动部分,该部分功能主要基于NDIS协议,依赖Npcap库实现;第二部分是用于实现人机交互界面并对截获的数据包进行解析,该部分功能主要基于QT框架,提供数据包的各项数据的列表展示及流量的可视化分析。
1.1 NDIS Filter框架简述
NDIS 6.87 协议是网络驱动程序接口规范(NDIS) 库在Windows 7以后的Windows版本所支持的版本。NDIS 6.87 包含在 Windows 11 的 22H2 版本中。其他功能已过时,已从更高版本的 NDIS 中删除。其以后的Windows系统就不继续支持NDIS5.0协议[3]。NDIS 指定了内核程序和应用程序模式之间网络驱动程序的标准API接口。NDIS 还可以设定处于上层的协议驱动程序,进而减少了管理硬件的复杂性。
NDIS Filter Drivers的协议驱动栈中必需包括处于上层的协议驱动和处于下层的微端口驱动。然而中间层驱动NDIS Filter并不是必需的,这样的结构设计提供了针对微端口驱动的有选择的过滤服务,并对底层的物理网卡机制进行了屏蔽。在6.87的NDIS协议版本以前,中间层驱动是实现网络数据过滤服务的基本手段,在6.87之后的版本均可用NDIS Filter Drivers代替中间层驱动来实现,且相比较更为简洁。
1.2 Qt框架
Qt框架是一个较为常见的C++应用程序开发框架,具有十分多样的API接口,使程序的开发更加安全、简洁,被人们大量运用于GUI程序的开发[4]。Qt框架具有较高的运行时性能,能生成高可重用、易维护和可读性的代码,且内存占用小,可用于GUI开发、数据可视化等。
2 系统分析
此基于NDIS的网络数据包分析工具所需要实现的功能主要是两个方面,一方面是驱动功能部分,实现对所有通过网卡的数据包的过滤;另一部分是人机交互部分,实现对捕获数据包的分析与可视化以及对驱动的操作指令。
2.1 驱动功能部分
此工具驱动部分考虑以下两种情况。
当计算机网卡处于非混杂模式的情况下时,此网卡只能接收目的地址为本机地址的数据包,因此需要将网络适配器的工作模式调整为混杂模式,来获取所有通过本机的数据包。
对经由网络适配器捕获的所有数据包,依据其数据包结构特性和网络协议特性,建立网络数据包数据的结构体,进行初步的转码,并保存以便进行数据解析与分类。
2.2 人机交互部分
人机交互程序将捕获的数据包的数据结构依据网络协议的特征进行详细的解析,将捕获的数据结构以捕获时间戳、长度、目的IP地址、源IP地址、源MAC地址、目的MAC地址、数据包协议、数据包信息、数据流向[5]。此处的数据流向指的是捕获的数据的源地址和目标地址之间的路径。
将解析完成的数据包信息以列表的方式直观地展示出来,并支持通过点击单一数据包查看数据详细信息,包括使用端口、源数据的ASCII码值和16进制数据等。
3 系统设计
3.1 系统总体分析
3.1.1 系统框架设计
系统框架大致可分为两个部分,一是驱动功能部分,主要负责捕获和复制流经本机的网络数据包;二是用户交互部分,主要负责将驱动捕获的数据包进行解析,数据详情的展示以及对网络流量的实时展示。框架结构如图1所示。
本系统工作流程为:NDIS Filter驱动通过网络适配器将流经本机的所有数据包捕获,并将这些数据包传递给应用程序,随后通过应用程序的解析,获得详细数据并将数据直观地以表格显现出来,同时统计网络中数据包总量并以折线图的方式展现。用户能够通过过滤功能有选择地显示所属类别的数据包信息。
3.1.2 系统功能设计
系统功能设计可分为两个模块设计,即驱动功能的设计和人机交互的设计,功能设计如图2所示。
3.2 驱动功能设计
网卡有以下4种工作模式:多播传送(MultiCast Model) 、广播模式(Broad Cast Model) 、混杂模式(Promiscuous Model) 、直接模式(Direct Model) 。为了能获取本网络中的所有数据包,需要将网卡的工作模式设置为混杂模式以获取全部经由本机网卡的帧。
本驱动模块是系统最核心关键的功能模块,需要通过框架和接口库提供的接口获取经由网卡的数据包,交由人机交互部分进行解析。
3.3 人机交互设计
3.3.1 数据包解析
当今以太网已经占据世界的绝大部分市场,已经成为TCP/IP所采用的主流局域网技术,因此本系统也采用基于以太网的数据帧的数据结构对所获取的数据包进行解析[6]。常见以太网数据帧结构如图5所示。
如图5所示,数据链路层首部占用14个字节,数据链路层尾部占用4个字节(NDIS Filter框架获取数据帧时会自动删去) 。网络层首部最少占用20个字节(无可选字段) ,传输层首部最少占用20个字节(无可选字段) ,信息部分占用46~1 500个字节。通过对上述各个部分依据数据结构特性进行解析即可获得数据包的各项信息。
数据包解析部分结构图如图6所示。
3.3.2 数据包展示
解析完成的数据包信息需要以直观方式进行展示,本系统主要通过QT框架下的QTreeWidget类和QStringList类进行展示。
数据包展示结构图如图7所示。
首先初始化UI界面,显示各个信息的列名以及数据包详情的标头。
进行数据解析的同时,调用QStringList类函数将信息动态添加至用户界面。
点击具体信息包所在行时,发送信号调用QTreeWidget类函数实现详细信息的树形显示。
设置不同数据类型的数据包行的背景颜色以获取更直观的观察体验。
4 系统测试与实现
本系统使用C/C++语言进行编程,系统可运行在Windows 7(版本 6.1 7600) 以上的平台,本文设定为Windows 10 1703(RS2) 。
系统测试其目的在于通过将理想情况下系统运行情况与实际运行环境下系统运行情况相对比,发现系统或是软件中与设计分析所得出的需求有不一致的地方,并进行改进。
功能测试旨在分别测试系统设计中的功能需求,检测本系统是否能正常捕获局域网内数据包,能否正常解析数据包信息,能否正常展示数据包信息,展示数据是否实时更新准确,能否正常过滤数据包,对不同协议类型的数据包是否正常分类,由于驱动功能部分的测试可以使用用户界面的测试结果显现,故本文仅使用用户界面的测试结果以所得出的结果推断驱动功能的正常与否。测试结果如表1所示。
流量展示测试:该测试用于检验流量显示是否准确且实时,有无严重延迟。测试结果如表2所示。
如上述测试所示,此数据包分析工具可以实现对同一局域网下的网络设备发出的网络数据包进行抓取,并显示其数据包的各项信息,满足本系统设计预期目标。
5 总结与发展
本文实现了Windows 7以上平台的基于NDIS的网络数据包分析工具,系统实现了对局域网内网络数据包的获取、解析、展示,同时对网络内数据包个数进行了统计以显示网络内数据流量的大小。系统可简要分为驱动功能和人机交互功能两块内容。
未来研究方向是如何改进数据包解析、如何实现数据包拦截等。
本文基于NDIS的网络数据包分析工具的设计与实现虽然完成,但限于精力有限,还是留下一些缺陷和值得改进的地方。
1) 捕获的网卡名称与实际命名有出入:主要是在无线网卡上,其名称均为microsoft on local host,经实际检验其为无线网卡,其实际功能未受影响,即仍能正常工作,原因可能为解析过程所致。
2) 数据包解析只是依据数据包协议特征获取了一些关键指标,诸如源与目的地址,收发端口等,对信息部分处理较少,实际上数据包中还有许多信息未被挖掘。
3) 数据包拦截功能未能在本系统中得到体现,作为数据包工具,数据包拦截功能是十分有用的,可惜本系统未能实现此功能。希望未来能够优化此功能。
参考文献:
[1] 蒋昳芃.计算机网络安全及防范措施研究[J].网络安全技术与应用,2020(1):2-3.
[2] 林铮.IPv6网络环境下网络攻击探讨[J].数字通信世界,2019(12):1.
[3] 李溪.云计算环境下数据安全与隐私保护分析[J].网络安全技术与应用,2021(8):70-72.
[4] 吴信东,应泽宇,盛绍静,等.数据中台框架与实践[J].大数据,2023,9(6):137-159.
[5] 冯浩.计算机网络信息安全隐患及防火墙技术研究[J].计算机产品与流通,2019(8):25.
[6] 张志伟,张贺勋,吴泽江,等.基于云计算的数据安全与隐私保护[J].网络安全技术与应用,2019(7):63-64.
【通联编辑:谢媛媛】