王德廣, 許沖
(大連交通大學 軟件學院,大連 116052)
隨著計算機技術的發(fā)展,無線網(wǎng)絡應用的迅速普及,無線網(wǎng)絡的安全性[1-2]與可靠性[3-4]也日益受到人們的重視。數(shù)據(jù)包捕獲、解析與重組技術是網(wǎng)絡安全維護的基本手段,同時也是入侵網(wǎng)絡的核心手段[5]。之前有許榕生、李祥等網(wǎng)絡專家利用WinPcap、Libpcap實現(xiàn)對數(shù)據(jù)包的捕獲和監(jiān)測來尋找解決網(wǎng)絡安全的方案與網(wǎng)絡安全的防護手段[6-7]。所以對網(wǎng)絡數(shù)據(jù)包捕獲、解析與重組還原技術對保證網(wǎng)絡的安全、健康、可靠性地運行是有重要的意義。
研究思路是在無線路由器中植入程序來進行數(shù)據(jù)包的捕獲,并對數(shù)據(jù)包解析、存儲和重組還原,還原后的內(nèi)容進行安全檢測,若出現(xiàn)問題便及時修改路由表來確保網(wǎng)絡環(huán)境的安全。
通過對TCP/IP五層參考模型的分析,應用層下面的傳輸層的數(shù)據(jù)讀取需要運用標準套接字完成。然而在網(wǎng)絡安全編程中要對更底層的網(wǎng)絡層、數(shù)據(jù)鏈路層的數(shù)據(jù)包捕獲與分析[8-10],就要運用原始套接字[11]來完成。因此,網(wǎng)絡數(shù)據(jù)包捕獲系統(tǒng)選擇原始套接字作為主要技術。
系統(tǒng)的總體架構設計如下圖1所示:

圖1 系統(tǒng)設計總架構圖
(1)智能手機、筆記本、平板電腦連接無線WiFi通過Gee(極路由)進入以太網(wǎng)進行上網(wǎng)。
(2)Gee(極路由)被植入網(wǎng)絡數(shù)據(jù)包捕獲程序,對流過WiFi的數(shù)據(jù)流進行捕獲,把捕獲的數(shù)據(jù)包通過服務器中UDP套接字的客戶端發(fā)送到服務端。
(3)接收到極路由中的數(shù)據(jù)包解析后存儲到的數(shù)據(jù)庫中。
(4)從數(shù)據(jù)庫中把數(shù)據(jù)包提取出來進行重組還原。
(5)重組還原的圖片、文本數(shù)據(jù)包內(nèi)容在前端展示。
根據(jù)系統(tǒng)的總體構架和系統(tǒng)程序現(xiàn)實性需要,設計出了系統(tǒng)利用原始套接字對數(shù)據(jù)包捕獲的流程圖,流程圖分為客戶端流程圖和服務端流程圖以及兩者在實際運行過程中的關系,如圖2所示。

圖2 原始套接字數(shù)據(jù)包捕獲流程圖
Linux操作系統(tǒng)是Unix操作系統(tǒng)的一個克隆系統(tǒng),但是Linux和Unix最大的區(qū)別是:Linux是開放的源代碼的自由軟件。Linux操作系統(tǒng)已經(jīng)成為目前最流行的開源操作系統(tǒng),版本有Fedora、Ubuntu、Red Hat、OpenSUSE等。在系統(tǒng)的開發(fā)中利用的版本是比較流行的Ubuntu16.04。
3.1 實現(xiàn)的主要函數(shù)
int sock_raw = socket( PF_PACKET , SOCK_RAW , htons(ETH_P_ALL));
根據(jù)系統(tǒng)程序的需要創(chuàng)建了此原始套接字。在原始套接字的協(xié)議族中選擇PF_PACKET,用PF_PACKET創(chuàng)建的原始套接字比較強大,它可以監(jiān)聽網(wǎng)卡上的所有數(shù)據(jù)幀。但只有root權限用戶才能使用PF_PACKET程序。根據(jù)系統(tǒng)的需要本程序選擇的是htons(ETH_P_ALL),它接收發(fā)往本機MAC的IP、ARP、RARP數(shù)據(jù)幀,接收從本機發(fā)出的所有類型的數(shù)據(jù)幀,保證全面的捕獲數(shù)據(jù)包。
程序中另一個重要的部分就是數(shù)據(jù)包解析。數(shù)據(jù)包的解析最重要的的就是要熟悉以太網(wǎng)幀、TCP協(xié)議、IP協(xié)議、UDP協(xié)議的結構組成[12]。根據(jù)其結構一步步的將所需要的IP地址、端口號、序列號、數(shù)據(jù)等一一的解析出來數(shù)據(jù)包。解析時在程序中用到的最主要的結構分析如下:
ethernet = (struct sniff_ethernet*)(packet);
雖然前人的研究取得了許多令人矚目的成績,但仍存在一些局限性。他們僅限于從一般的觀點或整個網(wǎng)上購物者或只關注年輕人的網(wǎng)上購物行為的探索。因此,本文將研究范圍縮小到在英留學生的網(wǎng)上購物行為,進一步深入的調(diào)查他們的網(wǎng)上購物行為。筆者認為,這將有助于大多數(shù)電子商務企業(yè)采取相應的網(wǎng)絡營銷推廣或社交媒體來推廣自己的產(chǎn)品和服務,并再次獲得網(wǎng)上消費者的信任。更好地研究和開發(fā)更多的創(chuàng)新產(chǎn)品或服務,以吸引和滿足留學生的特殊需求,從而增加他們的在線營業(yè)額,并獲得更大的利潤。
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 數(shù)據(jù)庫設計
根據(jù)數(shù)據(jù)包與它本身的屬性設計了數(shù)據(jù)庫表,數(shù)據(jù)庫表中的字段設計有Stype (類型)、STime(入庫時間)Src_ip(源IP地址)、Dst_ip(目的IP地址)、Ssrc_port(源端口)、Sdst_port(目的端口)、Spaload(有效數(shù)據(jù))、Sseq(序列號)。數(shù)據(jù)課表的具體實現(xiàn),如表1所示。

表1 數(shù)據(jù)包存儲數(shù)據(jù)庫表
3.3 數(shù)據(jù)包重組
數(shù)據(jù)庫中的有效數(shù)據(jù)被提取出來重組還原[13-14]成原來應用層的信息。系統(tǒng)主要實現(xiàn)文本和圖片的還原。
通過TCP協(xié)議發(fā)送圖片并捕獲的數(shù)據(jù)包,經(jīng)解析后的圖片數(shù)據(jù)包存儲到數(shù)據(jù)庫中,如圖3所示。

圖3 存儲的圖片數(shù)據(jù)包
通過把數(shù)據(jù)庫中TCP協(xié)議的有效數(shù)據(jù)包提取出來進行重組還原[15]成原來的圖片。如圖4所示。
4.1 系統(tǒng)部署
數(shù)據(jù)包捕獲系統(tǒng)在64位Ubuntu16.04版本下開發(fā),數(shù)據(jù)庫使用基于Linux系統(tǒng)的MySql5.7.14。極路由是基于OpenWrt系統(tǒng),程序要植入極路由先要進行交叉編譯。極路由官網(wǎng)下載SDK在Ubuntu下搭建OpenWrt的交叉編譯器。交叉編譯成功的主要腳本是cross-compile.sh。最終通過WinSCP植入到極路由中運行。進入交叉編譯環(huán)境與程序交叉編譯,如圖5所示。

圖4 重組還原的圖片

圖5 交叉編譯環(huán)境
4.2 系統(tǒng)測試
通過UDP協(xié)議[16]進行發(fā)送的文本內(nèi)容進行捕獲與存儲,并且還要對有效數(shù)據(jù)進行重組還原[17],如圖6、圖7所示。

圖6 數(shù)據(jù)庫中的數(shù)據(jù)包

圖7 文本信息還原
圖片數(shù)據(jù)包捕獲測試的具體實現(xiàn)見系統(tǒng)實現(xiàn)中的圖3、圖4。
本文通過分析TCP/IP五層參考模型中的IP協(xié)議、TCP協(xié)議和UDP協(xié)議的數(shù)據(jù)包結構,利用原始套接字網(wǎng)絡編程設計了在Linux下的數(shù)據(jù)包捕獲方法,并植入到極路由中,通過該程序捕獲路由器中的數(shù)據(jù)包,對捕獲的數(shù)據(jù)包解析、存儲和重組還原。重組還原后的文本與圖片內(nèi)容對檢測網(wǎng)絡內(nèi)容的健康行為與安全性檢測有著積極意義。但是由于時間緊迫,對其他應用協(xié)議,如QQ、微信、手機銀行等信息內(nèi)
容的捕獲、重組還原功能還在完成中,繼續(xù)增加功能的目的是保證系統(tǒng)本身更加完善,使系統(tǒng)在網(wǎng)絡內(nèi)容安全檢測中具有更好的實用性。
[1] 馮思毅. 計算機無線網(wǎng)絡安全技術探析[J]. 河北工程大學學報(社會科學版), 2016, 33(1):127-128.
[2] 孫亮. 無線網(wǎng)絡安全技術探究[J]. 中國新通信, 2016, 18(3):14-14.
[3] 白潔仙. 無線網(wǎng)絡安全策略研究[J]. 天津科技, 2016, 43(9):13-14.
[4] 肖偉. 無線網(wǎng)絡安全問題與解決策略研究[J]. 網(wǎng)絡安全技術與應用, 2016(5):64-64.
[5] 廖偉文. 無線網(wǎng)絡中的安全問題及防范[J]. 通訊世界, 2016(1):82-83.
[6] 李雪瑩, 劉寶旭, 許榕生. 基于WinPcap的網(wǎng)絡監(jiān)控系統(tǒng)性能優(yōu)化[J]. 計算機工程, 2004, 30(1):8-9.
[7] 趙新輝, 李祥. 捕獲網(wǎng)絡數(shù)據(jù)包的方法[J]. 計算機應用研究, 2004, 21(8):242-243.
[8] 馬之力, 智勇, 張馴,等. 基于數(shù)據(jù)包分析的網(wǎng)絡攻擊診斷研究[J]. 信息安全與技術, 2016, 7(7):54-57.
[9] 虞凌霄. 網(wǎng)絡數(shù)據(jù)包的抓取與識別[J]. 中國新通信, 2016(2):5-5.
[10] 吳燕. 網(wǎng)絡嗅探器的設計與實現(xiàn)[J]. 電腦知識與技術, 2016, 12(24).
[11] 邱桔, 陳若珊. 一個基于原始套接字Sniffer的設計與實現(xiàn)[J]. 計算機應用與軟件, 2006, 23(4):117-119.
[12] 楊高飛. 對從TCP/IP數(shù)據(jù)包中自動還原圖像的研究[D]. 內(nèi)蒙古大學, 2011.
[13] 劉文敏. 基于數(shù)據(jù)包捕獲的數(shù)據(jù)內(nèi)容還原分析技術研究[D]. 北京:北京郵電大學, 2013.
[14] 秦倩, 謝寶娣, 顧兆軍,等. 網(wǎng)絡數(shù)據(jù)包還原和內(nèi)容分析系統(tǒng)的設計與實現(xiàn)[J]. 中國民航大學學報, 2011, 29(3):24-27.
[15] 劉靜菠, 劉嘉勇, 唐龍. 基于應用層特征的TCP數(shù)據(jù)流重組方法研究[J]. 信息安全與通信保密, 2014(5):111-113.
[16] 張愷. 基于UDP的可靠文件傳輸協(xié)議的設計與實現(xiàn)[D]. 西安:西安電子科技大學, 2014.
[17] 趙景磊, 李康, 葉勇,等. 超長UDP數(shù)據(jù)包預分片與重組技術研究[J]. 遙測遙控, 2016, 37(2):67-74.