從2014年BADUSB呈現(xiàn)今后,USB-HID進(jìn)擊就這不停被存眷,且具爭議。爭議的核心是USB-HID的實(shí)戰(zhàn)效果過于“雞肋”,無論從晚期的BADUSB,照樣到起初的各類USB-HID裝備,對付目標(biāo)機(jī)來講,都要經(jīng)由進(jìn)程彈出“運(yùn)轉(zhuǎn)框”來實(shí)現(xiàn)payload的植入,由于彈框過于顯著,以是實(shí)戰(zhàn)中效果就大打折扣。因而,圍繞著若何晉升實(shí)戰(zhàn)效果,很多人提出了分歧的設(shè)法主意,我也做過屢次測驗(yàn)考試,好比經(jīng)由進(jìn)程改良payload的存儲地位,經(jīng)由進(jìn)程參加BLE模塊等辦法,目標(biāo)只要兩個,一是盡量削減payload植入進(jìn)程中的code字符數(shù),二是節(jié)制payload的植入光陰。再到起初,我也開端測驗(yàn)考試引入wifi模塊,經(jīng)由進(jìn)程wifi停止節(jié)制,如2017年5月,我在freebuf上頒發(fā)了《利用micropython快速實(shí)現(xiàn)Badusb及手機(jī)搖控?cái)U(kuò)大》,其時第一次經(jīng)由進(jìn)程wifi來節(jié)制usb-hid,實(shí)現(xiàn)與演示了長途關(guān)機(jī)的操縱。
WIFI與HID相結(jié)合外洋有個更業(yè)余的名字便是WHID。WHID在以后的浩繁文章和利用中,多是把它作為一個節(jié)制模塊,經(jīng)由進(jìn)程假裝,節(jié)制HID進(jìn)擊的效果,更多呈現(xiàn)的是手機(jī)或許別的wifi下裝備若何利用WHID對目標(biāo)機(jī)停止進(jìn)擊節(jié)制。但實(shí)際上,WHID完整能夠在目標(biāo)機(jī)上構(gòu)成一個自定義的通道實(shí)現(xiàn)目標(biāo)機(jī)與手機(jī)或許wifi下別的進(jìn)擊裝備的通信,相當(dāng)于給目標(biāo)機(jī)安裝了一個自定義網(wǎng)卡。這一辦法,對付斷絕主機(jī)的信息獲得具備必定的利用效果。
1 WHID及其組成
一個傳統(tǒng)的USB-HID裝備,經(jīng)常是用來虛構(gòu)或許仿真鍵盤、鼠標(biāo)等usb外設(shè)來實(shí)現(xiàn)歹意代碼的植入。最罕見的便是經(jīng)由進(jìn)程仿真鍵盤來實(shí)現(xiàn),重要流程是當(dāng)USB-HID裝備拔出PC后,會仿真出一個虛構(gòu)鍵盤,而后經(jīng)由進(jìn)程輸出win+R,調(diào)出體系的運(yùn)轉(zhuǎn)框,在運(yùn)轉(zhuǎn)框內(nèi)輸出code。這里常用的辦法是,輸出cmd等敕令,調(diào)出最小結(jié)構(gòu)的cmd(也能夠改變顏色,目標(biāo)便是讓這個cmd不容易察覺),再經(jīng)由進(jìn)程上下鍵把cmd拖出窗外,讓被進(jìn)擊者無奈看到。這時候,開端在cmd里輸出code。如遍歷磁盤,找到payload的存儲地位,植入payload。
在植入的這個進(jìn)程中,又會面對權(quán)限、免殺、過UAC等事情,假如你有充足的光陰,都能夠經(jīng)由進(jìn)程這個仿真鍵盤事先寫好代碼或許批處理敕令,一一辦理。從這一點(diǎn)看,USB-HID照樣很實(shí)用的,然則實(shí)際上,在拔出后必要輸出的code量過大,這時候代假如被進(jìn)擊機(jī)械的鍵盤操縱過,或許鼠標(biāo)動過,就會影響到仿真鍵盤的事情,從而使實(shí)現(xiàn)效果不盡人意。因而,有人經(jīng)由進(jìn)程在目標(biāo)機(jī)械上啟動Empire或Meterpreter會話,將輸出的2670個字符壓縮到116個字符,輸出光陰從38秒壓縮到3秒。還有人經(jīng)由進(jìn)程改動padload存儲地位,如存儲在A盤,能夠?qū)⑤敵龅淖址麎嚎s到8個(如a:\m.exe),輸出光陰壓縮到不敷1秒,但這些辦法都無奈節(jié)制彈出運(yùn)轉(zhuǎn)框的光陰,WHID能夠說是辦理了這個成績。
WHID便是在USB-HID上參加了wifi模塊。你能夠把wifi設(shè)置裝備擺設(shè)成AP,也能夠設(shè)置裝備擺設(shè)成STA,而后利用你的PC或許手機(jī)來節(jié)制USB-HID的舉措及舉措光陰。比方,我在《利用micropython快速實(shí)現(xiàn)Badusb及手機(jī)搖控?cái)U(kuò)大》一文中寫到的,經(jīng)由進(jìn)程手機(jī)遙控關(guān)機(jī)。
那末WHID由哪幾部門組成呢?
第一,易于利用的USB-HID進(jìn)擊模塊,咱們罕見的便是teensy、arduino等。這里我選用的是支撐micropython的模塊Tpyboard V102,其采納python來停止硬件節(jié)制,代碼寫起來比擬簡略、便利,并且這個模塊有6個串口,充足咱們停止擴(kuò)大與利用。其毛病也很顯著,體積略大,不容易假裝,不像arduino nano、arduino pro、teensy、arduino lenorado那樣能夠很容易的假裝為U盤。對我來講,我感到這不是大的毛病,由于TPYBoard也屬開源硬件,道理圖都是凋謝的,完整能夠本身再畫成得當(dāng)假裝的狀態(tài)。
第二,適合的WIFI模塊。我最后在測驗(yàn)考試時,利用的是MT7681模塊,詳細(xì)可見《利用micropython快速實(shí)現(xiàn)Badusb及手機(jī)搖控?cái)U(kuò)大》一文。起初,在進(jìn)修micropython的進(jìn)程中,發(fā)明利用TPYBoard v202(ESP8266芯片)加倍便利,能夠間接構(gòu)成一個AP,并樹立一個WEB辦事器。因而,選定用這個模塊來實(shí)現(xiàn)。
第三,WIFI與USB-HID的銜接。銜接的接口也有很多種,能夠經(jīng)由進(jìn)程I2C、SPI等接口。這里我選用的是串口,只必要將TPYBoardV102與TPYBoardV202兩個板子上的TX、RX互相穿插接線就能夠夠了,操縱異常簡略。
WHID示意圖以下:

利用micropython實(shí)現(xiàn)WHID的簡略單純拼裝:

2 WHID通道搭建道理
對付一個WHID來講,由于其帶有的WIFI模塊,構(gòu)建了一個無線收集,以是咱們完整能夠斟酌利用這個WIFI收集實(shí)現(xiàn)與PC之間的隱藏通信,從而樹立一套自定義的無線網(wǎng)卡。假如說,對付互聯(lián)網(wǎng)主機(jī),USB-HID能夠?qū)崿F(xiàn)payload的植入,利用payload反彈一個shell的話,那末對付斷絕主機(jī),WHID同樣能夠反彈一個shell給進(jìn)擊者,實(shí)現(xiàn)對斷絕主機(jī)的進(jìn)擊。從道理來講,便是WHID經(jīng)由進(jìn)程HID在斷絕主機(jī)內(nèi)植入一個payload,也能夠認(rèn)為是WHID自定義網(wǎng)卡的驅(qū)動,而后斷絕主機(jī)遇經(jīng)由進(jìn)程串口等接口與WHID停止交互,WHID再將交互內(nèi)容經(jīng)由進(jìn)程WIFI模塊傳遞給遠(yuǎn)端的節(jié)制者。
第一,實(shí)現(xiàn)USB-HID裝備與斷絕主機(jī)的通信。實(shí)在,USB-HID賣力與PC停止通信的便是一個單片機(jī),其與PC的通信方法有很多種,最為罕見的便是串口通信,每每在單片機(jī)與pc之間會有一個TTL轉(zhuǎn)USB的芯片,如CH340等。同樣平常串口通信的最大速率為115200bps,約相當(dāng)于每秒14KB。假如在通信中感到這個速率過于無限,那也能夠測驗(yàn)考試?yán)肧PI轉(zhuǎn)USB,如許速率能夠到達(dá)每秒10MB以上。TPYBoard v102開辟板自帶了TTL轉(zhuǎn)USB模塊,以是本文中的研討進(jìn)程全體采納串口通信。
第二,實(shí)現(xiàn)USB-HID與WIFI模塊以前的通信,由于TPYBoard v102本身帶有SD卡存儲,能夠作為緩存寄存,如許在速率上請求不是很高,以是TPYBoard v102與TPYBoard v202(ESP8266)之間完整能夠采納串口通信,銜接簡略,操控便利。
|