红队植入攻击:打造强大IoT硬件植入设备(第三部分)
| 作者:Tim Fowler
这是《红队植入攻击:打造强大IoT硬件植入设备》博客系列的第三部分。我们将从上一篇文章结束的地方继续构建,上一篇文章可以在这里找到:第二部分。
如果你还没有阅读之前的博客文章,我建议你先阅读,然后再回到这里。
在上一篇文章中,我们介绍了如何使用Raspberry Pi Pico作为USB橡胶鸭子,并通过附加的LoRa调制解调器扩展其功能,以实现DuckyScript文件的空中执行。
在这篇文章中,我们将更进一步,利用我们迄今为止学到的所有知识,并将其提升到11级。
如果你还记得,在本系列的第一篇博客中,我展示了一个示例,即Raspberry Pi Zero W带有连接到头针的RM95 LoRa模块。
好吧,我们将使用该设置作为本文剩余部分的硬件,以及上一篇博客文章中的自定义Pico/LoRa PCB之一,但这可以轻松替换为Adafruit Feather RP2040 with LoRa或类似设备。
以下是将要使用的硬件:
植入硬件 –
- Raspberry Pi Zero W
- Pi Zero的USB Dongle板
- breakout板上的RFM95 LoRa模块
- 915MHz u.fl天线
操作员硬件 –
- Pico-LoRa Breakout板
- 或Adafruit Feather RP2040 with LoRa: https://www.adafruit.com/product/5714
关于Pi Zero的USB Dongle板的一个说明 – 有多种选择,但到目前为止,我首选的版本是Geek Pi USB Dongle Expansion Board,可以在Amazon上以约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作为物理植入物设置中最困难但最关键的部分。与相当有限的Raspberry Pi Pico不同,拥有完整的Linux计算机作为你的植入物是一个非常强大的工具,并且能够使主机与植入物通信对于最大化平台的潜力至关重要。
深入配置
一旦你的硬件准备就绪,你需要在MicroSD卡上安装操作系统。我建议使用Raspbian以及Raspberry Pi Imager软件将操作系统安装到卡上。在执行此操作时,建议你启用SSH并配置Wi-Fi,因为这将使只需将Pi Zero W插入主机并开始使用变得更加容易。
SD卡准备好后,插入插槽并将USB Dongle插入计算机。一段时间后,它应该启动,你应该能够使用在安装过程中设置的凭据和
一旦连接到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培训课程中了解更多: Introduction to Cybersecurity in Space Systems (ICSS) Introduction to Cybersecurity in Space Systems (ICSS): Hardware Edition