新思科技使用智能模糊測試工具Defensics檢測到D-Link的行爲漏洞。2018年8月6日:新思科技發現了這個漏洞問題。2018年8月7日:新思科技研究團隊聯繫D-Link。2018年8月20日:新思科技聯繫芬蘭國家網絡安全中心(NCSC-FI),該中心是芬蘭通信監管局的一部分。2018年9月20日:新思科技測試供應商補丁並確認NCSC-FI的解決方案。2018年11月6日:D-Link發佈固件補丁。2018年11月7日:NCSC-FI發佈諮詢。2018年11月15日:新思科技網絡安全研究中心 (CyRC)發佈此通報。

發現漏洞

作爲Defensics SafeGuard開發的一部分,我們發現了D-Link DIR-850L無線AC路由器(硬件修訂版本A)中的漏洞。該漏洞使攻擊者無需提供憑據即可完全訪問無線網絡。我們的方法在接入點連接期間跳過關鍵步驟,完全繞過加密。

在確定此漏洞後,新思科技繼續與芬蘭國家網絡安全中心(NCSC-FI)協調披露事宜,編號爲CVE-2018-18907。我們與D-Link合作重現了這個漏洞問題。在2018年11月6日,D-Link已經爲受影響的設備提供了修復方案。

WPA2是用於客戶端和接入點(AP)之間的WLAN網絡通信的加密技術。爲了相互連接,AP和客戶端都需要知道預共享密鑰(PSK),它們在WPA握手過程中交換,隨後在它們之間打開加密通道。

通常,破壞WPA2加密需要在AP和客戶端(也稱爲請求者)上執行無線捕獲,其中握手過程完全可見,或者僅從AP獲取對偶主密鑰標識符(PMKID)。完成此操作後,您將獲得強制WPA2 PSK所需的所有信息。獲取PSK所需的時間取決於硬件和PSK長度。但有時候通過WPA2加密需要一點運氣,這往往不到一秒鐘。

辦公室日常工作

2018年8月初,我正在爲新思科技的Defensics解決方案完成新版本的測試套件,該解決方案爲各種協議提供模糊測試。模糊測試是一種測試方法,測試工具發送格式錯誤的輸入以發現軟件中潛在的安全漏洞。這種包含意外或無效數據的格式錯誤的輸入稱爲異常測試用例。

我最後添加到測試套件中的信息包括一些新的異常測試用例和SafeGuard結果。 SafeGuard是一項專利功能,允許Defensics識別違反規範或最佳實踐的情況 -- 例如,當被測系統(SUT)選擇弱加密方案時,或者以明文形式發送身份驗證憑據時。

SafeGuard與模糊測試有何不同?

新版本的Defensics 802.11測試套件包含兩項重要改進。

第一,WPA2握手後數據幀的WPA2加密。之前的版本僅計算會話的臨時密鑰,而且可以將此信息寫入文件。這允許測試人員驗證Defensics和SUT都具有相同的臨時密鑰。但是發送加密數據幀會自動測試正確的密鑰,因爲兩端的加密和解密需要知道密鑰。

第二個改進是在IPv4上簡單的動態主機設置協議(DHCP)發現報文序列。此DHCP序列驗證SUT是否接收數據幀並檢查響應。由於DHCP本身非常複雜,我首先在沒有加密的情況下實現它,並且在DHCP序列工作之後,在測試中添加了WPA2 AES CCMP加密。

測試發現

我當時正在爲WPA1添加一個弱加密SafeGuard,因爲已知WPA1有弱點而且不應該使用。 WEP加密也是如此:它不應該再被使用了。 Defensics 802.11測試套件那時具有弱加密檢測功能,我運行了幾個案例來測試它,正巧我桌面上有AP,即D-Link DIR-850L。我以爲會檢測到弱加密,因爲我已經將SUT AP配置爲擁有WPA1而沒有其它任何設置。

正如我所預測的一樣,Defensics正確地檢測到弱加密。但是AP接受了沒有WPA加密的DHCP發現序列。此特定測試用例本應經過協商以使用WPA1加密,但它不包含實際加密:DHCP發現序列以明文形式發送給AP。我對此測試結果感到驚訝,因爲路由器應該需要WPA1加密。然後我使用Wireshark,一種捕獲無線數據幀的工具,重新運行測試用例並檢查結果。

在結果中,我看到了AP給Defensics提供的IP地址、路由器IP地址、租用時間等。發現序列再次以明文發送。然後我將加密從WPA1更改爲WPA2,看看是否會對SUT行爲產生影響。同樣,發現序列仍以明文形式發送,因此這出現了問題。 AP還支持WPA Enterprise,並且在該模式下的測試沒有改變行爲 - 序列仍以明文形式發送。

分析

當然,下一個問題是發生了什麼,爲什麼呢?連接到AP分兩個階段完成。首先,客戶端和AP就連接參數和要使用的加密達成一致;其次,執行所謂的WPA握手或四次握手,交換加密參數並確保它們都具有PSK。在此之後,他們打開加密數據連接。但是,我運行的測試用例跳過了WPA握手,因此必須在握手之前發生什麼,AP和客戶端就連接參數和使用的加密達成一致。

第一階段包括探測請求和響應、身份驗證請求和響應,最後是關聯請求和響應。探測請求的主要目的只是發現AP。然後,探測響應包含有關AP的所有信息,包括支持哪種加密。

下一個請求 - 響應對是身份驗證,其目的是確保向後兼容性。接下來是關聯請求和響應。在關聯請求中,客戶端告訴AP哪個是它想要的加密以及使用哪些參數。關聯請求還會打開AP和客戶端之間的數據連接。

我運行的測試用例有一個正常的探測請求和身份驗證請求。然後,關聯請求需要客戶端支持WPA1加密。此時,WPA握手應該發生,但由於我的測試用例跳過了握手,AP和客戶端開始發送沒有任何加密的數據幀。

漏洞利用

從沒有憑據的受保護網絡獲取IP地址已經是件壞事,但是還會更糟糕嗎?我決定爲此漏洞創建漏洞利用程序。我的想法是創建一個自定義版本的wpa_supplicant(Linux操作系統中的默認WLAN客戶端)。

首先,我嘗試修改wpa_supplicant,以便它只是忽略WPA握手,但事實證明這非常困難。檢查太多,無法確保WPA狀態機處於正確狀態。這證實我試圖做的事情並不常見。我嘗試的下一件事是在沒有加密的情況下建立連接,但修改包含加密參數的關聯消息。這與Defensics測試套件在測試用例中所做的一樣。我只需要刪除一些未經協商的加密參數檢查,就可以建立連接。

對新思科技的Defensics智能模糊測試有疑問?我們給您答案

我有一個wpa_supplicant的修改版本,它提供了網絡接口上的完整Linux IP堆棧。首先,我嘗試連接到AP管理面板。雖然連接了,但是我注意到在路由器接到流氓客戶端之前,路由器接受了普通數據幀時,有三到六秒的窗口。然而,wpa_supplicant自動重新連接,我的開發繼續進行。實際上,重新連接速度非常快,即使傳輸控制協議(TCP)連接仍保持打開狀態。

此外,我還連接了另外兩臺設備,一臺是有線的,一臺是通過WLAN連接的。從流氓客戶端,我可以毫無費勁地連接兩個設備。從路由器管理面板,我看到惡意客戶端被識別爲連接到路由器的任何其它客戶端。因此,利用此漏洞,我可以在不知道預共享密鑰的情況下完全訪問網絡。我不需要做任何耗時的暴力破解 - 我只是連接到網絡。

總結

Defensics 802.11測試套件現在可以識別繞過整個WPA加密機制的情況。測試套件現在包含一個單獨的SafeGuard功能來測試此漏洞,如果它檢測到WPA加密被繞過,則測試將顯示失敗。因此,針對其AP運行Defensics模糊測試的供應商將意識到此漏洞。測試的D-Link設備是隨機選擇的,D-Link已經發布了該設備的補丁。

查看原文 >>
相關文章