簡介java
因爲「Bad USB漏洞」的存在,USB閃存驅動器也成了常見的攻擊目標。Bad-USB讓黑客能夠從新編程微控器做爲一個「人機界面裝置」(HID)或鍵盤,而後在目標機器上執行自定義鍵盤敲擊。這種狀況一般被稱爲「HID Payload攻擊」,因爲你須要向BadUSB上交你的腳本用於執行(稍後咱們還會有更爲詳細的討論)。儘管幾乎全部的USB閃存驅動器均可以執行漏洞利用,可是從新編程「羣聯(Phison)」微控制器的惟一方式已經公開了。git
本教程中咱們將改造USB閃存驅動器的微控制器,使用發佈於github上面的源代碼進行編譯,並構建一個帶有內置HID負載的自定義固件,而後把咱們無邪的USB變成一個用於咱們入侵受害者設備的惡意鍵盤。github
整個過程有點像對你的安卓設備進行編譯和清除。:P編程
準備工做windows
· 咱們須要在win環境下工做 · 咱們須要一個帶有Phison 2303(2251-03)微處理器的USB 3.0閃存驅動器 教程中,我會使用「Toshiba TransMemory-MX USB 3.0 8GB」,東芝,8GB。 · 肯定你能在不損害USB的狀況下打開它。個人一個朋友因爲太草率,徹底按照字面意思鋸斷了他的USB。詳情能夠閱讀「將咱們設備設置爲手動‘啓動模式’」。
小筆記:工具
·你可以在github找到可支持的設備名單。 有時候擁有一臺名單中的可支持設備,並不意味着必定使用了PS2251-03。即便是同一臺設備模型,製造商也可能使用不一樣的控制器。 ·請你繼續本身的冒險,儘管並無辦法保證你的設備以後仍然能夠工做。理論上,出現任何問題都是不科學的。
改造U盤的微控制器佈局
開始以前,先肯定一下咱們的U盤使用的是可支持控制器。咱們能夠用一個叫作「閃存驅動器信息提取器」的程序,收集關於U盤的必要信息。網站
並不須要任何安裝。只要將Upan插到電腦上,而後打開工具點擊「獲取U盤信息」按鈕。若是你的驅動器使用的是Phison2303(2251-03)控制器,輸出應該以下:ui
可是,若是你的U盤不一樣,它便很是有可能沒法使用exp從新編程爲HID設備。我建議在github上找到可支持設備,而後再購買一個便可。spa
開始構建環境
代碼開發者推薦咱們使用任意版本或者更高級的「Microsoft Visual Studio 2012」來編譯工具,SDCC用於構建自定義固件。
Visual Studio 下載可能須要好幾個小時,中間不能停頓,所以你須要保證本身加油足夠的時間。使人略煩的一點是,它會在你的主要驅動器上佔據好幾個G的空間,在個人SSD上佔了約10GB。
下載及編譯源代碼
爲了定製U盤,咱們須要構建與之交互的工具。可使用adamcaudill發表於Github上的源代碼。
實際上,Visual Studio(簡稱VS)提供了一個簡潔的功能,讓咱們複製了整個儲存庫。你甚至可能從github站點與VS進行交互:
在複製和打開存儲庫以後,你極可能看到三個解決方案:
· DriveCom
· EmbedPayload
· Injector
咱們只須要「DriveCom」和「EmbedPayload」,若是你可以經過如下進行編譯:
Ctrl + Shift + B
或者
Menu bar - Build - Build Solution
若是你沒法經過VS複製存儲庫,從github下載.zip文件並打開每一個解決方案中的.sln文件。
如今,DriveCom和EmbedPayload應該在…\Psychson\tools目錄中。
E:\Documents\Bad_USB\Psychson\tools DriveCom and EmbedPayload should be in the ...\Psychson\tools directory now: E:\Documents\Bad_USB\Psychson\tools
獲取一個Burner Image
一個「Burner Image」是在你的設備上傾倒與刷新固件所需。它們一般使用「BNxxVyyyz.BIN」規則來命名。用於Phison控制器的Burner Image能夠在這裏找到。
即便這個網站僅僅在俄羅斯可用也沒關係,若是你掃描「BN03」站點,你便會找到下載連接。BN意味着「Burner Image」,而03與PS2251-03對應。下面即是我提取的文件:
E:\Documents\BadUSB\Burner_Image\。
每一個Burner Image應該完成這個工做,但你可以使用最新版本——由名稱的一部分「Vyyy」來表示的。
下載Duck Encoder
「Duck Encoder」是基於Java平臺的工具,能夠將腳本轉化爲HID負載。這個是創建於黑客Hak5發開的、被稱爲「Rubber Ducky」的Bad-USD。你能夠從這裏下載到(不要忘記安裝Java)。我將其保存在 E:\Documents\Bad_USB\DuckEncoder\。
創建自定義固件
目前,咱們全部的準備工做已經完成,如今咱們能夠開始使用工具了。在這一步咱們只須要進入咱們的…\Psychson\firmware\存儲庫而後運行build.bat。若是一切順利,你即可以看到一個裏面帶許多不一樣文件的新文件夾。
fw.bin是咱們接下來會用到的文件。
寫一個腳本
你可能會問本身咱們須要使用哪一種語言寫腳本。因爲DuckEncoder是基於「Rubber Ducky」的,所以咱們使用「Duckyscript」語音。語法很簡單,更詳細的說明在這裏。
咱們須要在咱們喜歡的目錄中建立一個.txt文件:
E:\Documents\Bad_USB\DuckEncoder\script.txt
我在這裏爲大家展現一個比「Hello World」還要有趣的腳本:
你可能在想,Bad U盤會「按下」windows + r,而後這個腳本形成windows當即關閉。此外,你能夠很清楚的發現我寫的是「/」而不是「-」。這是由於咱們的「鍵盤」Bad-U盤有一個美國版本,並且在這裏windows被設置爲德語。記住這點,咱們必須變動windows佈局爲美式,而後咱們就能夠平時同樣地寫腳本,而不須要爲輸入方式而困惑。
你甚至可使用自定義腳本,而後在這裏進行一些逆向工程。
轉換爲HID負載
如今是時候開始使用windows終端-cmd。
java -jar "PATH to \duckencode.jar" -i "PATH to \script.txt"-o "\payload.bin Path"
例如:
java -jar E:\Documents\BadUSB\DuckEncoder\duckencode.jar -i E:\Documents\Bad_USB\DuckEncoder\script.txt -o E:\Documents\Bad_USB\DuckEncoder\inject.bin
咱們並不會獲得任何輸出,可是在個人示例當中應當在"E:\Documents\Bad_USB\DuckEncoder\" 中建立一個inject.bin
將有效負載嵌入固件
如今,咱們須要使用以前與VS一塊兒構建的工具。顯然EmbedPayload用於嵌入有效負載。咱們只須要在cmd中執行它便可:
"Path to EmbedPayload.exe" "PATH to payload" "PATH to the firmware we built"
個人示例當中:
E:\Documents\BadUSB\Psychson\tools\EmbedPayload.exe
E:\Documents\Bad_USB\DuckEncoder\inject.bin
E:\Documents\Bad_USB\Psychson\firmware\bin\fw.bin
這裏須要注意如今fw.bin中包含了有效負載。你也能夠經過再次執行build.bat覆蓋固件。
清除當前U盤固件
我強烈建議你複製當前U盤中的固件,以防你從此想要恢復它。若是咱們想要採起任何行動來控制咱們的U盤,可使用「tools」工具文件夾中的DriveCom
"PATH to DriveCom.exe" /drive="Drive Letter of our USB" /action=DumpFirmware /burner="PATH to our burner image" /firmware="PATH of the output.bin"
個人示例當中:
E:\Documents\Bad_USB\Psychson-master\tools\DriveCom.exe /drive=F /action=DumpFirmware /burner=E:\Documents\Bad_USB\Firmware\BN03V117M.BIN /firmware=E:\Documents\Bad_USB\originalfw.bin
刷新固件
最後咱們能夠將很是惡意的關閉負載嵌入咱們的U盤固件當中:
"PATH to DriveCom.exe" /drive="Drive Letter" /action=SendFirmware /burner="PATH to our burner image" /firmware="PATH to the firmware"
個人示例當中:
E:\Documents\BadUSB\Psychson\tools\DriveCom.exe /drive=F /action=SendFirmware /burner=E:\Documents\Bad_USB\Firmware\BN03V117M.BIN /firmware=E:\Documents\Bad_USB\Psychson\firmware\bin\fw.bin
一個成功的輸出應該是這個樣子:
DriveCom將咱們U盤切換成固件刷新自動啓動模式。如今咱們的U盤變成了咱們沒法切換模式的鍵盤,同時咱們也沒法訪問內存,但這僅僅是個小問題。在下一節中,我將着重講述如何解決這個問題。
將設備設置爲手動「啓動模式」
若是你想用U盤採起進一步的行動,你會發現不管是DriveCom仍是Windows,任何操做系統都沒法訪問它,畢竟它只是一個鍵盤。咱們須要打開U盤,而後當咱們把U盤插在電腦的時候鏈接到兩個微控制器的插針上。從上面這個角度看起來,我須要鏈接底部左邊的兩個插針:
我一般使用U盤連接器的邊緣來鏈接這兩個插針。在這種狀況下,另外一個U盤延長線能夠會很是有用。看起來或許很難,可是你會習慣的。使用任何你喜歡的工具,只要不傷害你的U盤便可。若是你作得正確,驅動便會再次出如今windows中:
而後咱們能夠再次修改咱們的驅動或者清除原始固件。
若是很不幸,你的電腦關閉了,下次再努力試一下吧!
註釋:
·Bad-USB不必定在每一個windows電腦上都適用,由於它可能沒法加載驅動程序。
·請記住,當你的U盤僞裝成HID設備時,你是沒法訪問內存的。
最後的想法
若是你擁有訪問受害者電腦的權限,Bad-USB會是一個很是有用的工具,即便windows會在加載U盤的時候崩潰。此外,因爲它是一個「鍵盤」而不是病毒,所以它逃過了AV檢測。
若是你正在考慮找一個簡單的藉口將U盤插入您選擇的電腦,請注意最好準備一個正常的U盤,萬一你被抓住了,也能夠輕鬆解圍。
此外,感謝各位的閱讀和提供的建設性反饋。若是發現任何問題,請及時讓我知道。
參考