一、引言
是指一類通過模擬鍵盤自動輸入指令,實現信息竊取和惡意程序執行的HID攻擊方法,最早由在2014年美國黑帽大會上提出。
起初的設備是通過更改U盤中的控制器固件實現的,支持的設備型號較少。于是 DUCKY(橡皮鴨)從原始的批操作設備逐步發展為一個成熟的HID攻擊平臺,并擁有完善的攻擊腳本、可靠的硬件支持和活躍的技術論壇。但是由于價格原因,大多數研究人員首選 USB開發板并基于 IDE實現HID注入攻擊。WHID設備在此基礎上加入了無線模塊,能夠實現數據收發和Shell的建立,拓寬了的攻擊場景。
然而上述攻擊設備沒有公開底層的邏輯代碼,只開放了更新攻擊腳本的接口,限制了用戶自行DIY的空間。是我基于自行開發的一款攻擊設備,能夠同時模擬出U盤和鍵盤進行攻擊腳本的存儲和執行flash修改場景大小,通過更改配置文件以適應中、英文輸入環境,設備總成本不到10元。下面將詳盡敘述各個功能的具體實現,源碼及手冊參見項目首頁。
二、模擬鍵盤
是意法半導體推出的ARM -M3內核MCU,包含一個全速模式USB接口,性價比高而且很容易入手,故而選取該型號芯片進行開發。
電腦主機是通過設備描述符識別USB設備類型的,并在規定的端點建立與設備的通信關系,因此要做的第一步是要配置好設備的描述符。參考 USB設備開發套件(-FS-.0.0)中例程,按照[1]的思路對配置描述符和報告描述符進行修改。
在電腦識別出HID設備的基礎上,調整端點收發緩存區的分配,再配置設備的Init和Reset函數。接著就可以用函數發送按鍵數據,參數非零代表有鍵按下,全零則代表松開。鍵碼不同于Ascii碼,可參加整理的.h[2]和我的例程.h[3]。由于要求很高的攻擊代碼注入速度,故而可通過狀態機用DMA加速傳輸。為了解決字符輸入過快導致的錯誤和遺漏問題,需要要配置描述符中的調到一個很低的值以縮短主機的響應時間。最后一個問題是主機輸入法默認的大小寫及中英文環境不符合程序要求導致的注入失敗,這個可以通過模擬U盤中的配置文件進行手動切換flash修改場景大小,下一章將詳盡敘述。
三、模擬U盤
一個可以同時模擬出多個邏輯設備的USB設備稱為復合設備,復合設備具有高集成、低成本、多功能的優點。使用內部的空間來存放數據、模擬一個幾十Kb大小的U盤(該型芯片官方宣稱flash大小為64Kb,實際大小為128Kb),能夠滿足攻擊腳本和配置文件的存儲要求。
復合設備工程參考官方的例程,更改配置描述符、端點緩存分配、設備初始化和復位函數以及各個端點的回調函數。按照[4]的教程,對.c中的,,,函數進行修改,使之解鎖訪問并讀寫內部flash數據。這樣操作之后就能在電腦上顯示出一個U盤,但由于沒有添加內部的文件系統,格式化成FAT格式后才能正常訪問。
配置文件包含了,e,-
uage,四個參數,分別用來設置起始時間、響應時間、中英文和大小寫環境。系統上電后會從指定的地址讀取這些配置,所以配置文件的排版格式不得改動(缺少內部文件系統的弊端)。模擬U盤的另一個重要功能就是與主機通信,配合無線通信模塊可以實現遠程文件傳輸和Shell的建立。
四、攻擊流程
插入電腦后會延遲一段時間等待系統識別完畢,然后陸續執行:
cmd.exe /T:01 /K mode CON: COLS=16 LINES=1//打開Shell
(wmic where =”FAT” get name | “:” && echo .bat) >%tmp%\TMP.bat//輸入模擬U盤盤符和攻擊腳本文件名到緩存腳本文件中
%tmp%\TMP.bat || exit//執行剛才的緩存腳本文件然后退出
.bat的文件內容如下,首先檢查主機用戶是否是攻擊對象,然后再調用攻擊腳本,刪除用到的緩存文件以避免磁盤損壞。
五、攻擊測試
六、總結與展望
本例完成了基于模擬鍵盤和U盤實現HID注入攻擊的設備軟硬件原型設計,接下來將在三個方面做出改進:一是增加SD卡卡槽擴展U盤容量,方便文件竊取;二是通過添加無線通信模塊建立遠程Shell、實現無線配置和文件傳輸;第三是加入,實現安全的U盤升級(OTG)和無線網絡升級(OTA)。
七、資源及參考文檔
[1] 關于 KEIL提供的例程 轉化為 USB虛擬鍵盤(出處: -開源電子網)
[2] .h
[3] .h#
[4] U盤GPIO文件系統映射-STM32利用內置FLASH做U盤