攻击性物联网用于红队植入设备 - 第一部分
这是多部分博客系列的第一部分,研究新一代硬件植入设备,以及如何使用物联网世界的解决方案释放新能力。
背景
早在2023年4月,我深入研究了空间系统的网络安全状况。该工作的初始目标之一是尽可能多地学习,然后构建一些其他人可以动手玩的东西,以首次体验空间系统的工作原理。该目标在2023年10月的Wild West Hacking Fest上实现,其中部署了两个1u CubeSats¹,供与会者通过模拟空间系统真实威胁的指导实验室进行学习。
我为什么告诉你这个?好吧,作为CubeSat实验室开发过程的一部分,我知道从根本上讲,工作的成功或失败取决于拥有一个可靠的双向通信系统,该系统不仅能够从CubeSats接收遥测数据,而且最重要的是,还允许远程发出遥命令,而无需物理连接到CubeSat。
最终,我选择了一种利用LoRa(长距离)²调制的实现方式,因为它相对经济实惠,在美国ISM频段915Mhz运行(因此不需要任何专门的RF电路或操作许可证),并避免了严重拥挤的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,更不用说实际实施一种方法?与其他IoT协议不同——如主要操作在2.4GHz频谱的Zigbee和X-bee,该频谱人口密集,在某些情况下受到监控——LoRa使用的915 MHz频段基本上未受监控,尤其是从流氓设备的角度来看。通过简单地将现有通信选项与当前物理植入设备增强为基于LoRa的解决方案,在电波上检测的可能性大大降低。
你可能会问自己,“你不能只是监控电波寻找LoRa设备吗?”这将是一个很好的问题。答案是是的,你可以,但这并不那么简单。首先,LoRa是一种专有调制方案,需要物理硬件才能使用它。这也意味着你需要有理解LoRa调制的物理硬件来监听它。
你可以使用软件定义的无线电设备,如RTL-SDR或HackRF,通过寻找特征啁啾来检测LoRa通信的潜在存在,但仅此而已。你将无法解调它(截至目前),并且除了某事正在发生之外,真的不会有任何更多上下文。但这里是关键:记得LoRa“已成为物联网(IoT)的事实无线平台吗?”好吧,这是一个非常真实的陈述,而且很可能有一个使用LoRa的设备在你阅读本文的范围内。从电力和燃气表到“智能设备”的普及,都在使用LoRa进行通信。有整个全球广域网(WAN)使用LoRa和随后的LoRaWAN协议构建,以从IoT设备向互联网传输数据。
即使你能够检测到环境中流氓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的技术限制,如缺乏大容量存储能力和不易通过空中重新编程,我觉得需要一个具有更多能力和只是多一点“oomph”的互补设备,如果你愿意的话。
所以,这里进入了硬件植入的下一个迭代。
你上面看到的是一个相当简单的设置,全部基于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 stick计算机。这是我用于大多数测试的一个: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配置自身,并且错误输出表明可能存在布线问题。与我尝试的第二个相同。UGH。
一点故障排除后,我确定我需要使用CE1芯片选择引脚而不是CE0,出于某种原因在Pi Zero上。足够简单,我只需要从CE0上拆焊LoRaPi分线板上的焊料跳线,并将芯片选择(NSS)跳线焊盘重新焊接到头上的CE1引脚。一旦我这样做了,一切都按预期工作。
从CE1到NSS焊盘的示例焊料跳线 这是一个完成的LoRaPi模块,带有2×8针头连接到Pi。 LoRaPi分线板w/SMA 这是一个连接到带有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 ↩︎