利用無線網絡數據包分析無線網絡安全
在本文中,我們探討了一些基本無線網絡數據包捕獲具體問題,并展示了無線安全中不同數據包分析應用。無線網絡、無線安全和數據包分析是非常廣泛的話題,希望本文能夠有助于大家進一步深入研究這個領域。
無線網絡的弊端在于你總是無法看到所面對的問題。在無線網絡中,建立連接并不像連接有線網絡那樣簡單,物理安全也沒有阻止未經授權人員進入設備室那樣容易,甚至在接入點總方向的小問題都可能讓你崩潰。也就是說,保護無線網絡安全將成為未來安全行業的挑戰。
捕獲無線數據包
從數據包來看,無線網絡與有線網絡在很多方面都具有相似之處,無線網絡仍然使用TCP/IP進行數據通信,并遵守與有線主機同樣的有關網絡的法律。這兩種網絡平臺的主要區別出現在OSI模型的較低層,無線網絡是通過在空中發送數據來通信,而不是通過數據線來發送數據。無線數據通信的媒介是共享的媒介,也正是因為這種特殊性,在物理和數據鏈接層必須進行特殊處理以確保不會發生數據沖突并且數據能夠正確傳輸。這些服務由802.11標準的不同機制來提供。
這涉及到排除無線網絡故障的問題,因為必須捕獲兩層802.11信息才能支持故障排除。為了做到這一點,你必須能夠將無線網絡接口卡(WNIC)接入到特殊模式,也就是監視器模式。監視器模式市一中特殊的驅動程序設置,限制了無線網絡接口卡發送數據的能力,讓無線網絡接口卡只能被動地聽取選定的頻道。
在Linux操作系統,我們可以很簡單地將無線網絡接口卡轉變為監視器模式,但是大部分Windows驅動程序都不允許這個功能。因此,我們需要一塊特殊的硬件來實現模式轉換。這塊硬件被成為AirPcap,由CACE技術公司所制作。AirPcap設備本質上是一個無線網絡接口卡,主要用于Windows操作系統和Wireshark數據包捕獲工具中的監視器模式。使用這個設備,你可以從你想要收聽的無線頻道捕獲兩層802.11信息。
802.11數據包結構
無線數據包和有線數據包的主要區別在于802.11表頭的增加,這是一個第二層表頭,包含關于數據包和傳輸媒介的額外信息。主要有三種類型的802.11數據包:數據、管理和控制。
管理 - 這些數據包用于建立第二層主機間的連接,一些重要的管理數據包子類型報告身份驗證數據包、關聯數據包和Beacon數據包。
控制 - 控制數據包允許對管理數據包和數據數據包的傳遞,并于擁塞管理有關。常見子類型包括請求到發送和清除到發送數據包。
數據 - 這些數據包包含實際數據,并且是能夠從無線網絡轉發到有線網絡的唯一數據包類型。
探討每種802.11數據包子類型有點偏離本文主題,下面我們再將重點放在安全方面的無線網絡問題。
尋找惡意接入點
IT資產的物理安全是安全領域最常被忽視的問題。而在這個方面,最常見的疏漏之一就是將未經授權設備增加到網絡上。在有線網絡世界,未經授權的路由器可能會導致拒絕服務攻擊。雖然有線網絡世界未經授權設備會造成嚴重后果,但惡意無線接入點(WAP)的影響則更大,因為惡意無線接入點可能會允許設備外的人員獲取到網絡的訪問權限,就像他們可以隨意走進來,將筆記本連接到網絡中一樣。
幸運的是,檢測惡意無線接入點可以以相當簡單的方式實現。為了實現這一點,你必須首先從網絡廣播范圍內的幾個區域捕獲無線流量。然后,有幾個不同的過濾器可以用于確定是否存在惡意接入點以及客戶端是否與惡意接入點通信。
最簡單的方法之一就是知道已知合法接入點的MAC地址,使用這個信息,你可以輸入過濾器!wlan.bssid == 00:11:88:6b:68:30,將你實際的接入點MAC地址取代上述的樣本地址。這樣做將會向你展示所有發送到或者發送自所有接入點的無線流量,而不是指定接入點。如果你在這個區域有一個以上的接入點,你可以使用OR (||)運算符來結合這些過濾器。在這種情況下,你可以使用類似!wlan.bssid == 00:11:88:6b:68:30 || !wlan.bssid == 00:11:ff:a1:a4:22來過濾出兩個已知合法接入點。
這種方法通常可以找出接入點,但如果你想更加深入地找到實際連接到惡意無線接入點的移動工作站呢?其中一個方法就是過濾重新關聯請求。這樣的話,你可以將前面的過濾器與wlac.fc.type_subtype eq 0和wlac.fc.type_subtype eq 2結合。第一個過濾器將會顯示所有關聯請求,第二個將會顯示重新關聯請求。必要情況下,你可以使用AND (&&)運算符將前面的過濾器與其中任一個過濾器結合。
最后,你可以再進一步確定在移動客戶端和惡意無線接入點之間是否有任何實際數據傳輸。你可以通過過濾器 wlan.fc.type eq 2以及前面的排除已知合法接入點的過濾器對所有在非合法接入點通信的數據包進行過濾。
過濾未加密流量
當數據包通過空氣傳輸時,保護數據包不被泄漏的唯一辦法就是部署某種類型的加密技術。這通常是通過在現代系統中部署WPA或WPA2來實現的。當然,經常審查無線網絡和確保沒有無線客戶端以未加密模式傳遞數據也是很好的安全做法。但是數據包泄漏還是可能發生,例如當WAP被錯誤配置,存在惡意WAP或者兩個無線客戶端可以直接以特殊模式通信時。
在無線網絡中尋找未加密數據需要使用另一種過濾器。在這種情況下,我們可以使用wlan.fc.protected == 0過濾器來找到所有包含未加密數據的數據包。現在,如果你使用這個過濾器會發現它會返回一些意想不到的結果。802.11控制和管理框架沒有加密,因為只為WAP和無線客戶端執行管理功能。在這種情況下,我們必須增加wlan.fc.type eq 2來延展過濾器,這將能夠確保過濾器只顯示未加密數據數據包。最終的過濾器形式應該是wlan.fc.protected == 0 && wlan.fc.type eq 2。
分析WEP和WPA身份驗證
最開始保護無線網絡傳輸數據的首選方法是WEP(有效等效保密)。WEP曾經叱咤風云,直到在它的加密密鑰管理中發現幾個漏洞。正因為此,新標準才應運而生,包括WPA和WPA2標準,雖然WPA及其更安全版本WPA2也存在問題,但它們要比WEP安全得多。
能夠區別WEP和WPA是非常實用的技能,如果你能夠做到這一點,你將能夠發現網絡中應該是WPA的WEP身份驗證。除此之外,你還將能夠分析失敗驗證嘗試。
WEP身份驗證
WEP身份驗證是通過使用挑戰/響應機制來運作的。當客戶端試圖連接到WAP時,WAP就會出現挑戰文本。該挑戰被獲知后,客戶端就會獲取該文本,使用客戶端提供的WEP進行加密,然后將產生的字符串傳回WAP。
一旦WAP驗證了響應文本的正確性,它就會向客戶端傳回一個信息,告知它身份驗證過程已經完成。過濾器找到成功認證答復是wlan_mgt.fixed.status_code == 0x0000。
如果身份驗證沒有成功的話,WAP將會發出一條信息表示“收到包含身份驗證序列的身份驗證框架,交易序列號錯誤”。
過濾器獲取失敗通知數據包:wlan_mgt.fixed.status_code == 0x000e.
WPA身份驗證
WPA身份驗證也是使用挑戰/響應機制,但是運作方式完全不同。在數據包級別,WPA身份驗證使用EAPOL來執行它的挑戰/響應。你可以使用簡單的過濾器EAPOL來找到這些數據包。在成功的身份驗證中,你通常可以看到四個EAPOL數據包,分別代表兩個挑戰和響應,包含四個完整的數據包。每個挑戰和響應都可以在數據包內使用Replay Counter值來搭配。
當WPA驗證失敗時,你將需要更多的EAPOL數據包,挑戰/響應被嘗試更多次。如果這個過程最終失敗的話,你應該會看到取消驗證數據包。
有兩種過濾失效WPA驗證的方法,第一種就是使用EAPOL過濾器,計算WAP和無線客戶端間傳輸的數據包數量。另外一個方法就是使用wlan.fc.type_subtype == 0x0c過濾器取消驗證數據包。這將會返回很多與失敗驗證不相關的多余結果,因此為了驗證數據包與此相關,你將需要深入挖掘,并創建另一個圍繞WAP和無線客戶端間所有數據包的過濾器。
結論
在本文中,我們探討了一些基本無線網絡數據包捕獲具體問題,并展示了無線安全中不同數據包分析應用。無線網絡、無線安全和數據包分析是非常廣泛的話題,希望本文能夠有助于大家進一步深入研究這個領域。