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

攻擊者使用ESP8266作為AP,在自己的電腦創建客戶端連接AP。在客戶端鍵入命令發送到ESP8266,它再利用串口轉發給Arduino Leonardo。利用Arduino中的Keyboard庫就可以使用傳輸的命令控制目標主機的鍵盤。
前期準備
1. 硬件設備
Arduino Leonardo

ESP8266 Wi-Fi模塊

FT282串口調試模塊

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

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

AT+CWSAP=”name”,”password”,11,2 //創建一個名為name,密碼為password的AP節點;

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

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

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

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

實際接線圖如下:

4. 客戶端操作
①連接到之前創建的網絡name。
②打開sockettool.exe,點擊左側 “TCP Client” 后點擊“創建”來創建客戶端:

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

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

實驗演示
確保在已連接狀態下,發送兩次“123”:

可以在目標主機看到鍵入的結果:

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