中圖分類號:TP309.1 文獻(xiàn)標(biāo)識碼:A 文章編號:2096-4706(2025)08-0025-05
Abstract: Aiming at the isue that existing operating system security mechanisms can not securely detect and protect the underlying firmwareof USB devices,this research explores howto monitorand prevent HIDmaliciousatack behaviorbased onacomparativeresearch onvarious defense means.Basedonthe STM32FO3 single-chipmicrocomputer,itdesignsahardware peripheralthatcanautomaticallmonitorUSBdevicesandinterceptHDatacksiatimelymaner.Theprotectionalgorithmof thedeviceisesigndandoptiized,andtargetedprotectiontestingexperimentsareonducted.Thexperimentalsultsow thatthe devicecanimplement fcientandautomaticintercption when necesarywithoutafectingthenoraloperationof USB devices,thereby protecting the security of the computer and its internal files.
Keywords: HID attack; Bad USB;USB protection; hardware peripheral
0 引言
研究目的與現(xiàn)狀
信息安全在我們所處的這個(gè)時(shí)代顯得尤為重要,除了來自熟知的軟件方面的攻擊,硬件攻擊的手段也應(yīng)引起足夠的重視,其風(fēng)險(xiǎn)更高,危害更大,防范手段也很有限。大部分防病毒手段是通過軟件防護(hù)來實(shí)現(xiàn)的,殺毒軟件功能也日趨完善,能夠防止大部分的病毒入侵。然而出現(xiàn)了一種新的攻擊方式,它操作方式簡單,比較容易掌握。極少有殺毒軟件能夠?qū)λ龀鲎R別,它就是HID(HumanInterfaceDevices)攻擊?,F(xiàn)如今對HID設(shè)備的安全性討論越來越多,HID的攻擊事件也越來越頻繁。然而還沒有一個(gè)非??煽康姆烙型{的HID設(shè)備的解決方案。本研究在對HID的攻擊原理及各種防御手段進(jìn)行研究的基礎(chǔ)上,試圖設(shè)計(jì)一種可以有效防御多種HID設(shè)備攻擊的硬件外設(shè),以防范此類病毒的攻擊。
在計(jì)算機(jī)系統(tǒng)運(yùn)行期間發(fā)生的安全隱患主要集中在移動存儲設(shè)備中和外部設(shè)備上[],本研究針對HID的攻擊原理,嘗試設(shè)計(jì)出一種能夠自動監(jiān)測USB設(shè)備并及時(shí)攔截HID攻擊的硬件外設(shè),同時(shí)又不會影響USB設(shè)備的正常運(yùn)行,并且在必要的時(shí)候?qū)嵤└咝У摹⒆詣拥臄r截,從而保護(hù)計(jì)算機(jī)與其內(nèi)部文件的安全。
1.1 HID設(shè)備的威脅性研究
HID攻擊的原理是通過一個(gè)類似于U盤的設(shè)備模擬鼠標(biāo)或者鍵盤的信號從而執(zhí)行某些命令來達(dá)到入侵計(jì)算機(jī)的目的[2]。目前常見的HID攻擊設(shè)備主要有Teensy USB,RubberyDuck 和 Arduino Leonardo。這幾種工具均能實(shí)現(xiàn)將遠(yuǎn)程的木馬下載至本機(jī)運(yùn)行,其中RubberDucky甚至可以不需要下載,直接植入木馬[3]。由于操作系統(tǒng)默認(rèn)來自HID設(shè)備的信號源自用戶操作,從而使得HID設(shè)備的攻擊指令具有了當(dāng)前用戶的最高權(quán)限。具體來說可以實(shí)現(xiàn)信息竊取、遠(yuǎn)程操控、系統(tǒng)破壞,甚至硬件損毀等攻擊行為。
1.2HID設(shè)備的防護(hù)現(xiàn)狀研究
目前已出現(xiàn)的針對HID設(shè)備防護(hù)的產(chǎn)品有一個(gè)共同的缺點(diǎn),那就是會破壞USB接口原有的功能。目前解決方案的原理是直接切斷USB接口中負(fù)責(zé)通信的兩條信號線從而使HID攻擊設(shè)備失效。但是切斷了這兩根線之后,電腦除了供電,連普通U盤等USB設(shè)備也都失去了通信功能。
2 研究過程與方法
2. 1 設(shè)計(jì)原理
HID設(shè)備攻擊理論上無法從軟件層面進(jìn)行防御,計(jì)算機(jī)在啟動的時(shí)候便開始接收HID信號,操作系統(tǒng)則在啟動之后一段時(shí)間才開始運(yùn)行,而殺毒軟件(絕大多數(shù))依賴操作系統(tǒng)執(zhí)行,從而導(dǎo)致HID設(shè)備有機(jī)會在殺毒軟件啟動之前就進(jìn)行攻擊[4。要想從根本上防御HID設(shè)備,本研究設(shè)想從硬件角度入手,通過單片機(jī)對USB接口中的兩根信號線進(jìn)行識別,在識別出的內(nèi)容中一旦監(jiān)測到有侵略性的內(nèi)容便拉低信號線電平從而使HID設(shè)備失效,圖1為設(shè)計(jì)原理圖。
2.2 具體的研究過程
2.2.1 自制的HID攻擊設(shè)備
不管是電腦、手機(jī)還是考勤機(jī),幾乎所有的電子設(shè)備都需要依賴鍵盤來進(jìn)行輸入,所以便誕生了無處不在的USB標(biāo)準(zhǔn):HID。鍵盤的設(shè)備基本上都可以被大多數(shù)操作系統(tǒng)(Windows,macOS,Android等)自動探測并接入。結(jié)合計(jì)算機(jī)對鍵盤自動信任和超過1000字/分鐘的通過腳本模擬的按鍵操作,所有傳統(tǒng)的安全措施都可以被輕松繞過[5]。而實(shí)現(xiàn)這種操作只需要插入一個(gè)特制的U盤設(shè)備,幾秒后就完成了。圖2為自制的HID攻擊設(shè)備,攻擊者可以操控這臺電腦,獲取里面的機(jī)密資料,小到個(gè)人、大到企業(yè)乃至國家的機(jī)密資料都有可能泄露。
2.2.2 HID滲透原理解釋
HID滲透實(shí)質(zhì)上是通過特殊單片機(jī)作為硬件,運(yùn)行一個(gè)可以模擬出鍵盤信號的程序。BadUSB設(shè)備通過模擬類似于“Win+R”“Cmd”“Shutdown”之類的指令的鍵盤輸入來達(dá)到破壞電腦系統(tǒng)、提升權(quán)限、遠(yuǎn)程控制等一些危害性很大的破壞行為[。而鍵盤的使用權(quán)限在不進(jìn)行系統(tǒng)深度修改的情況下是不可以被禁用的(即使有管理員權(quán)限)。所以BadUSB所模擬的代碼可以在殺毒軟件還沒執(zhí)行的時(shí)候甚至是操作系統(tǒng)還沒有運(yùn)行的時(shí)候就開始工作,所以從根本上通過軟件來防御HID攻擊是不可靠的。
2.2.3產(chǎn)品初步設(shè)計(jì)思想及算法實(shí)現(xiàn)
通過學(xué)習(xí)現(xiàn)有殺毒軟件的殺毒方式,將所學(xué)到的思想應(yīng)用到“硬件殺毒”中?,F(xiàn)在的殺毒軟件有一種殺毒技術(shù)叫做特征碼殺毒,當(dāng)反病毒軟件進(jìn)行反病毒掃描時(shí),先將被掃描的文件進(jìn)行脫殼,然后將其特征碼與病毒庫的記錄比對,如果存在相符的則表明這個(gè)文件是一個(gè)已知的威脅[。在硬件殺毒中也可以采用類似的思路,即通過單片機(jī)監(jiān)測USB設(shè)備發(fā)送數(shù)據(jù)時(shí)的行為特征來實(shí)現(xiàn),因?yàn)镠ID攻擊發(fā)生時(shí)發(fā)送的數(shù)據(jù)都是有規(guī)律的操作,而人為正常的操作不可能有那樣的連貫性和規(guī)律性,這就是HID攻擊與正常操作時(shí)的不同之處。
2.2.4 代碼實(shí)現(xiàn)設(shè)計(jì)
節(jié)選部分源代碼,內(nèi)容如下: #defineDATA_P1
#defineDATA N2
#defineLED3
#define SEGLEN5
#defineFTNUM2
booleanbufferP = 0 :
booleanbufferN
boolean dete=1;
int feature[FTNUM][SEGLEN]; boolean check[FTNUM];
/*
* The representation of states: * 0:P--0;N--0;
* 1:P--1;N--0;
* -1:P--0;N--1;
* 2:P--1;N--1;
* -2:Undetermined
*/
int state;
int Bstate;
int seg[SEGLEN];
void setupO{
pinMode(DATA_P,INPUT);
pinMode(DATA_N,INPUT);
pinMode(LED,OUTPUT);
segInit;
digitalWrite(LED,LOW);
//Serial.begin(9600);
}
//程序主循環(huán)
void loopO{
bufferP=digitalRead(DATA_P);
bufferN digitalRead(DATA_N); Bstate=getState(bufferP,bufferN);
if(state!=Bstate){ state=Bstate; pushState(state); showSegO; dete=detect1Olldetect2(; if(dete){ detectedO; }
}
}
(20 (204
*當(dāng)系統(tǒng)檢測到威脅之后執(zhí)行的代碼。
*/
void detectedO{
//強(qiáng)制拉低信號線電平,使攻擊設(shè)備失
pinMode(DATA_P,OUTPUT);
pinMode(DATA_N,OUTPUT);
digitalWrite(DATA_P,LOW); digitalWrite(DATA_N,LOW);
//使LED 閃爍報(bào)警
while(1){ //Serial.println(\"Detected?。"); digitalWrite(LED,HIGH); delay(100);
digitalWrite(LED,LOW); delay(100); } } /* * @ param:在USB的信號針腳讀取的原始數(shù)據(jù) * @retum:USB 所處于的狀態(tài) * The representation of states: * 0:P--0;N--0; * 1:P--1;N--0; * -1:P--0;N--1; * 2:P--1;N--1; * -2:Undetermined */ int getState(boolean P,boolean N) { int Bstate;a if P = =0 amp;amp; N = = 0 { Bstate : } if P = =1 amp;amp; N = =0 { Bstate : = 1 :
(204號 if P = =0 amp;amp;
{ Bstate = - 1 : 3 (204號 if P = =1 amp;amp;
{ Bstate
. 3 (20號 return Bstate; }
3 解決方案設(shè)計(jì)
本研究編寫了上述檢測的程序之后,程序邏輯上沒有問題但在實(shí)際調(diào)試的過程中卻總是出現(xiàn)無法預(yù)料的錯(cuò)誤。最后只能通過串口調(diào)試一步步監(jiān)視程序的運(yùn)行情況,發(fā)現(xiàn)UNO單片機(jī)的處理速度比較慢,已經(jīng)開始出現(xiàn)跟不上USB接口時(shí)鐘周期的問題,于是更換芯片。如圖3和圖4所示,筆者最先想到的是ArduinoDUE開發(fā)板,這塊開發(fā)板擁有一個(gè)32位8 4 M H z 頻率的處理器[8],性能比UNO單片機(jī)高出一個(gè)數(shù)量級,并且程序代碼通用。于是將原來的代碼,燒錄到了DUE上并運(yùn)行,最后發(fā)現(xiàn)之前的那些錯(cuò)誤都消失了,通過提升芯片的運(yùn)算能力解決了之前的錯(cuò)誤。然而對于一個(gè)可產(chǎn)品化的項(xiàng)目,ArduinoDUE無論是從成本上還是從體積上都是無法滿足需求的。于是決定將代碼移植到STM32芯片上?;隗w積、功率、性能、功能、成本幾個(gè)因素的考慮,筆者最終選擇了STM32F030芯片,這款芯片主要的特點(diǎn)是超低功耗和超低成本,而且性能上也能滿足需求。
經(jīng)過多次調(diào)試,最終實(shí)現(xiàn)了防御HID攻擊的效果,但仍存在一些問題需要解決。其中,體積過大是一個(gè)重要問題,監(jiān)測部分裸露在外,這使得產(chǎn)品非常不便攜。后來,筆者在SolidWorks上建模,并使用3D打印機(jī)打印了外殼,將開發(fā)板放入外殼后,產(chǎn)品體積大幅縮小。圖5即為產(chǎn)品完成最終效果圖。
4USB設(shè)備防護(hù)效果測試
為了防止病毒破壞電腦,筆者在筆記本電腦上運(yùn)行了Windows10虛擬機(jī)來進(jìn)行防病毒測試,實(shí)驗(yàn)設(shè)備為BadUSB和普通的U盤設(shè)備,步驟如下:
1)首先插入這個(gè)特制的USB防護(hù)裝置然后在上面接入普通的鍵盤鼠標(biāo),還有一個(gè)正常的U盤,經(jīng)過10分鐘的正常使用,和對U盤進(jìn)行讀寫后沒有出現(xiàn)任何干擾操作的行為。
2)然后插入BadUSB,USB防護(hù)裝置迅速對U盤進(jìn)行了切斷,并且報(bào)警燈閃爍,說明防病毒機(jī)制起到了作用。
3)最后拔掉USB防護(hù)裝置,直接把BadUSB插入電腦,電腦彈出了一個(gè)CMD窗口,之后BadUSB自動輸入了滲透代碼,電腦自動關(guān)機(jī)。這一切的動作非常迅速,用戶根本來不及做出反應(yīng)而且殺毒
軟件也沒有報(bào)警。
通過CMD窗口執(zhí)行了Shutdown命令,虛擬機(jī)隨即關(guān)機(jī)。當(dāng)然,實(shí)驗(yàn)時(shí)控制關(guān)機(jī)是無害的,但如果黑客取得控制權(quán),他們就可以為所欲為。這也驗(yàn)證了攻擊是有效的。
5 研究展望
目前該HID攻擊防護(hù)裝置只能防御某種特定的攻擊,而要想防御普通的U盤木馬等還需要結(jié)合殺毒軟件,今后設(shè)想把Arduino主板換成IntelEdison,可以實(shí)現(xiàn)普通木馬的防御甚至加入一些Python的人工智能庫實(shí)現(xiàn)更高級的功能,并且可以增加云查殺功能。
本研究中的USB防護(hù)裝置暫時(shí)只支持USB2.0傳輸協(xié)議,如改用USB3.0接口可以在平時(shí)使用時(shí)達(dá)到更高的傳輸速度。而且它的體積比較大,只能插USB太浪費(fèi),可以增加其他接口和功能使其變成一款外置Dock。產(chǎn)品分級化,既提供應(yīng)對普通消費(fèi)者的體積小的便攜的版本(缺少云查殺等高級功能),又同時(shí)提供針對企業(yè)用戶的高安全性、高效率的專業(yè)版本。通過采用FPGA+IntelAtom雙處理器的方案,增加深度學(xué)習(xí)算法進(jìn)一步提高檢測精確度。
加入串口更新病毒庫的上位機(jī)程序,設(shè)計(jì)PCB電路板將整個(gè)產(chǎn)品一體化。優(yōu)化供電方案,避免有時(shí)因USB接口接觸不良而導(dǎo)致的處理器復(fù)位而帶來的誤檢測[1]。建設(shè)病毒庫云端網(wǎng)站,結(jié)合上位機(jī)便于用戶的更新。讓設(shè)備的USB接口具備調(diào)試功能,降低設(shè)備的復(fù)雜度。優(yōu)化產(chǎn)品PCB設(shè)計(jì),加入高壓保護(hù)裝置,使得其可以抵御BadUSB高壓放電的硬件破壞性攻擊。將防御設(shè)備內(nèi)嵌在產(chǎn)品內(nèi)部,從而進(jìn)一步提升安全防御能力。
6結(jié)論
目前,針對HID攻擊的研究還缺少安全風(fēng)險(xiǎn)模型和具體的指導(dǎo)規(guī)則,這也將是本研究面臨的新難點(diǎn)。文章試圖給出特征碼等風(fēng)險(xiǎn)驗(yàn)證規(guī)則,提出并設(shè)計(jì)的防范HID攻擊的簡易設(shè)備,能夠優(yōu)化防病毒手段,有助于防護(hù)進(jìn)行攻擊的病毒和惡意軟件,增強(qiáng)系統(tǒng)的整體安全性。同時(shí)我們應(yīng)樹立安全防護(hù)意識,做好計(jì)算機(jī)軟硬件的保護(hù),從而更好地提高信息安全水平,適應(yīng)人工智能時(shí)代對系統(tǒng)安全的新需求。
參考文獻(xiàn):
[1]王國勇.網(wǎng)絡(luò)環(huán)境下計(jì)算機(jī)硬件安全保障及維護(hù)策略分析[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2021(10):176-177.
[2]蔣平,李冬靜.信息對抗[M].北京:清華大學(xué)出版社,2007: 1-11.