代號為 『BadUSB』 的 USB 漏洞具體是何情況,有多大危害?
USB介面爆災難性安全漏洞,影響全球數十億設備
看了 @時國懷 的回答,有不夠嚴謹的地方(可能是站在開發者角度),雖然我也相信原文翻譯有些錯誤、媒體炒作過於誇張,我下面會站在黑客角度去回答這個問題。1. 這篇文章我溯源了下,發現和本次正在拉斯維加斯如火如荼舉行的 Black Hat 大會(Black Hat USA 2014)有關,演講者的豪言壯語在這:https://www.blackhat.com/us-14/briefings.html#badusb-on-accessories-that-turn-evil表達的意思是:
2. 之後和 Black Hat 大會關係緊密的至少8家媒體做了預熱報道,比如:ZDNet 的報道:BadUSB: Big, bad USB security problems aheadWIRED 的報道:Why the Security of USB Is Fundamentally Broken然後可能就這樣傳播開了,媒體嘛,為了吸引眼球+自身沒那麼專業,放大報道也是可以理解的。3. 我一直在關注這方面的攻防,今年初的時候天融信阿爾法實驗室的朋友(冷風)在小範圍做了這個分享,之後我看他們的官方博客(天融信阿爾法實驗室)放出了研究細節(可以肯定是和諧了一些內容),我先來個摘錄(文章寫得很清晰,建議讀完),這篇文章的結論是:具備實戰意義。不過不知道 Black Hat 這次的細節是什麼(大會結束後,很快就可以知道了),不過我想大體是這個原理,可能升級的是一些猥瑣的 Hacking 技巧:USB 現在這種機制是有缺陷的,可以自己定製惡意的 USB 晶元,插入電腦後可以控制電腦,可以傳播他們準備好的 USB 病毒。
--------------開始--------------
HID攻擊之TEENSY實戰文/圖 天融信阿爾法實驗室 冷風
概述
從傳統意義講,當你在電腦中插入一張CD/DVD光碟,或者插入一個USB設備時,可以通過自動播放來運行一個包含惡意的文件,不過自動播放功能被關閉時,autorun.inf文件就無法自動執行你的文件了。然而通過TEENSY,你可以模擬出一個鍵盤和滑鼠,當你插入這個定製的USB設備時,電腦會識別為一個鍵盤,利用設備中的微處理器,與存儲空間,和編程進去的攻擊代碼,就可以向主機發送控制命令,從而完全控制主機,無論自動播放是否開啟,都可以成功。
HID攻擊介紹
HID是Human Interface Device的縮寫,由其名稱可以了解HID設備是直接與人交互的設備,例如鍵盤、滑鼠與遊戲桿等。不過HID設備並不一定要有人機介面,只要符合HID類別規範的設備都是HID設備。一般來講針對HID的攻擊主要集中在鍵盤滑鼠上,因為只要控制了用戶鍵盤,基本上就等於控制了用戶的電腦。攻擊者會把攻擊隱藏在一個正常的滑鼠鍵盤中,當用戶將含有攻擊向量的滑鼠或鍵盤,插入電腦時,惡意代碼會被載入並執行。
TEENSY介紹
攻擊者在定製攻擊設備時,會向USB設備中置入一個攻擊晶元,此攻擊晶元是一個非常小巧且功能完整的單片機開發系統,它的名字叫Teensy,它能夠實現多種類型的項目開發和設計。Teensy為開源項目,任何有能力有技術的廠商都可以生產定製,其中PJRC是最優秀或者說商業化最好的生產商。
Teensy主要特點如下
AVR處理器,16 MHz
單個按鍵編程
易於使用的Teensy Loader應用程序
免費軟體開發工具
兼容Mac OS X,Linux和Windows
小尺寸,多項目的完美支持
開發環境的搭建
對Teensy晶元進行開發,可以在Arduino中進行,不用擔心枯燥的彙編與機器代碼,因為Arduino IDE具有使用類似Java,C語言的Processing/Wiring開發環境。環境安裝與搭建也非常便捷,可以從Arduino - Home下載安裝包,進行安裝。本文版權為天融信阿爾法實驗室冷風,轉載請註明出處。
安裝完Arduino IDE之後,還需要Teensy晶元的SDK支持庫,支持庫可以從如下地址獲取Teensyduino: Download and Install Teensy support into the Arduino IDE。安裝時需要選擇Arduino IDE的安裝路徑,安裝完成以後,還需要選擇相應的開發板,我們這裡應該選擇Teensy2.0如圖4所示,至此整體開發環境就搭建完成了。
圖4
從BackTrack提取攻擊代碼
在BackTrack中提供了Teensy的完整攻擊實例,針對一般情況的測試與使用,是足夠的,下面介紹一下攻擊代碼的提取方法。進入BackTrack5後進入到/pentest/exploits/set目錄,如圖5所示。
圖5
進入目錄後執行./set會彈出一個新的菜單,請選擇第一項Social-Engineering Attacks如圖6所示。
圖6
在新的選擇項中,選擇Arduino-Based-Attack Vector選項(Arduino基礎攻擊向量)如圖7所示。
圖7
選擇Arduino基礎攻擊向量後,在新的選擇中選擇Wscript Http Get Msf Payload如圖8所示。
圖8
在新的選項中輸入一個惡意程序的下載地址,此代碼功能為自動去指定的位置下載程序並自動執行。如圖9所示。
圖9
最後所有的步驟執行完成後,會在reports目錄中成一個名為teensy.pde的文件,如圖10所示,此文件可以直接導入到Arduino中進行編譯。本文版權為天融信阿爾法實驗室冷風,轉載請註明出處。
圖10
攻擊代碼實現
如上代碼從setup開始執行,執行後自動鍵入tftp下載命令,並執行,最後運行下載的exe文件,omg函數是在開始運行中鍵入代碼執行。關於每個API函數的詳細介紹可以參考teensy提供的API手冊,這裡不再贅述。
攻擊效果
代碼編譯後通過Arduino上傳到Teensy晶元,把Teensy插入到電腦USB介面後,會自動打開,運行對話框,鍵入相應的命令並運行,其效果如圖11所示。、
圖11
結束語
HID攻擊對於大眾來說還屬於冷門,大眾甚至不知道它的存在,防範更是無從談起,但它的危害卻是非常大的,USB設備的普及更是放大了它的邪惡,本文針對HID攻擊的方法、原理、實現做了較為詳細的描述,希望本文的介紹能讓讀者對HID攻擊有一個更為清晰明了的認識。
--------------結束--------------好,到此,我繼續補充些內容。1. 冷風這篇文章的實戰有個問題就是:USB 這樣去模擬鍵盤操作-&>下載木馬-&>執行,這個過程是不隱蔽的,很容易被發現。之前也了解過 NSA 的工具,有個類似這樣的,描述如下:NSA 的另外一個強大的無線間諜工具是水蝮蛇一號(COTTONMOUTH-I)。看起來像是普通的老實優盤,但其實是一個小型間諜電腦。目錄上說它可以創建「無線橋接網路接入到目標網路中,還可以向目標電腦上傳破壞軟體。」
由於沒接觸過 NSA 這個工具,也不知道這個過程能否隱蔽,但是可以肯定的是 USB 設備存在這種安全缺陷,這種缺陷是 USB 的過於開放性導致,從冷風的實戰經驗來看:任何人都可以用 Teensy 晶元打造一個邪惡的U盤出來。
2. 至於更多擴展功能,冷風給我說:這個設備其實可以是一個 USB 集線器,把一個 USB 介面轉換為兩個,一個連接 U 盤,其中一個連接 USB 3G 網卡,或者任何 USB 設備。所以一個 USB 介面,可以轉為多個介面,然後連接不同的攻擊設備,很多想像空間。
很多時候,站在黑客角度去上去看待一些東西是很不錯的,大多人太容易就忽視一個新技巧帶來的實戰意義,這點真不可取。
待 Black Hat 大會公布 BadUSB 技術細節後,我再來更新。13年經驗的嵌入式工程師來回答,製造這種攻擊U盤,是分分鐘的事。
唯一的問題,是如何將U盤插到別人電腦上。先說,這個問題可能不靠譜,另外,英文原文沒有找到,Google上搜索badUsb沒有有用的信息,不排除國內翻譯人員理解有誤。
截止目前為止(20140803 21:13)有很多回答都提到了刷固件的問題,但如果完全按照鏈接給出的提示信息來看,各位理解可能有問題。因為鏈接里給的是「控制器」固件,而並非設備固件,雖然此處很值得懷疑,但控制器固件和設備固件是完全兩種東西,前者位於主機上,後者位於設備上。當然,我覺得是國內翻譯人員翻譯有問題。
然後給文章找bug先:
第一個錯誤:以我目前了解到的,還沒有什麼太簡單的方法去刷主機控制器(Host Controller)的固件,比如EHCI、UHCI這些。但文章翻譯似乎混淆了主機控制器和設備固件(Device Firmware)的區別,設備確實可以刷固件,並且這種東西早存在。
第二個錯誤:刷固件困難很大,實際上U盤的固件容量並不大,甚至是很小,要把一個U盤刷成一個網卡,幾乎是一個不可能的事情,網卡固件的軟體規模遠遠大於U盤,並且沒有天線怎麼辦?
第三個錯誤:設備無法向操縱主機的行為,設備可以干擾主機的行為,但要想直接運行固件里的代碼,還需要主機端的授權和配合,實際上這很難。
再說這個漏洞本身,如果是指網卡可以偽裝成U盤這種方式,這早就存在,這不是一個技術問題,這就像我製造一個假的ATM取款機誘騙別人插入銀行卡一樣,這不能算是一個設備的安全漏洞。這就像警告人們在火車上不要隨便吃別人給的東西一樣,你怎麼知道這個東西是無害的?
最後回答題主的疑惑,美帝真的站在食物鏈頂端嗎?這個難說,但就這個事情來說,我覺得國內廠商也許早就想到了,也早就做到了。
至於安全方面的擔心,這個暫時還不用考慮太多,至少目前的設備可編程能力不強,因為成本限制沒有廠商會植入太強大的硬體,只要注意不要隨便用來源不明的設備即可。如果在公共場合使用電腦,留意USB口上(前置、後置、內置)是否有可疑設備即可。當然,不排除未來有惡意的廠商在U盤/USB鍵鼠/USB網卡上植入硬體後門方法,並且這種後門在有些時候可以不被主機檢測到,按問題是,如果真有廠商敢這麼做,那真砸自己的生意了。
不要吃陌生人給的食物,同樣地,不要使用陌生人給的設備。
就這樣。
補充: @餘弦 提到了使用HID模擬設備攻擊主機的方法,實際上我覺得這種方法倒不如模擬CDC設備攻擊更容易,但CDC規範太龐大,小設備能否容納下CDC這樣龐大的協議棧也是一個問題。另外,嵌入式系統里能模擬USB設備的東西太多了,我見過的有模擬U盤的,模擬鍵盤滑鼠印表機的,還有模擬網路設備的等等,這些東西早就存在了,如果說有漏洞,那麼可以說十年前這種東西就已經存在了。我自己就寫過這類驅動,買一個支持USBOTG的開發板加上一套嵌入式開發組件就可以做出來這種設備,如何縮小設備可能是個麻煩事,但也絕對不會是一件無法達成的事情。
我只說說 @餘弦 說的方法中的一些問題:
1、要把設備接到目標設備上,不管是欺騙手段還是別的什麼手段,這是最大的障礙。實際上如果攻擊者能接觸到目標設備,那麼完全可以不用這麼麻煩的方法,一個U盤系統就可以全搞定了,如果有物理手段直接接觸設備,那麼其餘的手段都是不必要的。大部分黑客技術都致力於研究非直接接觸的攻擊。
2、模擬HID設備實際上是要發送一組按鍵,觸發諸如下載文件並運行等功能,這個過程很容易被用戶看到,因為用戶會發現計算機自己在執行一組操作,並且這些操作都是前台可見的,如果設備上有防火牆等工具,攔截並不困難,而模擬HID的設備要想偵查到防火牆殺毒軟體則十分困難。
3、模擬HID不如模擬CDC(網路、通信設備)更容易,偽裝成網路設備,可以監聽、盜取用戶的網路通信記錄、使用ARP重定向用戶通信,威脅度遠遠高於HID設備。
4、HID請求包極其簡單(一個report才8個位元組),很難攻擊到主機,但模擬網路設備可以攻擊目標主機的網路協議棧,攻擊效果更佳。
所以回歸我的觀點,不要輕易使用陌生人的設備、不要讓陌生人接觸設備是一個大前提,物理隔離是保證安全的第一要素,如果別人能輕易接觸到敏感主機,那麼任何安全防護軟體、硬體都會失去意義。順便提一句:震網病毒就是通過U盤傳播的,傳播的原因就是工作人員把U盤同時在安全設備上和私人設備上使用(在私人設備上感染病毒,在安全設備上傳播),管住人比管好設備更重要。有嗎?插上,看見滑鼠亂動,直接拔掉
BadUSB漏洞:該漏洞是利用將惡意代碼存放在USB設備控制器的固件存儲區,而不是存放在其它可以通過USB介面進行讀取的存儲區域,比如Flash等,這樣,殺毒軟體或者普通的格式化操作是清除不掉該代碼的。在USB設備設計階段,利用一種特殊的方法將惡意代碼植入USB設備控制器固件,從而使USB設備在接入PC等設備時,可以欺騙PC OS,從而達到某些目的。
介紹該漏洞的文章內容源於美國網路電子雜誌WIRED(http://www.wired.com)於14年7月31日刊載的一篇文章:Why the Security of USB Is Fundamentally Broke。這裡需要說明的是WIRED雜誌是美國著名的網路電子類雜誌,反映電腦技術應用於現代和未來人類生活的各個方面。每一期的WIRED雜誌,都掃描商業、科學、娛樂、教育、文化的未來,揭示技術如何改變我們生活的驚人故事。無論是科技、商業、新媒體、藝術和文化、環境、最新產品,WIRED都一直站在報道的最前沿。
也就是說,該消息並非來自傳統的安全漏洞研究評估組織或學術期刊。
根據原文(附後),有如下信息:
1. 兩位攻擊者Nohl和Lell,花費了數月時間對某一USB設備的控制器固件進行了逆向工程。注意,該USB設備(應該指USB通信晶元)具有控制晶元(controller chip)。他們發現該USB設備的固件可以被重編程以植入攻擊代碼(具體而言,這是指該設備的固件,能夠在注入攻擊代碼後,重新刷入該設備)。
2. 並沒有任何廠家或權威組織確認這一漏洞。Nohl和Lell曾聯繫一家台灣USB設備製造商(具體名稱並未被透露)提出了安全警告,該廠商反覆否認了該攻擊的可能性。而WIRED聯繫了非盈利組織USB Implementers Forum,該組織的發言人就此的回答較為程式化,即人們在使用USB設備時,始終都應該確認設備來源的可信性。
3. 該文及相關文檔在細節上比較晦澀,並沒有更多的信息。
以下是針對該文章所描述的攻擊對USB安全性的分析:
1.
絕大多數的USB設備控制器是ASIC的,即這些控制器是高度定製的,並無成為其他設備的擴展能力,更無執行其他代碼的能力。根據原文,攻擊需要修改USB設備類型,而標記USB設備類型和多種信息的USB endpoints在絕大多數情況下是固化在設備里的,因為這些信息不會需要更改。
而由於絕大多數USB設備控制器是ASIC的,這使得極少的設備有被感染的可能。鑒於廠商對於成本的敏感,使得他們製造的設備儘可能的精簡,不具備運行惡意代碼的條件,換句話說,即使你感染了某些設備,只可能是被感染的設備無法運行,而不是運行惡意代碼。而所謂的USB控制器固件,絕大多數是針對邏輯電路的配置文件,即使被篡改或破壞,也只能是使設備無法運行。極少有廠商會生產通用目的的USB控制器。
絕大多數USB設備是不可通過固件升級/重編程進行改變的,這樣會使控制器非常昂貴。事實上,絕大多數USB設備控制器根本不支持重編程。很多ASIC沒有MCU核而完全依靠邏輯電路,這使得此類攻擊完全不可實現。
2.
攻擊的前提是,對於設備固件的逆向工程。首先,不同的設備不同的廠商,由於設備結構的不同,固件必然千差萬別,不存在可以進行「通吃」感染的惡意代碼,而大多數ASIC都是使用定製的MCU內核,根本就沒有對外的寄存器/編程指南,逆向工程無從下手;其次製造商通常非常注意保護設備固件,因為其中通常含有敏感信息,這些相關內容從不公開;最後,製造商會在控制器運行固件時檢驗固件的有效性,也即,製造商通常會對固件簽名並核對。這些使得可能的攻擊只是有可能在極少的一部分設備上開展。
3.
即使攻擊者發現了一個由於某種原因可以通過改變固件而支持其他USB類和Endpoints,並且攻擊者成功逆向了固件,攻擊者還必須要將篡改後的固件寫入設備,USB設備控制器的固件通常是儲存於的晶元金屬層里,根本就是只讀而不可寫的;即使固件可寫或儲存與外部存儲,攻擊者同樣需要製造商提供的特殊命令或專用設備。
4.
根據該文,攻擊者的惡意程序位於USB控制器的空間內。USB控制器的固件和PC等系統的BIOS/固件/OS是絕對完全隔離的,且只能運行控制器預定義好的USB命令。一旦涉及到通過USB行為(如鍵盤滑鼠輸入等)惡意影響PC等的OS,必然涉及到繞過防火牆和取得系統許可權等問題,不可能悄無聲息。
但是必須說明,以上的分析,主要是針對於我們實際中所應用的絕大多數USB設備;而該漏洞的利用,根據其原文的描述,是通過支持通用編程開發的USB設備控制器,在成功完成固件的逆向工程後,再成功向USB設備控制器寫入固件(可能是直接利用開發工具開發)從而實現的。綜上,應有以下判斷:
1.
該漏洞幾乎不能夠被利用來製造可以真正大規模自動複製和傳播的類似計算機系統病毒的攻擊工具,不能夠被大規模應用。
2.
該漏洞的利用場景應為:攻擊者製作特製的「USB間諜工具」,利用某種途徑使該USB工具接入攻擊目標的USB介面,並通過欺騙系統,達到插入攻擊目標USB介面後偽裝成網卡或鍵盤等設備的目的,從而獲取目標的網路通訊數據,或者通過USB的輸入輸出設備向PC系統發送指令,安裝事先存放在該工具某一位置上的惡意軟體,該漏洞的核心價值在於它能夠使間諜工具這些USB設備功能下的攻擊行為,如果不涉及到在PC上安裝軟體或開啟服務等涉及PC系統的動作,不會被PC殺毒系統檢測到,如偽裝成網卡等。該場景的必要條件為:利用專門的設備,完成USB間諜工具的製作;插入目標USB介面。
應該說該漏洞並非一個國內某些媒體冠以所謂「災難性」頭銜的漏洞。甚至可以說,我們早就處理過類似的問題——實際上,該漏洞完全就可以看作一個高級的難於檢測的USB「AUTORUN」。並且,需要指出,該漏洞的實現依賴於特殊硬體,且應用時需要相應特殊場景。
項目評估
傳播性
低,自動複製傳播的條件十分苛刻,幾乎不能自動傳播。
對攻擊者素質的要求
實行攻擊十分簡單;但對於不同的攻擊目標和攻擊目的,有時需要對攻擊工具進行較複雜的定製,定製過程對攻擊者的素質要求很高,且通常需要相應的通用USB控制設備及外部硬體配合。
危害性
存放在USB控制器memory中的惡意代碼很難被發現,可以避開當前幾乎所有的殺軟,但是,這些代碼的作用範圍也限於USB的功能範圍內,例如偽裝網卡或鍵鼠等輸入輸出設備;需要說明的是,由於和PC OS等隔離,使用篡改後的輸入輸出設備進行惡意軟體安裝等影響PC
OS的行為實施難度較大,1)需要避開殺軟。2)在win7及以上等系統中需要取得相應許可權。3)需要避開操作PC設備的使用者。可以視為一個高級的AUTORUN。
如果僅僅是模擬usb hid這種四五年前就普及了的技術,根本上不了blackhat。badusb還會模擬為usb網卡以劫持dns,模擬為可引導U盤以繞過防護軟體感染系統
BadUSB – Turning devices evil. Once reprogrammed, benign devices can turn malicious in many ways, including:
- A device can emulate a keyboard and issue commands on behalf of the logged-in user, for example to exfiltrate files or install malware. Such malware, in turn, can infect the controller chips of other USB devices connected to the computer.
- The device can also spoof a network card and change the computer』s DNS setting to redirect traffic.
- A modified thumb drive or external hard disk can – when it detects that the computer is starting up – boot a small virus, which infects the computer』s operating system prior to boot.
Turning USB peripherals into BadUSB
具體細節明天就知道了,現在看來,都很雞肋。聽起來好嚇人,但是就拿U盤來說,除了廠商自己提供量產工具等對主控二次編程,你見過多少對U盤刷自製固件的人?
除非廠商作惡,否則影響不會太大。http://www.imore.com/badusb-malware-highlights-danger-plugging-random-mystery-drives-your-computer?utm_source=tuicool貌似是原文出處對比中文翻譯後的文章,感覺翻譯後的文章變得危言聳聽,還是自己看一下原文比較好。說一下個人的想法,所謂可編程USB的控制器晶元,的確,USB晶元有可以被重新編寫的,但是感覺更多的是不可編程的晶元,尤其是那些固定用途(如鍵鼠藍牙模塊等)設備的晶元,都是預先燒好的,不給使用者以自定義的機會。而餘下的一部分可編程的晶元,既然提供商能夠對其編程,就一定會想方設法阻止除了自己以外的人對其篡改。而關於使用U盤傳播所謂的安全漏洞病毒,即使使用了被破解重新編程的U盤,將其帶入主機中,它也很難直接寫入其他設備(因為不是軟體層面,是對硬體的更改),不涉及到傳播。原文中也只是說這些東西會自我傳播,但是並沒有詳細說明,我覺得只在硬體層面傳播不經過軟體是很難實現的。而經過軟體就需要涉及各種許可權,很難躲過安全軟體的監測。所以沒必要擔心。當自己發現接入的設備有問題的時候,直接將其拔出就好了。涉及到密碼等的敏感信息的竊取設備早就存在。再說,現在這個時代,分析一個人行為比知道他密碼重要的多。個人觀點,不喜勿噴~
哈哈哈。圖樣圖森破。文章練控制器是啥都不知道。誤以為設備是控制器,外行寫的
源碼在這裡,拿去!https://github.com/adamcaudill/Psychson
所有有用的東西都可能被利用,不僅僅是USB,電腦上好多東西對於我們來說都是黑箱,如果他們想從硬體上給我們,我們根本沒法躲,除非全部自己弄
弱弱的問一句大黃鴨優盤不就是利用了該漏洞么?何必這個驚詫!
扯,這算是什麼漏洞,廣大嵌入式設備模擬鍵盤滑鼠,模擬串口U盤......並且按照USB協議,通訊必須由主機發起。
這在我買第一個優盤的時候就發現了,清華紫光2gb。固件重寫,確實可以抵禦查殺。但是涉密有單向傳輸技術,所以用處不是特別大。網吧開機,一鍵種毒還是有些用。
vista以後的系統驅動需要數字簽名哦
我都能摸到目標機器胡搞毛搞了。為什麼不直接手動操作呢。這樣做只能自動化(死板)的進行攻擊啊。
推薦閱讀:
※如何看待雷鋒網的《暗網上的性、暴力、毒品,你所有的野心和嚮往》?
※如果讓現代的十個頂尖黑客穿越到1981-1990年會怎樣?
※和黑客交易要注意什麼?
※怎麼看待頂級黑客凱文說的現在所有AI產品都是假的?
※職業黑客平常的一天是怎樣度過的?