iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 18
1
Software Development

自動化測試開發的美麗與憂愁系列 第 18

使用 USB 隨插即用裝置模擬鍵盤自動輸入或執行程式

  • 分享至 

  • xImage
  •  

在網路上一直很紅的一個案例是 插入一支USB 隨插即用裝置後,
自動輸入指令達到控制或安裝程式的效果 ...

HID = Human Interface Devices (縮寫)

USB HID Class 是走微軟標準驅動程式的, 正常人的理解就是隨插即用的裝置
主要用於以下幾種裝置居多

  • 鍵盤/ 滑鼠
  • USB接口的單晶片開發版應用 ex. DigiUSB
  • 加密用的Key

架構:
把想要執行的程式直接燒入韌體中, 透過USB HID 型態的裝置有隨插即用的功能而達成目的

於資安的紅隊演練中, 最常被應用的是在系統中植入後門程式
網路上有名的案例則是Bad USB 或Bad USB WiFi版的WiFi Ducky

實作:
插入USB 裝置後, 打開command line視窗.顯示Hello world

需要材料:

  • 含有USB 接口的Atiny85 一個
    • 實際上也可以使用Arduino 其他系列
  • 測試用的虛擬電腦平台
  1. 使用Arduino IDE 撰寫程式
    :helloWorld.ino
#include "DigiKeyboard.h"
void setup()
{
pinMode(1,OUTPUT);
DigiKeyboard.delay(1500);
DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT);
DigiKeyboard.delay(500);
DigiKeyboard.println("cmd");
DigiKeyboard.sendKeyStroke(KEY_ENTER);
DigiKeyboard.delay(500);
DigiKeyboard.println("Hello World");
digitalWrite(1,HIGH);
delay(500);
digitalWrite(1,LOW);
}
void loop()
{  }
  1. 燒錄到Atiny85 中
  2. 燒錄完成後, 重新插拔就會在畫面上看到命令列視窗自動被打開及顯示Hello World字樣
  3. 裝置自動退出

進階應用:

  1. 從網路上自動下載資料去執行 (如果系統有內建Python)
DigiKeyboard.println("python");
DigiKeyboard.sendKeyStroke(KEY_ENTER);
DigiKeyboard.delay(500);

DigiKeyboard.delay(500);
DigiKeyboard.println("quit()");

PS: 這是很常見的一個手法, 將自動下載資料跟執行的部分寫好後. 使用base64編碼後再執行後達到目的

  1. 後滲透應用
    (1) 使用kali linux 中的msf 製作一個TCP reversed shell 的payload

    (2) 將要下載跟執行的的檔案連結寫入韌體中, 自動下載及執行

參考資料:


上一篇
關於流程自動化開發崩潰的一面
下一篇
使用windows batch file建立選單並可以執行項目
系列文
自動化測試開發的美麗與憂愁30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言