Open Wifi SSID Broadcast vulnerability

wyzsk發表於2020-08-19
作者: 無人知曉 · 2014/08/28 16:52

0x00 前言


前幾天,看到微博上@RAyH4c分享了一份老外關於wifi釣魚的文章,覺得挺好的,便翻譯了一下。第一次翻譯,英語水平堪堪才過4級,翻的不好請大家見諒,湊合著看吧。

附上原文地址:https://www.os3.nl/_media/2012-2013/courses/ssn/open_wifi_ssid_broadcast_vulnerability.pdf

0x01 摘要


一些廠商更想傳遞更好的使用者體驗,而不是更好的安全性,這很常見。基於這個事實,SNE實驗室進行了一次研究並證實,為了保證更快的掃描/連線,一些裝置會在使用者沒有察覺的情況下廣播他們儲存的SSID。這個研究提出了配置方面的問題,特別是公用wifi的SSID,揭露了一個安全漏洞。那麼,主要擔心兩個問題,裝置究竟發出了什麼以及如何利用這個發出的東西。

0x02 介紹


最近的觀察顯示,開啟主動掃描功能的wifi裝置暴露了一些對使用者來說無關緊要,但是對攻擊者很有價值的資訊。為了用一種更有效的方式(更少的時間,更少的努力)收集同樣的資訊,這個專案的想法起源於此。這個想法是利用wifi可用的裝置自身的主動掃描(探針請求)和自動連入開放wifi接入點的漏洞,設計一個自動化方法(裝置)。顯然,透過建立一個可以嗅探和自動建立偽造的SSID的裝置,在一段時間內掃描許多裝置就可以獲得這個漏洞的範圍了。先不提研究結論,這種裝置可以有許多實用的安全相關應用。比如,任何公共實體,像機構或者公司(沒有任何技術知識),透過他們的裝置,從wifi主動掃描能夠評估他們的員工的安全等級。特別是高等級的安全實體(銀行),增強安全措施是非常有必要的。而且,沒有物理的接觸也是必要的,完成一個安全分析能夠提供更好的結果。不用再說,它無疑能夠減少費用和耽誤工作的時間。

0x03 背景


1)客戶端和接入點連線

IEEE802.11過程的一個關鍵部分是發現WLAN並隨後連線到它。這個過程先是WLAN網路透過展示SSID來通知它的存在,會傳送一種叫做Beacons的幀。然後WLAN客戶端為了鑑別或者連線到更好的WLAN,傳送探針請求幀。最後兩步是認證和連線,考慮到它和我們的專案沒有直接聯絡,沒有介紹這部分。

2) IEEE 802.11 Beacons

Beacon的主要目的是讓WLAN客戶端了解在給定的地區裡,哪個網路或者接入點是可用的。接入點可能會時不時地廣播beacons。雖然beacon可能是由接入點有規律地廣播的,在連線(或重連線)過程中,探測幀、認證和連線也會有用到。

3)IEEE 802.11 探針

對於客戶端,實際上有兩種方法掃描可用的AP,主動掃描和被動掃描:如圖1

2014082809150252250.png

圖1:連線過程

1 主動掃描:在主動掃描的過程中,為了在匹配的SSID的特定頻道監聽到可用的AP探針回應,客戶端會將它的IEEE 802.11廣播調整到將掃描的頻道,並廣播探針請求。客戶端等待回應的時間取決於廠商,但是通常在10ms左右。有兩種探針請求,直接探針和廣播探針。

直接探針:客戶端傳送特定名字的SSID探針請求,只有擁有請求的 SSID的AP才能回應。(圖2)

2014082809165365815.png

圖 2 直接探針 

2014082809170360486.png

圖3 廣播探針

廣播探針:客戶端廣播一個無SSID的探針請求,所有的AP都會收到這個請求,並返回它們支援的SSID。

2 被動掃描:被動掃描時,客戶端依然會將它的廣播頻率調整到它想要掃描的頻道,但它會等待從有效的AP發出的廣播beacon,而不是傳送一個探針請求。如圖4

enter image description here

圖4: 被動掃描

0x04 方法


1)探測傳送探針請求的裝置

1 安裝

這部分主要是抓取所有傳送探針請求的裝置資訊。安裝主要是基於軟體配置,這樣它可以裝在自定義作業系統的路由器上(比如openWRT)或者筆記本上。配置生效後能夠抓到三種型別的資料。

第一部分是網路嗅探。在無線監聽裝置上執行一個tcpdump程式來監聽所有其他裝置發出的流量包。然後放到過濾器裡,僅儲存探針請求到日誌檔案裡。檔案格式僅包含裝置MAC地址和探針請求發出的SSID。

第二部分是識別裝置。為了識別裝置,會設定一個接入點來讓裝置連線到它。DHCP伺服器會給每個裝置分配一個永久IP。MAC地址和對應的IP地址都會記錄在一個檔案裡。所有的流量都會經過一個開啟日誌記錄的本地伺服器(在這裡是Lighttpd)。日誌檔案包含IP地址和HTTP裝置請求的UserAgent字串。事實上,如果一個裝置連線到這個接入點並訪問一個網頁,它都會訪問到本地web伺服器並記錄下它的請求。

2 收集資料

為了收集資料,在不同的地點放置了這樣的裝置。這些地點選擇在了公共的,但是也有使用者互動的地方。在每個地方,人們都被要求連到接入點來判定裝置型別。這些地點包括UvA,VU,Amsterdam Central andcSchiphol Airport。在裝置連線前,先安置一個嗅探器來抓包,並在最後一個客戶端連線後再執行一小段時間。這是為了確保嗅探器能抓到探針請求,因為它們每60秒傳送一次。

3 儲存資料

在收集資料後,對於每個登陸會話會有三個檔案,即發出的SSID,DHCP租約和HTTP UserAgent。所有會話的檔案會合成三個大檔案,格式化以便匯入到資料庫裡。在這個專案,我們使用Mysql資料庫。每個檔案都被匯入到資料庫,並表示為一張表。這樣就能輕易地查詢資料庫裡的資料了。

2)探測連線到偽造AP的裝置

為了瞭解哪個裝置連線到了偽造的接入點,過多的不同作業系統的裝置會被放到評定過程裡。接入點被配置成裝置之前連線過的SSID。AP被設定成沒有保護的網路。當裝置自動連線時,作業系統的型別和版本會被記錄。

3)自動化欺騙

動態接入點的概念是將收集SSID和MAC地址的過程自動化,負責那些特定SSID的探針請求。下一步是將欺騙那些SSID的過程自動化,以便找出哪些SSID是公開的。如果有一個裝置連線上了,那麼可以得出那個SSID是公開的而且這個設定確實有效。

為了使欺騙原理自動化,可以使用一種刷了定製軟體的硬體來實現。這種硬體被稱為動態接入點(DAP)。它根據輸入調整欺騙過程。輸入可以是使用者自定義,也可以是從無線介面抓取的資訊。這裡建立的DAP能使用兩種攻擊模式:普通模式和直接模式。在普通模式裡,所有的探針請求都會被收集並用來設定偽造的SSID。在直接模式裡,只使用指定的MAC地址的探針請求。在這個研究裡,使用一個以OpenWRT作為作業系統的TP-LINK路由器。整個過程的每個部分都使用兩個裝置。第一部分是收集裝置監聽無線通訊並經過過濾的資訊。為了完成這步,寫了一款軟體。首先無線介面被設成監聽模式,這樣就可以抓取所有的資料包。然後除了探針請求,其他包都被過濾了。從這些探針請求中,生成一份SSID的列表。前七個SSID用於偽造。如果系統是直接模式的,只會使用使用者自定義的MAC地址的SSID。

第二部分也是一個帶有OpenWRT的TP-LINK路由器。這個路由被設定成一個使用hostapd作為服務的接入點。Hostapd是一個處理客戶端連線到接入點的使用者程式。路由器能夠使用DHCP分發IP地址和提供網路接入。當第一個路由收集到足夠的SSID時,它會生成一個hostapd服務能夠支援格式的配置檔案。它使用scp命令傳送via ssh檔案到第二個路由並重新執行服務。重新執行之後,第二個路由就變成了所提供的SSID的接入點了。

enter image description here

圖5 DAP基礎操作

0x05 調查結果


1)檢測傳送了探針請求的裝置

實驗收集的結果分為三部分。第一部分是一張包含MAC地址和廣播的SSID的表。然後是一張DHCP租約的表,包含MAC地址和對應的IP地址。第三張表包含IP地址和瀏覽器的UserAgent字串。為了分析這個資料,我們執行了許多複雜的查詢。首先我們在表1中用如下查詢得到了最熱門的SSID

SELECT ssid , count ( _ ) AS count
FROM (
SELECT ssid.mac,ssid.ssid
FROM ssid
WHERE ssid.ssid!= ""
GROUP BY ssid.mac
) AS P
GROUP BY ssid ORDER BY count DESC

enter image description here

接下來是查詢發出探測幀的客戶端的UserAgent字串。這個結果僅僅是用來展示作業系統,可以在表2中看到。

SELECT useragent .useragent
FROM ssid , dhcp , useragent
WHERE
ssid.mac = dhcp.mac
AND dhcp.ip = useragent.ip
AND ssid.ssid != ""
GROUP BY useragent . useragent

enter image description here

2)檢測連線到偽造接入點的裝置

在第二部分裡,許多裝置連線到了惡意接入點。連線的作業系統型別和版本可以在表3中看到。

enter image description here

這個資料也從市場份額上反映了受影響的裝置數量。可以在圖7中看到。

enter image description here

1 自動化欺騙SSID

當動態接入點開始工作時,可以觀察到幾點。首先,裝置的啟動時間花費了大概30秒。但是當它在操作時,它對基礎SSID支援的很好。當裝置處於欺騙模式時,在偽造的SSID工作之前,hostapd程式重新執行、更新SSID列表的時間花費了10秒。當裝置執行時,很明顯裝置可以自動連線到偽造的SSID。這僅僅測試了一小部分裝置,但它們全部都連線了。

0x06 結論


從收集的資料來看,很大一部分Android,iOS和Blackberry的裝置會發出探針請求。因為這些裝置佔用很大的市場份額,所以很多裝置都是存在風險的。而且已經證明了自動欺騙的過程是有效的,裝置很容易被欺騙連線到偽造的AP,這是個問題。這證明了一些裝置僅僅依靠SSID去連入AP,而SSID是儲存在裝置裡的。

0x07 討論


在這個話題上進行更多的研究能夠進一步提高發出探針請求的已知裝置的市場份額的可靠性。這個研究並沒有研究每一種裝置,所以這個數字還會比已知的更高。並且,不是所有的裝置都執行在預設的作業系統上,定製ROM會提高不同的Wireless stack。可能一些廠商改變了wireless stack,因此在這個領域的研究需要給出更多的細節,使問題的範圍更精確。

既然裝置僅僅根據SSID就進行連線,讓它記住接入點也是一個好的方法。例如,裝置應該永遠不記住不安全的網路。這樣,欺騙會變得更加複雜。另一種方式,可以在儲存SSID的同時,也記錄已知AP的BSSID。這種方法也使欺騙更加困難,因為偽造AP需要同時知道BSSID(同時知道MAC地址),而且BSSID不會暴露在探針請求裡,不容易被猜到。

更多的研究會表明什麼是好的策略,廠商應該保持這些好的策略。而且既然這問題已經存在了,我們將進一步研究傳送探針請求的必要性,除非必要,否則不要用它。

未來應該使用更加高明的技術以增加裝置連線到DAP的成功率。相比於其他的東西,SSID會被標記為更高優先順序。成功的連線也會增加受影響的SSID的優先順序。每個SSID都有一個頻率屬性,意味著DAP要試著預測哪個SSID更可能開發,取決於之前提到的標記。

0x08 參考


[1] J. Bhardwaj, What is your phone saying behind your back?, Oct. 2012. [Online]. Available: http://nakedsecurity.sophos.com/2012/10/ 02/what-is-your-phone-saying-behind-your-back/.

[2] Part 11: wireless lan medium access control (mac) and physical layer (phy) specifications, IEEE Computer Society, Mar. 2012.
本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!

相關文章