如何看待 2017 年 10 月 16 日公布的 WPA2 安全漏洞 KRACK?
服役13年:報道稱WPA2加密協議已被攻破
Wi-Fi security has been breached, say researchers
問題出在4-way handshake。
當一個客戶端連接WiFi的時候,會和AP進行一個4 way handshake來生成一個用於加密Data frame的session key。客戶端在收到handshake message 3 的時候 會安裝這個session key。但是由於不能保證客戶端一定能收到message 3(可能丟失或者損壞),所以如果AP沒有收到對於message 3的ack消息,就會進行重傳message 3, 所以客戶端有可能收到多個message 3。 每次收到message 3,客戶端就會重新安裝session key來和AP同步。同時這個重新安裝的過程也清空了incremental transmit packet number (nonce) 和receive replay counter(這些參數都參與加密)。攻擊者就是利用這點來多次重置session key和其他參數。這就是KRACK的基本原理。
這個攻擊和之前對WPA2協議安全的證明並不矛盾。因為在證明的時候已經默認這個key只會被安裝一次。
In particular, these proofs state that the negotiated session key
remains private, and that the identity of both the client and AccessPoint (AP) is confirmed. [2]
但是我們可以看到這個session key 其實並沒有泄露。
但是由於我們可以做到多次重置nonce,receive replay counter,和session key,造成WPA2在加密數據包的時候多次重用同一個keystream,如果一個已知的內容的message被重用的keysteam多次加密,那麼keystream就能被推出來。Known plaintext attack against CCMP[5]裡面提到,
we know what the first six bytes of an encrypted message should be as there is always a LLC– and a SNAP-header. [5]
所以原文作者表示在實踐里總有辦法找到那些有已知內容的packet...
In practice, finding packets with known content is not a problem, so it should be assumed that any packet can be decrypted. [1]
其實目前最嚴重的問題出在背鍋俠wpa_supplicant身上。如果對使用wpa_supplicant 的client重放message 3, 由於他實現上的問題,會導致重新安裝的session key被替換成全0的key,也就是說攻擊者直接知道了這個key,於是所有的流量直接都能被攻擊者解密。
總結一下簡單易懂的說明和一些關鍵點
- 這個漏洞不能拿來破解WIFI密碼。所以暫時不需要修改密碼,修改了也沒用。
- WPA2協議還是安全的,問題在於一些客戶端的實現需要更改。
ref
[1] KRACK Attacks: Breaking WPA
[2] https://papers.mathyvanhoef.com/ccs2017.pdf
[3] Taking advantage of one-time pad key reuse?
[4] How does one attack a two-time pad (i.e. one time pad with key reuse)?
[5] Known-plaintext attack against CCMP
看完英文論文了。
其實這個論文很簡單,但是作者寫作風格就是怎麼啰嗦怎麼來,重複的東西好多好多,看得好累好煩。
簡單說,就是4步握手session key應用的時候,有4個問題:
1.) 標準原文用了一個「one」,而不是「latest one」,或者是「the one」,結果很多應用都解讀為「one of」或者「any」,導致在應用key的時候,AP端做檢查時沒有檢查到消息是被重放的,導致AP端「可能」重置nonce和counter。
2.)客戶端收到2個相同控制命令(消息不同,但實際執行的控制動作相同)時,用了重置nonce和counter,防止同步丟失導致鏈接出錯。
3.)客戶端任何時候可以發起rekey,讓AP發起4步握手過程。
4.)可悲的是,某些實現,不檢查「rekey」的機密性和完整性,導致中間人可以任何時候攻擊這個協議。
備註: 不是所有的實現都是重置nonce和counter的,有些是只重置nonce不重置counter。
風險:
1.) 攻擊者必須有能力阻斷消息3到達客戶端,並且有能力重放。這個攻擊是很難實現的。因為他必須放任前2條消息過去,阻斷消息3,所以時機把握要非常好。也就是說,他用電磁波干擾阻斷,只有毫秒級的時間去實施。
2.) 重置了nonce和counter以後,生成的PTK就是一個曾用過的,因為PTK的生成只與PMK,nonce,counter,雙方MAC地址相關。(前面分析這一段有問題)
3.)(非rekey場景) 4步握手,只有在「首次進入網路」才會發生。所以如果不是首次進入網路,就沒有4步握手。如果沒有rekey,攻擊的時機很難保證的。
4.)(rekey場景)其實只要在AP端對客戶端發起的rekey request做完整性校驗和機密性保護就夠了。
如果重置了nonce和counter就直接用這個去生成PTK,協議做得有點奇怪了,不應該是重新生成nonce和counter再協商一個新的PTK嗎?
【原回答】
這個論文里藏了一個彩蛋,第一章最後一段:
第六章我們評估了攻擊的影響
評估一詞,尾巴上少了一個s,變成了什麼大家猜
這是一個寫進standard里的Optional漏洞,所有老實按照注釋「clear the encryption key from memory once it has been installed for the first time」的實現都會被影響,在重新收到handshake message 3時被reinstall,或reset nonce導致強制重放,或從內存中取回已經被0覆蓋的key。
強制重放攻擊相對來說比較難利用,至少需要找到辦法重用keystream來實施解密和鍛信(如chosen-ciphertext attack),但是wpa_supplicant的實現漏洞就影響範圍更大了。
我不憚以最壞的惡意來揣測這條remark的author。
不過好消息是,因為這是個implementation detail,我們可以等待patch釋出,暫時還不需要更新的WPA3協議。
本次的WPA2密鑰重裝攻擊,基本原理為利用WPA協議層中的邏輯缺陷,多次重傳握手過程中的消息3從而導致重置隨機數和重播計數器,為攻擊者提供了利用條件。
在協議中還存在一條危險的注釋「一旦安裝後,就可從內存中清除加密密鑰」,若按此注釋進行實現,在密鑰重裝攻擊時會從內存中取回已經被0覆蓋的key值,從而導致客戶端安裝了值全為零的秘鑰。而使用了wpa_supplicant的Linux及Android設備便因此遭受嚴重威脅。
整體來說,此次漏洞的危害程度弱於WEP漏洞的影響,但對於Linux及Android設備需額外注意要及時更新修補此漏洞,防止遭受嗅探、劫持等攻擊。
需要了解的是:
- 此攻擊無法獲取WPA密碼,同時更改WiFi密碼無法緩解此類攻擊。
- 攻擊主要面向客戶端設備,路由器可能並不需要進行安裝更新。
- 本次漏洞可通過向下兼容的方式進行修復,無需更換設備。一旦修復更新發布,請立即為您的設備安裝。
建議直接去讀這篇paper,如果像我一樣文化程度比較低,嫌看著累的,可以直接abstract+conclusion+所有fig看一遍,再掃一遍全文,最後去油管子上看一下2分鐘的那個demo
原理主要是4-way handshake設計上的缺陷
在Msg4的交換結束後,supplicant端會安裝PTK和GTK,Authenticator端安裝PTK,至此4-way handshake終止。但對於已經建立的連接,PTK可以通過重新發起一個4-way handshake更新,而這個過程中4條Msg的交換還是通過原來的PTK加密的。
無論是在收到Msg1的PTK-START狀態還是已經完成handshake的PTK-DONE狀態,只要收到一個Msg3並且該消息的MIC和Replayed counter有效,就可以進入PTK-NEGOTIATING狀態重新生成一個PTK,並立刻安裝PTKGTK。具體來說這種key reinstallation attack可以通過如下操作:
- 在supplicant和authenticator之間建立一個中間人
- 利用這個中間人攔截Msg4,使得authenticator重傳Msg3
- supplicant並不知道authenticator沒有收到Msg4,於是開始通信,向authenticator(也就是中間人)發送PTK和初始nonce加密的數據
- supplicant收到這個重傳的Msg3後,重新安裝了這個已經使用過的PTK,
- supplicant重置nonce,並用這個PTK和nonce加密已經發送過的數據並發送
注意nonce一旦重複,可以輕鬆地通過GHASH函數恢復出authentication key,因此這個攻擊是有效的。而且這個中間人還能在4-way handshake完成後任意時間轉發第二個Msg3,那麼可以說想重用幾個nonce就能重用幾個nonce了。
實際操作層面上根據協議的具體實現略有不同。比如Windows和iOS不接受Msg3的重傳(這本身是不符合802.11標準的,但陰差陽錯使得這樣的client在這種攻擊下更安全一些,但針對group key handshake的攻擊對Windows和iOS依然致命)
另外由於PTK(也是這個session key)是基於client和AP的MAC地址的,可行的中間人設置可以使用不同信道上的偽造的相同MAC地址的AP(比如那個demo視頻裡面就是這麼乾的)
當然,supplicant在安裝PTK後,只會接受加密的Msg4,因此上述攻擊(明文Msg3重放)方法僅對特定版本的wpa_supplicant有效。OpenBSD, OS X和MacOS僅接受加密的Msg4但收到連續的兩條加密的Msg3時,會放在隊列里,依次進行重置密鑰nonce處理,這種情形在沒有受到攻擊的自然情況下也會發生,因此可以利用這種特性設計出一個新的中間人攻擊方案,相比原來的,需要修改的地方只是攢夠兩條authenticator的重傳的Msg3消息(儘管加密了但可以通過報文長度判斷是否為Msg3)連續重放給supplicant,就可以得到重複nonce的消息,當然比起明文Msg3重放可用的重複nonce減少到僅有一條。
核心的原理看完3 ATTACKING THE 4-WAY HANDSHAKE基本就明白怎麼回事了,後面針對group key的攻擊(也是利用重放),802.11r FT handshake的攻擊,自己去看下圖掃下文字描述就可以大致明白了,方法和上面的大同小異,受到威脅的具體版本和特性細節可以看那幾張表(可以說是無一倖免了)。
那個2分鐘的demo沒有涉及具體原理,只是給你看了下攻擊手段(在不同信道偽裝同MAC地址的AP使用工具發起上述中間人攻擊)和效果,對普通蹭網人群影響不是很大(只要你客戶端及時打補丁),但不管你是什麼人群,及時更新+莫貪小便宜瞎蹭不安全的公共Wi-Fi注意留心眼總是沒錯的。
沒啥大影響,wep協議被破解好多年了,至今還能掃描到一大批使用wep協議的熱點。
由於wifi基站大部分是家用路由器,很多設備壓根沒有安全更新,只要不壞就會一直跑著。
無線通信物理信道如同乙太網一樣可被竊聽,也許應該把它當成是常識而不是總假設物理層是安全的吧。。
當然好像也沒有什麼現代通信協議的安全是依賴信道安全的吧?
已經好幾個妹子問我這事了,特地發個公告,免得恐(誤)慌(會),都是問怎麼用這個漏洞破解密碼的╮(╯▽╰)╭
相關patch 各大廠商都早已放出。注意更新即可。mtk的做法是檢測這個攻擊然後忽略這次reinstall key,具體code還沒看只是單純的加了patch
這個攻擊是基於WPA2 四次握手協議本身的漏洞,理論上是可以這樣被破解的,但是實際要破解,不是那麼容易的。感覺嚴重程度有點被誇大了。另外,各家WiFi solution的patch都已經出了,只等各大產品供應商更新固件。
你確定是這個日期嗎?
不是最近才被破解的,記憶中幾個月前看到的一個新聞,說WPA2已經被破解,但是沒有公布細節,只邀請了少量人員到他們那兒的一個黑屋子裡面參觀,大概就這麼回事。。。
看來運輸和應用層做的事情要要多很多了。其實網路五層全部用可靠和安全協議才能保證最終的安全,但是因為成本因素不可靠協議用的多所以用的人要準備好自己數據會被破的準備,任何一層不安全被破都是遲早的事情。不過協議標準制定方只要保證就算被破了數據也不會泄露就不用當心太多。
最近卡拉克(跟我讀:卡拉克攻擊)這個詞,在網上被炒的沸沸揚揚。就連我的那個剁手女票,都開始跟我聊起這個話題。為了展示我的專業性,同時繼續鞏固我在家中的權(奴)威(才)地位,我決定加個班,給我的她好好科普下卡拉克這個小怪獸。鑒於這篇文章是以我的小白女票的專業背景情況作為對讀者的背景假設,因此行文可能會稍顯啰嗦,請大家見諒。同時也希望大家能理解我的苦心,因為,我相信,只要我美麗動人的女票看得懂,大家一定都能看的懂了。
什麼是卡拉克攻擊
簡單來講,卡拉克是當前Wi-Fi技術上存在的一個高危漏洞。黑客利用這個漏洞,可以監控到你手中設備的上網數據,從而竊取敏感信息,讓你明天就成為網紅。攻擊者不需要破解Wi-Fi密碼,就可以輕鬆來竊取你的信用卡卡號、密碼、聊天信息、照片、電子郵件以及在線通訊工具內容。
「什麼?漏洞?上網數據?都是些什麼鬼。能不能再直白點!!!對我繼續刷「探探」有影響么?」好好好,各位大人不要著急,我們一點一點來解釋。我們先說一下,什麼是漏洞。如果哪位看官覺得這個問題太簡單,懶得看,可以直接跳到下一個問題。
漏洞是啥意思
其實很簡單,漏洞就是你家裡連你自己都沒有發現的後門或者你忘記關緊的窗戶,虎視眈眈的隔壁老王就會利用這些漏洞乘虛而入。
Wi-Fi身上的洞
到館子里吃飯,可以沒有空調,但是不能沒有Wi-Fi。飯菜味道可以不好,但是Wi-Fi質量不能不高。當我們連接Wi-Fi上網時,Wi-Fi技術就默默的承擔起了為我們在手機和路由器之間安全的傳輸數據的任務。數據傳輸有什麼漏洞?
這個要從Wi-Fi的加密通信說起。我們都知道Wi-Fi是我們日常用到最多的一種無線通信方式,其主要原理是通過在特定頻率上發送或者接收電磁波來達到信息交換的目的。而電磁波從設備發出後像聲波一樣向四面八方發散的,接收者在任何一個方向都可以收到這個電磁波,當然,肯定需要在一定範圍內,不過這個範圍也不會太近,不信你可以現在打開手機看看你可以收到多少個Wi-Fi路由器的信號。所以它本身來說是沒有安全性可言的。為了解決這個問題,人們想出了一個辦法:任何兩台設備之間通過電磁波交換信息時都會進行單獨的加密,這樣即使附近其他的設備接收到這個電磁波,也不知道具體的信息內容。這好比我們兩個人都使用暗語進行交流,其他人即使聽到了,也聽不懂他們在說啥。
但是問題來了,這個暗語怎麼約定呢?很簡單,我們在真正開始說話之前先約定一個暗語的規則,以後說話都按照這個規則來說話就行了,舉個簡單的栗子,我們約定以後說「好」代表「壞」,「壞」代表「好」,我說「你好好」,你其實知道我在說「你壞壞」。。。
咳咳。。。扯遠了,話說回來,在Wi-Fi技術發展過程中,出現過多種暗語規則。今天的主人公WPA2,就是其中的一種最好的規則。WPA2從出生到現在,已經服役了有13個年頭了。這13年,WPA2勤勤懇懇,一直沒有出現過大的問題。然而,智者(科學家們)千慮,必有一失,愚者(黑客)千慮亦有一得。最近,WPA2就被發現在他的規則上有個洞,而且被公之於眾,科學家們準備於今年11月1日的計算機與通信安全大會(CCS)上探討這個事情(相當於計算機界的xx大,真是招搖過市啊。。。)。由於這個洞的發現,基於WPA2的信息傳輸便不再安全。確切的說,由於這個洞的存在,手機與路由器之間傳輸的數據,將變成透明的。也就是說,你老婆很有可能已經在昨天晚上與你一起欣賞了你前女友發來的照片。
這個洞長啥樣
以前我們Wi-Fi設備在用暗語對接的時候會來來回回好幾次,但是為了怕某些人聽不清楚,如果在對接時的關鍵步驟中沒有得到對方的回答,另一方就會再說一次,直到對方聽到並回答為止。問題就出在這裡:如果兩個人已經約定好了暗語,正在嘰里呱啦說個不停的時候,隔壁老王突然對其中一個說了一句他之前偷聽到的暗語對接時的內容。這下完了,這個收到這個信號後就傻不拉幾地重新把自己的暗語規則改一遍,然後隔壁老王就可以從這個時候慢慢地發現你們說話的規律了,也就破解了你們說話的內容。到這裡,你們兩個人說的什麼,老王全聽明白了。隔壁老王不僅可以隨隨便便地偷聽你們說的話內容,而且可以偽裝成其中任何一個人對另外一個人胡說八道了。這種攻擊形式在業內有個專業的名字,叫做中間人攻擊,和我們生活中的「小三」有點類似。
我的充電寶會受攻擊么?
都說到這裡了,我想你不會傻到還想不清楚吧?所有使用Wi-Fi連接的設備都會受到影響。這絕不是危言聳聽哦,不要等到你的艷照滿天飛的時候才想起來這回事。你手裡的手機、電腦、智能電視、智能家居(冰箱、洗衣機、插座、燈),都在被攻擊的範圍。對了,要特別提醒一下你們家的Wi-Fi攝像頭,隔壁老王可以天天看你們家的現場直播哦。
至於你的充電寶嘛,如果它有Wi-Fi熱點功能,當然也在影響範圍之列。至於你們加的阿貓阿狗、鍋碗瓢盆應該是安全的。
快告訴我,我該怎麼做?
怎麼辦呢?趕緊改個Wi-Fi密碼吧!對不起,我告訴你:沒用!因為隔壁老王壓根兒就不需要破解你的密碼,他只需要中途重放個數據包就可以了。
可是你還是淚流滿面地祈求我,說你平時做的虧心事太多,估計這次是完蛋了,但是還是不會放棄最後一絲希望的。好吧,其實還是有辦法的,下面我就給你詳細羅列一下(都看到這裡了,你為什麼還不關注我?):
* 蘋果系列:該漏洞在最新的iOS11.1 Beta3系統、watchOS 4.1和tvOS 11.1開發者測試版等系統當中被修復,趕緊升級吧
*安卓手機:這個問題很複雜,因為廠商實在太多。從目前來看安卓其實很慘...這個問題近期內可能不會被修復,因為這不僅要看谷歌的臉色,而且還要看你的手機生產商什麼時候發布補丁。不過一有進展我就會告訴你的。我們近期會公布受影響的設備列表,以及他們的補丁發布情況。
* Windows筆記本和台式機:windows受影響的產品列表 {{windowTitle}}
不過微軟已經出了官方補丁,你去下載自己升級,或者通過各類PC端安全軟體會提醒你升級的,你注意留意就行了。
* 智能電視:這個要看你的電視廠商是不是已經出了升級補丁,打開電視看看是不是有升級版本,點擊升級就好了。
* Wi-Fi攝像頭:這個可能是最危險的,到目前為止,還沒有看到「螢石」、「小米」等廠商對此事件公開表態。
* 其他智能硬體:慢慢等廠家發布升級補丁吧,不過即使廠家發布了,你也不一定知道怎麼升級,因為這個真的很麻煩。
* 各類路由器:那就是趕緊看看你的路由器廠商官網上有沒有給出升級固件(不要問我路由器怎麼升級,因為你如果戳了我的二維碼,答案就在那裡!),趕緊升級吧。在沒有升級之前可以先關閉「WDS」、「RePeator」功能,可以一定限度下降低風險。
有些事情,做了也白做
* 「我換個超級複雜的密碼,就不怕啦。」 「沒用!」
* 「算了,再買個路由器!」 「沒用!」
* 「買個貴一點的手機,便宜沒好貨,好貨不便宜!」 「沒用!」
* 「我的路由器上除了可以選擇WPA2,還可以選擇WEP,我選WEP就不會遇到WPA2的漏洞啦!」 「沒用,而且千萬別!WEP的洞更大!」
* 「**,寶寶我不不上網了!」 「嗯…… 可以。」
原創文章,轉載請聯繫作者。
win10和ios是沒有問題的。android6.0以下都有問題。linux wpa_supplicant2.6以下是有問題的。
粗看了下,漏洞的主要原因似乎還是協議要求的PRNG entrophy不夠。 導致可以預測出prng的輸出。 讓離線破解數據包,密碼成為了可能。解決方案是加入更多entrophy,比如連接設備的rssi。 所以不是類似wep那樣無法補救的漏洞。廠家補救一下PRNG演算法就好了。期待大神詳細分析
問題影響不算太大,被媒體炒作的,可以理解為wpa supplicant的bug,終端側需要可以重複安裝eapol msg3的密鑰才會觸發
應該還是理性點看待的。
先祭出我們昨晚發的稿件《WPA2加密協議可被監聽!你還敢用WiFi嗎?》(知乎專欄:WPA2加密協議已被破解!你還敢用WiFi嗎? 嘶吼網站: WPA2加密協議可被監聽!你還敢用WiFi嗎? - 嘶吼 RoarTalk)
小編我個人比較傾向於玩智能硬體,所以對WPA2加密的安全性表示比較信任的。昨晚看到消息的時候確實挺意外的。
不過,根據現在的描述來說,這個事情最後應該還是落到兩個老生常談的問題:
公共WiFi的安全和企業無線網安全
第一點很好解釋,畢竟人流多的地方廣撒網,以前只能夠通過做釣魚熱點做的事情,現在也能夠通過直接降級做到;
第二點是因為很多企業會把核心數據放在一個隔離的內網裡(例如很多學校的「上網不涉密,涉密不上網」),真要做滲透的時候,雖說不會把這個方法作為核心路數,多一條路就多一絲成功的可能。
對這個漏洞來說,可利用性應該也不算太實際。因為,補丁也已經在路上了,只需要等待各廠商的新固件,將系統更新即可。
願網路社會一片安好~
推薦閱讀:
※萬網買了域名之後,該如何建立網站?
※BGP協議的路由表記錄了整個路由路徑嗎?
※計算機執行一條指令要多長時間?
※如何做一個能被別人訪問的網站?
※免流的原理到底是什麼?