[教學] Raspberry Pi Zero W 如何 headless 安裝 Kali Linux
本帖最後由 javacomhk 於 2022-4-7 13:02 編輯
(1) Kali Linux 有套 "Pi-Tail" 版,是已經 patch 好 Raspberry Pi Zero W 嘅 kernel 可以 monitor wifi signal及已加上 headless 的安裝方法,下載網址為 https://www.kali.org/get-kali/#kali-arm。headless 安裝是指 Pi Zero W 不用接駁鍵盤及顯示器就可以預先安裝好系統及相關網絡設定在 SD Card 上及首次開機後可使用其他電腦或手機經網絡連接後登入及控制。
最新 Kali Linux "Pi-Tail" 版下載點
Pi Zero W
https://kali.download/arm-images/kali-2022.1/kali-linux-2022.1-raspberry-pi-zero-w-pitail-armel.img.xz
Pi Zero 2 W
https://kali.download/arm-images/kali-2022.1/kali-linux-2022.1-raspberry-pi-zero-2-w-pitail-armhf.img.xz
大家注意 Raspberry Pi Zero 2 W (kernel 5.10) 係唔支持個 kernel patch,即係用唔到個 wifi monitor。
參考 https://gitlab.com/kalilinux/build-scripts/kali-arm/-/issues/267
(2) 如果是用 Windows 版 balenaEtcher 已經可以使用 Fetch from URL 功能,在打入下載點後程式會直接下載及解壓後再 Flash 落 SD Card。建議安裝此 "Pi-Tail" 版是要使用 32GB 或以上的 SD Card,因為本身個解壓後嘅 image 檔案有齊 everything 要成 12GB,另外會自動 create 一個 1G 嘅 swap partition。
(3) 根據 Pi-Tail 的 HOW-TO,此 "Pi-Tail" 版是支持插落電腦 USB 當 Ethernet Gadget Mode,進行 ethernet 連接及控制,注意是Raspberry Pi Zero W 的 USB port 是在底板靠中間那個,底板靠外邊那個只是供電位,雖然插 USB port 也可供電。但這個方法 Windows 10/11 的 USB Gadget Mode driver 已經沒有更新,亦未必現在可以用到。插落Android 手機的USB都可能得,但現在的 Android 手機 USB 已經是 USB-C 了,而 Raspberry Pi Zero W 的是 micro USB,所以我沒 好嘅 OTG data cable (好多 microUSB 都只係充電cable,插落去係認唔到)或轉插去試,而且用 USB 連接手機個壞處就係會用快咗手機的電,手機唔可以一邊充一邊用。除了 wifi 及 USB 連接網絡外,用藍芽連接網絡都可以,但如果藍芽及 wifi 一起用就會更加食電及不穩定,所以我亦沒有試用藍芽連接。
(4) 除了用 USB 或藍芽連接外 "Pi-Tail" 版是可以用 wifi 將個 Pi Zero W 連接上網絡,而且不影響 Kali Linux 的 wifi monitor 功能,只要將 Flash 好的 SD Card,從 USB slot 取出後再插入,以便要在 SD Card 重新 mount 好後改寫有關 network 及上 wifi 的設定檔案。由於 Pi Zero W 不支持 5GHz wifi, 所以要填寫連接 2.4GHz 的 wifi 設定。
(5) 在 Windows mount 好 SD Card 後用 Notepad 打開 SD Card 上 wpa_supplicant.conf 檔案的 "home" 設定修改為你屋企的 wifi,原本這部份是- network={
- ssid="homenet"
- psk=68002fbdacc8812f89c06a2fb6542b2b1126853983a59e0076e5f56df9c5543b
- id_str="home"
- priority=2
- }
複製代碼 修改 ssid 及 psk 為以下,請留意 id_str 的內容是不用修改的- network={
- ssid="MyHomeWifi"
- psk=6ac0d834a918dfdb09c7d4581a1665f5f1969ef3967e25cd932eab7c75075d54
- id_str="home"
- priority=2
- }
複製代碼 獲取 MyHomeWifi 的 psk 密碼加密字串就是利用 linux 的 wpa_passphrase 根據你的 Wifi ssid 及密碼得到,如果你已經有另一部 Raspberry pi 就已經有此 package,亦可以在其他 Linux 機例如 Ubuntu 或 Debian 都有,或者使用 Windows 10/11 wsl 的 Ubuntu 都可以,如果在 wsl 的 Ubuntu 就要首先安裝相關的 package 軟件 sudo apt install wpasupplicant。在 Linux Terminal 打入此指令就可以得到 psk 密碼加密字串。- wpa_passphrase "MyHomeWifi" "MyPassword"
複製代碼 用 Notepad 打開 SD Card 上 interfaces 檔案的 "home" 設定由 DHCP 改為你屋企 WiFi 嘅 Fixed IP,原本這部份是修改為例如以下- iface home inet static
- address 192.168.1.79
- netmask 255.255.255.0
- gateway 192.168.1.1
複製代碼 如果不修改為 Fixed IP 而沿用 DHCP,那就要在你的 Router 看看 Pi Zero W 是什麼連接的 IP 地址了。
(6) 如果是需要將 Pi Zero W 使用手機的 HotSpot 流動熱點上網
用 Notepad 打開 SD Card 上 wpa_supplicant.conf 檔案的 "mobile-1" 設定為你手機的 HotSpot 流動熱點設定,原本這部份是- # reading passphrase from stdin
- network={
- ssid="mobile-1"
- psk=2b975ade78236c65480641296127688b223b1270e7ce175e7317b5bf6ca4795a
- id_str="mobile-1"
- priority=4
- }
複製代碼 修改 ssid 及 psk 為以下,請留意 id_str 的內容是不用修改的- network={
- ssid="Samsung S22"
- psk=6136bd9f2dced6eced7ec23dc4abed6d8dcff707a148d150ab97905facb6ca33
- id_str="mobile-1"
- priority=4
- }
複製代碼 同樣 psk 密碼加密字串是用上面講的方法,即在其他 Linux Terminal 打入指令得到- wpa_passphrase "Samsung S22" "mysecretwords"
複製代碼 用 Notepad 打開 SD Card 上 interfaces 檔案的 "mobile-1" 設定由 Fixed IP 改為 DHCP,原本這部份是- iface mobile-1 inet static
- address 192.168.43.254
- netmask 255.255.255.0
- gateway 192.168.43.1
複製代碼 修改為以下如果不修改為 DHCP,你是很難預先知道手機的內置 IP Segment。
(7) 儲存相關修改,接著就可以將 SD Card 插入 Pi Zero W 後就可以連接電源開機了,由於 Pi Zero W 很省電,一般使用流動電源(俗稱尿袋)都可以供電及使用很耐。
(8) 第一次開機後,要稍等一會初次自動設定後才會用 wifi 連接網絡。 待 Pi Zero W 連接網絡後,才用電腦 Terminal 的 ssh 去連接控制, Kali Linux ssh 的 username 是 kali ,password 是 kali,Pi-Tail HOW-TO 提供個 root password 用 wifi 係 login 唔到。
例如在屋企 wifi 下的 wsl Ubuntu Terminal 連接控制時要打指令(9) 如Pi Zero W 是用手機流動熱點連接,就要先將手機開啟流動熱點。 由於新的 Android 手機會支持 5GHz 的流動熱點,所以此類手機需要關閉 5GHz 改為 2.4GHz 的流動熱點讓 Pi Zero W 成功去連接。 當 Pi Zero W 成功連接手機流動熱點後,在手機流動熱點設定下的已連接裝置 connected device 查看 pi-tail 的 IP 地址如下截圖。

如要將 Raspberry Pi Zero W 的 "Pi-Tail" 版在街外流動使用,就要用手機網絡連接及流動電源的這個組合。
當手機顯示 pi-tail 已連接手機的流動熱點後,用 Android 手機的 Terminal App 例如 "Termux" App 或 "ConnectBot" App 連接控制時,例如打指令
如果手機沒有顯示連接裝置的 IP 地址,可以在首次用屋企 Wifi 成功登入,查詢一下個 Pi Zero W 個 hostname,有需要就改,然後開啟 mDNS(請看下面第10點內容如何開啟服務),以後就可在使用同一 wifi network segment 時用它的 hostname + ".local" 例如 pi-tail.local 代替 IP 地址。例如打指令- # 可以用 [hostname].local 去 connect,例如
- ssh kali@pi-tail.local
複製代碼
(10) 根據 Pi-Tail 的 HOW-TO,此 Kali Linux 是可以使用 VNC 連接控制的,但 Pi Zero W 行 VNC 開機用 GUI 會佔用很多資源控制會很慢。成功用 ssh 連接控制後就可以作進一步的設定及測試功能。
ssh 連接後首次 terminal 設定及測試例如- sudo apt update
- # configure timezone and locales for terminal access.
- sudo dpkg-reconfigure tzdata
- sudo dpkg-reconfigure locales
- # use raspi-config to change the boot option to console mode so as to save memory usage to avoid GUI on boot up.
- # and change hostname as required
- sudo raspi-config
- # start mDNS so that you can use hostname + ".local" instead of IP address
- sudo systemctl enable avahi-daemon.service
- sudo systemctl start avahi-daemon.service
- # find hostname
- hostname
- # mon0up will create and start up a monitoring interface "mon0" for wlan0
- sudo mon0up
- # show 2 interfaces, wlan0 and mon0
- sudo airmon-ng
- # dump the mon0 wifi signals
- sudo airodump-ng mon0
- #change root password
- sudo passwd
- #login root
- su
- #test again without using sudo under su
- mon0down
- airmon-ng
- mon0up
- airmon-ng
- airodump-ng mon0
複製代碼 此 Kali Linux "Pi-Tail" 版跟著有什麼其他用途就由你自己去 Youtube 發掘啦,我就不便在此說明。
 |
|
|