王德广, 许冲
(大连交通大学 软件学院,大连 116052)
随着计算机技术的发展,无线网络应用的迅速普及,无线网络的安全性[1-2]与可靠性[3-4]也日益受到人们的重视。数据包捕获、解析与重组技术是网络安全维护的基本手段,同时也是入侵网络的核心手段[5]。之前有许榕生、李祥等网络专家利用WinPcap、Libpcap实现对数据包的捕获和监测来寻找解决网络安全的方案与网络安全的防护手段[6-7]。所以对网络数据包捕获、解析与重组还原技术对保证网络的安全、健康、可靠性地运行是有重要的意义。
研究思路是在无线路由器中植入程序来进行数据包的捕获,并对数据包解析、存储和重组还原,还原后的内容进行安全检测,若出现问题便及时修改路由表来确保网络环境的安全。
通过对TCP/IP五层参考模型的分析,应用层下面的传输层的数据读取需要运用标准套接字完成。然而在网络安全编程中要对更底层的网络层、数据链路层的数据包捕获与分析[8-10],就要运用原始套接字[11]来完成。因此,网络数据包捕获系统选择原始套接字作为主要技术。
系统的总体架构设计如下图1所示:
图1 系统设计总架构图
(1)智能手机、笔记本、平板电脑连接无线WiFi通过Gee(极路由)进入以太网进行上网。
(2)Gee(极路由)被植入网络数据包捕获程序,对流过WiFi的数据流进行捕获,把捕获的数据包通过服务器中UDP套接字的客户端发送到服务端。
(3)接收到极路由中的数据包解析后存储到的数据库中。
(4)从数据库中把数据包提取出来进行重组还原。
(5)重组还原的图片、文本数据包内容在前端展示。
根据系统的总体构架和系统程序现实性需要,设计出了系统利用原始套接字对数据包捕获的流程图,流程图分为客户端流程图和服务端流程图以及两者在实际运行过程中的关系,如图2所示。
图2 原始套接字数据包捕获流程图
Linux操作系统是Unix操作系统的一个克隆系统,但是Linux和Unix最大的区别是:Linux是开放的源代码的自由软件。Linux操作系统已经成为目前最流行的开源操作系统,版本有Fedora、Ubuntu、Red Hat、OpenSUSE等。在系统的开发中利用的版本是比较流行的Ubuntu16.04。
3.1 实现的主要函数
int sock_raw = socket( PF_PACKET , SOCK_RAW , htons(ETH_P_ALL));
根据系统程序的需要创建了此原始套接字。在原始套接字的协议族中选择PF_PACKET,用PF_PACKET创建的原始套接字比较强大,它可以监听网卡上的所有数据帧。但只有root权限用户才能使用PF_PACKET程序。根据系统的需要本程序选择的是htons(ETH_P_ALL),它接收发往本机MAC的IP、ARP、RARP数据帧,接收从本机发出的所有类型的数据帧,保证全面的捕获数据包。
程序中另一个重要的部分就是数据包解析。数据包的解析最重要的的就是要熟悉以太网帧、TCP协议、IP协议、UDP协议的结构组成[12]。根据其结构一步步的将所需要的IP地址、端口号、序列号、数据等一一的解析出来数据包。解析时在程序中用到的最主要的结构分析如下:
ethernet = (struct sniff_ethernet*)(packet);
虽然前人的研究取得了许多令人瞩目的成绩,但仍存在一些局限性。他们仅限于从一般的观点或整个网上购物者或只关注年轻人的网上购物行为的探索。因此,本文将研究范围缩小到在英留学生的网上购物行为,进一步深入的调查他们的网上购物行为。笔者认为,这将有助于大多数电子商务企业采取相应的网络营销推广或社交媒体来推广自己的产品和服务,并再次获得网上消费者的信任。更好地研究和开发更多的创新产品或服务,以吸引和满足留学生的特殊需求,从而增加他们的在线营业额,并获得更大的利润。
ip = (struct sniff_ip*)(packet + size_ethernet);
tcp/udp = (struct sniff_tcp*/ struct sniff_udp*)(packet + size_ethernet + size_ip);
payload = (u_char *)(packet + size_ethernet + size_ip + size_tcp/ size_udp);
3.2 数据库设计
根据数据包与它本身的属性设计了数据库表,数据库表中的字段设计有Stype (类型)、STime(入库时间)Src_ip(源IP地址)、Dst_ip(目的IP地址)、Ssrc_port(源端口)、Sdst_port(目的端口)、Spaload(有效数据)、Sseq(序列号)。数据课表的具体实现,如表1所示。
表1 数据包存储数据库表
3.3 数据包重组
数据库中的有效数据被提取出来重组还原[13-14]成原来应用层的信息。系统主要实现文本和图片的还原。
通过TCP协议发送图片并捕获的数据包,经解析后的图片数据包存储到数据库中,如图3所示。
图3 存储的图片数据包
通过把数据库中TCP协议的有效数据包提取出来进行重组还原[15]成原来的图片。如图4所示。
4.1 系统部署
数据包捕获系统在64位Ubuntu16.04版本下开发,数据库使用基于Linux系统的MySql5.7.14。极路由是基于OpenWrt系统,程序要植入极路由先要进行交叉编译。极路由官网下载SDK在Ubuntu下搭建OpenWrt的交叉编译器。交叉编译成功的主要脚本是cross-compile.sh。最终通过WinSCP植入到极路由中运行。进入交叉编译环境与程序交叉编译,如图5所示。
图4 重组还原的图片
图5 交叉编译环境
4.2 系统测试
通过UDP协议[16]进行发送的文本内容进行捕获与存储,并且还要对有效数据进行重组还原[17],如图6、图7所示。
图6 数据库中的数据包
图7 文本信息还原
图片数据包捕获测试的具体实现见系统实现中的图3、图4。
本文通过分析TCP/IP五层参考模型中的IP协议、TCP协议和UDP协议的数据包结构,利用原始套接字网络编程设计了在Linux下的数据包捕获方法,并植入到极路由中,通过该程序捕获路由器中的数据包,对捕获的数据包解析、存储和重组还原。重组还原后的文本与图片内容对检测网络内容的健康行为与安全性检测有着积极意义。但是由于时间紧迫,对其他应用协议,如QQ、微信、手机银行等信息内
容的捕获、重组还原功能还在完成中,继续增加功能的目的是保证系统本身更加完善,使系统在网络内容安全检测中具有更好的实用性。
[1] 冯思毅. 计算机无线网络安全技术探析[J]. 河北工程大学学报(社会科学版), 2016, 33(1):127-128.
[2] 孙亮. 无线网络安全技术探究[J]. 中国新通信, 2016, 18(3):14-14.
[3] 白洁仙. 无线网络安全策略研究[J]. 天津科技, 2016, 43(9):13-14.
[4] 肖伟. 无线网络安全问题与解决策略研究[J]. 网络安全技术与应用, 2016(5):64-64.
[5] 廖伟文. 无线网络中的安全问题及防范[J]. 通讯世界, 2016(1):82-83.
[6] 李雪莹, 刘宝旭, 许榕生. 基于WinPcap的网络监控系统性能优化[J]. 计算机工程, 2004, 30(1):8-9.
[7] 赵新辉, 李祥. 捕获网络数据包的方法[J]. 计算机应用研究, 2004, 21(8):242-243.
[8] 马之力, 智勇, 张驯,等. 基于数据包分析的网络攻击诊断研究[J]. 信息安全与技术, 2016, 7(7):54-57.
[9] 虞凌霄. 网络数据包的抓取与识别[J]. 中国新通信, 2016(2):5-5.
[10] 吴燕. 网络嗅探器的设计与实现[J]. 电脑知识与技术, 2016, 12(24).
[11] 邱桔, 陈若珊. 一个基于原始套接字Sniffer的设计与实现[J]. 计算机应用与软件, 2006, 23(4):117-119.
[12] 杨高飞. 对从TCP/IP数据包中自动还原图像的研究[D]. 内蒙古大学, 2011.
[13] 刘文敏. 基于数据包捕获的数据内容还原分析技术研究[D]. 北京:北京邮电大学, 2013.
[14] 秦倩, 谢宝娣, 顾兆军,等. 网络数据包还原和内容分析系统的设计与实现[J]. 中国民航大学学报, 2011, 29(3):24-27.
[15] 刘静菠, 刘嘉勇, 唐龙. 基于应用层特征的TCP数据流重组方法研究[J]. 信息安全与通信保密, 2014(5):111-113.
[16] 张恺. 基于UDP的可靠文件传输协议的设计与实现[D]. 西安:西安电子科技大学, 2014.
[17] 赵景磊, 李康, 叶勇,等. 超长UDP数据包预分片与重组技术研究[J]. 遥测遥控, 2016, 37(2):67-74.