首發(fā)于FreeBuf:http://www.freebuf.com/articles/wireless/145259.html
0.前言
三年前我發(fā)表了一篇文章《黑客有辦法讓你自動連上陌生WiFi》,介紹Karma攻擊可以讓你的無線設(shè)備自動連上黑客的WiFi。當(dāng)時引起了還算比較熱烈的討論,關(guān)于WiFi安全,關(guān)于Karma攻擊等。同時,我也提到WiFi釣魚將會成為接下來幾年的一個熱門。
如今WiFi安全發(fā)生了許多變化,相比于三年前我對WiFi安全也有了更多的了解。本篇文章將介紹為什么Karma攻擊逐漸失效了,廠商是如何修補(bǔ)的,以及我們還有哪些攻擊方式。
1. Karma攻擊
被動掃描(Passive Scan)和主動掃描(Active Scan)
無線客戶端可以使用兩種掃描方式:主動掃描和被動掃描。在主動掃描中,客戶端發(fā)送probe request,接收由AP發(fā)回的probe response。在被動掃描中,客戶端在每個頻道監(jiān)聽AP周期性發(fā)送的Beacon。之后是認(rèn)證(Authentication)和連接(Association)過程。

Karma
2004年,Dino dai Zovi和Shane Macaulay發(fā)布了Karma工具。Karma通過利用客戶端主動掃描時泄露的已保存網(wǎng)絡(luò)列表信息(preferred/trusted networks),隨后偽造同名無密碼熱點(diǎn)吸引客戶端自動連接。

如上圖所示,當(dāng)Karma發(fā)現(xiàn)有客戶端發(fā)出對SSID為Telekom的熱點(diǎn)請求時,向其回復(fù)Probe
Response;當(dāng)Karma發(fā)現(xiàn)有客戶端發(fā)出對SSID為RUB-WiFi的熱點(diǎn)請求時,也向其回復(fù)Probe Response。
這實(shí)質(zhì)上是違反了802.11標(biāo)準(zhǔn)協(xié)議,無論客戶端請求任何SSID,都向其回復(fù)表示自己就是客戶端所請求的熱點(diǎn),使客戶端對自己發(fā)起連接。
Why works?
主動掃描過程中(Active Scan)泄露客戶端已保存網(wǎng)絡(luò)列表信息
為實(shí)現(xiàn)自動連接已保存網(wǎng)絡(luò)等功能,客戶端會定時發(fā)送帶有已保存網(wǎng)絡(luò)信息的Probe Request(在后文統(tǒng)稱為Directed Probe Request)。黑客通過無線網(wǎng)卡監(jiān)聽無線幀便能輕松獲取這些信息。客戶端對保存熱點(diǎn)不檢驗(yàn)MAC地址
為了增大信號覆蓋范圍,通常會部署多個同名熱部署在整個區(qū)域。當(dāng)客戶端發(fā)現(xiàn)信號更強(qiáng)的同名熱點(diǎn),滿足“一定條件”后便會切換過去,即所謂的無線漫游功能。為了實(shí)現(xiàn)這種特性同時也意味著,只需要SSID名稱及加密方式相同客戶端便能自動連接,不會檢查MAC地址。
在曾經(jīng)某段時間里,甚至加密方式不一樣,只要SSID同名也能讓客戶端連接。比如客戶端曾連過SSID為“yyf”的WPA熱點(diǎn),只需建立SSID為“yyf”的OPEN熱點(diǎn),客戶端也會自動連接。具體的時間點(diǎn)及手機(jī)操作系統(tǒng)版本號我暫時沒檢索到。
相關(guān)工具
-
Pineapple
Hak5的便攜式無線安全審計設(shè)備——WiFi Pineapple,內(nèi)置了Karma攻擊功能。
image.png-278.9kB airbase-ng
它是著名的wifi攻擊套件aircrack-ng中的一個工具。其用法如下,其中-P、-C為Karma相關(guān)的參數(shù)
airmon-ng start wlan0 #網(wǎng)卡設(shè)為monitor模式
airbase-ng -c 6 -P -C 20 -v mon0
-c channel
-v be verbose
-P (karma mode) respond to all probes.
-C enables beaconing of probed ESSID values (requires -P)
危害性
如果黑客在公共場合開啟了Karma攻擊,便能輕松吸引周邊大量設(shè)備連接到黑客的熱點(diǎn)(一般會配合著Deauth攻擊)。隨后,黑客便能隨心所欲對網(wǎng)絡(luò)內(nèi)的客戶端進(jìn)行流量嗅探或其他的中間人攻擊了??芍^危險性巨大。
2. 后來Karma攻擊逐漸不好使了
Broadcast Probe Request
隨著各廠商對于Directed Probe泄露SSID導(dǎo)致釣魚攻擊問題的重視,在較新的設(shè)備中都改變了主動掃描的實(shí)現(xiàn)方式。主要使用不帶有SSID信息的Broadcast Probe,大大降低了Directed Probe的使用頻率。Broadcast Probe流程如下圖所示。

對比下兩種方式

Directed Probe的交互如(b)所示,客戶端定時發(fā)送攜帶已保存網(wǎng)絡(luò)列表信息的Probe Request,造成了泄露;而在Broadcast Probe中,客戶端的Probe Request不再帶有已保存網(wǎng)絡(luò)列表信息,SSID字段為空。而所有收到該請求的熱點(diǎn)都將回復(fù)Probe Response,其中帶有AP的SSID名稱,客戶端根據(jù)回復(fù)的SSID來決定是否進(jìn)行連接。如此一來,在實(shí)現(xiàn)原有功能的同時,解決了泄露保存熱點(diǎn)信息的問題。
iPhone大概在iOS7做了這個改變。Android大概在Android 4.x,還有同樣使用了wpa_supplicant的Linux。
wpa_supplicant 在2014年7月的一個patch修復(fù)了Android在省電模式下的掃描依然會發(fā)送暴露SSID的Directed Probe Request的行為。
http://w1.fi/cgit/hostap/commit/?id=4ed3492206097c24aa37b4429938fec049ba1827
隱藏?zé)狳c(diǎn)(Hidden SSID)
當(dāng)AP配置為隱藏模式時,在主動掃描的Beacon幀和被動掃描的Probe Response幀中都不會公布自身SSID。于是客戶端連接隱藏?zé)狳c(diǎn)的唯一方法就是持續(xù)不斷的發(fā)送帶SSID的Directed Probe Request。

顯然這會導(dǎo)致SSID泄露。后來發(fā)現(xiàn)iOS對此也做了些改進(jìn),設(shè)備會首先檢測周圍是否存在隱藏?zé)狳c(diǎn),當(dāng)至少存在一個隱藏?zé)狳c(diǎn)時才會發(fā)送。這增加了一些利用難度。

Mana工具
在2014年的Defcon 22上,由Dominic White 和 Ian de Villiers 發(fā)布了mana。mana可以理解為karma 2.0,它針對前文提到的問題做了一些改進(jìn):
- 收集周圍空間的SSID信息(來自于老設(shè)備的Directed Probe)或者用戶自定義。當(dāng)接收到Broadcast Probe Request時,mana會根據(jù)列表中的每一個SSID構(gòu)造成 Probe Response向客戶端回復(fù)。
客戶端在面對同一MAC有多個不同SSID時不會產(chǎn)生問題
針對iOS對Hidden SSID的處理,mana會自動創(chuàng)建一個隱藏?zé)狳c(diǎn)用于觸發(fā)iOS設(shè)備發(fā)Directed Probe Request
增加了偽造PEAP等EAP SSL方案的熱點(diǎn)功能,可以抓取并破解EAP hash。破解后將認(rèn)證信息存入radius服務(wù)器,客戶端下次重連就能成功連接了。
對Broadcast Probe的解決方案就是通過手動指定常見或自動收集周邊的開放式熱點(diǎn)信息(城市、機(jī)場、公司、超商等公共WiFi)以期望覆蓋到客戶端曾經(jīng)連接過的熱點(diǎn)。

在吸引客戶端連入熱點(diǎn)的目的上能起到不錯的效果。但需要明白的是,類似于“查看目標(biāo)設(shè)備以前連接過哪些熱點(diǎn)”這種需求已基本沒法實(shí)現(xiàn)。
而對PEAP的攻擊可參考我之前發(fā)布的文章《企業(yè)級無線滲透之PEAP》,這里不再贅述。

3. 如今的攻擊面
最后總結(jié)一下,在如今,吸引客戶端連入惡意熱點(diǎn)的辦法有:
- 對于老舊的移動設(shè)備和筆記本,Karma依然可用,客戶端自動連接。
- 由于隱藏?zé)狳c(diǎn)的特性,連接依賴于Directed Probe,Karma依然可用(記得創(chuàng)建隱藏?zé)狳c(diǎn)觸發(fā)客戶端發(fā)送),客戶端自動連接。
- 根據(jù)周邊熱點(diǎn)及常見公共熱點(diǎn)構(gòu)造SSID列表進(jìn)行偽造(比如CMCC、StarBucks等),如果覆蓋到客戶端曾經(jīng)連接過的熱點(diǎn),也會自動連接。
- 偽造PEAP熱點(diǎn)獲取hash,破解后存入radius服務(wù)器,客戶端下次重連便能成功。
- 偽造公共熱點(diǎn),用戶受騙主動點(diǎn)擊發(fā)起連接。
4.參考文獻(xiàn)
- Improvements in Rogue AP attacks – MANA 1/2
https://sensepost.com/blog/2015/improvements-in-rogue-ap-attacks-mana-1%2F2/ - An Android Change for the Better (Maybe)
http://www.sniffwifi.com/2014/12/an-android-change-for-better-maybe.html - EMSEC Don’t Trust Open Hotspots: Wi-Fi Hacker Detection and Privacy Protection via Smartphone
https://www.semanticscholar.org/paper/EMSEC-Don-t-Trust-Open-Hotspots-Wi-Fi-Hacker-Detec-Kropeit/01eea887a17f85f99b8614d48ecafb445fff7bc0 - Hidden Wi-Fi Network: How to know the name of a wireless network with no SSID
https://www.acrylicwifi.com/en/blog/hidden-ssid-wifi-how-to-know-name-of-network-without-ssid/ - 企業(yè)級無線滲透之PEAP
http://www.itdecent.cn/p/367ecc71518b
Author: qingxp9 @ 360PegasusTeam