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

利用micropython實現WHID的簡略單純拼裝:

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