2016年10月30日
今年早些时候,我参与了对IoT解决方案的大量安全测试。 主要目标是搜索架构和最终解决方案中的漏洞。 我们测试的解决方案被认为是消费者解决方案,意味着它们将部署在用户的家中。 在这篇文章中,我将讨论IoT解决方案的一些问题和挑战。
在你的网络课程学习IPv6的时候,你的老师说,有一天每个设备在你的房子都会有一个IP,因为我们搬到一个IP空间近乎无限的空间的IPS , 你猜是什么样! 那一天是在这里,就是物联网、物联网基本上是每天使用对象,并将它们附加到互联网。 我们看的到常见物品,例如灯光、窗帘、空调机组和不常见的物品例如冰箱甚至厕所( 有一些实际应用)
物联网的定义是“提出了互联网以后的发展,日常物品有网络连接,允许,发送和接收数据。”。
我们通常能识别五个组成部分:
如果我们看到所使用的协议,我们通常会看到,云和网关直接传输使用诸如MQ或REST之类的协议,移动到云端和移动网关是大多数REST时间。 用于控制传感器和执行器的IoT环境本身通常使用这些无线协议之一(还有更多)
这些协议中的每一个都有其优点和缺点。 在选择协议时有很多限制。 最大的问题是兼容性。 以下表格显示了协议之间的快速比较:
您可以从Blackhat这个白皮书中找到有关ZigBee安全性的更多信息。 此外,还有一篇关于西格玛设计公司的论文。
https://www.blackhat.com/docs/us-15/materials/us-15-Zillner-ZigBee-Exploited-The-Good-The-Bad-And-The-Ugly-wp.pdf
任何安全性评估需要您评估谁是对手,以及他们可能如何滥用或损害您的系统以及他们可能使用的方式。 当我做我的威胁向导时,我会考虑环境中包含的信息,设备的位置,以及它们可能造成的风险。 物联网设备的妥协可用于瞄准物联网环境,或者简单地使用僵尸网络中的机器人来攻击外部网络(或两者的组合)。 您应该评估每个执行器可以执行的操作以及某些传感器值如何影响环境。 要做到这一点,您必须对物联网生态系统的工作方式有一个很好的了解,可以使用什么类型的设备以及如何扩展。 我最近在GovWare参加的一个演讲讨论了Ransomare的事情。 主持人认为,在不久的将来,我们自己的家电可能会把我们当成人质。 例如门不打开,自动吸尘器关闭和打开或者更换温度以使食物变质:
在进行测试时,我们发现了一系列漏洞:
有许多不同的更新方式。 其中一些使用了Linux系统中发现的传统软件包管理器,其他的使用较少的传统手段,例如可以从同一网络上的计算机运行的可执行文件,以推出云环境中的更新。 这些家庭成长机制的最大问题是他们没有使用安全的方式来提供包裹。 例如,使用独立可执行文件的机制,访问可用于替换网关上的文件的隐藏API。 所有您需要做的是上传CGI文件并替换现有文件。 在这个具体情况下,网关正在bash CGI上运行,所以我们上传了自己的shell:
现在你可以猜测接下来发生了什么:
我的建议是使用现有的解决方案,如软件包管理器,或者如果您必须自己滚动,请在安装代码之前签署代码并进行验证。
SQL注入已经存在了很长时间,当然注入漏洞源于不能正确过滤输入,允许攻击者将特殊字符注入到查询中。 我们确实看到了很多解决方案,很多开发人员不认为这是NoSQL数据库的问题,或者也不知道这也可能是一个问题。 我的建议是确保您使用可以进行正确输入验证的审查库,并在您的代码库中始终如一地执行。 我不能分享任何这样的例子,但可以看一看这篇文章 websecurify 。
由于有很少的框架可以参考,如果我们看到很多架构事情就会变得容易了,但如果单个组件被破坏或损坏,可能会给您带来极大的曝光。 此外,我们看到开发人员认为没有传统用户输入可用的通信不容易受到攻击。 在一个这样的情况下,我们注意到,当拦截网关和云之间的通信时,除了网关标识符(我们可以轻易枚举)之外没有认证。 这导致我们能够注入假的遥测,但也检索其他用户的信息。 其他一些实例包括:
我的建议在这里:
我仍然想简要讨论的一个好的设计。 开发人员想要解决的问题是上面没有讨论过的一件事。 用户很想用手机远程控制他们的服务。 例如打开一个空调或打开一个清洁女士的门。 问题在于,您的网关通常位于路由器后面,不能从Internet直接访问。 一些解决方案使用端口转发,但这也需要一个dyn DNS解决方案,需要用户的大量配置。
一般企业的做法是移动应用程序将向云端发送消息,网关将从那里获取。
如果我是开发人员我也不喜欢这个主意,有那么多的单点控制。 所以他用了签名的概念来解决。 这个想法是,如果你使用你的手机改变你房子的设置,则在将邮件发布到云端之前签名。 网关然后提取它并验证签名。 这意味着在任何时候,用于中继消息的云平台的妥协可能会被滥用以进一步危及其所有网关。
他所做的是编码QR代码生成器将生成一组二维码包含ID链接的门户用户帐户,也包含私钥(手机)和自己的公钥。 钥匙在网关而不是在手机上产生的原因是因为没有用户友好的方式将其载入网关(它没有使用Web界面)。 家庭用户为目的的环境我认为它足够安全(尽管我仍然意识到从一个纯粹的安全角度来看,这可能不是最理想的)。 每当用户发送控制消息,消息签名,盖章和加密之前发送。网关将跟踪消息收到之前,防止重放攻击。
另一个我在这里看到的解决方案,以防云提供商想知道消息内部的内容,是提供一种类似的机制,使用HMAC和网关和手机之间的共享密钥。
我和许多来自大公司和小型创业公司的开发人员合作过。 我看到的最安全的解决方案是来自一家非常大的电子产品供应商和一家五人创业公司。 所以公司的规模并不意味着安全。 我确实看到某些话题回到了为什么存在漏洞:
那么你如何处理这样的事情呢? 以下是开发过程中要关注的一些重要事项:
安全会议的问题是,我们往往没有发现最需要它的人。 安全的含义一般人不感兴趣知道,这是他们常犯错误。 我曾经参加过 Riot Games的Mark Hillick的演讲。 他面临同样的问题,一般发生安全错误的开发商没有参加安全事件教育。 为了解决这个问题,他们在内部编程社区的小插槽中预订了讨论所提出的主题的安全问题。 它基本上是一个轻松的安全介绍,让开发人员更加感兴趣和了解安全性。 我们必须做同样的事情,使安全成为物联网社区会议和聚会的组成部分。
人们有兴趣将任何东西和一切都附加到互联网上,但是经常出现安全问题。 大多数问题是由于安全目标不清楚,缺乏经验和意识。 虽然有几个指导方针可用,但我们仍然处于一个阶段,安全的IoT架构的参考示例不容易获得。 最后要成功,我们必须对一般的物联网事件采取安全保障,不要指望他们来找我们,让他们对安全感兴趣和好奇,并对安全技能产生积极的影响。
以下是一些参考资料,以便您想了解更多有关物联网安全性或开始使用自己的安全解决方案:
我很想共享这个脚本,我用来通过像Burp这样的代理拦截从IoT网关到Internet的连接。 您需要的是一台笔记本电脑,其中一个连接到互联网,另一个连接到网关:
原文链接:http://cloud101.eu/iot/2016/10/30/iot-my-testing-experience.html
本文由 伤心蛙 编译
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)