根据Forrester的基于最新报告《2023 年物联网安全状况》 ,基于 MQTT 协议的协议 IoT 物联网设备正在成为黑客攻击的头号载体和目标。 物联网设备的物联网设安全性存在设计上的“先天缺陷” ,长期使用默认密码 ,备已极容易遭到黑客攻击。黑客号载此外,攻击随着 IoT 关键任务系统分配给与之紧密关联的体和物联网设备的角色和身份迅速增加 ,这些 IoT 设备正在成为黑客最青睐的目标高价值目标。 在2022年下半年 ,源码下载基于工业领域计算机中有34.3%受到攻击影响,协议仅2021年上半年 ,物联网设针对物联网设备的备已攻击就高达15亿次。超过40%的黑客号载 IoT 系统曾阻止过恶意对象。
1.MQTT 协议应用场景MQTT协议为大量计算能力有限 ,攻击低带宽 、体和不可靠网络等环境而设计,其应用非常广泛 。目前支持的服务端程序也较丰富 ,其PHP ,JAVA,Python,C,云计算C#等系统语言也都可以向MQTT发送相关消息 。 以下列举我们关心的几项 : 使用发布/订阅的消息模式 ,支持一对多的消息发布;消息是通过TCP/IP协议传输;简单的数据包格式;默认端口为 TCP 的1883 ; WebSocket 端口 8083,默认消息不加密; 8883 端口默认是通过 TLS 加密的MQTT协议。MQTT协议中有三种角色和一个主要概念 ,三种角色分别是发布者(PUBLISHER)、订阅者(SUBCRIBER)、建站模板代理(BROKER),还有一个主要的概念为主题(TOPIC) 。 消息的发送方被称为发布者,消息的接收方被称为订阅者,发送者和订阅者发布或订阅消息均会连接BROKER,BROKER一般为服务端 ,BROKER存放消息的容器就是主题 。发布者将消息发送到主题中 ,订阅者在接收消息之前需要先“订阅主题” 。每份订阅中 ,订阅者都可以接收到主题的服务器租用所有消息。
其 MQTT 协议流程图如下:
2.MQTT 协议的攻击点
根据 MQTT 协议和物联网全链路特性,可以扩展如下几个攻击点: 授权:匿名连接问题 ,匿名访问则代表任何人都可以发布或订阅消息。如果存在敏感数据或指令,将导致信息泄漏或者被恶意攻击者发起恶意指令;传输 :默认未加密,则可被中间人攻击 。可获取其验证的用户名和密码;认证 :弱口令问题,由于可被爆破 ,设置了弱口令 ,同样也会存在安全风险;应用:订阅端明文配置导致泄漏其验证的用户名和密码;漏洞 :服务端软件自身存在缺陷可被利用,或者订阅端或服务端解析内容不当产生安全漏洞 ,这将导致整个系统 。香港云服务器MQTT 协议攻击点的利用目前已经有针对 MQTT 的开源利用工具 ,这里主要以功能强大易用的 mqtt-pwn 工具为主 。 Github地址为 https://github.com/akamai-threat-research/mqtt-pwn。 (1) MQTT匿名访问 有一些MQTT的服务端软件默认是开启匿名访问 ,如果管理员没有网络安全意识或懒惰 ,只要对公网开放 ,任何人都可以直接访问 。 使用mqtt-pwn的connect命令进行连接。connect -h 显示帮助信息,其他命令也是免费模板如此,使用时 ,多看帮助和文档,很快就可以熟悉使用。对于开启匿名的服务,直接connect -o host 即可,当然该命令也支持输入用户名和密码。如果没有显示连接异常 ,就表示连接成功。连接成功后,可使用system_info 查看系统信息。
接下来就可以查看topic信息等内容。这时先执行discovery ,等待显示scan #1 has finished ,接下来执行scans -i 序号,在执行topics命令即可看到topic信息。其中disconvery可以使用-t参数设置超时时间 。topics命令可以使用-l参数设置查看条数。
可以输入messages查看topic的内容。使用-l限制条数 ,-i参数查看某个单挑消息内容等。
(2) MQTT用户名密码爆破 metasploit带有MQTT的爆破模块,经过实际测试 ,效果并不理想 。这里仍然以mqtt-pwn来进行介绍。mqtt-pwn具有bruteforce功能,并带了一个简单的字典 ,可以爆 破MQTT的用户名和密码: 复制bruteforce --host host --port -uf user_dic -pf pass_dic1.端口默认是1883,用户和密码字典默认会在 mqtt-pwn 的 resources/wordlists 文件夹下。 例如执行 bruteforce --host 127.0.0.1 爆破 。爆破成功后就可以使用上面将到的内容进行连接进行操作,在连接时加上用户名和密码选项即可。 mqtt-pwn还支持更多功能,如Owntracks (GPS Tracker) 、Sonoff Exploiter等 。感兴趣的大家自己去看下文档去进行测试 。 在实际的使用场景我们可以通过中间人劫持从流量中捕获验证信息 。以下为wireshark抓包内容。
除此之外,由于目前多种语言实现了mqtt的客户端,web应用中还有webscoket的mqtt 。这使得可以通过web的网页源码或网络请求获得验证的信息 。
(1) 请勿开启匿名访问。对服务端(BROKER)设置身份认证 ,增加用户名密码验证。
(2) 根据实际情况,优先使用 TLS/DTLS 加密传输数据 ,防止中间人攻击。 (3) 加密 Payload 后在进行安全传输 。 (4) 使用最新的服务端程序架设 MQTT 云服务。 (5) 不要将实现的代码上传到 Github 等代码公开平台。 |
SKG抽油烟机质量评测(全面分析SKG抽油烟机的性能与可靠性)揭开华强北高仿苹果7的真相(高仿苹果7是否值得购买?一探真伪背后的故事)红米37.6.8(超长待机、高性能、优质拍照,红米37.6.8完美融合)神舟k710c评测(体验神舟k710c,畅享高性能办公娱乐利器)推动产学研融合创新发展,紫光云工业互联网平台应用创新推广中心落地辽宁Root之后手机的变化及影响(探索手机root后的功能和风险)探索触控耳机的革新之道(解锁未来音乐体验,触摸即操控)倍轻松牌子的品质与性能评估(解析倍轻松牌子的创新科技与用户体验)X270在双核CPU中的性能表现(探索X270在双核CPU中的优势和应用场景)揭秘苹果耳机6s音质的绝佳表现(聆听细节世界,感受耳边的音乐奇迹)香港物理机云服务器b2b信息平台亿华云企业服务器源码库网站建设