物联网安全之MQTT协议安全( 二 )


物联网安全之MQTT协议安全

文章插图
 
可以输入messages查看topic的内容 。使用-l限制条数,-i参数查看某个单条消息内容等 。
物联网安全之MQTT协议安全

文章插图
 

物联网安全之MQTT协议安全

文章插图
 
MQTT用户名密码爆破
metasploit带有MQTT的爆破模块,经过实际测试,效果并不理想 。这里仍然以mqtt-pwn来进行介绍 。mqtt-pwn具有bruteforce功能,并带了一个简单的字典,可以爆破MQTT的用户名和密码 。
bruteforce --host host --port port -uf user_dic -pf pass_dic端口默认是1883,用户和密码字典默认会在mqtt-pwn的resources/wordlists 文件夹下 。
例如执行bruteforce --host 127.0.0.1爆破 。爆破成功后就可以使用上面讲到的内容进行连接进行操作,在连接时加上用户名和密码选项即可 。
mqtt-pwn还支持更多功能,如Owntracks (GPS Tracker)、Sonoff Exploiter等 。感兴趣的大家自己去看下文档去进行测试 。
应用中发现在实际的使用场景我们可以通过中间人劫持从流量中捕获验证信息 。以下为wireshark抓包内容 。
物联网安全之MQTT协议安全

文章插图
【物联网安全之MQTT协议安全】 
除此之外,由于目前多种语言实现了mqtt的客户端,web应用中还有webscoket的mqtt 。这使得可以通过web的网页源码或网络请求获得验证的信息 。
物联网安全之MQTT协议安全

文章插图
 
历史漏洞这里列举一些历史上MQTT的漏洞,不全仅供参考 。
CVE-2017-7296CVE-2017-7650CVE-2018-17614CVE-2019-5432CVE-2020-13849Mosquitto漏洞列表
 
探测与发现功能强大的nmap是支持MQTT协议的识别的,可以直接通过nmap进行识别MQTT协议 。另外,除上面提到的默认端口外,有的管理员会修改默认端口,这时也可以尝试1884,8084,8884等临近端口以进行快速探测,或全面增加数字等作为组合,如果针对单个目标,则可以探测全部端口 。如果进行大规模的扫描或者提升扫描效率,则可以使用masscan、zmap、RustScan等先进性端口扫描,在使用nmap进行协议识别即可 。nmap举例命令如下:sudo nmap -p1883,8083,8883 -sS -sV --version-intensity 9 -Pn --open target_ip
物联网安全之MQTT协议安全

文章插图
 
nmap也有相关的MQTT lua脚本可以使用,其MQTT版本为3.1.1 。脚本地址为https://svn.nmap.org/nmap/nselib/mqtt.lua 。
如果想要自己编写代码去进行探测,只需要根据MQTT的协议标准,通过socket即可进行收发报文 。关于MQTT协议的详细内容可以查看文档,地址为https://docs.oasis-open.org/mqtt/mqtt/
现有的网络空间测绘平台基本都实现了对MQTT进行探测 。可直接通过这些搜索引擎获取大量对外使用MQTT协议的服务 。
  • 知风
    在针对IoT和ICS探测的搜索引擎知风中搜索,直接搜索mqtt关键字,可以发现15万个对外开放的服务 。
  • fofa
    搜索关键字为protocol=mqtt,一年内有25万个对外开放 。
  • shodan
    搜索关键字:
    product:”MQTT”
    product:”Mosquitto”
shodan上搜索后共有超过11万个对外开放 。
物联网安全之MQTT协议安全

文章插图
 
通过以上的搜索结果,各引擎各有优劣 。shodan和知风针对该协议的探测均会列出topic;而fofa从发现数量上最多,但是仅识别了协议,并未列出topic;除此之外知风系统的地理位置定位精度较高,可以定位百米范围内 。
mqtt 安全建议
  1. 请勿启用匿名访问,对服务端(BROKER)设置认证,增加用户名密码验证 。
  2. 根据实际情况,优先使用加密传输数据,防止中间人攻击 。
  3. 加密payload后再进行安全传输 。
  4. 使用最新的服务端程序架设服务 。
  5. 不要将实现的代码上传到github等代码公开平台 。
 
小结写这篇文章时,网络上关于MQTT安全的文章并不多,但是通过对其了解,仍然有不少内容可以探索,比如在工业上有MQTT网关,以及众多支持MQTT的服务端软件、加上广泛的应用场景 。本文简单介绍MQTT安全的内容,还有更多的内容等待探索 。感兴趣的朋友也欢迎大家多多交流讨论 。
最后,提醒一下大家,在学习和研究过程中自己搭建服务进行学习 。请勿对网络上的目标进行测试、破坏等活动 。


推荐阅读