趙司琦 俞繼偉 王廣田 謝怡寧
摘要:在基于Arduino的平臺下,通過深入了解BadUSB原理,基于原理進行改良,實現(xiàn)了共享云盾從整體到局部設計。設計過程中針對用戶的基本使用需求,多方面考慮,提高了用戶的體驗,達到了節(jié)省遠程文件下載時間,避免輸入帶來的密碼泄露風險的目的。
關鍵詞: BadUSB;共享云盾;人工輸入設備;Arduino;智能外設
中圖分類號:TP302.1 文獻標識碼:A 文章編號:1009-3044(2017)36-0036-03
Abstract: Under the Arduino platform, through deep understanding of BadUSB theory,to achieve the overall design that that the sharing of cloud.In the design process, the user's basic use demands are considered in many aspects, which improves the user experience, saves the remote file download time, and avoids the password leakage risk caused by the input.
Key words: BadUSB; shared cloud; Human Interface Device; Arduino; Intelligent peripherals
1 背景
在大型公司企業(yè)、高校教學基地中,大量的、不同類型的公共資源的共享已經(jīng)成為工作的一類普遍需求。傳統(tǒng)的消息通知機制通過人工傳達訊息已不能滿足當今用戶對于及時、高效的需求,用戶需要一種更為方便、直接、安全的共享消息機制。
大多數(shù)的企業(yè)、高校都會在其內(nèi)網(wǎng)上傳最新的通知資訊,相關人員需通過手動登錄賬戶、搜索所需內(nèi)容進行下載,而本文所述共享云盾(一款由BadUSB原理改良的迷你智能外設)的設計與研究,使服務器與迷你智能外設直接關聯(lián),達到省卻冗余的人工操作,加強安全性的目的。
2 BadUSB的背景與原理
2.1 BadUSB的發(fā)現(xiàn)
2014年BlackHat大會[1]上,安全研究人員Karsten Nohl和Jakob Lell公布了BadUSB漏洞,并當場演示,展示出一系列利用該機制漏洞的惡意軟件攻擊效果,強調(diào)說明了USB設備長期以來的安全性機制被打破。會后與Black Hat大會關系緊密的多家媒體做了預熱報道,使得該漏洞一躍成為計算機安全領域的熱門話題。
2.2 BadUSB的危害性
BadUSB漏洞表明“USB目前的運行機制是有缺陷的,稍有技術的人便能制造含有惡意代碼的USB芯片,設備一旦插入電腦,可控制電腦并傳播事先準備好的USB病毒”[2],整個過程的危險之處在于——運用了teensy機制的BadUSB通過微處理器運行,使得系統(tǒng)中的防毒軟件不能越層阻止惡意代碼的運行。
“These problems cant be patched , Were exploiting the very way that USB is designed. In this new way of thinking, you have to consider a USB infected and throw it away as soon as it touches a non-trusted computer. ”[2]Nohl的發(fā)言表明BadUSB的危害性難以防范,通過逆向工程破解,基于BadUSB的惡意軟件可以安裝在USB設備上,完全控制個人電腦,以用戶不可見的方式更改從記憶棒安裝的文件,甚至重定向用戶的互聯(lián)網(wǎng)流量。
2.3 BadUSB的機制原理
關于BadUSB的原理,Nohl 曾說過“It can do whatever you can do with a keyboard, which is basically everything a computer does.”[3]。從傳統(tǒng)意義來看,當電腦中插入一個USB設備時,通過自動播放運行,關閉該功能時,autorun.inf文件便無法自動執(zhí)行設備文件。
HID[4]是Human Interface Device的縮寫,由其名稱可知HID設備是直接與人交互的設備,如鍵盤、鼠標與游戲桿等,但HID設備并非一定要有人機接口,事實上只要符合HID類別規(guī)范的設備都是HID設備。HID攻擊[5]是指主要集中在鍵盤鼠標上的攻擊,攻擊者把攻擊隱藏在正常的鼠標鍵盤中,當用戶將其插入電腦時,惡意代碼會被加載執(zhí)行。
結合以上兩點,若在USB設備中置入一個攻擊芯片Teensy[6](一個小巧且功能完整的單片機開發(fā)系統(tǒng)),利用其模擬出鍵盤和鼠標。插入電腦,利用設備中的微處理器、存儲空間、及預置的惡意代碼可向主機發(fā)送控制命令,從而達到完全控制主機目的,無需通過自動播放的開啟執(zhí)行。具體實現(xiàn)如圖1所示:
3 運用BadUSB原理的改良型云盾
若利用BadUSB漏洞,對輕攜小巧的USB外設進行改造,對USB進行一次性的代碼燒鑄,把簡單而繁瑣的手工登錄服務器、下載文件的過程轉(zhuǎn)化為基于Arduino[7]平臺的可執(zhí)行代碼,即能做出符合人們需求的共享云盾。
3.1 Arduino平臺
Arduino是目前較為流行的電子互動平臺,基于單片機系統(tǒng)開發(fā),具有使用簡單、功能多樣、價格低廉等優(yōu)點,廣泛應用于電子系統(tǒng)設計和互動產(chǎn)品開發(fā)方面[8]。它構建于開放原始碼simple I/O介面版,具有Processing/Wiring開發(fā)環(huán)境,分為硬件部分和Arduino IDE,在IDE中編寫相關代碼,傳至單片機電路板,便可運行。
3.2 Teensy USB
Teensy USB開發(fā)板(鼠標鍵盤ISP),它運用AVR處理器,支持16 MHz,單個按鍵編程,具有免費軟件開發(fā)工具,兼容Mac OS X,Linux和Windows系統(tǒng),易于使用的Teensy Loader應用程序[9]。
選用Teensy開發(fā)板,與Arduino IDE安裝Teensy開發(fā)環(huán)境配合,相當于內(nèi)置了虛擬鍵盤鼠標,無需安裝驅(qū)動,便可輕松實現(xiàn)偽裝成為HID設備的目的。實物如下圖所示:
3.3 改良型共享云盾
共享云盾,是一種采用了源碼燒鑄確保數(shù)據(jù)安全,通過USB接口與電腦連接,實現(xiàn)即插即用的適用于局域網(wǎng)范圍內(nèi)提高文件傳輸效率、實現(xiàn)共享的外部設備。
3.3.1 改良型共享云盾的部分實現(xiàn)代碼
大多數(shù)的公司、高校的服務器中都會開放FTP或NFS進行文件的傳輸與下載,故將實現(xiàn)FTP下載作為改良型共享云盾的一項基本功能?;贐adUSB的實現(xiàn)原理,選用Teensy3.1開發(fā)板,在Arduino開發(fā)環(huán)境下,用如下代碼實現(xiàn)FTP的默認下載功能,證明改良型共享云盾實現(xiàn)簡單易行,其功能的改善存在可能。
上述代碼及注釋展示了連接ftp并下載指定文件的過程,而結合《msdn開發(fā)者手冊》[10]中記載,winexec函數(shù)可實現(xiàn)cmd窗口的隱藏,二者配合使用,可以實現(xiàn)對用戶的透明化效果。
4 共享云盾系統(tǒng)的設計
共享云盾系統(tǒng)是為實現(xiàn)擴充區(qū)域服務器功能,給用戶帶來快速批量安全下載的良好體驗而設計的,它能運用于公司或?qū)W校,方便使用者下載近期內(nèi)與某一類群體或是部門有關的公告通知類及時、重要的文件,讓使用者省卻繁瑣手工輸入過程,同時燒鑄不可修改的驗證與加密,也在一定程度上避免密碼泄露風險以及用戶可能遺忘密碼不便。
4.1 共享云盾系統(tǒng)的基本特性
共享云盾系統(tǒng)的基本特性有方便性、及時性、安全性。
1) 方便性。共享云盾外型小巧,使用者能隨身攜帶,云盾一旦插入PC端,便會自動執(zhí)行代碼,實現(xiàn)相應功能,使用者無需在進行其他操作。共享云盾系統(tǒng)能根據(jù)使用者身份將訊息進行分類整合,方便不同身邊的用戶進行下載,避免冗余下載。
2) 及時性。共享云盾系統(tǒng)能定時更新相關公共資源文件,既防止因消息阻滯帶來不必要性的工作失誤,又可通過刪除過期無效文件提高服務器端的空間資源利用率。
3) 安全性。共享云盾的使用者無需在公共設備上輸入用戶信息,降低了密碼泄露的風險。共享云盾本身對燒鑄的代碼進行加密壓縮處理。
4.2 共享云盾系統(tǒng)的高校運用實例說明
為了形象生動說明共享云盾的構思設計、整體模式、后期維護等具體問題,下面以任一高校為例,具體進行分析。共享云盾系統(tǒng)的架構圖如下:
基于學校的教務在線系統(tǒng)進行設計與開發(fā)的共享云盾,將針對教務系統(tǒng)的功能進行擴充與細化。
服務器端上按不同的院、系級別對原始的通知信息進行大體分類編號,再進一步根據(jù)使用者的角度將訊息分為教工、學生、職工、后勤類,教工類有教學計劃通知、教學會議安排、競賽指導說明等,學生類有考務公示、競賽參與通知、文娛活動開展等,職工類下分招生辦、財務等部門的業(yè)務通知,后勤類停水、停電、網(wǎng)絡維護通知等。而發(fā)放給用戶的云盾根據(jù)其身份的不同,嵌入不同的代碼,連接服務器端的不同文件區(qū)域進行下載,驗證用戶身份的主要方法是識別教工號、學號等唯一標志性信息。
服務器端在下載完文件后,將會按照下載量、時間等反饋信息來進一步調(diào)整對文件內(nèi)容的分類排序,且在文檔內(nèi)設置了生存時間的機制,如某一文件已被大部分IP訪問下載過,其緊急度等級將會下降;當所有IP都進行下載后,該文件的生存時間清零,隨即被自動刪除。時間緊迫的通知的緊急度等級高,將會被置于首要級默認下載文件中,確??赡艿淖畲笸ㄖ秶?。采取該種機制更新訊息,是為了防止大量閱讀過的或不必要的文件長時間存在,過多占用空間資源。
從客戶端來看,當使用者將云盾插入主機后,在其自動連接服務器后,根據(jù)ID匹配對應區(qū)域,檢查默認下載路徑下的文件,讀取當前文件效驗碼與服務器中下載文件的校驗碼進行匹配,若匹配成功,說明該文件此用戶已下載,則在下載時跳過當前文件,若匹配失敗,云盾將下載該文件,以此避免實時更新中的數(shù)據(jù)冗余的問題。
在安全性方面,云盾的內(nèi)嵌代碼均為加密壓縮后燒鑄在硬件層的,代碼實現(xiàn)過程也會調(diào)用后臺函數(shù)隱藏顯示效果,即達到對用戶層的完全透明。如此設計能防止不良用戶惡意篡改代碼造成損失,或一些誤操作而帶來的問題,云盾的內(nèi)存訪問是受限訪問。受限主要體現(xiàn)在兩個方面:限制專屬局域網(wǎng)的ip訪問,防止因云盾丟失帶來的信息泄露問題;云盾的內(nèi)容更改需要root最高權限。
4.3 共享云盾的高校應用效果
共享云盾系統(tǒng)在高校應用效果可從如下方面進行分析:
1) 從使用者角度分析,共享云盾使用后的感知效果僅僅為云盾插入主機后,等待一段時間,默認下載路徑中會更新出現(xiàn)最新的文件通知等,使有效信息的傳遞變得及時簡單,方便師生的學習、工作生活。
2) 從維護管理者角度分析,教務系統(tǒng)服務器端與共享云盾相結合,管理工作需要在原有基礎上增加一定量,如對服務器的定期檢查,進行必要文件調(diào)整;觀察有無異常登錄等情況,需及時處理。但整體上來說,完善了服務器的文件分類功能,相關管理也會變得高效。
3) 從開發(fā)者角度分析,開放云盾系統(tǒng)的最高權限,根據(jù)云盾在高校使用情況反饋,調(diào)整完善相應功能,做長期的維護開發(fā)工作。
5 結束語
本文基于BadUSB的原理結合當下人們對訊息及時性的需求,提出了共享云盾的設計思想和整體框架,具一定實用意義。將共享云盾實踐運用在高校的教學生活中,對高校的教務工作有明顯輔助作用,應用效果顯著。
但文中用于舉例的共享云盾的ftp下載文件過程,代碼顯繁瑣,靈活性不足,故在下一步優(yōu)化過程中,追求更大程度上地簡化管理,提升靈活性,對此有一思路:利用一個中間服務器做跳板去操作含有下載文件的網(wǎng)站,共享云盾僅連接中間服務器下載腳本并運行,核心代碼均加密放在中間服務器內(nèi)。該設想可借助powershell的指令實現(xiàn),如powershell.exe -nop -w hidden -c “IEX((new-object net.webclient).downloadstring('http://IP_address:port/file'))”。
對于共享云盾在應用實踐上的優(yōu)化,必然存在更好的方案,如何進一步簡化共享云盾的內(nèi)置代碼,提高其安全性、操作靈活性,帶來更好的使用效果將是筆者下一步要研究的問題。
參考文獻:
[1] ANGELA WATERCUTTER.SHOOTING BLACKHAT[J]. Wired, 2015(1):29-31.
[2] KarstenNohl,JakobLell.Badusb on accessories that turn evil[EB/OL].https://www.blackhat.com/us-14/briefings.html#badusb-on-accessories-that-turn-evil.
[3] SimonCohen.Why you can no longer trust any USB device plugged into your PC [EB/OL] https://venturebeat.com/2014/07/31/why-you-can-no-longer-trust-any-usb-device-plugged-into-your-pc/.
[4] Hidcomments.Device Class Definition for Human Interface Devices(HID)[EB/OL].http://www.usb.org/developers/hidpage/HID1_11.pdf,2001.06.27/2017.10.25.
[5] 姜建國, 常子敬, 呂志強, 等. USB HID攻擊與防護技術綜述[J]. 信息安全研究, 2017(2):129-138.
[6] GEAR[J]. European car, 2009(10):22-24.
[7] Michael Margolis. Arduino權威指南[M]. 楊昆云, 譯. 2版. 北京: 人民郵電出版社, 2015.
[8] 蔡睿妍. Arduino的原理及應用[J]. 電子設計工程, 2012, 20(16):155-157.
[9] 維克斯. 利用Arduino快速制作Teensy BadUSB[EB/OL]. http://ju.outofmemory.cn/entry/267002, 2016.06.23/2017.10.25.
[10] kaneboy. MSDN Magazine 2005年第10月刊內(nèi)容精選[J]. MSDN開發(fā)精選, 2005(6):4-5.