红队植入式攻击物联网设备实战 - 第一部分

本文探讨了如何利用LoRa技术构建远程控制的硬件植入设备,突破传统Wi-Fi和蓝牙在距离与隐蔽性上的限制,详细介绍了硬件设计与实现过程,包括PCB设计、组件选择及实际测试效果。

红队植入式攻击物联网设备实战 - 第一部分

| Tim Fowler

这是关于研究新一代硬件植入设备的多部分博客系列的第一部分,探讨了如何利用物联网解决方案释放新能力。

背景

早在2023年4月,我深入研究了空间系统的网络安全状况。这项工作的初始目标之一是尽可能多地学习,然后构建一些其他人可以动手操作的东西,以初步了解空间系统的工作原理。这个目标在2023年10月的Wild West Hacking Fest上得以实现,部署了两个1u CubeSats¹,供与会者通过模拟真实空间系统威胁的指导实验室进行操作。

我为什么要告诉你这些?因为在CubeSat实验室的开发过程中,我深知工作的成功与否取决于是否拥有一个可靠的双向通信系统,该系统不仅能够从CubeSats接收遥测数据,更重要的是,还能够远程发出遥控命令,而无需物理连接到CubeSat。

最终,我选择了一种利用LoRa(长距离)²调制的实现方式,因为它相对经济实惠,在美国ISM频段915MHz运行(因此不需要任何专门的射频电路或操作许可证),并避免了频谱中严重拥挤的2.4GHz部分。

对于CubeSats本身,我使用了一种商业可用的分线板,该板使用了RFM95 LoRa模块,效果很好。然而,对于地面站方面,我不能简单地将一个分线板插入计算机,因此我最终开发了一个定制PCB,该PCB使用了与商业选项相同的RFM95 LoRa模块,但还包括一个Raspberry Pi Pico W来控制模块并与计算机接口。

一切都很顺利,实验室取得了成功,但再次强调,这为什么重要?让我们深入探讨……

0x01:硬件

就在2023年假期季节之前,我与一位朋友讨论了CubeSat研究的可能实际应用。考虑到CubeSat项目的各种细节,我很快就把重点放在了使其成为可能的基础元素上——通信。具体来说,是通过LoRa对远程系统进行命令和控制。就是这样;这就是关键。我知道会有一种方法从CubeSats转向如何将通信通道用于攻击目的。

像我开始的大多数项目一样,我直接一头扎进去,甚至没有快速谷歌搜索看看是否有其他人做过或正在做我想的事情。YOLO开发,对吧?

在本文的其余部分,我将只关注硬件。我可能会提到一些软件方面,但不会详细讨论任何软件细节,除了功能和能力。不过不要担心,本系列的第二部分将专注于软件和实现,所以请保持关注。

如果你还记得,在背景部分,我最终创建了一个定制PCB来促进PC到LoRa模块的通信。嗯,那是结果,但它从这里开始。它实际上是从面包板开始的,但接下来是这个:一个带有Raspberry Pi Pico W和Adafruit RFM95 LoRa模块的PCB,使用通孔排针焊接到PCB上。

未填充的通孔PCB Pico-LoRa板的第一次迭代

这种设置对我的测试目的很有效,除了成本比我想要的高之外,真的没有什么问题,每块板大约32美元左右,上下浮动。

最终,经过多次失败的PCB设计,我得到了一个使用表面贴装元件的PCB,并将成本降低到每块板约14美元,而且我学到了所有关于PCB设计和制造的知识;双赢。

完成的Pico-LoRa PCB在亚克力外壳中

酷,所以我们有了硬件,现在怎么办?我很高兴你问了。

首先,我们需要一点关于LoRa的入门知识。

“LoRa(长距离的缩写)是一种扩频调制技术,源自啁啾扩频(CSS)技术。Semtech的LoRa是一个长距离、低功耗的无线平台,已成为物联网(IoT)的事实无线平台。” – https://www.semtech.com/lora/what-is-lora

我不会用啁啾之类的细节来烦你,但你真的需要知道的是,LoRa是一种低带宽通信,可以比传统的Wi-Fi在2.4或5.8GHz频段传输更远的距离。(注意:802.11ah Halow是这里的例外。在相同的输出功率下,范围应该大致相同。)

现在,想象一下通过LoRa与设备通信的能力,而不是使用在物理植入设备中通常使用的更普遍的Wi-Fi选项。你明白我的意思吗?

我不会指名任何特定的物理植入设备,但你知道我在谈论哪种类型的设备。那些会模拟键盘和鼠标输入,自动运行命令和脚本(以及其他攻击)的设备,大多数在设备连接到主机计算机时自动进行。

这类物理植入设备工作得很好,但在使用它们时你必须考虑一些限制。最大的限制是关于设备本身的控制。对于大多数常见的植入设备,基本上有几种选项能够控制植入设备。第一种方法是让设备使用主机计算机的互联网连接,并通过该连接到可以发出控制命令并发送回设备的Web服务。这通常可以工作,但不能保证。然后,有一个类似的选项,让设备加入一个开放的Wi-Fi网络,并通过该网络回传命令和控制流量。同样,这可以工作,但依赖于开放网络的存在。还有使用蓝牙作为C2通道连接到设备的选项,但蓝牙范围有限,而且在某些情况下,环境中新蓝牙设备的存在可能立即表明有事情发生。同样的情况也适用于使用设备托管无线网络,作为操作员,你会连接到该网络以启动对设备的控制,但它在范围有限和潜在检测方面与蓝牙存在相同的问题。

LoRa从左侧登场……

通过利用基于LoRa的通信来实现物理植入设备的命令和控制能力,许多限制和潜在的检测点被消除。例如,许多成熟的组织拥有强大的无线入侵预防解决方案,可以检测到恶意接入点甚至恶意蓝牙设备。有多少人甚至想过检测LoRa,更不用说实际实施一种方法了?与其他物联网协议(如主要在2.4GHz频谱运行的Zigbee和X-bee,该频谱人口密集,在某些情况下受到监控)不同,LoRa使用的915 MHz频段基本上未被监控,尤其是从恶意设备的角度来看。通过简单地将现有通信选项与当前物理植入设备与基于LoRa的解决方案增强,在电波上被检测的可能性大大降低。

你可能会问自己,“你不能只是监控电波中的LoRa设备吗?”这将是一个很好的问题。答案是是的,你可以,但这并不那么简单。首先,LoRa是一种专有调制方案,需要物理硬件才能使用它。这也意味着你需要有理解LoRa调制的物理硬件来监听它。

你可以使用软件定义的无线电设备,如RTL-SDR或HackRF,通过寻找特征性的啁啾来检测LoRa通信的潜在存在,但仅此而已。你将无法解调它(截至目前),并且除了知道有事情发生之外,真的没有更多的上下文。但这里的关键是:还记得LoRa“已成为物联网(IoT)的事实无线平台”吗?嗯,这是一个非常真实的陈述,而且很可能在你阅读本文的地方范围内有一个使用LoRa的设备。从电力和燃气表到“智能设备”的普及,都在使用LoRa进行通信。有整个全球广域网(WAN)使用LoRa和随后的LoRaWAN协议构建,以从物联网设备向互联网传输数据。

即使你能够检测到环境中存在恶意LoRa设备,你也将面临隔离、通信以及能够查看通过这个带外通道发送的数据的艰苦战斗。假设你能够识别流量,你需要将LoRa无线电模块配置到确切的设置,如扩频因子(SF)、编码率(CR)和带宽,以查看数据流的内容。然后,你还需要暴力破解确定数据发送到的节点地址——幸运的是,只有255个选项。最后,如果你能够用所有这些参数微调你的无线电,你可能会面临加密数据。再次,祝你好运。

你最好只是尝试找到恶意设备,而不是试图查看数据流。是时候去猎狐了。(https://en.wikipedia.org/wiki/Transmitter_hunting)

不用说,检测设备是否使用LoRa可能非常困难,更不用说连接到组织资产之一的恶意设备了。明白了,用当前工具难以检测。但为什么还应该使用LoRa?再次,我的读者朋友,另一个极好的问题!

简短但长的(双关语)答案是范围。我不会用无线电信号传播与频率关系的物理来烦你,但种植一个设备然后远程控制它而不需要靠近所述设备的能力有点重要。不想被抓住在秘书办公室外试图运行攻击,对吧?

这就是LoRa可以发光的地方。2023年7月,LoRa通信旅行并被接收的新世界纪录距离是830英里。https://www.thethingsnetwork.org/article/new-lora-world-record-1336-km-830-mi

明白,这远非常态,但这是世界纪录Wi-Fi连接的约4.3倍增加。与Wi-Fi相比,使用约4.3倍的增加对于真实世界的日常经验可能有点高,但在我的测试中,距离的3倍改进是相当标准的。现在,我并没有以任何方式执行非常科学的实验来确定这一点,而是使用“粗糙地开车沿路看信号何时丢失”的方法。你的里程可能会有所不同,但在大多数正常情况下,即使是基本线天线的小型LoRa模块也足够强大,使其信号能够逃出建筑物,进入停车场,以及更远的地方。

对于室内的设备,我能够从接近500米远的地方控制一个植入设备。耶物理!

让我们回顾一下:用LoRa模块修改的物理植入设备产生了一个更长距离的隐蔽通信通道来控制所述植入设备。太好了。

自从我谈论硬件以来,已经大约1000字了,所以让我们回到那一点。最初的测试使用了我为CubeSat实验室设计的PCB,这些PCB对于测试目的非常有效,并且可以合理地用于现场,但由于Raspberry Pi Pico W的技术限制,如缺乏大容量存储能力且不易通过空中重新编程,我觉得需要一个具有更多能力和更多“冲击力”的互补设备,如果你愿意的话。

所以,这里进入了硬件植入的下一代迭代。

你上面看到的是一个相当简单的设置,全部基于Raspberry Pi Zero W。这些微小的单板计算机已经存在很长时间了,并且有一些令人难以置信的项目使用它们构建物理植入设备,如P4wnP1 – https://github.com/RoganDawes/P4wnP1

与Raspberry Pi Zero W一起,有一个USB On-the-go(OTG)分线板,允许你将Pi Zero安装到它上面,反过来,你得到一个全尺寸USB type A端口,允许你将整个设备插入PC USB端口以为设备供电,并使用连接到的主机执行攻击,如击键和鼠标点击注入攻击(以及更多)。本质上,它变成了一个USB棒计算机。这是我用于大部分测试的一个:https://www.amazon.com/dp/B098JP79ZX?psc=1&ref=ppx_yo2ov_dt_b_product_details

我有点尴尬地说,在跳进这个兔子洞之前,我不知道这些东西存在。但它们是极其简单的PCB,使用pogo针或SMD弹簧触点来接触Pi Zero底部的测试点。太聪明了!

最后,也是更关键的部分,是将LoRa模块添加到设备中。幸运的是,我偶然发现了一个有人为……让我检查我的笔记……是的,你猜对了:一个Raspberry Pi Zero和一个LoRa RMF95模块设计!!LoRaPi分线板的细节可以在这里找到:https://digitalconcepts.net.au/pcbs/index.php?op=lorapi https://digitalconcepts.net.au/pcbs/content/images/lorapi/LoRa%20Pi%20Zero%20Mk%202.jpg https://digitalconcepts.net.au/pcbs/content/support/lorapi/LoRaPi-0-16%20Top.png

我立即下载了设计文件并发送了10个PCB的订单,等待它们到达。一旦它们最终从中国到达,我拿出放在桌子上的RFM 95模块带,开始组装几个。

在组装说明中,提到了一个基本配置,如果你计划复制这个设置,那就是你需要的全部。PCB,LoRa模块,2×8排针,和一个天线连接器(SMA或u.fl)。相当简单的东西。

在焊接完第一组板并将它们连接到Pi Zero后,我无法让它们工作。无线电就是无法通过SPI配置自己,并且错误输出表明可能存在布线问题。我尝试的第二个也是如此。唉。

经过一些故障排除后,我确定我需要使用CE1芯片选择引脚而不是CE0,原因是在Pi Zero上。足够简单,我只需要从CE0上脱焊LoRaPi分线板上的焊料跳线,并将芯片选择(NSS)跳线焊盘重新焊接到排针上的CE1引脚。一旦我这样做了,一切都按预期工作。

从CE1到NSS焊盘的示例焊料跳线

这是一个完成的LoRaPi模块,带有2×8针排针连接到Pi。 带有SMA的LoRaPi分线板

这是一个连接到带有5dBI天线的Pi Zero W的LoRaPi模块示例。

如果你构建其中一个设备来玩,我确实建议你使用2×8针排针,这样如果你想要重新利用Pi,可以轻松地从Pi上移除模块。否则,如果你想要制作一个更永久的版本,你可以直接将模块焊接到Pi的排针上。我发现排针上的黑色塑料部分足够高,为LoRaPi模块提供了间隙,使其与它齐平而不接触Pi Zero W上的第二个Micro USB端口。我确实在PCB底部贴了一层Kapton胶带以防万一,但真的不需要。

当直接焊接到Pi Zero时,刚好足够的间隙

所以,你有它,一个带有USB OTG和LoRa RFM95模块的Pi Zero W,用于带外通信!

请继续关注本系列的下一篇博客,专注于配置和使用RFM95 LoRa模块的软件。

脚注 https://en.wikipedia.org/wiki/CubeSat ↩︎https://en.wikipedia.org/wiki/LoRa ↩︎

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计