第一:这不是那些“我如何开始黑客攻击?”中的一个。问题,但更多的是“我如何开始测试特定设备?”。
我的学士论文的一部分是对在另一篇 BSc 论文中实施的物联网设备进行漏洞分析/评估,并考虑到安全性,并提供可能的解决方案或改进。应用 Kerckhoffs 原则,我可以完全访问文档、源代码,甚至还提供了一个测试客户端,让我根据文档设置网络服务器。
我该如何进行?
据此,我们有各种步骤进行全面评估。
- 发现
- 漏洞扫描
- 漏洞评估
- 安全评估
- 渗透测试
系统
三个主要主题组件已经确定:
- RFID阅读器/标签
- 微控制器客户端,(Arduino /w Ethernet Shield)
- 后端系统
提供更好图片的附加信息:
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)
编辑
我保留原样的背景信息。主要问题是:
对多组件物联网设备进行漏洞评估的正确方法是什么?