KaliLinux無線滲透測試入門指南第九章無線滲透測試方法論
第十章 WPS 和 探針
作者:Vivek Ramachandran, Cameron Buchanan
譯者:飛龍
太陽底下無新事。
– 諺語
這一章由新的技巧組成,包括攻擊 WPS 和探針監控,也包含了使無線測試更簡單的 pineapple 工具。這些攻擊和工具在本書第一版的釋出過程中出現,我們要確保這本書儘可能全面。
10.1 WPS 攻擊
無線保護設定(WPS)在 2006 年被引入,用於幫助沒有無線知識的使用者保護網路。其原理是它們的 WIFI 擁有單一隱藏的硬編碼值,它可以允許金鑰記憶來訪問。新的裝置可以通過按下 WIFI 路由上的按鈕來驗證。在房子外面的人不能解除裝置,就不能獲得訪問權。所以這個問題被降解為記住 WPA 金鑰或者設定更短的金鑰。
2011 年末,爆破 WPS 驗證系統的安全漏洞被公開。協商 WPS 交換所需的流量易於被一篇,並且 WPS Pin 本身只有 0~9 的 8 個字元。最開始,這可以提供 100,000,000 中可能性,與之相比,8 個字元的 azAZ09 密碼擁有 218,340,105,584,896 種組合。
但是,這裡存在進一步的漏洞:
-
在 WPS Pin 的八個字元中,最後一個是前七個的校驗和,所以它可以預測,選擇就只剩下 10,000,000 種了。
-
此外,前四個和後三個字元分別驗證,這意味著一共有 11,000 種選擇。
雖然驗證機制中要判斷兩次,但是我們已經從 100,000,000 個可能的組合降到了 11,000。這相當於爆破演算法時的六個小時的差異。這些判斷使 WPS 更易受攻擊。
在下一個實驗中,我們會使用 Wash 和 Reaver 識別和攻擊 WPS 漏洞配置。
實戰時間 – WPS 攻擊
遵循以下指南來開始:
-
在我們攻擊開啟了 WPS 的接入點之前:我們首先要建立它。我們所使用的 TP-LINK 擁有這個也行,預設開啟,它非常麻煩還是便捷。為了再三檢查它,我們可以登入我們的路由並點選 WPS。它看起來是這樣:
-
現在我們確認它準備好了。我們需要啟動我們的目標。我們需要配置我們的測試環境。我們打算使用 Wash 工具,並且 Wash 需要監控器介面來生效。就像我們之前做的那樣,我們需要使用下列命令來啟動:
airmon-ng start wlan0
輸出是這樣:
-
我們擁有了監控介面,設定為
mon0
,我們可以使用下列命令呼叫 Wash:wash --ignore-fcs -i mon0
ignore fcs
選項是由於wash
導致的已知請求格式的問題: -
我們會展示所有附近 支援 WPS 的裝置。以及它們是否開啟或解鎖了 WPS,以及它們的版本:
-
我們可以看到
Wireless Lab
支援 WPS。它使用版本 1 並且沒有鎖住。太好了。我們注意到 MAC 地址,它在我這裡是E8:94:F6:62:1E:8E
,這會作為下一個工具reaver
的目標。 -
Reaver 嘗試爆破給定 MAC 地址的 WPS Pin。啟動它的語法如下:
reaver -i mon0 -b <mac> -vv
輸出是這樣:
-
啟動之後,這個工具執行所有可能的 WPS 組合,並嘗試驗證。一旦它完成了,它會返回 WPS 碼和密碼,像這樣:
-
得到 WPA-PSK 之後,我們可以正常驗證了。我把匹配 WPS Pin 的預設的 WPA-PSK 留給我的裝置,你可以通過在
reaver
中指定 Pin 來實現,使用下列命令:reaver -i mon0 -b <mac> -vv -p 88404148
將我的 Pin 換成你的。
剛剛發生了什麼?
我們使用 Wash 成功識別了帶有 WPS 漏洞例項的無線網路。之後我們使用 Reaver 來恢復 WPA 金鑰和 WPS Pin。使用這個資訊,我們之後能夠驗證網路並繼續網路滲透測試。
試一試 – 速率限制
在之前的聯絡中,我們攻擊了整個未加密的 WPS 安裝。我們可以使用多種方法來進一步探索安全的安裝,不需要移除 WPS。
嘗試將 WPS Pin 設定為任意值並再次嘗試,來看看 Reaver 是否能夠快速破解。
獲得允許你限制 WPS 嘗試速率的路由器。嘗試和調整你的攻擊來避免觸發鎖定。
10.2 探針嗅探
我們已經談到了探針,以及如何使用它們來識別隱藏的網路,和執行有效的偽造接入點攻擊。它們也可以將個體識別為目標,或者在大範圍內以最少的努力識別它們。
當裝置打算連線網路是,它會傳送探測請求,包含它自己的 MAC地址和想要連線的網路名稱。我們可以使用工具,例如airodump-ng
來跟蹤它們。但是,如果我們希望識別個體是否在特定位置特定時間內出現,或者在 WIFI 使用中發現趨勢,我們就需要不同的方式。
這一節中,我們會使用 tshark 和 Python 來收集資料。你會收到程式碼和完成了什麼的解釋。
實戰時間 – 收集資料
遵循下列指南來開始:
-
首先,我們需要尋找多個網路的裝置。通常,普通的安卓或者 iPhone 智慧收集就足夠了。桌上型電腦通常不是良好的目標,因為它們只能待在一個地方。新的 iPhone 或安卓裝置可能禁用了探測請求,或者不清楚,所以在你放棄之前檢查一下。
-
一旦你搞定了裝置,確保開啟了 WIFI。
-
之後啟動你的監控介面,像之前那樣。
-
下面要完成的事情就是使用
tshark
尋找探測請求,通過下列命令:tshark -n -i mon0 subtype probereq
命令的截圖如下:
-
你這裡的輸出會有些混亂,因為
tshark
的預設輸出沒有為可讀而涉及,只是儘可能展示很多資訊。它看起來應該是這樣: -
你已經可以看到 MAC 地址和探測請求的 SSID。但是,輸出還可以更好。我們可以使用下列命令來使其更加可讀取:
tshark –n –i mon0 subtype probereq –T fields –e separator= -e wlan.sa –e wlan_mgt.ssid
命令的截圖如下:
-
輸出會變得更加可讀:
-
所以現在我們獲得了可讀格式的輸出,下面呢?我們要建立 Python 指令碼,執行命令並記錄輸出用於之後的分析。在執行程式碼之前,你需要確保你準備好了監控介面,並在目錄中建立了
results.txt
檔案。Python 指令碼如下:import subprocess import datetime results = open("results.txt", "a") while 1: blah = subprocess.check_output(["tshark –n –i mon0 subtype probereq –T fields –e separator= -e wlan.sa –e wlan_mgt.ssid –c 100"], shell=True) splitblah = blah.split(" ") for value in splitblah[:-1]: splitvalue = value.split(" ") MAC = str(splitvalue[1]) SSID = str(splitvalue[2]) time = str(datetime.datetime.now()) Results.write(MAC+" "+SSID+" "+time+" ")
讓我們簡單看一看 Python 指令碼:
-
import subproces
庫和datetime
庫:這允許我們引用子程式和日期時間庫。subprocess
允許我們從 Linux 命令列監控介面,而datetime
庫允許我們獲得準確時間和日期。 -
while 1
:這行程式碼在停止之前一直執行。 -
results = open("results.txt", "a")
:這使用附加模式開啟了檔案,並將其賦給results
。附加模式只允許指令碼新增檔案的內容,這會防止檔案被覆寫。 -
blah = subprocess.check_output(["tshark –n –I mon0 subtype probereq –T fields –e separator= -e wlan.sa –e wlan_mgt.ssid –c 100"], shell=True)
:這開啟了 shell 來執行我們之前側事故的tshark
命令。這次唯一的區別就是-c 100
。這個選項所做的就是將命令限制為 100 個查詢。這允許我們將節骨哦返回給我們自己,而不需要停止程式。因為我們說過在寫入結果之後永遠執行,這個指令碼會再次啟動。 -
這行程式碼從 shell 獲得輸出,並將其賦給變數
blah
。 -
splitblah = blah.split("
:接收變數
")blah
並按行分割。 -
for value in splitblah[:-1]
:對輸入的每一行重複下面的操作,忽略包含頭部的第一行。 -
splitvalue = value.split(" ")
:將每一行拆分成更小的片段,使用tab
字元作為分隔符。 -
下面的三行接收每個文字段並將其賦給變數:
MAC = str(splitvalue[1]) SSID = str(splitvalue[2]) time = str(datetime.datetime.now()
-
results.write(MAC+" "+SSID+" "+time+"
:接收所有這些值,將其寫到檔案中,由空格分隔,為了整潔最後附帶回車和換行符。
")
-
寫到檔案的輸出是整潔的文字行。
剛剛發生了什麼?
我們從探測請求接收輸入,並將其使用 Python 輸出到檔案中。
你可能會問自己它的目的是什麼。這可以僅僅通過執行原始的tshark
命令並新增>> results.txt
來完成。你是對的,但是,我們建立了整合其它工具,視覺化平臺,資料庫,以及服務的框架。
例如,使用 WiGLE 資料庫,將 SSID 對映為位置,你就可以新增新的程式碼行接受 SSID 變數並查詢 WIGLE 資料庫。
作為替代,你也可以建立 MySQL 資料庫並將輸出儲存到這裡來執行 SQL 命令。
這一節向你提供了建立你自己的探測監控攻擊的第一步。通過這個實驗,並使用這個簡單的程式碼作為第一步,就可以建立多數實用的工具。
試一試 – 擴充套件概念
研究什麼工具可用於視覺化和資料分析,並易於整合到 Python。例如 Maltego 的工具擁有免費版本,可以用於繪製資訊。
為你自己建立 MySQL資料庫來記錄資料和重新調整之前的 Python 指令碼,將結果輸出到資料庫。之後,構建另一個指令碼(或在相同檔案中)來獲得資料並輸出到 Maltego。
重新調整指令碼來查詢 WIGLE,之後從探測請求中收集地理位置資料。通過 Maltego 來輸出資料。
嘗試通過 Flask、Django 或 PHP 建立 Web 前端來展示你的資料。為展示資料研究現有的解決方案,並嘗試通過與它們的建立者交談來模擬和改進它們。
總結
這一章中,我們談論了針對 WPS 的攻擊,它在本書第一版的釋出過程中出現。同時也初步嘗試了將無線工具使用 Python 整合。我們已經到達了本書的末尾,我希望它充實而又有趣。七年後的第三版再見吧。
相關文章
- 網路安全滲透測試的型別!滲透測試入門教程型別
- 滲透測試入門實戰
- 滲透測試會用到哪些工具?滲透測試教程
- python滲透測試入門——Scapy庫Python
- linux滲透測試後續指南Linux
- 滲透測試(PenTest)基礎指南
- Linux滲透測試Linux
- 滲透測試學習之探測和攻擊無線網路五
- 滲透測試學習之探測和攻擊無線網路六
- 滲透測試學習之探測和攻擊無線網路八
- 滲透測試學習之探測和攻擊無線網路九
- 滲透測試學習之探測和攻擊無線網路十
- 滲透測試學習之探測和攻擊無線網路十一
- 滲透測試學習之探測和攻擊無線網路一
- 滲透測試學習之探測和攻擊無線網路二
- 滲透測試學習之探測和攻擊無線網路三
- 滲透測試學習之探測和攻擊無線網路四
- 無線滲透總結
- 什麼是滲透測試?為什麼要做滲透測試?
- 什麼是滲透測試?滲透測試分類方式有哪些?
- 什麼是滲透測試?滲透測試分為哪幾類?
- 滲透測試怎麼做?滲透測試的步驟有哪些?
- 你真的瞭解“滲透測試”嗎?滲透測試有何作用?
- python滲透測試入門——流量嗅探器Python
- 滲透測試報告測試報告
- 滲透測試之nmap
- 【滲透測試】Vulnhub DarkHole
- 滲透測試什麼?滲透測試具體操作流程是什麼
- 什麼是滲透測試?滲透測試培訓班如何選擇?
- 什麼是滲透測試?滲透測試的服務方式有哪些?
- metasploit滲透測試筆記(內網滲透篇)筆記內網
- 什麼是滲透測試?網站有必要進行滲透測試嗎?網站
- 滲透測試是什麼?滲透測試三種分類主要包括哪些?
- 滲透測試技巧總結
- 網路安全滲透測試
- 滲透測試-資訊收集
- GraphQL滲透測試詳解
- 滲透測試------資訊收集
- Burpsuite 滲透測試工具使用UI