1. 程式人生 > >HID攻擊進階——WHID injector

HID攻擊進階——WHID injector

WHID HID 硬件安全 WiFi安全

技術分享圖片

前言

  HID是Human Interface Device的縮寫,意思是人機接口設備。它是對鼠標、鍵盤、遊戲手柄這一類可以操控電腦設備的統稱。延伸出的WHID代表基於Wi-Fi的HID註射器,即對HID攻擊進行無線化攻擊時的一種註入工具。
本次實驗采用的攻擊原理如下圖:技術分享圖片
  攻擊者使用ESP8266作為AP,在自己的電腦創建客戶端連接AP。在客戶端鍵入命令發送到ESP8266,它再轉發給Arduino Leonardo。利用Arduino中的Keyboard庫就可以使用傳輸的命令控制目標主機的鍵盤。

 

一、 前期準備

1) 硬件設備:

1. Arduino Leonardo

技術分享圖片

2. ESP8266 Wi-Fi模塊

技術分享圖片

  1. 穩壓器

    2) 軟件環境:

  2. sockettool(在工具集中):
    用於連接ESP8266:在電腦上運行軟件創建客戶端,與ESP8266創建的AP之間進行通訊。
  3. Arduino IDE:
    編寫程序燒錄進Arduino Leonardo。實驗用版本為1.8.3.
  4. 串口調試助手(在工具集中):
    調試程序所需。

 

二、 實驗步驟

1) ESP8266設置

使用串口連接ESP8266,依次鍵入命令:

  1. AT+CWMODE=3 //設置模式為AP兼Station模式
  2. AT+RST //模式改變需重啟後生效
  3. AT+CWSAP=”name”,”password”,11,2 //創建一個名為name,密碼為password的AP節點
  4. AT+UART=9600,8,1,0,0 //設置波特率為9600,Arduino和ESP8266波特率需相同

    2) 代碼燒錄

      在接線之前需要將代碼燒錄進Arduino Leonardo,直接將代碼復制進工程,連接Arduino在IDE界面點擊“上傳”。詳細代碼見附錄,這裏分析關鍵部分。

    • 初始化ESP8266:
      技術分享圖片
      上述代碼在setup中執行,在每次Arduino連接電源後對ESP8266進行設置。
      代碼中“AT+RST”為重啟,“AT+CIPMUX=1”設置為多路連接,“AT+CIPSERVER=1,8089”創建服務器並設置端口。
    • 讀取顯示數據:
      技術分享圖片
      在loop中循環讀取ESP8266向串口發送的數據並打印在Arduino接入的電腦上。需要註意的是Serial1.readStringUntil(‘:’)這句話,因為使用ESP8266傳輸的數據格式為:“+IPD,0,3:123”,其中123為你輸入的字符,所以使用這句話可以過濾“:”及其之前的字符。
      很重要的一點是:如果不使用Until,當第一個字節為符號時Arduino不能輸出,這時第一個字節是加號,所以在電腦上看不到任何輸出。

 

3) 硬件接線

設置好ESP8266和Arduino之後就可以進行硬件接線了,接線原理圖如下:
技術分享圖片
其中Arduino和ESP8266務必共地,否則容易出現亂碼的現象,這可以使用穩壓器實現。實際接線圖如下:
技術分享圖片
 

4) 客戶端操作

1.  連接到之前創建的網絡name。
2.  打開sockettool.exe,點擊左側“TCP Client”後點擊“創建”來創建客戶端:

技術分享圖片

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

技術分享圖片

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

技術分享圖片

 

三、 實驗演示

確保在已連接狀態下,發送兩次“123”:
 
技術分享圖片
 
可以在目標主機看到鍵入的結果:
 
技術分享圖片

HID攻擊進階——WHID injector