無線局域網(wǎng)安全分析終端的解決方案
無線局域網(wǎng)絡(luò)(WirelessLocalAreaNetworks;WLAN)是相當(dāng)便利的數(shù)據(jù)傳輸系統(tǒng),它利用射頻(RadioFrequency;RF)的技術(shù),取代舊式礙手礙腳的雙絞銅線(Coaxial)所構(gòu)成的局域網(wǎng)絡(luò),使得無線局域網(wǎng)絡(luò)能利用簡單的存取架構(gòu)讓用戶透過它,達(dá)到「信息隨身化、便利走天下」的理想境界。在802.11標(biāo)準(zhǔn)中,采用了MAC地址列表、WEP加密等安全措施,但是后來的實踐和研究證明,其安全機制是非常脆弱的,存在無線拒絕服務(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)中的被動和主動安全分析的接口模塊。
PowerPC處理器有廣泛的實現(xiàn)范圍,包括從諸如Power4那樣的高端服務(wù)器CPU到嵌入式CPU市場(任天堂Gamecube使用了PowerPC)。PowerPC處理器有非常強的嵌入式表現(xiàn),因為它具有優(yōu)異的性能、較低的能量損耗以及較低的散熱量。除了象串行和以太網(wǎng)控制器那樣的集成I/O,該嵌入式處理器與臺式機CPU存在非常顯著的區(qū)別。例如,4xx系列PowerPC處理器缺乏浮點運算,并且還使用一個受軟件控制的TLB進(jìn)行內(nèi)存管理,而不是象臺式機芯片中那樣采用反轉(zhuǎn)頁表。
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處理器,MPC8270是以處理器8270芯片命名的開發(fā)板名稱。是一套完整的基于摩托羅拉MPC8270處理器的嵌入式開發(fā)平臺。MPC8270 集成PowerPC 處理器適用于那些對成本、空間、功耗和性能都有很高要求的應(yīng)用領(lǐng)域。該器件有較高的集成度,從而降低了系統(tǒng)的組成開銷。高集成度的結(jié)果是簡化了電路板的設(shè)計,降低了功耗和加快了開發(fā)調(diào)試時間。這種低成本多用途的集成處理器的設(shè)計目標(biāo)是使用PCI 接口的網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)、電訊和其它嵌入式應(yīng)用。它可用于路由器、接線器、網(wǎng)絡(luò)存儲應(yīng)用和圖像顯示系統(tǒng)。另外,HHPPC8270-3FEC-PCI-R1提供了3個高速的百兆以太網(wǎng)接口,可以滿足網(wǎng)口之間快速的轉(zhuǎn)發(fā);同時提供的2個PCI插槽可以方便的擴(kuò)展多種 PCI接口卡,實現(xiàn)包括硬盤存儲、無線通訊、圖像采集/顯示等功能需求。適合于SOHO網(wǎng)關(guān)、無線AP、監(jiān)控系統(tǒng)、嵌入式防火墻/路由器、Web服務(wù)器等產(chǎn)品應(yīng)用。
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,Flash芯片型號為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是美國電子工業(yè)協(xié)會EIA(ElectronicIndustryAssociation)制定的一種串行物理接口標(biāo)準(zhǔn)。RS是英文"推薦標(biāo)準(zhǔn)"的縮寫,232為標(biāo)識號,C表示修改次數(shù)。RS-232-C總線標(biāo)準(zhǔn)設(shè)有25條信號線,包括一個主通道和一個輔助通道。在多數(shù)情況下主要使用主通道,對于一般雙工通信,僅需幾條信號線就可實現(xiàn),如一條發(fā)送線、一條接收線及一條地線。
兩個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)卡的配置。
主動/被動分析接口模塊由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ù),它記錄了信號強度、噪聲強度和傳輸速率等物理層信息。由于Radiotap頭部比Prism頭部更能靈活地表達(dá)捕獲幀的物理層信息,所以本文選擇Radiotap頭部來表達(dá)。
Libpcap提供了系統(tǒng)獨立的用戶級別網(wǎng)絡(luò)數(shù)據(jù)包捕獲接口,并充分考慮到應(yīng)用程序的可移植性。Libpcap可以在絕大多數(shù)類unix平臺下工作,參考資料A中是對基于libpcap的網(wǎng)絡(luò)應(yīng)用程序的一個詳細(xì)列表。在windows平臺下,一個與libpcap很類似的函數(shù)包winpcap提供捕獲功能。Libpcap軟件包可以下載,然后依此執(zhí)行下列三條命令即可安裝,但如果希望libpcap能在linux上正常工作,則必須使內(nèi)核支持"packet"協(xié)議,也即在編譯內(nèi)核時打開配置選項CONFIG_PACKET(選項缺省為打開)。
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與主控機交互,實現(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 主動分析接口模塊
主動分析的作用有兩個:一是對被測目標(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ò)性能。
參考文獻(xiàn):
[1].MPC8270datasheethttp:///datasheet/MPC8270_2428183.html.
[2].PCI datasheethttp:///datasheet/PCI+_1201469.html.
[3].RS-232datasheethttp:///datasheet/RS-232_584855.html.
[4].LXT972datasheethttp:///datasheet/LXT972_1096906.html.
QICK