红队植入物之攻击性物联网(第三部分)
这是《红队植入物之攻击性物联网》博客系列的第三部分。我们将基于上一篇文章的内容继续构建,上一篇文章可在此处找到:第二部分。如果您尚未阅读之前的博客文章,建议您先阅读后再返回此处。
在上一篇文章中,我们介绍了如何使用树莓派Pico作为USB橡皮鸭,并通过附加的LoRa调制解调器扩展其功能,以实现DuckyScript文件的无线执行。在本文中,我们将更进一步,利用迄今为止学到的所有知识,并将其提升到11级。
如果您还记得,在本系列的第一篇博客中,我展示了一个示例,即树莓派Zero W带有连接到引脚头的RM95 LoRa模块。我们将使用该设置作为本文剩余部分的硬件,以及上一篇博客中的自定义Pico/LoRa PCB之一,但这可以轻松替换为Adafruit Feather RP2040 with LoRa或类似设备。
以下是使用的硬件:
植入物硬件 –
- 树莓派Zero W
- Pi Zero的USB扩展板
- breakout板上的RFM95 LoRa模块
- 915MHz u.fl天线
操作员硬件 –
- Pico-LoRa breakout板
- 或Adafruit Feather RP2040 with LoRa:https://www.adafruit.com/product/5714
关于Pi Zero的USB扩展板的一个说明 – 有多种选择,但我的首选是Geek Pi USB扩展板,可以在亚马逊上以约11美元的价格购买:https://www.amazon.com/GeeekPi-Dongle-Expansion-Raspberry-Inserted/dp/B098JP79ZX。还有其他选项;正如我所说,我尝试了大多数,所有都适用于此目的。这些USB板的整个目标是提供通过USB Type A端口连接植入物的能力,就像连接USB驱动器一样,而不需要电缆来为Pi供电和传输数据。
在本文的剩余部分,我们将重点配置Pi Zero,使其向目标计算机呈现为USB以太网设备,并自动分配IP地址,以便植入物和主机可以通过TCP/IP进行通信。在我看来,这是使用Pi Zero作为物理植入物设置中最困难但最关键的部分。与功能有限的树莓派Pico不同,拥有完整的Linux计算机作为植入物是一个非常强大的工具,并且能够使主机与植入物通信对于最大化平台潜力至关重要。
深入配置
准备好硬件后,您需要在MicroSD卡上安装操作系统。我建议使用Raspbian以及树莓派Imager软件将操作系统安装到卡上。在执行此操作时,建议启用SSH并配置Wi-Fi,因为这将使您更容易将Pi Zero W插入主机并开始使用。
SD卡准备就绪后,插入插槽并将USB扩展板插入计算机。一段时间后,它应该启动,并且您应该能够使用安装期间设置的凭据和<hostname>.local
(其中hostname是安装期间设置的主机名)通过SSH连接到它。
连接到Pi Zero后,确保在更改配置之前安装所有更新。首先,您需要修改位于/boot/config.txt
的config.txt文件,并在末尾添加以下行:
|
|
此配置选项启用了即将利用的USB小工具。接下来,使用sudo reboot
命令重新启动Pi Zero,以便启用USB小工具。
重新启动后,重新连接到Pi Zero,您需要创建一个脚本,该脚本将完成配置USB小工具的大部分繁重工作。此处的脚本几乎是以下博客文章中内容的精确副本:https://jon.sprig.gs/blog/post/2243。我鼓励您阅读它,因为作者很好地解释了“为什么” – 不仅针对此脚本,还针对后续大部分过程。我对作者的代码进行了一些修改以简化我们的需求,但所有功劳归于Jon“The Nice Guy”Spriggs。
您需要做的是使用以下命令将以下脚本复制到位于/opt/implant.sh
的文件中:
|
|
|
|
保存该文件后,您需要使用以下命令使其可执行:sudo chmod +x /opt/implant.sh
。
接下来,您需要创建一个服务以自动运行该脚本。为此,在/lib/systemd/systems/Implant.service
创建一个名为Implant.service的文件。我使用以下命令执行此操作:
|
|
将以下脚本粘贴到文件Implant.service中。
|
|
保存该文件,然后使用以下命令启用服务:
|
|
现在,您需要重新启动植入物。
植入物重新启动并重新连接后,发出ifconfig
命令。您现在应该看到两个接口,usb0和usb1。
由于之前链接的Jon Spriggs博客文章中讨论的原因,我们配置了两个接口,但我们真正只关心usb1接口,因为它是唯一适用于现代Windows主机的接口。usb0接口用于旧系统,虽然您可能永远不会实际使用它,但我们配置了两个以防万一。
目前,这些接口没有任何配置应用,因此这是下一步。
在/etc/network/interfaces.d/
中创建一个名为usb0的文件,并使用以下详细信息填充它。您可以使用命令sudo nano /etc/network/interfaces.d/usb0
创建该文件。
|
|
保存该文件,并为usb1重复此过程,通过创建文件/etc/network/interfaces.d/usb1
并将以下内容保存到其中。
|
|
配置接口后,现在您需要配置DHCP服务以向目标主机发出IP地址。为此,我们将使用dnsmasq,您需要使用以下命令安装它:
|
|
成功安装dnsmasq后,您需要通过编辑位于/etc/dnsmasq.conf
的dnsmasq配置文件来配置它。使用以下命令,您可以创建文件并保存以下代码:
|
|
|
|
您刚刚在dnsmasq.conf文件中设置的配置相当简单,但我会提供高级概述,以便您不会盲目操作。前三行只是在dnsmasq中设置接口,但真正重要的是两个dhcp-range行,其中配置了每个接口的DHCP范围,在这种情况下,我们将DHCP范围设置为单个IP地址:192.168.25X.3。这允许目标主机接收单个已知IP地址,仅此而已!
最后一行有效地告诉dnsmasq在发出DHCP地址时不要设置网关/路由器。我们需要这样做,以便不干扰主机的路由… 目前。
接下来,您需要告诉dnsmasq不要绑定到localhost。您可以通过取消注释/etc/default/dnsmasq
的最后一行来说DNSMASQ_EXCEPT=”lo”
并保存文件来执行此操作。您可以使用命令sudo nano /etc/default/dnsmasq
执行此操作。
现在dnsmasq已配置,您需要创建一个shell脚本和一个服务,以便在接口启动后启动dnsmasq,因为dnsmasq配置需要这些接口作为配置应用的依赖项。
在/opt/dnsmasq.sh
创建一个脚本,并使用以下命令插入以下代码:
|
|
|
|
保存文件并使用以下命令使脚本可执行:
|
|
然后,您需要通过将以下代码复制到文件/lib/systemd/system/StartDNSMASQ.service
中并保存来创建一个单元文件,以便在适当的时间启动dnsmasq,使用以下命令:
|
|
|
|
接下来,使用以下命令启用新创建的服务:
|
|
现在,重新启动您的植入物。
鼓声….
一旦您的植入物重新启动,几分钟内您的主机计算机应该注册一个新的以太网设备,在我的情况下是Ethernet 4,并被指定为Remote NDIS Compatible Device。如果一切按预期工作,它应该获得IP地址192.168.255.3。
注意:您可能会收到如下警告。我没有花时间弄清楚如何避免这个,所以,是的。抱歉。此时这是预期的。
哇,如果您做到了这一步,我很高兴告诉您困难的部分已经结束!恭喜。
在本博客系列的第四部分中,我们将从这里开始,完成集成LoRa带外通信以创建终极物理植入物。
敬请关注。
您可以直接从Tim本人那里了解更多信息,参加他的Antisyphon培训课程: 太空系统网络安全导论(ICSS) 太空系统网络安全导论(ICSS):硬件版