python無線網路安全入門案例【翻譯】

玄魂工作室

原文鏈接:devx.com/security/Artic

翻譯:諸神的黃昏

整理校對:玄魂

可能有些術語翻譯的不夠準確,請留言指正。另外請儘可能的打賞給翻譯作者,這樣會有更多的朋友加入翻譯和原創的行列,謝謝大家!

---

隨著?線?絡在家庭和商業中的普及,新的安全挑戰是?法避免的。保護?個?絡的第?步是判斷?個?絡的狀態 (不需要前置知識),然後來提供相關的防禦措施。隨著 Scapy 的?世,這是?個?python寫的絕佳封包?具, 作者是Philippe Biondi ,跟其他的嗅探?具 Kismet 和 Airodump-ng 不同,Scapy 可以個性化定製,並且?常簡 單易?。 本?概述了使?諸如Scapy等?具的技術進??線?絡評估和?侵檢測的?法。

?法:被動嗅探

?個?線?絡包含?個?的基站,主要分為2個?的部分:接?點 (access points)和 網卡 (NICs)。這些 基站使? IEEE 802.11 標準來通信。802.11的包封裝了下?3個幀:管理幀,控制幀以及數據幀。每?個部分都包 含了?於建?連接的不同頻道通信的重要信息。

?個?線?絡的評估防範可以使?下?2個?法:

  1. 被動嗅探 - 這是通過在RF監視模式下嗅探?線流量來捕獲幀。 通過分析幀,可以枚舉?絡,收集信息,確 定攻防弱點,並且制定可能的攻擊點。

  2. 主動的數據包注? - 你可以在此類型的被動數據收集中制定攻擊計劃。 該計劃將涉及在開放系統互連的第2 層(數據鏈路)中執?原始數據包注?,並觀察產?的?絡或以及異常?為。 這可能導致檢測到漏洞,例 如緩衝區溢出或繞過?份驗證。

本?主要討論這種被動嗅探的?法論。 以下是這種?法的步驟:

  1. 設置射頻監聽模式

  2. 嗅探嗅探數據包並發現?絡接?點

  3. 發現隱藏的接?點和SSID(服務集標識符)

  4. 收集 MAC 和 IP 地址

  5. 通過嗅探執?相應的?侵檢測

設置射頻監聽模式

當您設置射頻監聽模式時,其NIC應能夠嗅探2.4 GHz頻譜以捕獲802.11數據包。 ?多數802.11a / b / g 的? 卡具有這種能?。例如,本?使?Linux來設置NIC,Linux內核包含?個驅動程序來搞定此功能。

下?是把網卡置於監聽模式的命令:

root@bluelinux:/home/shreeraj/wifi# iwconfig eth1 mode monitor root@bluelinux:/home/shreeraj/wifi# iwconfig eth1 eth1 IEEE 802.11b ESSID:"" Nickname:"Prism I" Mode:Monitor Frequency:2.462 GHz Access Point: Not-Associated Bit Rate:11 Mb/s Sensitivity:1/3 Retry min limit:8 Encryption key:off Power Management:off Link Quality=76/92 Signal level=-26 dBm Noise level=-149 dBm Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0

注意:對於madwifi,您可能需要使?wlanconfig命令進?設置。

接下來,您需要定義要執?數據包嗅探的通道或頻率。 使?以下命令(?頻道11做演?):

root@bluelinux:/home/shreeraj/wifi# iwconfig eth1 channel 11

您也可以通過為每個頻道分配?段時間來嗅探不同的頻道.

嗅探嗅探數據包與網路發現

接?點是關鍵的基礎設施; 它們是?線和有線IP?絡之間的橋樑。 其他NICs連接這些接?點,並通過?線?絡將 其連接到較?的?絡。 但是?常不幸運的是,接?點也正是惡意?客的攻擊點。 對?線?絡評估的第?個要求是 盡最大可能識別接?點。

接?點被配置為以某種規則的間隔發射信標管理幀(emit beacon management frames)。 這些幀包含關於SSID,MAC地址,時間戳等信息。?旦eth1 網卡處於監聽模式,?們就可以開始訪問信標幀。 您可以使?Scapy訪獲取些數據包,如下所?:

root@bluelinux:/home/shreeraj/wifi# scapy Welcome to Scapy (1.0.4.1beta) >>> conf.iface="eth1" >>> p=sniff(count=1) >>> p >>> p[0] >>>>>>>>> >>>

前?的代碼表明Scapy已經啟動並且嗅探到eth1上的?個數據包。 查看分組的內容,它是?個包含ot11分組信息的信標幀。 Scapy提供了?種獲取圖形視圖的?法。 在互動式提?符下輸?以下命令可以查看:

>>> pkt=p[0] >>> pkt.pdfdump()

圖1 提供了這個特定數據包的PDF?檔

此幀可以幫助你確定關鍵信息,如接?點的MAC地址,SSID和WEP?持情況。 您可以為所有不同的Dot11數據包 和幀構建?個相同的視圖。 該視圖對學習802.11標準有很?的幫助.

以下是?組命令,?來從數據包中提取關鍵欄位,該塊提供SSID和基本MAC地址:

>>> pkt.addr2 "00:12:17:3c:b6:ed" >>> pkt.payload.payload.info "netsquare4" >>>

您可以從以下命令中得到相同的信息,也可以使?sprintf(),這是查看數據包的各種欄位的不錯?法。

>>> pkt.sprintf("%Dot11.addr2%[%Dot11Elt.info%|%Dot11Beacon.cap%]") "00:12:17:3c:b6:ed["netsquare4"|ESS]" >>>

以下是?個收集所有信標包並提取信息的簡單腳本。 它使??個 unique列表來維護您的基於MAC地址的收集的 信標列表。 這提供了?量報?中的?個可過濾的?法。

#!/usr/bin/env python import sys from scapy import * interface = sys.argv[1] unique = []def sniffBeacon(p): if p.haslayer(Dot11Beacon): if unique.count(p.addr2) == 0: unique.append(p.addr2) print p.sprintf("%Dot11.addr2%[%Dot11Elt.info%|%Dot11Beacon.cap%]") sniff(iface=interface,prn=sniffBeacon)

運?此腳本會產?以下結果:

Netsquare7有?個隱私位打開開關,表明它是?持WEP的。 運?此腳本可以發現在其附近的?線接?點及其配 置。

發現隱藏的接?點和SSID

在許多情況下,接?點的部署是??種限制信標包(beacon)?播的形式。 同時,也可以隱藏SSID,因此?法通過簡單地查 看信標來確定。 前?的例?檢測到?個具有隱蔽SSID的信標包,會產?如下的結果:

00:06:25:51:6b:79["x00x00x00x00x00x00x00"|ESS+privacy]

您可以嗅探?信標數據包,並嘗試確定隱藏的接?點或隱藏的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也是可擴展的,允許您構建強?的腳本 來執??絡監控。

本文首發於玄魂工作室微信訂閱號

感興趣的同學請關注我的微信訂閱號(xuanhun521,下方二維碼),我會第一時間在訂閱號推送圖文教程和視頻教程。問題討論請加qq群:Hacking (1群):303242737 Hacking (2群):147098303。

點擊打開二維碼

Python 黑帽編程 4.2 Sniffer之數據本地存儲和載入

實戰-Fluxion與wifi熱點偽造、釣魚、中間人攻擊、wifi破解

Fluxion 實戰答疑


推薦閱讀:

隔壁黑客上線了-記一次WIFI破解實戰
隔壁不光蹭網,還無恥的把我家的無線設備都拉黑了,怎麼教訓回敬一下?
為什麼蘋果提示不廣播SSID會暴露個人信息,並建議用戶到路由器上設置為廣播SSID?

TAG:Python | 无线网络安全 | 玄魂工作室 |