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