KaliLinux無線滲透測試入門指南第三章繞過WLAN身份驗證

apachecn_飛龍發表於2016-10-21

第三章 繞過 WLAN 身份驗證

作者:Vivek Ramachandran, Cameron Buchanan

譯者:飛龍

協議:CC BY-NC-SA 4.0

簡介

安全的錯覺比不安全更加糟糕。

– 佚名

安全的錯覺比不安全更加糟糕,因為你不可能為面對被黑的可能性做準備。

WLAN 的身份驗證模式可能很弱,可以被破解和繞過。這一章中,我們會檢視一些 WLAN 中所使用的基本的身份驗證模式,以及學習如何破解它們。

3.1 隱藏的 SSID

在預設的配置模式下,所有接入點都在信標幀中傳送它們的 SSID。這讓附近的客戶端能夠輕易發現它們。隱藏 SSID 是個配置項,其中接入點並不在信標幀中廣播它的 SSID。因此,只有知道接入點 SSID 的客戶端可以連線它。

不幸的是,這個方法不能提供可靠的安全,但是網路管理員認為它很安全。隱藏 SSID 不應該被看作安全手段。我們現在來看看如何發現隱藏的 SSID。

實踐時間 – 發現隱藏的 SSID

執行下列指南以開始:

  1. 使用 Wireshark,如果我們監控Wireless Lab網路中的信標幀信標幀,我們就能夠以純文字檢視 SSID。你應該能看到信標真,像這樣:

  2. 配置你的接入點來隱藏Wireless Lab網路的 SSID。這個配置項在不同接入點中可能不同。這裡,我需要檢查Visibility Status選項的Invisible選項,像這樣:

  3. 現在如果你檢視 Wireshark 的記錄,你會發現Wireless Lab的 SSID從信標幀中消失了。這是隱藏 SSID 所做的事情:

  4. 為了繞過信標幀,我們首先使用被動技巧來等待正常客戶端連線到接入點。這會生成探測請求和響應,它包含網路的 SSID,從而揭示它的存在。

  5. 作為替代,你可以使用aireplay-ng來傳送接觸驗證封包給所有代表Wireless Lab接入點的路由器,通過輸入:aireplay-ng -0 5 -a <mac> --ignore-negative mon0,其中<mac>是路由器的 MAC 地址。-0選項用於選則接觸驗證攻擊,5是要傳送的封包數量。最後,-a指定了所定位的接入點的 MAC 地址。

  6. 接觸驗證的過程會強迫所有正常客戶端斷開連線並重連。為接觸驗證的封包新增個過濾來單獨檢視它們是個好主意。

  7. 來自接入點的探測響應最後會發現 SSID。這些封包會出現在 Wireshark 中。一旦正常客戶端連線回來了,我們就可以通過探針的請求和響應幀來檢視隱藏的 SSID。可以使用過濾器(wlan.bssid == 00:21:91:d2:8e:25) && !(wlan.fc.type_subtype == 0x08)來監控所有發往或來自接入點的非信標封包。&&符號代表邏輯 AND 操作符,!符號代表邏輯 NOT 操作符:

剛剛發生了什麼?

即使 SSID 隱藏而且不廣播,當正常的客戶端嘗試連線到接入點時,它們就交換了探測請求和響應的封包。這些封包包含接入點的 SSID。由於這些封包沒有加密,它們可以被非常輕易地嗅探來發現SSID 。

我們在之後的章節中會出於其它目的,例如跟蹤,涉及到探測請求。

許多情況下,所有客戶端可能已經連結到接入點,並且在 Wireshark 記錄中沒有探測請求或響應的封包。這裡,我們可以強制客戶端斷開接入點的連結,通過傳送偽造的解除驗證封包。這些封包會強迫客戶端重新連線到接入點上,從而獲取 SSID。

試一試 – 選擇解除驗證

在之前的練習中,我們廣播瞭解除驗證封包來強制所有無線客戶端重新連線。嘗試驗證如何使用aireplay-ng工具,選擇性對某個客戶端執行它。

要注意,即使我們使用 Wireshark 演示了許多概念,但也可以使用其它工具來完成攻擊,例如aircrack-ng套件。我們推薦你探索整個 aircrack-NG 套件以及其它位於官網的文件:http://www.aircrack-ng.org

3.2 MAC 過濾器

MAC 過濾器是個古老的技巧,用於驗證和授權,它們根植於有線世界。不幸的是,它們在無線世界中變得十分糟糕。

最基本的想法就是基於客戶端的 MAC 地址進行驗證。MAC 過濾器是為網路介面分配的一段識別程式碼,路由器能夠檢查這個程式碼並將其與允許的 MAC 列表進行比較。允許的 MAC 地址列表由網路管理員維護,儲存於接入點中。我們現在要看看繞過 MAC 過濾器有多容易。

實踐時間 – 繞過 MAC 過濾器

讓我們遵循以下指南來開始:

  1. 讓我們首先配置我們的接入點來使用 MAC 過濾,之後新增受害者筆記本的客戶端 MAC 地址。我的路由器上的設定頁面是這樣:

  2. 一旦開啟了 MAC 過濾,只有允許的 MAC 地址能夠成功被接入點驗證。如果我們嘗試從不在 MAC 地址白名單中的機器連線接入點,就會失敗。

  3. 在這個場景背後,接入點傳送驗證失敗的訊息給客戶端。封包記錄影這樣:

  4. 為了繞過 MAC 過濾器,我們可以使用airodump-ng來尋找連線到接入點的客戶端 MAC 地址。我們可以通過輸入airodumpng -c 11 -a --bssid <mac> mon0命令。通過指定bssid命令,我們只監控接入點,這是我們所感興趣的。-c 11命令將頻道設定為接入點所在的11-a命令確保在airodump-NG輸出的客戶端部分中,只展示相關客戶端,以及到接入點的連線。這會向我們展示所有和接入點相關的客戶端 MAC 地址。

  5. 一旦我們找到了白名單中的客戶端 MAC 地址,我們可以使用macchanger工具來修改客戶端的 MAC 地址,Kali自帶這個工具。你可以使用macchanger –m <mac> wlan0命令來完成。你使用-m命令指定的 MAC 地址就是wlan0介面的新 MAC 地址。

  6. 你可以看到,將 MAC 地址修改為白名單客戶端之後,我們現在能夠連線接入點了。

剛剛發生了什麼?

我們使用airodump-ng監控了空氣,找到了連線到無線網路的正常使用者的 MAC 地址。之後我們可以使用macchanger工具來修改無線網路卡的 MAC 地址,與客戶端保持一致。這會欺騙接入點,使其相信我們是正常耳朵客戶端,它會允許我們訪問它的無線網路。

我們鼓勵你探索airodump-NG工具的不同選項,通過訪問官網的文件:http://www.aircrack-ng.org/doku. php?id=airodump-ng

3.3 開放驗證

術語“開放驗證”是個誤解,因為它實際上不提供任何驗證。當接入點配置為使用開放驗證的時候,所有連線它的客戶端都可以成功驗證。

我們現在使用開放驗證來獲得驗證並連線到接入點。

實踐時間 – 繞過開放驗證

讓我們現在看看如何繞過開放驗證。

  1. 我們首先將我們的接入點Wireless Lab設定為開放驗證。在我的接入點中,這可以通過將Security Mode設為Disable Security來輕易完成。

  2. 我們之後使用iwconfig wlan0 essid Wireless Lab命令來連線到這個接入點,之後驗證我們到接入點的連線是否成功。

  3. 要注意我們沒有提供任何使用者名稱/密碼來通過開放驗證。

剛剛發生了什麼?

這可能是目前為止最簡單的練習了。你可以看到,在連線到開放驗證網路和連線到接入點時沒有任何障礙。

3.4 共享金鑰驗證

共享金鑰驗證使用例如 WEP 的共享金鑰來驗證客戶端。資訊的交換展示在這張圖中:

無線客戶端傳送驗證請求給接入點,它會回覆一個 challenge。現在客戶端需要使用共享金鑰加密這個 challenge,併傳送ui接入點,接入點解密它來檢查是否它可以恢復原始的 challenge 文字。如果成功了,客戶端就驗證成功,如果沒有,它會傳送驗證失敗的資訊。

這裡的安全問題是,攻擊者可以被動監聽整個通訊,通過嗅探空氣來訪問 challenge 的純文字和加密文字。他可以使用 XOR 操作來獲取金鑰流。金鑰流可以用於加密任何由接入點傳送的未來的 challenge,而不需要知道真實的金鑰。

這種共享驗證的常見形式就是 WEP,或者無線等效協議。它易於破解,並且由數不清的工具用於使破解 WEP 網路變得容易。

這個練習中,我們會了解如何嗅探空氣來獲取 challenge 或者加密後的 challenge,獲取金鑰流,使用它來驗證接入點,而不需要共享金鑰。

實踐時間 – 繞過共享驗證

繞過共享驗證比上一個練習更加困難,所以仔細遵循下列步驟:

  1. 讓我們首先為我們的Wireless Lab網路建立共享驗證。通過將安全模式設定為 WEP ,將驗證設定為Shared Key,我們已經在我的接入點上完成了設定。

  2. 讓我們現在將正常的客戶端連線到該網路,使用我們在第一步設定的共享金鑰。

  3. 為了繞過共享金鑰驗證,我們首先需要嗅探接入點和客戶端之間的封包。但是,我們也需要記錄整個共享金鑰的交換。為了完成它,我們使用airodump-ng工具的airodump-ng mon0 -c 11 --bssid <mac> -w keystream命令。-w選項在這裡是新增的,讓 Airodump-NG 在keystream為字首的檔案中儲存資訊。順便,在不同檔案中儲存不同的封包捕獲的會話是個好主意。這允許你在很長時間之後分析它們。

  4. 我們可以等待正常客戶端連線到接入點,或者使用之前用過的解除驗證的技術強迫重新連線。一旦客戶端連線並且工項金鑰驗證獲得成功,airodump-ng就會通過嗅探空氣自動捕獲這個改變。當AUTH列出現了WEP,就說明捕獲成功。

  5. 捕獲到的金鑰流儲存在當前目錄keystream為字首的檔案中。我這裡的檔名稱是keystream-01-00-2191-D2-8E-25.xor

  6. 為了偽造共享金鑰驗證,我們使用aireplay-ng工具。我們執行aireplay-ng -1 0 -e "Wireless Lab" -y keystream01-00-21-91-D2-8E-25.xor -a <mac> -h AA:AA:AA:AA:AA:AA mon0命令。這個aireplay-ng的命令使用我們之前獲得的金鑰流,並嘗試驗證 SSID 為 Wireless Lab,MAC 地址為address 00:21:91:D2:8E:25的接入點。啟動 WIreshark,並通過wlan.addr == AA:AA:AA:AA:AA:AA過濾器嗅探所有感興趣的封包。我們可以使用 Wireshark 來驗證它。你應該能在 Wireshark 的介面上看到記錄,像這樣:

  7. 第一個封包是驗證請求,由aireplay-ng工具發給接入點:

  8. 第二個封包由接入點發給客戶端的 challenge 文字組成,像這樣:

  9. 第三個封包中,這個工具向接入點傳送了加密的 challenge。

  10. 由於aireplay-ng工具將匯出的金鑰流用於江米,驗證會成功,接入點會在第四個封包中傳送成功訊息。

  11. 在驗證成功過之後,這個工具偽造了接入點的關聯,像這樣:

  12. 如果你在你的接入點管理介面中的無線日誌中檢視,你會看到 MAC 地址為AA:AA:AA:AA:AA:AA的客戶端建立了連線。

剛剛發生了什麼?

我們成功從共享驗證交換中匯出了金鑰流,並且使用它來偽造接入點的驗證。

試一試 – 填滿接入點的表格

接入點擁有最大客戶端數量,超過之後它們就會拒絕連線。通過為aireplay-ng編寫一個小型的包裝器,我們就可以自動傳送數百個連線請求,從隨機的 MAC 地址發往接入點。這會填滿路由器的內部表格,一旦達到了最大客戶端數量,接入點會停止接受新的連線。這通常叫做拒絕服務(DoS)工具,可以強制路由器重啟或使其失去功能。這也可以導致所有無線客戶端失去連線以及不能使用授權後的網路。

小測驗 – WLAN 驗證

Q1 如何強迫無線客戶端重新連線到接入點?

  1. 傳送解除驗證的封包
  2. 重啟客戶端
  3. 重啟接入點
  4. 以上全部

Q2 開放驗證是幹什麼的?

  1. 提供了適當的安全
  2. 不提供任何阿暖
  3. 需要使用加密
  4. 以上都不是

Q3 如何破解共享金鑰驗證?

  1. 從封包中匯出金鑰流
  2. 匯出加密金鑰
  3. 向接入點傳送解除驗證的封包
  4. 重啟接入點

總結

這一章中,我們瞭解了 WLAN 驗證。隱藏 SSID 是“隱藏式安全”的策略,很容易被攻破。MAC 地址過濾器不能夠提供任何安全,因為 MAC 地址可以從無線封包中嗅探,而 MAC 地址在封包中毫無加密。開放驗證不提供任何實際的驗證。共享金鑰驗證的破解有些麻煩,但是,使用了正確的工具,我們可以匯出和儲存金鑰流,我們可以使用它來回應之後由接入點傳送的所有 challenge。最後我們可以獲得驗證而不需要知道真實的金鑰。

下一章中,我們會看一看 WLAN 加密機制的不同 – WEP,WPA 和 WPA2 – 並看一看其中的不安全性。


相關文章