能夠執行完整Linux發行版的單板計算機可以作為便攜式設備,應用於各種各樣的場景。令我驚訝的是,其中一個竟然是電腦駭客攻擊。樹莓派、樹莓派Zero或Pico等單板電腦的創意和易用性讓我震驚,它們竟然可以被用於一些潛在的惡意活動。經過一番深思熟慮,我決定開始撰寫關於這個主題的部落格文章。
本文全面介紹如何安裝、設定和設定 Raspberry Pi Zero,將其改造成便攜式駭客裝置。通電後,該裝置將啟動自訂 WiFi 端點,並可透過 SSH 或 HTTP 連線。它提供命令列介面 (CLI) 和功能齊全的圖形使用者介面 (GUI),用於配置裝置透過 USB 連接時的行為。此外,它還可以執行 shell 或自訂的 JavaScript 相容語言,以觸發鍵盤輸入、移動滑鼠以及存取所連接裝置的檔案。您還將學習如何結合觸發器、啟動範本和 HID 腳本來進行入門級漏洞:當透過 USB 連接到主機系統時,將開啟一個文字編輯器並寫入一條訊息。
本文僅供教育用途。請僅使用您擁有的電腦和設備,並注意它們可能會損壞。
最初構思這個主題的靈感來自德國電腦雜誌 CT 2023/27 上的一篇題為「糟糕的 USB:樹莓派 Zero」的優秀文章。這篇文章本身無法存取,但其連結集可以在公共網路上找到。
本文最初發表於我的部落格admantium.com 。
長期以來,我一直在思考如何撰寫有關駭客技術的文章。我特別關注的是,這方面的知識,包括具體的概念和流程,如何被用於不法活動。另一方面,透過親身經歷累積的知識,以及與之相關的透明交流,可以提高人們對關鍵危險的認識。歸根究底,這都與知識本身的問題息息相關:你使用它的目的是什麼?
物理攻擊是指將外部設備連接到目標電腦並啟動漏洞程式的過程。攻擊目標多種多樣,包括記錄電腦上的互動、讀取和複製電腦檔案或記憶體、模擬使用者互動(例如鍵盤輸入或滑鼠移動)、執行腳本以修改系統或安裝新應用程式等等。漏洞利用程式是實現目標的具體步驟,它可以是預期的電腦行為(例如註冊 USB 裝置)與電腦系統中已知或新發現的漏洞的結合。
我並非安全顧問,但從事IT工作,每天都會接觸到與安全相關的議題。將理論知識與實務經驗結合,並進一步探索樹莓派的各種精彩應用案例,最終促使我開始撰寫這個部落格系列。同時,我也覺得有必要在此聲明:本部落格內容僅供教育用途,按原樣提供。請僅在您自己的電腦系統上使用這些內容,並注意可能會對系統造成損害。
最後,請記住,本文探討的概念是以初學者的視角撰寫的。
本文所需的硬體如下:
樹莓派 Zero W(特指非 Pi Zero W)
USB加密狗(如EP-0097 )
需要組裝USB加密狗才能將Zero變成USB破解設備。我買的這個加密狗沒有附帶組裝說明書,但它的元件看起來並不難組裝。

然而,當我嘗試手動組裝時,我發現自己知識上有一個令人尷尬的漏洞。具體來說,我原以為USB適配器的連接引腳需要連接到Zero的GPI引腳。但實際上並非如此,Zero的USB介面旁邊有一些裸露的外部電路「接點」——適配器的引腳只需要接觸這些接點即可。
要正確組裝 USB 加密狗,請按照以下步驟操作:
撕掉亞克力板上的保護層
將較薄的壓克力板放在底部
將加密狗板放在頂部,使凸出引腳的背面對齊。
將較厚的壓克力板放在上面,使引腳朝外。
將樹莓派 Zero 底部面朝下放置,並將連接器引腳與觸點對齊。
小心地擰緊螺絲。
最終成品應該如下圖所示:

為了將樹莓派 Zero 變成一台駭客設備,我們將使用 Linux 發行版P4wnP1 ALOA (以下簡稱 PPA)。這是一個基於 Kali Linux 建置的客製化 Linux 發行版,並專門針對樹莓派 Zero 進行了修改。與其他作業系統一樣,安裝過程包括下載鏡像、將其寫入 SD 卡以及啟動裝置。
具體步驟如下:
請造訪P4wnP1 ALOA 發布頁面並下載最新版本(注意:不要因為發布日期是 2020 年 2 月而感到沮喪——該專案運作良好!)
開啟你選擇的影像處理軟體,然後匯入影像(我推薦Balena Etcher )。
之後,將 SD 卡插入設備,並透過 USB mini 連接埠為其供電。
啟動後不久,PPA 會建立一個自訂 WiFi,其圖示是一個奇怪的 UTF-8 編碼,名稱為:「💥 🖥️ 💥」。使用密碼MaMe82-P4wnP1連接到該 WiFi,連接建立後,您就可以開始探索各種設定選項了。
PPA 是一個特殊的 Linux 發行版,它為 Raspberry Pi Zero 提供了靈活且可執行時配置的硬體特性。它同時提供 Web 圖形使用者介面 (GUI) 和命令列介面 (CLI) 兩種設定方式。在閱讀了專案詳盡的文件並使用該工具一段時間後,我們發現 Web GUI 提供了更多功能,因此本文的後續部分將僅使用 Web GUI 進行示範。
連接到熱點後,在瀏覽器中開啟http://172.24.0.1:8000以存取設定介面:

此圖形使用者介面中的每個部分都是構成完整功能的可配置建構模組。透過一次學習一個部分,即可更清楚地了解可用功能的總數。
工具選單中的大多數選項直接修改硬體功能。
USB:在本節中,您可以定義 Zero 連接到目標裝置時的 USB 屬性。可用選項包括 ID、序號和供應商名稱,以及裝置提供的 USB 功能。它可以作為乙太網路適配器、HID 設備(鍵盤、滑鼠、自訂 HID 設備,例如指標)、序列介面和 USB 儲存設備。
WiFi:您可以啟用或停用 WiFi,變更其 SSID 和 PSK,並定義其頻道和可見性。
藍牙:藍牙協定堆疊提供多種配置選項。基本選項包括:可用性、可發現性和連接性。此外,您還可以配置其他裝置是否可以透過金鑰配對。藍牙低功耗 (BLE) 和藍牙高速 (Bluetooth High Speed) 也支援。最後,它還提供不同的藍牙網路封裝協定服務:網路存取點 (Network Access Point)、可攜式區域網路 (Portable Area Network) 和群組自群組網路 (Group Ad-hoc Network)。
網路:在此類別中,您可以設定bteth 、 usbeth和wlan0的特定網路介面設定。對於 DHCP 伺服器,您可以設定 IPv4 閘道位址、用戶端位址和子網路遮罩以及靜態主機。此外,您也可以設定僅使用靜態位址或用戶端的介面。
若要建立和管理當USB連線到主機時執行的腳本,可以使用下列方法:
觸發操作:事件與具體操作的組合。事件有多種選項:系統啟動期間的檢查點(例如 Wi-Fi AP、核心服務)、USB 設備連接或斷開連接、外部 Wi-Fi AP 加入網路、群組頻道的值,甚至 GPIO 輸入被偵測到。操作可以是寫入日誌條目、傳送值至群組頻道、設定 GPIO 輸出,以及啟動 HID 腳本或 Bash 腳本。每個觸發操作都可以設定為僅執行一次,或每次觸發時都持續執行。
HID腳本:漏洞利用腳本的核心。 PPA提供了一種與JavaScript相容的語言,用於編寫在目標機器上執行的複雜行為。如文件中所述,我們特別注重穩健且與作業系統無關的鍵盤交互,包括鍵盤佈局、按鍵時序以及等待鍵盤輸入等。此外,我們還可以控制滑鼠遊標,並結合目標螢幕的實際物理尺寸,實現像素級精確控制。最後,我們可以使用所有JavaScript概念,包括函數、迴圈、複雜條件語句等等。
PPA 設備的設定功能也由另外兩個部分完成。
事件日誌:顯示 PPA 使用期間在裝置上建立的所有已儲存日誌訊息。這些訊息會在系統重新啟動後保留,從而完整地展現 PPA 的使用方式和時間。
通用設定:最後一個選單專案的名稱可能有點誤導性——它並非控制整體圖形使用者介面,而是控制 PPA 的特定運作和啟動行為。本質上,主模板編輯器可讓您選擇和組合任何已定義的 USB、WiFi、藍牙和網路設置,以及觸發操作。透過此功能,您可以指定 PPA 的具體行為,從而使設備能夠用於其預期用途。其他選項包括重新啟動或關閉系統,以及建立或還原所有使用者自訂設定和修改的備份。
PPA 的功能非常豐富,對於初學者來說,探索設備功能可能會讓人不知所措,難以找到合適的切入點。讓我們仔細閱讀專案文件,從編寫一個腳本開始,該腳本會在主機上開啟一個文字編輯器並寫入一條訊息。目標作業系統是 Linux Ubuntu。
在圖形使用者介面中,開啟“HID腳本”標籤。此編輯器具有語法高亮顯示和遠端執行功能,方便進行測試。將以下程式碼貼到編輯器中:
layout('de'); // US keyboard layout
typingSpeed(100,150) // Wait 100ms between key strokes + an additional random value between 0ms and 150ms (natural)
//waitLED(ANY_OR_NONE); // Wait till NUM LED of target changes frequently multiple times (doesn't work on OSX)
delay(5000);
press("CTRL ALT t");
delay(1000);
type("gedit\n")
delay(1000);
type("Hello from Raspberry Pi Zero");
如您所見,這些命令直接與在目標機器上執行按鍵操作相關,並透過元參數來影響輸入過程。函數layout設定目標鍵盤,而delay函數為每次按鍵定義一個隨機時間範圍,使互動更加自然。使用waitForLed ,可以新增特定的觸發器,將腳本執行延遲到偵測到鍵盤互動時。這樣可以防止在例如使用者仍鎖定螢幕時執行腳本。
現在,執行此腳本有兩種方法。如果您已將 Raspberry Zero 直接連接到主機系統,則可以按一下「執行」。另一種方法是編寫程序,使此腳本在 Raspberry Zero 連接到電腦時執行。為此:
點擊“儲存”,為腳本定義一個合適的名稱。
選擇“觸發動作”選項卡,然後按一下“新增一個”。
在對話方塊中,啟動「啟用」滑桿,然後在觸發器「USB 裝置連接到主機」中填寫,在操作欄位中選擇「啟動 HID 腳本」選項,並填寫指定的腳本名稱檔案(另請參見下一張圖片)。

最後一步是儲存並啟動此觸發器定義:
仍在「觸發操作」標籤上,按一下「儲存」將所有活動觸發器儲存為配置。
轉到“通用設定”,然後在“主模板編輯器”中,選擇您剛剛儲存的觸發操作模板。
好了。現在你可以把U盤連接到Linux主機上,看看腳本是如何運作的。
本文的重點並非深入探討HID腳本以編寫高階漏洞程式。不過,我探討了一些思路,並在此給出我的總結:
P4wnP1 :該計畫的祖先。它包含指向影片和演示文稿的連結,這些影片和演示文稿展示了特定的漏洞利用方法。
pwnhyve :自稱為兄弟專案,專注於利用 USB 的缺陷功能以及向目標電腦注入 shellcode。
pi_zero2w另一位開發者 fork 了該專案,並建立了一個可在 Raspberry Pi Zero 2 W 上執行的版本,但該版本 Kali Linux 工具較少,且不支援藍牙。
探索 HID 腳本語言:遺憾的是,目前尚無該語言的書面文件,深入研究專案原始碼後,我也沒有發現任何易於理解的形式。考慮到相關的橡皮鴨腳本,其常見的攻擊方式是使用 HID 指令部署針對目標系統 shell 語言(Windows 系統為 PowerShell,Linux 系統為 Bash)的 base64 解碼腳本,然後執行這些腳本以安裝其他惡意軟體或後門。
HID腳本集合:此儲存庫是唯一提供範例的來源。它包含針對Windows系統竊取憑證和密碼的腳本,並提供HID和Rubber Duck腳本範例。
小型單板計算機可以作為駭客工具使用。本文展示如何將樹莓派 Zero 變成一個惡意 USB 設備,這是一種特殊的物理駭客攻擊方式,即插入的 USB 隨身碟可以在主機上執行命令。您只需要一個樹莓派 Zero、一個用於暴露 Zero USB 連接埠的 USB 加密狗以及 PPA Linux 鏡像。完成初始設定後,Zero 變成了一個可以透過 WiFi 和 SSH 存取的設備,並且所有硬體功能都擁有複雜的配置選項。若要編寫惡意 USB 攻擊程序,可以使用基於 JavaScript 的 HID 語言來指示一系列按鍵操作。本文僅展示了一個簡單的攻擊範例:開啟系統文字編輯器並輸入一則訊息。然而,更嚴重的攻擊潛力也隨之顯現:透過在目標系統上執行 shell 腳本,可以獲得系統存取權限,竊取憑證或安裝惡意軟體和後門。
原文出處:https://dev.to/admantium/turning-the-raspberry-pi-zero-into-a-hacking-gadget-2ekl