美文网首页我爱编程
用MQTT攻击物联网

用MQTT攻击物联网

作者: dkive | 来源:发表于2018-06-11 16:44 被阅读0次

    1、介绍

    MQTT是Andy Stanford-Clark和Arlen Nipper创建的M2M协议。

    (MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分。该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器和制动器(比如通过Twitter让房屋联网)的通信协议。)百度百科

    MQTT

    一些协议的主要特点:

    1、发布和订阅模式

    2、简单数据包格式:二进制有效载荷

    3、该协议通过TCP运行

    4、默认端口:1883 / TCP(未加密!)

    2、发布/订阅模式

    发布/订阅模型由以下部分组成:

    出版商:向经纪商中的一个(或多个)主题发布消息。

    订阅者:订阅代理中的一个(或多个)主题并接收发布者发送的所有消息。

    经纪人:将所有消息从发布者路由到订阅者。

    主题:由一个或多个由正斜线分隔的级别组成(图01)

    图01:发布/订阅模型

    3.数据包格式

    每个MQTT数据包都包含一个固定标题(图02)。

    图02:固定标题

    固定标头的第一个字段表示MQTT包的类型。所有数据包类型在表1中列出。

    表01:MQTT数据包类型

    4. MQTT安全性

    MQTT关于安全性的官方说明

    您可以在协议的V3.1中将MQTT数据包传递给用户名和密码。可以使用SSL处理整个网络的加密,而不依赖于MQTT协议本身(值得注意的是,SSL不是最轻的协议,并且会增加大量的网络开销)。应用程序可以通过加密发送和接收的数据来添加额外的安全性,但这不是协议内置的内容,为了保持简单和轻量级。

    客户端可以通过CONNECT数据包向MQTT Broker发送用户名和密码进行身份验证。

    图03:身份验证消息(连接命令)

    CONNACK数据包是MQTT代理响应从客户端收到的CONNECT数据包而发送的数据包。CONNACK数据包头包含一个表示验证结果的“返回码”字段(例如,连接接受)。所有返回代码值列于表02中。

    表02:返回码值(CONNACK数据包)

    需要考虑的两点:

    第一:认证是完全可选的

    第二:即使正在执行身份验证,默认情况下也不会使用加密(凭证以明文传输)。MITM攻击仍然可以被执行来窃取密码。

    5.shodan统计

    我们通过Shodan来查看在互联网中可以找到多少个MQTT服务器。使用port:1883进行简短搜索会返回超过15万台主机。大多数MQTT服务器都在中国和美国找到(中国几乎占总数的60%)

    图04:Shodan找到的MQTT服务器

    但是这些MQTT服务器是否真的实现了安全性?

    创建一个Python脚本来连接Shodan发现的主机,并验证是否(至少)正在使用身份验证。我们可以检查CONNACK包中的“返回码”字段来确认。图05显示了从总共800个MQTT服务器的python脚本获得的连接结果。

    图05:MQTT身份验证结果

    6.外部连接

    你可以连接到服务器并使用简单的脚本来订阅所有主题:

    python脚本

    发现开放MQTT服务器的总结:

    1、不同种类的物联网设备

    2、传感器:光照和温度值

    3、健身器材:Fitbit

    4、健康设备:血压监视器

    5、位置服务:Owntracks

    6、家庭自动化套件:SmartThings(三星)

    图06和07中可以看到开放MQTT服务器的例子:

    图06:MQTT服务器(传感器数据) 图07:MQTT服务器(Owntracks)

    当攻击者能够通过向MQTT主题发布命令(例如关闭灯并打开车库门)来控制物联网设备时,会出现可怕的安全风险。这里显示了一个简单的python脚本来打开一个虚构的车库门(图08):

    图08虚构的车库门

    7.总结

        未来安全对于物联网与嵌入式设备来说是一个巨大的挑战,攻击将减少现实与虚拟世界之间的差距(列如,攻击者能够远程控制医疗、家庭、工控等一切智能设备),安全从业者须更加了解智能设备的新技术与协议。我想我会对MQTT的物联网中看到更多的攻击。

    相关文章

      网友评论

        本文标题:用MQTT攻击物联网

        本文链接:https://www.haomeiwen.com/subject/hwjheftx.html