发布于2025年12月5日12月5日 在Raspberry Pi 系列的第一篇博文Secure Kali Pi (2022) 中,我们设置了具有全磁盘加密功能的Raspberry Pi 4。我们提到我们可以将其作为投递箱留在某个地方。这就提出了一个问题:“如果它不在我的本地网络上,我如何连接到它来解锁它?”因此,我们现在将通过展示几种连接到我们的安全Kali Pi 投递箱的不同方法来回答这个问题。这包括: 无线802.11:作为现有网络上的客户端(仅当我们提前知道任何详细信息进行预配置时)创建一个接入点,成为一个新网络(如果我们与设备处于物理距离,我们就可以访问该网络)有线以太网:使用静态网络设置(如果我们提前知道详细信息进行预配置)DHCP 自动发现网络值(这会产生噪音)获得Internet 访问权限后,我们将使用虚拟专用网络网络远程连接回我们选择的服务器,我们也可以从任何在线位置加入该服务器,从而绕过必须在任何防火墙上进行端口转发的要求。 成分 投递箱- Raspberry Pi 4 按照我们的Secure Kali Pi 博客文章进行了预配置Wi-Fi - 我们将使用板载无线适配器(以使设备尽可能紧凑地用于我们的投递箱)但是,如果性能不足以满足您的需求,外部兼容的无线适配器可能会提供更大的范围外部服务器- 预先创建的强化OpenVPN 服务创建此内容超出了本博客文章的范围预配置无线 802.11 概述 虽然initramfs 中的有线网络不需要很多额外的东西,但无线网络有更多的移动部件。 要启用无线支持,我们需要找到: 需要位于initramfs 中的内核Wi-Fi 模块(取决于硬件)需要位于initramfs 中的Wi-Fi 固件文件(取决于硬件)无线接口名称(Kali 默认为: wlan0)用于增加功能的附加包。或者:wpa_supplicant 作为客户端连接到无线网络hostapd 为新的无线网络创建接入点此外,了解Raspberry Pi 的主机名可以帮助在目标环境中找到它并融入其中。 接口名称 首先,我们需要知道我们的无线接口叫什么。 在Kali 中,我们默认禁用可预测的接口名称,因此第一个无线设备将是wlan0。 只要现阶段没有其他硬件插入Raspberry Pi,它就应该脱颖而出: kali@kalipi:~$ ip a : lo: LOOPBACK,UP,LOWER_UP mtu 65536 qdisc noqueue 状态UNKNOWN 组默认qlen 1000 链路/环回00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 范围主机lo 永远有效_lft 永远首选_lft inet6 :1/128 范围主机 永远有效_lft 永远首选_lft 2: eth0: 广播、组播、UP、LOWER_UP mtu 1500 qdisc mq 状态UP 组默认qlen 1000 链路/以太网dc:a6:32:b0:07:ca brd ff:ff:ff:ff:ff:ff inet 192.168.42.19/24 brd 192.168.42.255 范围全局动态eth0 valid_lft 63997 秒Preferred_lft 63997 秒 inet6 fe80:dea6:32ff:feb0:7ca/64 范围链接 永远有效_lft 永远首选_lft 3: wlan0: 无载波、广播、组播、UP mtu 1500 qdisc pfifo_fast 状态DOWN 组默认qlen 1000 链接/以太网2a:54:d3:ee:62:95 brd ff:ff:ff:ff:ff:ff permaddr dc:a6:32:b0:07:cb Wi-Fi 模块 我们现在要找出需要哪些模块才能启动我们的无线设备。 在大多数ARM系统上,无线设备通常是通过SDIO连接的,不幸的是我们没有像lspci这样的命令来列出SDIO总线上的任何设备,但是我们可以使用dmesg和grep来查找: kali@kalipi:~$ dmesg | grep 无线局域网 卡利@kalipi:~$ 由于我们直接返回到提示符,这意味着在dmesg 输出中找不到“wlan”。正如我们在Kali Raspberry Pi 4 文档中提到的,我们对Raspberry Pi 设备使用nexmon 固件,因此让我们尝试搜索该固件: kali@kalipi:~$ dmesg | grep 内克斯蒙 [5.070542]brcmfmac: brcmf_c_preinit_dcmds:固件: BCM4345/6 wl0: 2021年10月3日18:14:30版本7.45.206 (nexmon.org: 2.2.2-343-ge3c8-dirty-5) FWID 01-88ee44ea 正如我们在上面的输出中看到的,brcmfmac 是向我们提供消息的驱动程序。 kmod 包中有一个方便的命令,称为modinfo,它将为我们提供有关内核拥有的任何模块的信息。 现在我们知道Raspberry Pi上的无线卡使用brcmfmac驱动程序。因此,让我们运行modinfo brcmfmac 并查看它为我们提供了哪些信息: kali@kalipi:~$ modinfo brcmfmac 文件名: /lib/modules/5.15.44-Re4son-v8l+/kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko 许可证: 双BSD/GPL 描述: Broadcom 802.11 无线LAN fullmac 驱动程序。 作者: 博通公司 固件: brcm/brcmfmac*-sdio.*.bin 固件: brcm/brcmfmac*-sdio.*.txt [.] srcversion: 913634DB95F858E921F71C1 [.] 别名: sdio:c*v02D0dA887* 取决于: brcmutil,cfg80211 intree: Y name: brcmfmac vermagic: 5.15.44-Re4son-v8l+ SMP 抢占mod_unload modversions aarch64 parm: txglomsz:最大tx 数据包链大小[SDIO](整数) parm: debug:调试输出级别(int) parm: p2pon:启用旧版p2p 管理功能(int) parm: feature_disable:禁用功能(int) parm: Alternative_fw_path:替代固件路径(字符串) parm: fcmode:固件信号流量控制模式(int) parm: rodoff:不使用内部漫游引擎(int) parm: iapp:启用对过时的接入点间协议(int) 的部分支持 parm:ignore_probe_fail:始终成功探测调试(int) 正如您所看到的,那里提供了相当多的信息。快速概述: 其中模块文件是(文件名)许可证描述作者它可以使用的固件文件别名用于确定这是否是找到设备时要使用的模块任何模块依赖项(depends)模块是否来自内核树模块的名称模块的版本魔术任何参数(params)对于我们所需要的,依赖项部分是关键。 当我们阅读modinfo 的手册页时,我们看到它提供了-F 标志来将输出限制为某些字段。由于我们当前关心依赖关系,因此让我们重新运行modinfo 并传递-F dependent ,因为这就是我们想知道的。 为了更容易理解输出,我们不会将多个模块组合在一起: kali@kalipi:~$ modinfo -F 取决于brcmfmac brcmutil,cfg80211 因此,在我们的例子中,brcmfmac 模块依赖于brcmutil 和cfg80211。因此,我们也在这两个上运行modinfo 以查看它们的依赖关系(如果有的话): kali@kalipi:~$ modinfo -F 取决于brcmutil 卡利@kalipi:~$ 请注意,该行是空的。这意味着brcmutil 没有任何额外的模块依赖项。 现在我们检查cfg80211,列出的另一个依赖项: kali@kalipi:~$ modinfo -F 取决于cfg80211 杀戮 这里我们看到cfg80211的depends对rfkill模块有一个额外的依赖。所以我们也对它运行modinfo: kali@kalipi:~$ modinfo -F 取决于rfkill 卡利@kalipi:~$ 与brcmutil 一样,rfkill 没有任何输出,因此没有依赖项。现在我们有了需要添加到initramfs: 的模块列表 brcmfmacbrcmutilcfg80211rfkill Wi-Fi 固件 我们现在需要Wi-Fi 卡的固件。和之前一样,我们使用modinfo命令,但是这次我们将搜索固件,看看模块可以使用哪些固件: kali@kalipi:~$ modinfo brcmfmac |查询固件 固件: brcm/brcmfmac*-sdio.*.bin 固件: brcm/brcmfmac*-sdio.*.txt [.] 在Linux 系统上,默认固件搜索路径为/lib/firmware/,因此上述路径的完整路径为: /lib/firmware/brcmfmac*-sdio.*.bin/lib/firmware/brcmfmac*-sdio.*.txt注意固件名称中的通配符(*)。这意味着它将匹配任何这些文件,因此我们只需包含/lib/firmware/brcm 中的所有固件,这不仅允许在我们当前的Raspberry Pi 4 上使用无线功能,而且如果我们将安全的Kali Pi SD 卡插入Raspberry Pi 3,甚至可能是Raspberry Pi Zero 2 W,我们也能够在它们上使用无线功能。 二进制文件 最后,我们需要用于连接Linux 上的无线网络的二进制文件。 典型的Kali 安装会安装NetworkManager,它可以在图形桌面环境中为我们处理无线网络。但由于我们在完整的Kali 系统可用之前就已经这样做了,所以我们需要来自wpasupplicant 包的wpa_supplicant 二进制文件。 此外,我们需要使用wpa_cli 命令检查我们的脚本是否在线,该命令也将包括这一点。 更改主机名 默认情况下,Raspberry Pi 映像的Kali 映像设置为kali-raspberry-pi 的主机名。请记住,某些环境具有主机名策略,您可能需要更改主机名以更好地融入目标网络。 要更改主机名,您需要运行systemd 软件包中的hostnamectl 命令。此外,我们需要编辑/etc/hosts 文件,系统使用该文件进行本地名称解析。 例如,如果我们要在Windows 密集环境中进行部署,我们可能需要使用类似于Windows 计算机可能使用的主机名: kali@kalipi:~$ sudo hostnamectl set-主机名DESKTOP-UL8M7HT 卡利@kalipi:~$ kali@kalipi:~$ hostnamectl 静态主机名: DESKTOP-UL8M7HT 图标名称:电脑 机器ID: fb22604534b6499887f59dd16c7dfb7f 启动ID: faa8f7e4d50e495faf34ab43a2cf86ba 操作系统: Kali GNU/Linux
创建帐户或登录后发表意见