作者:
三好學生
·
2016/03/06 12:51
0x00 前言
近日,Bastille的研究團隊發現了一種針對藍芽鍵盤滑鼠的攻擊,攻擊者可以利用漏洞控制電腦操作,他們將此攻擊命名為MouseJack。 攻擊者僅需要在亞馬遜上以60美元購買裝置,改造之後即可對百米範圍記憶體在漏洞的藍芽無線鍵鼠進行劫持,向受害計算機輸入任意指令。相信對此感興趣的人有很多,所以我根據其公佈的資訊購買了相應裝置來進行測試,現將測試經驗分享給大家。
0x01 簡介
軟體工程師馬克紐林說:“利用假冒的無線電腦滑鼠和鍵盤可以從100米的距離利用行動式外圍裝置入侵膝上型電腦,這些裝置來自至少七家大廠商,包括羅技、微軟、亞馬遜”。 Bastille研究團隊發現了針對13種滑鼠和鍵盤的攻擊並向各廠商報告了漏洞,其中有些廠商已經發布了補丁。
攻擊原理:
由於沒有身份驗證機制,所以介面卡無法識別出資料包是由滑鼠傳送的還是由攻擊者傳送的。
因此,攻擊者可以偽裝成一個滑鼠傳送自己的資料或者點選資料包以欺騙介面卡
0x02 測試裝置
相信好多小夥伴已經在著手購買裝置了,但是去國外的亞馬遜以60美元購買裝置有點不現實,所以我提前給大家探了路,在國內就可以用不到200元的價格購入裝置,避免多花冤枉錢
測試裝置:
1、Crazyradio 2.4Ghz nRF24LU1+ USB radio dongle(<¥200)
2、DELL KM714 無線鍵盤滑鼠套裝(<¥400)
注:
以下連結展示了存在漏洞的裝置:
https://www.bastille.net/affected-devices
3、我的測試裝置
0x03 實際測試
測試環境:
本機系統: Win7
虛擬機器系統: Kali 1.0
測試流程:
1、Kali下搭建軟體環境
#!bash
sudo apt-get install sdcc binutils python python-pip
sudo pip install -U pip
sudo pip install -U -I pyusb
sudo pip install -U platformio
2、插上隨身碟
下載程式碼https://github.com/RFStorm/mousejack,執行:
#!bash
cd mousejack-master/
make
如圖
執行:
#!bash
make install
如圖,操作失敗
3、查詢解決方法
在此處獲得提示,需要更新Crazyradio 韌體:
https://github.com/RFStorm/mousejack/issues/2
更新方法可參照:
https://wiki.bitcraze.io/projects:crazyradio:programming
4、更新Crazyradio 韌體
下載程式碼https://github.com/bitcraze/crazyradio-firmware,執行:
#!bash
cd crazyradio-firmware
python usbtools/launchBootloader.py
如圖
到https://github.com/bitcraze/crazyradio-firmware/releases
下載cradio-pa-0.53.bin,放在crazyradio-firmware檔案下,執行:
#!bash
python usbtools/nrfbootload.py flash cradio-pa-0.53.bin
如圖,成功更新Crazyradio 韌體
5、再次make install
執行
#!bash
cd mousejack-master/
make install
如圖,發現依然失敗
接著執行:
#!bash
lsusb -d 1915:7777 -v | grep bcdDevice
此時也無法檢視韌體版本
6、再次查詢原因
原來需要把隨身碟拔下來重新插進去
再次執行程式碼檢視韌體版本
#!bash
lsusb -d 1915:7777 -v | grep bcdDevice
如圖成功
再次執行
#!bash
make install
成功,如圖
7、再次拔掉重新插
根據上面更新韌體成功的程式碼提示"Please unplug your dongle or breakout board and plug it back in",再次拔掉重新插入隨身碟
如圖,此時本機的Windows系統無法識別隨身碟,這就導致虛擬機器系統也無法載入隨身碟,無法進行後續的測試
8、查詢解決方法
原來需要在Windows上安裝Crazyradio韌體的驅動
(1)參考https://wiki.bitcraze.io/doc:crazyradio:install_win7
手動下載驅動包,在裝置管理器中找到未識別的裝置,手動更新驅動,但是依然無法識別
(2)參考https://wiki.bitcraze.io/doc:crazyradio:install_windows_zadig
下載zadig來識別隨身碟進行更新驅動
但發現zadig也無法識別隨身碟,因此這種方法也失效
9、分析問題
此時Windows無法識別隨身碟,有如下兩種假設:
(1)Windows系統下的Crazyradio韌體驅動存在問題,所以無法識別,因此導致虛擬機器系統無法載入隨身碟(但是已經用了2種更新驅動的方法還是無法識別,會不會是刷壞了呢)
(2)隨身碟被刷壞(存在這種可能,韌體更新的說明裡有提到,不是100%安全),有詢問研究過crazyradio file的小夥伴,也傾向於隨身碟被刷壞
10、解決問題
為了測試能夠繼續進行,改變了思路決定更換測試環境,在其他系統上也許能夠繞過這個難題。
(1)ubuntu
感興趣的小夥伴可以深入測試
(2)osx
使用osx系統測試,也許能夠成功識別隨身碟,這也就是為什麼最終採用了osx系統測試
測試發現osx系統能夠成功識別,如圖
依然是在虛擬機器裡面接著測試,這次虛擬機器中的系統使用的是kali2.0,順便也就研究瞭如果成功刷好隨身碟,在其他系統上使用需要哪些環境.
經測試得出初步結論:
如果刷好隨身碟,只需要在新系統上下載Github程式碼,即可進行接下來的測試
簡單的測試圖如下
11、更多測試
連線上裝置Dell KM714,對比給出的硬體id
右圖為購買的Dell KM714顯示的硬體id
(1)scanner
執行
#!bash
cd mousejack-master/
./nrf24-scanner.py -c {1..5}
執行後,會捕獲附近所有裝置的資料包
這時我們對KM714滑鼠和鍵盤操作,命令列會立即回顯捕獲到的資料包
可找到Dell KM714的地址為 08:D0:4F:28:02
(2)sniffer
確定了Dell KM714的地址,就可以對其進行定向捕獲 執行
#!bash
./nrf24-sniffer.py -a 08:D0:4F:28:02
(3)network mapper(Denial of Service)
執行
#!bash
./nrf24-network-mapper.py -a 08:D0:4F:28:02
可攔截地址為08:D0:4F:28:02的裝置發出的資料包,並對最後一位做修改,此操作可使裝置失效,無法對電腦傳送控制指令
如圖,執行完指令碼後,此時Dell KM714的滑鼠鍵盤失去響應,無法對電腦進行控制,只有重新插拔接收器才能恢復正常。
注:
- 每次Ctrl+c結束指令碼後需要重新插拔Usb才能繼續測試,否則會提示超時,指令碼執行失敗
- 購買的Crazyradio 2.4Ghz nRF24LU1+ USB radio dongle開發板 原廠會刷入Crazyradio韌體(如果沒有店家一般也會幫忙刷入),發光管顯示綠光代表功能正常,但對其韌體進行升級後,發光管會顯示紅燈,看似功能故障,但其實只要命令列輸出為
Verification succeded!
即代表升級成功,發光管會顯示紅燈的原因在於對韌體進行升級操作後,並未對發光管進行設定,因此顯示紅色。 板子上的燈雖然是紅色,但不影響功能。
0x04 小結
以上分享了我對mousejack的測試心得,記錄的比較完整,希望對你的測試研究有所幫助。
當然,本文僅僅是對其公佈的github程式碼進行初步測試,更多深入測試也在進行當中。如果需要實現劫持滑鼠鍵盤,傳送鍵盤訊息,可以嘗試修改github中的python程式碼。
如果你有更好的想法或是遇到了新的問題,歡迎和我交流:)
本文由三好學生原創並首發於烏雲drops,轉載請註明
本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!