WHID 代表基于 Wi-Fi 的 HID 注射器,即對 HID 攻擊進行無線化攻擊的一種注入工具。
實驗攻擊原理如下圖:

攻擊者使用ESP8266作為AP,在自己的電腦創(chuàng)建客戶端連接AP。在客戶端鍵入命令發(fā)送到ESP8266,它再利用串口轉(zhuǎn)發(fā)給Arduino Leonardo。利用Arduino中的Keyboard庫就可以使用傳輸?shù)拿羁刂颇繕酥鳈C的鍵盤。
前期準備
1. 硬件設(shè)備
Arduino Leonardo

ESP8266 Wi-Fi模塊

FT282串口調(diào)試模塊

2. 軟件環(huán)境
sockettool
Arduino IDE
串口調(diào)試助手
TCP調(diào)試助手
實驗步驟
1.ESP8266設(shè)置
使用串口連接ESP8266,依次鍵入命令:
AT+CWMODE=3 //設(shè)置模式為AP兼Station模式;

AT+RST //模式改變需重啟后生效;

AT+CWSAP=”name”,”password”,11,2 //創(chuàng)建一個名為name,密碼為password的AP節(jié)點;

AT+UART=9600,8,1,0,0 //設(shè)置波特率為9600,Arduino和ESP8266波特率需相同;

AT+CIPSERVER=1,8089 //將esp8266設(shè)置為server模式,這樣才能夠在下面被訪問;

2. 代碼燒錄
將寫好的代碼燒錄進Arduino Leonardo,這里選擇了主要部分說明:

在loop中循環(huán)讀取ESP8266向串口發(fā)送的數(shù)據(jù),判斷收到數(shù)據(jù)時過濾并利用Keyboard庫打印在Arduino接入的電腦上。
3. 硬件接線
設(shè)置好ESP8266和Arduino之后就可以進行硬件接線了,接線原理圖如下:

實際接線圖如下:

4. 客戶端操作
①連接到之前創(chuàng)建的網(wǎng)絡(luò)name。
②打開sockettool.exe,點擊左側(cè) “TCP Client” 后點擊“創(chuàng)建”來創(chuàng)建客戶端:

③ 輸入IP:“192.168.4.1”,端口號:“8089”:

④ 點擊“連接”,如果連接成功可以看到“已連接”字樣:

實驗演示
確保在已連接狀態(tài)下,發(fā)送兩次“123”:

可以在目標主機看到鍵入的結(jié)果:

實驗總結(jié)
這里實現(xiàn)的功能只是簡單地將輸入的字符顯示在目標機器上,危害性并不強。但是如果結(jié)合之前做過的BadUSB實驗(http://www.myhack58.com/article/64/2017/88297.htm),則可以遠程執(zhí)行命令,例如通過PowerShell遠程下載文件等等,這將會對目標主機造成難以預(yù)料的影響。因為是研究性質(zhì)所以沒有繼續(xù)深入挖掘WHID的應(yīng)用,而且也意識到使用Wi-Fi有一定的局限性,可以設(shè)想采用藍牙或2.4G傳輸?shù)姆绞教岣邆鬏數(shù)姆(wěn)定性或是傳輸距離等,相信對HID的攻擊絕不止于此。
和BadUSB類似,WHID可以模仿鍵盤、鼠標操作,所以常規(guī)的安全軟件、殺毒軟件不能起作用。顯然不讓任何不受信任的硬件連接自己的電腦是最安全的選擇。
|