無線局域網(wǎng)安全分析終端的設(shè)計與實現(xiàn)
無線局域網(wǎng)WLAN因利用無線介質(zhì)進(jìn)行數(shù)據(jù)傳輸,在無線設(shè)備覆蓋區(qū)域內(nèi)任何人都可以利用設(shè)備接收到通信數(shù)據(jù),所以通信數(shù)據(jù)的安全性顯得尤為重要。在802.11標(biāo)準(zhǔn)中,采用了MAC地址列表、WEP加密等安全措施,但是后來的實踐和研究證明,其安全機(jī)制是非常脆弱的,存在無線拒絕服務(wù)攻擊、MAC地址欺騙、偽裝AP、中間人攻擊、IP重定向攻擊和身份認(rèn)證過程中的欺騙等安全問題。因此通過安全產(chǎn)品提高WLAN的安全性具有重要意義。
本文所介紹的安全分析系統(tǒng)實現(xiàn)了被動和主動的安全分析。它包括一個主控節(jié)點和多個無線安全分析終端。系統(tǒng)在WLAN中的部署結(jié)構(gòu)如圖1所示。
主控節(jié)點集成了WLAN被動和主動安全分析模塊。主控節(jié)點接收各個終端采集來的WLAN數(shù)據(jù)報文,報文經(jīng)過處理后被發(fā)送到被動安全分析模塊進(jìn)行分析,系統(tǒng)根據(jù)當(dāng)前分析結(jié)果自動選取合適的安全策略;主控節(jié)點根據(jù)主動安全分析技術(shù)編寫攻擊腳本,并將腳本分發(fā)到各個終端,終端根據(jù)腳本對目標(biāo)實施主動攻擊,以檢查目標(biāo)是否有安全漏洞。
本文設(shè)計和實現(xiàn)了基于PowerPC和Linux操作系統(tǒng)的分布式終端,該終端支持安全分析系統(tǒng)中的被動和主動安全分析的接口模塊。
1 終端的功能需求
該嵌入式終端必須具備以下基本功能:
(1) WLAN數(shù)據(jù)包的捕獲和定制發(fā)送:這是實現(xiàn)WLAN安全分析的重要一步,為下面的需求提供了必要依據(jù)。
(2) 被動分析接口模塊:采集WLAN網(wǎng)絡(luò)信息并進(jìn)行預(yù)定的本地處理,將處理后的數(shù)據(jù)發(fā)送到主控節(jié)點,這是對系統(tǒng)的被動分析提供支持。
(3) 主動分析接口模塊:接收主控節(jié)點的攻擊腳本并執(zhí)行,將執(zhí)行結(jié)果返回給主控節(jié)點,這是對系統(tǒng)的主動分析提供支持。
目前常見的嵌入式體系架構(gòu)是按要求選用相應(yīng)嵌入式處理器以及嵌入式操作系統(tǒng)。
由于分布式終端要收發(fā)無線數(shù)據(jù)包以及進(jìn)行數(shù)據(jù)包的預(yù)處理,這就對處理器的處理速度提出了要求,如果速度達(dá)不到要求,就會出現(xiàn)丟包現(xiàn)象。所以本文采用Freescale的PowerPC家族的MPC 8270嵌入式處理器,它的內(nèi)核工作時鐘最高可達(dá)450 MHz。操作系統(tǒng)選擇Linux,Linux是免費且源碼開放的嵌入式操作系統(tǒng)。在開源社區(qū),有很多項目致力于無線網(wǎng)卡的驅(qū)動開發(fā)以及無線數(shù)據(jù)包的定制發(fā)送。利用這些資源,能很好地縮短設(shè)計周期。
2 終端的硬件設(shè)計
本文設(shè)計的終端由核心板和接口板組成,其硬件結(jié)構(gòu)主要由處理器模塊、數(shù)據(jù)通信接口模塊和存儲模塊組成,如圖2所示。核心板集成了Freescale的MPC8270處理器,128 MB SDRAM以及16 MB的Flash,為系統(tǒng)軟件提供了足夠的空間。底板上則集成了非常豐富的外設(shè)接口:2個10 M/100 Mb/s以太網(wǎng)接口;1個兩線RS-232 串口(COM1);2個PCI槽,接入無線網(wǎng)卡后,作為無線分析終端的RF,一塊無線網(wǎng)卡用于被動分析接口模塊,捕獲WLAN數(shù)據(jù)包,隨時監(jiān)控網(wǎng)絡(luò)狀況;另一塊用于主動分析接口模塊,實現(xiàn)數(shù)據(jù)的定制發(fā)送,調(diào)整網(wǎng)絡(luò)性能。該系統(tǒng)具有體積小、耗電低、處理能力強(qiáng)、網(wǎng)絡(luò)功能強(qiáng)大的特點,能夠裝載和運行Linux操作系統(tǒng)。
[!--empirenews.page--]
2.1 處理器模塊
MPC8270基于PowerQUICC II結(jié)構(gòu),主要由高速PowerPC內(nèi)核、系統(tǒng)接口單元SIU、通信處理單元CPM構(gòu)成。它支持60 x總線和PCI/LOCAL總線,內(nèi)核工作時鐘最高為450 MHz。MPC8270采用雙處理器結(jié)構(gòu),內(nèi)部集成PowerPC處理器和CPM處理器。PowerPC完成對外設(shè)的配置;CPM用來完成通信處理,兩個處理器通過內(nèi)部的雙端口RAM相互配合工作。由于CPM分擔(dān)了PowerPC的外圍工作任務(wù),減少了PowerPC對底層通信任務(wù)的干預(yù),因而提高了PowerPC的工作效率。MPC8270內(nèi)部集成了微處理器和通信領(lǐng)域的常用外設(shè)控制組件,并且通信處理模塊中各通信控制器支持多種協(xié)議。
2.2 存儲模塊
選用了1片8 M×16 bit共16 MB數(shù)據(jù)寬度的Flash,F(xiàn)lash芯片型號為Intel 28F128J3D75,速度為150 ns。Flash固定為16 bit數(shù)據(jù)讀寫訪問模式,它只接MPC8270的低16 bit數(shù)據(jù)總線,用片選信號/CS0選中。SDRAM用于存放用戶的數(shù)據(jù)和代碼,為程序的運行和保存臨時文件提供空間。采用商用的144引腳的128 MB內(nèi)存條,以MPC8270與60 x總線相連。數(shù)據(jù)寬度為64 bit。MPC8270提供了SDRAM控制器,故只需進(jìn)行寄存器的設(shè)置即可。
2.3 數(shù)據(jù)通信模塊
數(shù)據(jù)通信接口包括1個兩線RS-232接口、2個以太網(wǎng)接口和2個PCI插槽。
RS-232接口是用來調(diào)試的控制口,只有收發(fā)兩根線;使用MPC8270的SMC模塊作為串口通信,配合MAX3222收發(fā)器實現(xiàn)硬件功能。
兩個10 M/100 Mb/s網(wǎng)口中,一個用于調(diào)試,另一個被應(yīng)用程序用于發(fā)送和接收有線口數(shù)據(jù)包。使用MPC8270的FCC1和FCC2模塊作為網(wǎng)口通信,配合LXT972收發(fā)器實現(xiàn)硬件功能。
MPC8270處理器集成了PCI總線,如果選擇PCI接口的無線網(wǎng)卡,就不需要附加額外的芯片,網(wǎng)卡可以直接通過PCI插槽接入,非常方便。無線網(wǎng)卡是這個終端的重要設(shè)備,根據(jù)無線網(wǎng)卡采用的芯片組類型的不同,無線網(wǎng)卡可分為多種類型。而Linux并未針對每一種無線網(wǎng)卡都提供專屬的驅(qū)動程序,而是針對無線芯片組來提供驅(qū)動程序,所以不同類型的無線網(wǎng)卡所使用的驅(qū)動程序也是大不相同的,如Prism類型的無線網(wǎng)卡使用的驅(qū)動程序是Wlan-ng系列,而針對Atheros生產(chǎn)的AR系列則使用Madwifi-ng[4]。本設(shè)計則以芯片組型號為AR5212的PCI接口的無線網(wǎng)卡(TL-WN651G)為例。
3 終端的軟件設(shè)計
基于嵌入式Linux操作系統(tǒng)的軟件設(shè)計包括BootLoader引導(dǎo)程序的移植、Linux操作系統(tǒng)的移植和用戶程序的編寫。Boot-Loader引導(dǎo)程序完成硬件的初始化并將操作系統(tǒng)引導(dǎo)裝入SDRAM;Linux操作系統(tǒng)是整個軟件的支撐,包含有內(nèi)存管理、設(shè)備驅(qū)動及TCP/IP通信協(xié)議等模塊;用戶程序完成無線數(shù)據(jù)包的捕獲和定制發(fā)送,實現(xiàn)支持安全分析系統(tǒng)中的被動分析和主動分析的接口模塊。下面重點介紹用戶程序的設(shè)計。
3.1 軟件設(shè)計的層次結(jié)構(gòu)
終端的軟件設(shè)計思想:用Tcl的C/C++接口將編寫的低層網(wǎng)絡(luò)通信函數(shù)擴(kuò)展成命令;基于這些擴(kuò)展命令,用Tcl腳本語言編寫頂層接口模塊;主控節(jié)點也可以利用這些擴(kuò)展命令編寫安全分析腳本。這樣的層次結(jié)構(gòu)模型具有良好的擴(kuò)展性與靈活性,而且修改接口模塊程序時,不需要重新編譯,直接就可以運行。圖3為軟件設(shè)計的層次結(jié)構(gòu)模型。
驅(qū)動程序是整個模型的要點,它向上層提供訪問硬件層的接口。本文選擇針對AR5212無線芯片組的開源驅(qū)動程序Madwifi-ng[4](版本號為0.9.4),通過模塊的形式加載驅(qū)動程序。
網(wǎng)絡(luò)操作命令支撐庫為上層提供擴(kuò)展命令的支持。Tcl的C/C++函數(shù)庫有清晰的接口,本文通過接口自定義新的Tcl命令,這些命令與網(wǎng)絡(luò)操作程序提供的C函數(shù)相關(guān)聯(lián),從而實現(xiàn)對Tcl的擴(kuò)展,成為一個以最大程度符合用戶需求的新工具。網(wǎng)絡(luò)操作程序直接訪問硬件驅(qū)動層,實現(xiàn)WLAN數(shù)據(jù)包的定制發(fā)送或捕獲;通過調(diào)用無線配置命令,實現(xiàn)網(wǎng)卡的配置。[!--empirenews.page--]
主動/被動分析接口模塊由Tcl擴(kuò)展命令來構(gòu)建。被動分析接口模塊和主動分析接口模塊實現(xiàn)WLAN數(shù)據(jù)包的發(fā)送和定制捕獲,以及對安全分析系統(tǒng)中的被動分析和主動分析予以支持。
3.2 網(wǎng)絡(luò)操作命令支撐庫
安全分析終端提供以下兩類低層網(wǎng)絡(luò)操作命令:
(1) 網(wǎng)絡(luò)通信支撐命令。包括有線口和無線口的網(wǎng)絡(luò)通信。
有線口網(wǎng)絡(luò)操作命令:它提供了一組訪問數(shù)據(jù)鏈路層socket的命令,包括socket的創(chuàng)建以及通過socket進(jìn)行數(shù)據(jù)包發(fā)送和接收。
無線口網(wǎng)絡(luò)操作命令:實現(xiàn)WLAN數(shù)據(jù)包的定制發(fā)送或捕獲以及設(shè)置網(wǎng)卡的工作模式和工作信道等。
(2)協(xié)議報文編、解碼命令。在被動分析模塊和主動分析模塊中,需要對相關(guān)頭部域進(jìn)行解析或重組,以實現(xiàn)過濾報文或定制頭部域的功能,這就需要編寫報文編、解碼命令。
3.3 被動分析接口模塊
被動分析是基于捕獲的數(shù)據(jù)包,因此捕獲WLAN數(shù)據(jù)包是該模塊實現(xiàn)的基礎(chǔ)。從協(xié)議分析的角度來檢測非法入侵和攻擊,需要將捕獲的數(shù)據(jù)包發(fā)往主控節(jié)點。每個安全分析終端都將大量的報文發(fā)送主控節(jié)點,為了減輕主控節(jié)點處理報文的壓力,安全分析終端將根據(jù)主控節(jié)點的需要過濾掉部分報文。終端的被動分析接口模塊就是實現(xiàn)這一功能的。
3.3.1 捕獲WLAN數(shù)據(jù)包的實現(xiàn)
無線網(wǎng)卡有兩種工作模式:正常模式和監(jiān)聽模式。在正常模式下,網(wǎng)卡工作在非偵聽狀態(tài),只會接收到發(fā)給自己的數(shù)據(jù)包和廣播包,而丟棄其他包。如果把網(wǎng)卡設(shè)置為監(jiān)聽模式,則可使網(wǎng)卡工作在偵聽狀態(tài)時,就可以接收某一信道上的所有數(shù)據(jù)包。為了實現(xiàn)程序的可移植性,本文使用Libpcap函數(shù)庫捕獲數(shù)據(jù)包。
用Libpcap捕獲的數(shù)據(jù)包中,包含Prism頭或者Radiotap頭部。這是網(wǎng)卡添加在802.11MAC頭部前的數(shù)據(jù),它記錄了信號強(qiáng)度、噪聲強(qiáng)度和傳輸速率等物理層信息。由于Radiotap頭部比Prism頭部更能靈活地表達(dá)捕獲幀的物理層信息,所以本文選擇Radiotap頭部來表達(dá)。
3.3.2 被動分析接口模塊的實現(xiàn)
程序設(shè)計的難點是防止出現(xiàn)丟包現(xiàn)象。當(dāng)某一信道上的負(fù)載很大時,受到處理速度的限制,將不能捕獲到該信道上的每一個報文,即出現(xiàn)丟包現(xiàn)象。
為了解決該問題,本文使用多線程并發(fā)執(zhí)行,主線程用來處理捕獲到的數(shù)據(jù)包;子線程1用來不間斷地捕獲無線數(shù)據(jù)包;子線程2與主控機(jī)交互,實現(xiàn)過濾規(guī)則的改變。同時,還引入了先入先出的隊列來緩存接收到的數(shù)據(jù)報文。在筆者搭建的環(huán)境中,當(dāng)某一信道上的負(fù)載達(dá)到24 Mb/s、將隊列長度設(shè)為500時,就能很好地解決這一問題。
為了實現(xiàn)隊列操作的同步,本文使用信號量hAccess和hRecive,當(dāng)子線程1接收到報文,并將報文存放到隊列之后,將釋放信號量hRecive,通知主線程從隊列中提取報文來處理。主線程提取出報文后,釋放信號量hAccess,通知子線程1繼續(xù)接收數(shù)據(jù)包。
子線程2接收主控節(jié)點發(fā)送來的配置文件,并且執(zhí)行該文件。配置文件的主要作用就是設(shè)置全局變量。在過濾前,主線程都重新獲取全局變量的值,從而設(shè)定主線程的包過濾規(guī)則。采用的過濾規(guī)則主要有源和目的MAC地址過濾以及序列號過濾等。主線程、子線程1、子線程2的流程圖分別如圖4、圖5、圖6所示。
3.4 主動分析接口模塊[!--empirenews.page--]
主動分析的作用有兩個:一是對被測目標(biāo)實施主動攻擊,探測其是否有安全漏洞;二是根據(jù)被動分析結(jié)果,采用相應(yīng)的措施調(diào)整網(wǎng)絡(luò)性能。它們都主要通過發(fā)送相應(yīng)的數(shù)據(jù)包來實現(xiàn)。為了對系統(tǒng)中的主動分析予以支持,終端需要實現(xiàn)主動分析接口模塊。WLAN數(shù)據(jù)包的定制發(fā)送是該模塊實現(xiàn)的基礎(chǔ)。
3.4.1 WLAN數(shù)據(jù)包的定制發(fā)送
由于要實現(xiàn)目標(biāo)漏洞的探測或攻擊,必須能將自己定制的WLAN數(shù)據(jù)包發(fā)送出去,這里的定制是指數(shù)據(jù)包的每個域都可以任意指定。在開源社區(qū),開源項目Lorcon[5]實現(xiàn)WLAN數(shù)據(jù)包的定制發(fā)送。它是專為Linux操作系統(tǒng)設(shè)計的,它屏蔽了通過抽象層來發(fā)送802.11信息包的底層操作,提供了更高層次的接口來發(fā)送802.11信息包。通過Lorcon本設(shè)計不需要編寫特定驅(qū)動的代碼,只需通過驅(qū)動的名字就能找到相應(yīng)的接口,進(jìn)而調(diào)用Lorcon庫函數(shù)發(fā)送報文。Lorcon是純C語言編寫的函數(shù)庫,它直接將用戶空間的報文通過無線口發(fā)送出去,實現(xiàn)報文的定制發(fā)送。
3.4.2 主動分析接口模塊的實現(xiàn)
主控節(jié)點使用安全分析終端提供的底層網(wǎng)絡(luò)操作命令編寫各種網(wǎng)絡(luò)攻擊腳本。攻擊腳本由主控節(jié)點分發(fā)到各個安全分析終端,由各安全分析終端并行地執(zhí)行,以保證攻擊的性能,使得攻擊腳本的執(zhí)行與目前存在的實際網(wǎng)絡(luò)攻擊過程有同樣的效果。
為了實現(xiàn)主動分析,無線安全分析終端需要創(chuàng)建基于有線網(wǎng)口的TCP服務(wù)器端,接收主控節(jié)點發(fā)送的攻擊腳本。執(zhí)行該腳本,將腳本執(zhí)行的結(jié)果返回給主控節(jié)點以供其分析。其PAD圖如圖7所示。
本文設(shè)計實現(xiàn)了基于嵌入式處理器PowerPC和Linux操作系統(tǒng)的安全分析終端。通過與主控節(jié)點的主動和被動分析模塊配合,能檢測到被測目標(biāo)是否存在安全漏洞;也能檢測出WLAN中的MAC地址欺騙、偽裝AP、中間人攻擊、IP重定向攻擊以及身份認(rèn)證過程中的欺騙等安全問題,并采取相應(yīng)的措施,成功地改善了網(wǎng)絡(luò)性能。