如何进行物联网漏洞评估?

信息安全 Web应用程序 渗透测试 脆弱性 硬件
2021-08-16 04:17:19

第一:这不是那些“我如何开始黑客攻击?”中的一个。问题,但更多的是“我如何开始测试特定设备?”。

我的学士论文的一部分是对在另一篇 BSc 论文中实施的物联网设备进行漏洞分析/评估,并考虑到安全性,并提供可能的解决方案或改进。应用 Kerckhoffs 原则,我可以完全访问文档、源代码,甚至还提供了一个测试客户端,让我根据文档设置网络服务器。

我该如何进行?
据此,我们有各种步骤进行全面评估。

  • 发现
  • 漏洞扫描
  • 漏洞评估
  • 安全评估
  • 渗透测试

系统
三个主要主题组件已经确定:

  1. RFID阅读器/标签
  2. 微控制器客户端,(Arduino /w Ethernet Shield)
  3. 后端系统

提供更好图片的附加信息:
1)仅使用 rfid 标签的 ID(未经身份验证的授权),标签克隆/欺骗可能。考虑是否可以将其与专有的门锁系统集成,因为使用相同的 rfid 标签,因此系统具有用户身份验证。

2)Arduino Uno作为串口和读取rfid标签的接口,使用加密库对ChaCha20-Poly1305加密/认证流量到后端,预共享密钥,定期生成新的会话密钥,我将实现一个模拟通信的小程序串行端口。

3)后端有Webserver(Apache),应用服务器(django)和数据库(sqlite,因为它仍然是一个测试系统)。提供 Web 界面作为管理工具,使用最先进的 TLS。

当前状态

我目前坚持如何以有条不紊和结构化的方式/流程来解决这个问题。
我对攻击 (1) 并没有太大希望,因为除了
在 (2) 中的克隆/欺骗之外,我真的看不到那么多攻击向量,因为它是一个 Arduino,使用了 99% 的容量来实现它任务。我已经在源代码上使用了ffectfinder,但它只显示了一些错误(检查数组大小,如果复制等),这些都是在代码中处理的。没有动态内存分配发生,从数组中读取是由数组大小等严格定义的。假设正确实现了自带安全 RNG 的 ChaCha20 库,我在这里看不到任何东西。
最后(3)我认为最有潜力的地方。在 Debian 9 上运行的 Apache 网络服务器。网络服务器经常配置不正确/不是最新的,这会打开攻击向量。应用服务器?不确定那个。Webclient,取决于实现,使用 Django 构建,也可能是更易受攻击的组件之一。

TL;DR:我有一个 IoT 设备,由多个组件(微控制器、带 Web 接口的后端 Web 服务器)组成,但我一直在思考如何有条不紊地进行正确和彻底的漏洞评估。

问题

  • 解决这个问题的正确方法是什么?有标准/框架吗?
  • 如何彻底测试 (1) 和 (2) 的漏洞?因为有渗透测试指南 (3)

编辑

我保留原样的背景信息。主要问题是:

对多组件物联网设备进行漏洞评估的正确方法是什么?

2个回答

TL;博士:

  1. RFID 处理(您对系统的主要输入)
  2. 调试接口(将此与所有其他步骤结合起来)
  3. 网络应用
  4. 加密的东西
  5. 源代码审计
  6. 侧通道和故障注入(这有点难)

1. 射频识别

我将从 RFID 部分开始(查看 proxmark3)。arduino 如何处理 1KB 的 ID?它应该爆炸。它甚至可能在某处抛出一些记忆。

2.调试接口

调试接口。怎么强调都不过分。例如,查看 One-Wire 调试协议和我使用的其他接口。尝试获取内存转储。

3. 网络应用

启动钢丝鲨或burpsuite,看看发生了什么。错误配置通常不是自定义 Web 应用程序的最大问题。

4. 加密的东西

请记住,arduino 是一种低功耗设备,其马力几乎与用笔和纸进行计算相同——这两个使用密码学的效果不好。尤其是RNG部分。如果它不是硬件(例如带有反向偏置晶体管的白噪声发生器),它很可能是垃圾。看看每个发生的加密是如何实现的,我相信你会找到一些东西。

5.源代码审计

不用说,您必须检查源代码。我把它放在那里,因为当你开始检查源代码时,你已经对发生了什么、时间和原因有了一个很好的了解。我认为您已经在之前的阶段检查了各种位,但在这个阶段尝试更彻底

6. 侧信道和故障注入

最后但同样重要的是,我会尝试错误注入和侧通道攻击。这种简单架构上的电压和时钟故障以及功率分析非常容易(例如与 ARM A 系列处理器相比)。ChipWhisperer 将非常有用!我认为您甚至有两步管道,因此您可以跳过整个说明:P

注意:在评估过程中尝试做很多笔记(你是如何做的,或者系统是如何工作的)以及有趣/奇怪的东西的图片和截图。没有“太多笔记”这回事!

取决于设备的功能。它必须以某种方式进行通信。它有网络接口吗?尝试端口扫描。

“物联网设备”就像一台迷你电脑。您的攻击向量必须相同。它必须接收某种输入。操纵输入。