當前位置:
首頁 > 新聞 > 拒絕成為免費勞動力:檢測含有挖礦腳本的WiFi熱點

拒絕成為免費勞動力:檢測含有挖礦腳本的WiFi熱點

前幾日看到一則新聞,一家星巴克店內無線網路被發現植入了惡意代碼,劫持網路流量利用用戶設備挖掘門羅幣(XMR)。



與加密貨幣相關的安全事件總是引人注目,我們除了認識到門羅幣具有一定的入手價值外,還再次見識到了公共WiFi的危險。不久後[

Arnau Code寫了

一篇文章,詳細介紹了如何通過MITM攻擊植入JavaScript代碼,從而讓WiFi網路內的所有設備幫助攻擊者挖礦,並以CoffeeMiner的名稱進行了開源: https://github.com/arnaucode/coffeeMiner。


我相信有很多傢伙會從這個新聞以及CoffeeMiner工具中得到啟發,利用類似的攻擊方式開創挖礦事業。

不過本篇我並不想過多討論攻擊方面的問題,最近行業內出現了對防禦型安全人才的呼聲,因此我打算應景的寫一篇防禦角度的文章,分析如何便捷的檢測周圍WiFi網路是否被植入了挖礦代碼。


後文我將圍繞「CoinHive的介紹」,「開放式WiFi網路的特性」,「檢測工具的實現」三點來進行敘述,文章的末尾將公布完整的實現代碼方便大家參考。


CoinHive


星巴克挖礦事件中所使用的便是CoinHive挖礦程序。

Coinhive是一個提供門羅幣挖掘JS腳本的網站平台

,攻擊者會將其提供的腳本植入到自己或入侵的網站上。一旦有

用戶訪問網頁載入JS後,便會利用用戶設備的運算資源挖掘門羅幣。


在CoinHive官網註冊登陸後,在其文檔中發現了多種部署方式的介紹,

包括JS代碼形式、人機驗證形式、Wordpress插件形式等等,種類非常豐富。



比如註冊登陸時候的人機驗證,就會啟動挖礦程序,等待一段時間的挖礦後才能登錄。



根據JavaScript Miner的介紹文檔,將事例代碼放入網站的html中就可以了,部署極其簡單。


相應的,屏蔽的方法也很簡單,各種Adblock軟體早已將它們屏蔽啦。


根據提示,如果不想有提示用戶的彈窗可以將代碼中的 authedmine.min.js 替換為 coinhive.min.js。


開放式WiFi的特性


無密碼的開放式WiFi網路一直以來因其存在的安全威脅為廣大安全人員所詬病,主要在於兩點:攻擊者可輕易建立同名釣魚WiFi(客戶端會自動連接!),通信數據未加密容易被嗅探。


最近Wi-Fi聯盟表示將在即將發布的WPA3中,添加對開放式WiFi的通信數據加密。但在支持WPA3的設備被廣泛使用前,需要警惕相應的攻擊場景還會存在很長一段時間。回到本文,開放式的WiFi網路一直是類似惡意攻擊發生的重災區,結合剛剛所介紹的「通信數據未加密特性」,我們的檢測工具實現原理就呼之欲出了,即監聽明文的802.11數據幀,當發現目標信息便進行告警。


檢測工具的實現


搭建測試熱點


首先,建立一個

包含攻擊代碼的

開放式WiFi網路方便後續測試。


筆者是通過無線網卡Hostapd建立軟AP,Dnsmasq提供DHCP及DNS服務,本地Nginx提供Web服務並植入CoinHive代碼,最後通過iptables配置Captive Portal(強制認證登陸頁面)。如此當移動設備連接到該熱點,會自動彈窗提示需要認證,點擊後就會訪問含有挖礦代碼的網頁了。


考慮到大部分讀者並不像我這樣富有,同時擁有兩塊無線網卡!(之後需要一塊來進行監聽),而且Hostapd、Dnsmasq、Nginx、iptables這套方案的部署配置較為複雜,沒有祖傳的手藝容易出問題。在此我推薦一個簡單的方案:利用隨身WiFi或者家庭路由器建立熱點,配置認證頁面到本地Web服務。好吧,如果沒有認證頁面的配置選項,手動訪問網頁也是一樣的。

監聽明文802.11數據幀


下一步,我們來嗅探傳遞在空氣中的HTTP數據。將無線網卡配置為Monitor模式,切換到熱點所在的Channel,並使用Wireshark進行觀察。



映入眼帘的應該是大量的各種802.11幀。我們的目標是未加密的數據幀,其中的HTTP數據將會被Wireshark所解析,我們鍵入「http.response」進行篩選HTTP Response包。與此同時,需要讓我們的移動設備訪問目標網頁,接著就能觀察到一些數據啦。



我們直接嘗試過濾包含CoinHive特徵代碼的數據包「data-text-lines contains CoinHive.Anonymous」,結果如下。



此時我們便能得出結論,該熱點存在著CoinHive挖礦代碼。從wlan.sa欄位取得該熱點MAC地址,再結合Beacon或Probe幀獲取其熱點名稱。當然我們也可以使用Wireshark的命令行工具Tshark在終端里進行操作,並指定輸出格式只輸出熱點MAC地址。



使用Scapy編寫惡意熱點識別框架

總結一下,我們的程序就像是一個對明文802.11數據幀的分析器。按照這個思路,只需要添加不同的識別規則就能擴展出對各種不同攻擊行為的檢測。為了添加擴展性,在此使用Scapy來編寫一個簡單的框架。


1.使用PIP安裝Scapy


注意由於scapy沒有對http協議進行解析,所以引入了scapy_http擴展包。



2.獲取熱點列表


上面tshark的程序有個缺點,就是不太方便同時顯示出熱點名稱。於是在此框架中,我們會先掃描一下周邊熱點信息以便後用。


3.監聽含有關鍵字的HTTP數據包


當匹配到告警規則後,輸出熱點名稱、MAC地址及告警詳情。



4.監聽模式及信道切換


2.4GHz中,熱點一般會建立在1、6、11三個互不干擾的信道上。為了增加監聽覆蓋的信道,讓我們的程序增加信道切換功能。




5. 最終效果

把以上的模塊組裝在一起就可以使用啦,可以[在這查看完整代碼]。


測試效果如下:


如果你想添加更多的檢測規則,可以在HTTPHandler函數裡邊擴展。


*本文作者:qingxp9@360PegasusTeam,轉載請註明來自 FreeBuf.COM


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 FreeBuf 的精彩文章:

快訊 | 國內白帽子發現兩個安卓漏洞,獲得谷歌11.25萬美元的獎勵

TAG:FreeBuf |