攻击性物联网用于红队植入设备——第一部分
| Tim Fowler
这是关于研究新一代硬件植入设备以及如何利用物联网解决方案释放新能力的多部分博客系列的第一部分。
背景
早在2023年4月,我深入研究了太空系统中的网络安全状况。这项工作的初始目标之一是尽可能多地学习,然后构建一些其他人可以动手实践的东西,以初步了解太空中的事物如何运作。这个目标在2023年10月的Wild West Hacking Fest上得以实现,当时部署了两个1U立方卫星1,供与会者通过模拟真实世界对太空系统威胁的指导实验室进行操作。
我为什么要告诉你这些?好吧,作为立方卫星实验室开发过程的一部分,我知道从根本上讲,这项工作的成功或失败取决于拥有一个可靠的双向通信系统,该系统不仅能够从立方卫星接收遥测数据,而且最重要的是,还允许远程发出遥控命令,而无需物理连接到立方卫星。
最终,我选择了一种利用LoRa(长距离)2调制的实现方式,因为它相对经济实惠,在美国ISM频段915MHz运行(因此不需要任何专门的射频电路或操作许可证),并且避开了严重拥挤的2.4GHz频谱部分。
对于立方卫星本身,我使用了一个商用分线板,该板使用了RFM95 LoRa模块,并且效果很好。然而,对于地面站方面,我不能只是将其中一个分线板插入计算机,因此我最终开发了一个定制PCB,该PCB使用了与商用选项相同的RFM95 LoRa模块,但还包括一个树莓派Pico W来控制模块并与计算机接口。
一切都很顺利,实验室取得了成功,但是,再次强调,为什么这很重要?好吧,让我们深入探讨……
0x01:硬件
就在2023年假期季节之前,我与一位朋友讨论了立方卫星研究的可能实际应用。考虑到立方卫星项目的各种细节,我不久就真正聚焦于使其成为可能的基础元素——通信。具体来说,是通过LoRa对远程系统进行命令和控制。就是这样;这就是关键。我知道会有一种方法从立方卫星转向,弄清楚如何将通信通道用于攻击目的。
就像我开始的大多数项目一样,我只是埋头苦干,甚至没有快速谷歌搜索一下,看看是否有其他人做过或正在做我正在思考的事情。YOLO开发,对吧??
在本文的其余部分,我将只关注硬件。我可能会提到一些软件方面,但除了功能和能力之外,我不会详细介绍任何软件细节。不过不要担心,本系列的第二部分将专注于软件和实现,所以请保持关注。
如果你还记得,在背景部分,我最终创建了一个定制PCB来促进PC与LoRa模块的通信。好吧,那是结果,但它从这里开始。它实际上是从面包板开始的,但接下来是这样的:一个带有树莓派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是一种低带宽通信,可以比传统的2.4或5.8GHz频段的Wi-Fi传输更远的距离。(注意: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字了,所以让我们回到那一点。最初的测试使用了我为立方卫星实验室设计的PCB,这些PCB对于测试目的非常有效,并且可以合理地用于现场,但由于树莓派Pico W的技术限制,如缺乏大容量存储能力且不易通过空中重新编程,我觉得需要一个具有更多能力和只是多一点“冲击力”的补充设备,如果你愿意的话。
所以,这里进入了硬件植入的下一版迭代。
你上面看到的是一个相当简单的设置,全部基于树莓派Zero W。这些微小的单板计算机已经存在很长时间了,并且有一些令人难以置信的项目使用它们构建物理植入设备,如P4wnP1——https://github.com/RoganDawes/P4wnP1
除了树莓派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模块添加到设备中。幸运的是,我偶然发现了一个有人为……让我检查我的笔记……是的,你猜对了:树莓派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 ↩︎