227
Python
python無線網絡安全入門案例翻譯
隨著⽆線⽹絡在家庭和商業中的普及,新的安全挑戰是⽆法避免的。保護⼀個⽹絡的第⼀步是判斷⼀個⽹絡的狀態 (不需要前置知識),然後來提供相關的防禦措施。隨著 Scapy 的⾯世,這是⼀個⽤python寫的絕佳封包⼯具, 作者是Philippe Biondi ,跟其他的嗅探⼯具 Kismet 和 Airodump-ng 不同,Scapy 可以個性化定製,並且⾮常簡 單易⽤。 本⽂概述了使⽤諸如Scapy等⼯具的技術進⾏⽆線⽹絡評估和⼊侵檢測的⽅法。
⽅法:被動嗅探
⼀個⽆線⽹絡包含⼏個⼤的基站,主要分為2個⼤的部分:接⼊點 (access points)和 網卡 (NICs)。這些 基站使⽤ IEEE 802.11 標準來通信。802.11的包封裝了下⾯3個幀:管理幀,控製幀以及數據幀。每⼀個部分都包 含了⽤於建⽴連接的不同頻道通信的重要信息。
⼀個⽆線⽹絡的評估防範可以使⽤下⾯2個⽅法:
被動嗅探 - 這是通過在RF監視模式下嗅探⽆線流量來捕獲幀。 通過分析幀,可以枚舉⽹絡,收集信息,確 定攻防弱點,並且製定可能的攻擊點。
主動的數據包注⼊ - 你可以在此類型的被動數據收集中製定攻擊計劃。 該計劃將涉及在開放係統互連的第2 層(數據鏈路)中執⾏原始數據包注⼊,並觀察產⽣的⽹絡或以及異常⾏為。 這可能導致檢測到漏洞,例 如緩衝區溢出或繞過⾝份驗證。
本⽂主要討論這種被動嗅探的⽅法論。 以下是這種⽅法的步驟:
設置射頻監聽模式
嗅探嗅探數據包並發現⽹絡接⼊點
發現隱藏的接⼊點和SSID(服務集標識符)
收集 MAC 和 IP 地址
通過嗅探執⾏相應的⼊侵檢測
設置射頻監聽模式
當您設置射頻監聽模式時,其NIC應能夠嗅探2.4 GHz頻譜以捕獲802.11數據包。 ⼤多數802.11a / b / g 的⽹ 卡具有這種能⼒。例如,本⽂使⽤Linux來設置NIC,Linux內核包含⼀個驅動程序來搞定此功能。
下⾯是把網卡置於監聽模式的命令:
注意:對於madwifi,您可能需要使⽤wlanconfig命令進⾏設置。
接下來,您需要定義要執⾏數據包嗅探的通道或頻率。 使⽤以下命令(⽤頻道11做演⽰):
您也可以通過為每個頻道分配⼀段時間來嗅探不同的頻道.
嗅探嗅探數據包與網絡發現
接⼊點是關鍵的基礎設施; 它們是⽆線和有線IP⽹絡之間的橋梁。 其他NICs連接這些接⼊點,並通過⽆線⽹絡將 其連接到較⼤的⽹絡。 但是⾮常不幸運的是,接⼊點也正是惡意⿊客的攻擊點。 對⽆線⽹絡評估的第⼀個要求是 盡最大可能識別接⼊點。
接⼊點被配置為以某種規則的間隔發射信標管理幀(emit beacon management frames)。 這些幀包含關於SSID,MAC地址,時間戳等信息。⼀旦eth1 網卡處於監聽模式,⼈們就可以開始訪問信標幀。 您可以使⽤Scapy訪獲取些數據包,如下所⽰:
前⾯的代碼表明Scapy已經啟動並且嗅探到eth1上的⼀個數據包。 查看分組的內容,它是⼀個包含ot11分組信息的信標幀。 Scapy提供了⼀種獲取圖形視圖的⽅法。 在交互式提⽰符下輸⼊以下命令可以查看:
圖1 提供了這個特定數據包的PDF⽂檔
此幀可以幫助你確定關鍵信息,如接⼊點的MAC地址,SSID和WEP⽀持情況。 您可以為所有不同的Dot11數據包 和幀構建⼀個相同的視圖。 該視圖對學習802.11標準有很⼤的幫助.
以下是⼀組命令,⽤來從數據包中提取關鍵字段,該塊提供SSID和基本MAC地址:
您可以從以下命令中得到相同的信息,也可以使⽤sprintf(),這是查看數據包的各種字段的不錯⽅法。
以下是⼀個收集所有信標包並提取信息的簡單腳本。 它使⽤⼀個 unique列表來維護您的基於MAC地址的收集的 信標列表。 這提供了⼤量報⽂中的⼀個可過濾的⽅法。
運⾏此腳本會產⽣以下結果:
Netsquare7有⼀個隱私位打開開關,表明它是⽀持WEP的。 運⾏此腳本可以發現在其附近的⽆線接⼊點及其配 置。
發現隱藏的接⼊點和SSID
在許多情況下,接⼊點的部署是⽤⼀種限製信標包(beacon)⼴播的形式。 同時,也可以隱藏SSID,因此⽆法通過簡單地查 看信標來確定。 前⾯的例⼦檢測到⼀個具有隱蔽SSID的信標包,會產⽣如下的結果:
您可以嗅探⾮信標數據包,並嚐試確定隱藏的接⼊點或隱藏的SSID。 管理幀的探測和關聯會顯⽰這些值。 Scapy 還⽀持⼏個層,如下所⽰:
下⾯是⼀個簡單的腳本來提取⾮信標包和SSID:
輸出結果如下:
很顯然,我們已經從接⼊點 00:06:25:51:6b:79收集了 linksys SSID,從探測請求和響應數據包中提取出 來。 每當新客戶端嚐試訪問接⼊點時,該數據包將在‘空中’重新發送,並由相應的接⼊點提供服務。 這樣你就可以 發現空中隱藏的⽹絡。
收集MAC和IP地址
⼀個站點的MAC地址是確認⼀個⽆線⽹絡⾝份的關鍵點。 Dot11數據包在頭部有四個地址(見圖1)。 Addr1是收 件⼈的地址,addr2是發送者的地址。 這些MAC地址可以很容易地被收集。 這是⼀個簡單的腳本來捕捉它們:
以下是⼀個相同的⽰例輸出:
該信息可以鏈接到接⼊點MAC地址以獲得連接到該接⼊點的客戶端列表! 訪問⼀些內部MAC地址以及IP地址的另⼀種⽅法是通過捕獲位於Dot11數據包中的ARP和IP層。 如果數據包沒有使 ⽤WEP密鑰加密,則數據包可以顯⽰此內部信息。
這是⼀個⽤於收集這些數據包和信息的⽰例腳本:
這些地址中的⼀些可能在⽹絡內部。
MAC地址可以幫助攻擊者⼊侵有MAC過濾功能的接⼊點。 接⼊點在關聯客戶端地址之前對其認證幀中的MAC地址 進⾏認證,攻擊者可以通過複製從嗅探流量提取的來MAC地址來欺騙⼀個接⼊點。 所以接⼊點的基於MAC的過濾 抵禦是微不⾜道的。
內部IP地址暴露構成另⼀個威脅。 攻擊者可以綁定IP地址以及MAC地址,以成為內部⽹絡的⼀部分,並啟動⼀些 經典的掃描⼯具。
通過嗅探執⾏相應的⼊侵檢測
到目前為止,我們已經可以使用上⾯描述的⽅法構建⼊侵檢測係統,並可⽤來監視⽆線流量。 您可以使⽤Scapy嗅探此流量,並 在其上構建腳本。 該腳本可以幫助跟蹤⼊侵檢測。
以下部分介紹了⼀些⽰例。
### 發現詐騙接⼊點:
如果您的⽹絡上部署了未經授權的接⼊點,管理員則可以通過捕獲信標包或分析⽆線IP流量來查找流量並將其從⽹ 絡中排除。 例如假設您的⽹絡是192.168.7.0,它由⼀個地址為00:15:3d:3c:a6:eb的接⼊點組成。 您的⽬標 是跟蹤正在訪問192.168.7.0⽹絡的除接⼊點以外的任何周圍的接⼊點。
這是⼀個監控流量的⼩腳本:
上⾯的腳本⽤來捕獲所有數據包,並深⼊到IP層。 ⼀個⽤來報告的點是數據包的源和⽬標IP地址。 如果這些數據 包不是由MAC地址定義的授權接⼊點的⼀部分,則標記它們。 這可能是運⾏在192.168.7.0上的潛在接⼊點。 ⼀旦 您發現⼊侵,您可以從有線端檢驗他們的存在和流量以減少誤報。 此⽰例使⽤正則表達式來⽐較這些⽹絡。 這是 腳本的輸出結果:
上述的⽰例是⼀個授權的MAC地址使⽤ ip 192 \ .168 \ .7 \。*。 ⽽來⾃未授權的MAC(接⼊點)的⽹絡 192.168.7.0的流量會被嗅探到。 這可能就是⽹絡中的⼊侵。
前⾯的腳本使⽤⼀個帶有基地址和SSID的授權接⼊點,嗅探其信標包,同時使⽤不同的基本MAC尋找相同的 SSID。 該腳本報告任何和所有接⼊點,如下所⽰:
未經授權的MAC地址檢測
你可以通過嗅探所有數據包來檢測嚐試訪問MAC地址,其地址不在授權列表的攻擊者的探針。 你也可以根據 DHCP服務器分配的IP建⽴授權MAC列表。 例如,為了觀察源⾃未授權MAC的流量,準備⼀個授權的MAC列表, 並將它們放在⼀個⽂件中。 然後使⽤這個腳本:
⾸先讀取⽂件,然後繼續監控⽬標接⼊點。 報告包含未授權MAC的Dot11數據包,如下所⽰:
⽤這種⽅法你可以持續地監控來⾃攻擊者的未授權流量,並維護⼀份MAC地址的⽩名單。
監測破解授權以及破解分組
從未經授權的MAC地址來的解密和解除分組包可以清楚地表明這是⼀個攻擊⽹絡的⾏為。 他們可能會是拒絕服務 (DoS)或中間⼈(man-in-the-middle)攻擊。 以下腳本可以報告這些數據包,並附有MAC地址。 如果接⼊點未重 新啟動,並且這些數據包是可觀察的,則有⼈可能會在客戶端注⼊這些數據包。
這樣你就可以跟蹤來⾃惡意硬件的任何⼊侵。
以下是您可以監視的其他⼏個⼊侵檢測點:
.檢測客戶端探針 - 筆記本電腦等客戶端通常連接到家庭⽹絡。 當在⼯作場所使⽤時,這些客戶端將繼續向家 庭⽹絡發送探測請求。 攻擊者可以設置接⼊點來為這些客戶端提供服務。 這種雙重托管服務和⽹絡使⽹絡 受到威脅。 持續地嗅探流量來檢測這些可能的⼊侵點。
.Ad-hoc 客戶端檢測 - 可以通過嗅探流量來檢測Ad-hoc客戶端,並對雙⽹絡主機構成威脅。
.接⼊點信道改變 - 接⼊點信道可以通過未經授權的訪問或當⼀個虛擬接⼊點在具有相同SSID的不同信道上⼯ 作時被改變。
隨機MAC地址 - 如果通過隨機MAC訪問接⼊點,則可以假定⼯具或腳本正在被運⾏。
.確定數據包的注⼊ - 發送多個數據包⽽卻未實際連接到接⼊點的客戶端可能在嚐試注⼊惡意數據包。
.破解包 Flood - ⼀個⼤量破解認證幀的接⼊點表⽰可能的DoS攻擊嚐試。 類似地,可以使⽤有線來檢測到使 ⽤不同幀的Flood。
.弱點檢測 - 您可以嗅探流量來檢測⽹絡上的默認SSID,⼴播SSID,弱IV,ad-hoc操作,使⽤Hotspot SSID 運⾏的接⼊點,NetBIOS流量,外出的ARP數據包以及連接到流氓的授權客戶 接⼊點
通過好的嗅探腳本可以⽣成警報,以減少對⽆線基礎設施的威脅。 ⼀旦這些信息到位,您可以通過以適當的功能 修補驅動程序,將數據包注⼊⽆線⽹絡來執⾏主動的⽹絡評估。 在這⾥,Scapy也派上⽤場,因為它可以使⽤ sendp()在第2層注⼊數據包。
檢測您的⽆線⽹絡中的漏洞
雖然⽆線評估正在成為滲透測試和⽹絡評估的重要組成部分,但分析⽆線⽹絡和相關產品是⼀項具有挑戰性的任 務。 本⽂結合Scapy討論的⽅法可以幫助您檢測⽆線⽹絡中的漏洞。 Scapy在Python中以交互式和腳本⽅式運作, 增強了其有效性,使其成為⽆線⽹絡評估⼯具包中必不可少的⼯具。 Scapy也是可擴展的,允許您構建強⼤的腳本 來執⾏⽹絡監控。
本文首發於玄魂工作室微信訂閱號
最後更新:2017-10-08 18:25:06