無(wú)線(xiàn)局域網(wǎng)安全分析終端的設(shè)計(jì)與實(shí)現(xiàn)
主動(dòng)/被動(dòng)分析接口模塊由Tcl擴(kuò)展命令來(lái)構(gòu)建。被動(dòng)分析接口模塊和主動(dòng)分析接口模塊實(shí)現(xiàn)WLAN數(shù)據(jù)包的發(fā)送和定制捕獲,以及對(duì)安全分析系統(tǒng)中的被動(dòng)分析和主動(dòng)分析予以支持。
3.2 網(wǎng)絡(luò)操作命令支撐庫(kù)
安全分析終端提供以下兩類(lèi)低層網(wǎng)絡(luò)操作命令:
(1) 網(wǎng)絡(luò)通信支撐命令。包括有線(xiàn)口和無(wú)線(xiàn)口的網(wǎng)絡(luò)通信。
有線(xiàn)口網(wǎng)絡(luò)操作命令:它提供了一組訪問(wèn)數(shù)據(jù)鏈路層socket的命令,包括socket的創(chuàng)建以及通過(guò)socket進(jìn)行數(shù)據(jù)包發(fā)送和接收。
無(wú)線(xiàn)口網(wǎng)絡(luò)操作命令:實(shí)現(xiàn)WLAN數(shù)據(jù)包的定制發(fā)送或捕獲以及設(shè)置網(wǎng)卡的工作模式和工作信道等。
(2)協(xié)議報(bào)文編、解碼命令。在被動(dòng)分析模塊和主動(dòng)分析模塊中,需要對(duì)相關(guān)頭部域進(jìn)行解析或重組,以實(shí)現(xiàn)過(guò)濾報(bào)文或定制頭部域的功能,這就需要編寫(xiě)報(bào)文編、解碼命令。
3.3 被動(dòng)分析接口模塊
被動(dòng)分析是基于捕獲的數(shù)據(jù)包,因此捕獲WLAN數(shù)據(jù)包是該模塊實(shí)現(xiàn)的基礎(chǔ)。從協(xié)議分析的角度來(lái)檢測(cè)非法入侵和攻擊,需要將捕獲的數(shù)據(jù)包發(fā)往主控節(jié)點(diǎn)。每個(gè)安全分析終端都將大量的報(bào)文發(fā)送主控節(jié)點(diǎn),為了減輕主控節(jié)點(diǎn)處理報(bào)文的壓力,安全分析終端將根據(jù)主控節(jié)點(diǎn)的需要過(guò)濾掉部分報(bào)文。終端的被動(dòng)分析接口模塊就是實(shí)現(xiàn)這一功能的。
3.3.1 捕獲WLAN數(shù)據(jù)包的實(shí)現(xiàn)
無(wú)線(xiàn)網(wǎng)卡有兩種工作模式:正常模式和監(jiān)聽(tīng)模式。在正常模式下,網(wǎng)卡工作在非偵聽(tīng)狀態(tài),只會(huì)接收到發(fā)給自己的數(shù)據(jù)包和廣播包,而丟棄其他包。如果把網(wǎng)卡設(shè)置為監(jiān)聽(tīng)模式,則可使網(wǎng)卡工作在偵聽(tīng)狀態(tài)時(shí),就可以接收某一信道上的所有數(shù)據(jù)包。為了實(shí)現(xiàn)程序的可移植性,本文使用Libpcap函數(shù)庫(kù)捕獲數(shù)據(jù)包。
用Libpcap捕獲的數(shù)據(jù)包中,包含Prism頭或者Radiotap頭部。這是網(wǎng)卡添加在802.11MAC頭部前的數(shù)據(jù),它記錄了信號(hào)強(qiáng)度、噪聲強(qiáng)度和傳輸速率等物理層信息。由于Radiotap頭部比Prism頭部更能靈活地表達(dá)捕獲幀的物理層信息,所以本文選擇Radiotap頭部來(lái)表達(dá)。
3.3.2 被動(dòng)分析接口模塊的實(shí)現(xiàn)
程序設(shè)計(jì)的難點(diǎn)是防止出現(xiàn)丟包現(xiàn)象。當(dāng)某一信道上的負(fù)載很大時(shí),受到處理速度的限制,將不能捕獲到該信道上的每一個(gè)報(bào)文,即出現(xiàn)丟包現(xiàn)象。
為了解決該問(wèn)題,本文使用多線(xiàn)程并發(fā)執(zhí)行,主線(xiàn)程用來(lái)處理捕獲到的數(shù)據(jù)包;子線(xiàn)程1用來(lái)不間斷地捕獲無(wú)線(xiàn)數(shù)據(jù)包;子線(xiàn)程2與主控機(jī)交互,實(shí)現(xiàn)過(guò)濾規(guī)則的改變。同時(shí),還引入了先入先出的隊(duì)列來(lái)緩存接收到的數(shù)據(jù)報(bào)文。在筆者搭建的環(huán)境中,當(dāng)某一信道上的負(fù)載達(dá)到24 Mb/s、將隊(duì)列長(zhǎng)度設(shè)為500時(shí),就能很好地解決這一問(wèn)題。
為了實(shí)現(xiàn)隊(duì)列操作的同步,本文使用信號(hào)量hAccess和hRecive,當(dāng)子線(xiàn)程1接收到報(bào)文,并將報(bào)文存放到隊(duì)列之后,將釋放信號(hào)量hRecive,通知主線(xiàn)程從隊(duì)列中提取報(bào)文來(lái)處理。主線(xiàn)程提取出報(bào)文后,釋放信號(hào)量hAccess,通知子線(xiàn)程1繼續(xù)接收數(shù)據(jù)包。
子線(xiàn)程2接收主控節(jié)點(diǎn)發(fā)送來(lái)的配置文件,并且執(zhí)行該文件。配置文件的主要作用就是設(shè)置全局變量。在過(guò)濾前,主線(xiàn)程都重新獲取全局變量的值,從而設(shè)定主線(xiàn)程的包過(guò)濾規(guī)則。采用的過(guò)濾規(guī)則主要有源和目的MAC地址過(guò)濾以及序列號(hào)過(guò)濾等。主線(xiàn)程、子線(xiàn)程1、子線(xiàn)程2的流程圖分別如圖4、圖5、圖6所示。
本文引用地址:http://2s4d.com/article/152462.htm
3.4 主動(dòng)分析接口模塊
linux操作系統(tǒng)文章專(zhuān)題:linux操作系統(tǒng)詳解(linux不再難懂)
評(píng)論