Usslab.org



物联网安全实验指导书基于MQTT协议的消息捕捉与设备控制实验一、实验目的本实验要求实验者结合课程理论中物联网相关通信协议(MQTT协议)的机理与流程,基于树莓派和LED模块进行MQTT通信最小原型系统开发;利用Wireshark工具捕捉与分析局域网中MQTT通信消息中的明文内容;在分析与抓包结果的基础上,基于移动设备上的APP模拟恶意攻击者对终端设备实施重放攻击。二、实验原理1. MQTT协议介绍MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议)是一种构建于TCP/IP协议上,采用发布/订阅(publish/subscribe)模式的轻量级通信协议。MQTT协议支持一对一、一对多、多对一等方式的消息发布与即时通信,并且在消息传输的过程中无需知道消息的负载。MQTT协议由三部分组成:发布者(publisher)、代理(broker)以及订阅者(subscriber),如下图所示。在协议轻量化方面,MQTT协议优化其数据包的设计。MQTT协议数据包由固定头、可变头、负载三部分构成,其中固定头只需要2个字节,即MQTT协议最小的数据包可以做到2个字节。在传输可靠性方面,MQTT协议提供三种QoS(Quality of Service,服务质量),包括QoS 0,QoS 1和QoS 2。通过以上两点,MQTT协议可适用于低带宽、不可靠网络中的远程传感器和控制设备。理论上,MQTT协议支持TLS加密传输,然而在默认情况下,MQTT协议还是采用明文传输消息。2. 重放攻击重放攻击(Replay Attacks)又称重播攻击、回放攻击,是指攻击者发送一个目的设备已接收过的包,来达到欺骗系统的目的,主要用于身份认证过程,破坏认证的正确性。重放攻击可以由发起者,也可以由拦截并重发该数据的攻击者进行。攻击者利用网络监听或者其他方式盗取认证凭据,之后再把它重新发给认证服务器。重放攻击在任何网络通过程中都可能发生,是物联网通信中常见的攻击方式之一。本实验通过Wireshark抓取设备间通信的MQTT数据包,提取其中关键明文内容,然后再通过移动设备的MQTT调试程序模拟攻击者实施重放攻击。三、实验设备硬件:树莓派、LED模块、笔记本电脑或者台式机;软件:Wireshark:下载地址()Mosquitto:下载地址()移动端MQTT调试助手:安卓端:MQTT Clients(下载:)IOS端:在手机APP store上下载MQTTool四、 实验步骤软件安装在树莓派中安装所需的MQTT库、mosquitto 库。安装依赖库:sudo apt-get install libssl-dev libc-ares-dev uuid-dev g++安装MQTT:pip3 install paho-mqtt 安装mosquitto及其指令:sudo apt-get install mosquitto mosquitto-clients测试MQTT功能通过以下一个简单的测试例子使学习者更加深入了解MQTT协议的订阅/发布模式。该案例中以搭载LED模块的树莓派模拟智能灯泡,然后用台式机或笔记本模拟服务器。智能灯泡通过订阅“Light”主题以接收来自服务器的控制指令。“id”为灯泡编号,“value”代表灯泡状态,其中value值“0”为关灯,“1”为开灯。在台式机或笔记本上启动mosquitto服务:mosquitto -v树莓派作为客户端通过mosquitto_sub指令订阅“开关灯”主题。server_ip指的是客户端(树莓派)IP地址。-h的含义是指定MQTT代理服务器主机。树莓派端CMD输入:mosquitto_sub -t Light -h server_ip台式机或笔记本通过mosquitto_pub指令发布“开关灯”主题中“开灯”的消息。PC端CMD输入:mosquitto_pub -t Light -h server_ip -m "{\"value\":0 }"树莓派接收指令并显示基于MQTT协议实现树莓派引脚控制下面我们通过结合MQTT协议与Python-gpio的拓展库,实现基于MQTT协议的树莓派端口控制。具体代码gpio.py见下:# -*- coding: utf-8 -*-? import paho.mqtt.client as mqttimport RPi.GPIO as GPIOimport json??# BCM GPIO编号pins = [17,18,27,22,23,24,25,4]def gpio_setup():????# 采用BCM编号????GPIO.setmode(GPIO.BCM)????# 设置所有GPIO为输出状态,且输出低电平????for pin in pins:????????GPIO.setup(pin, GPIO.OUT)????????GPIO.output(pin, GPIO.LOW)?????????def gpio_destroy():????for pin in pins:????????GPIO.output(pin, GPIO.LOW)????????GPIO.setup(pin, GPIO.IN)?????????# 连接成功回调函数def on_connect(client, userdata, flags, rc):????print("Connected with result code " + str(rc))????# 连接完成之后订阅gpio主题????client.subscribe("gpio")??# 消息推送回调函数def on_message(client, userdata, msg):????print(ic+" "+str(msg.payload))????# 获得负载中的pin 和 value????gpio = json.loads(str(msg.payload))??????if gpio['pin'] in pins:????????if gpio['value'] == 0:????????????GPIO.output(gpio['pin'], GPIO.LOW)????????else:????????????GPIO.output(gpio['pin'], GPIO.HIGH)??if __name__ == '__main__':????client = mqtt.Client()????client.on_connect = on_connect????client.on_message = on_message????gpio_setup()?????????try:????????# 请根据实际情况改变MQTT代理服务器的IP地址????????client.connect("server_ip", 1883, 60)????????client.loop_forever()????except KeyboardInterrupt:????????client.disconnect()????????gpio_destroy()然后如2中所述,在台式机或笔记本上启动mosquitt服务,然后在树莓派上运行python脚本gpio.py。最后通过在pc机中发布mosquitto_pub -h server_ip -t gpio -m "{\"pin\":num,\"value\":0/1}"以控制灯泡开关,其中num表示想要控制的GPIO号,0/1控制GPIO输出低/高电平。利用Wireshark网络抓取与分析MQTT数据包本实验将使用Wireshark数据包嗅探器()对局域网中传输的MQTT协议内容进行捕捉与分析。Wireshark是一款免费的网络协议分析器,可在Windows,Linux / Unix和Mac计算机上运行。Wireshark拥有庞大的用户群和文档完善的支持,包括:?使用说明 ()?主页 ()?详细的 FAQ页 ()安装Wireshark:可以前往上下载软件注:较新版本Wireshark自带MQTT协议,只需要在编辑-首选项-protools里设置mqtt的端口为1883(端口号一般默认1883)。运行Wireshark:在过滤器输入mqtt,就可以看到MQTT版本协议的流量内容,如下图所示。利用移动设备的MQTT调试软件实现对设备的重放攻击这个步骤利用现有Android或IOS系统可下载的MQTT调试工具,实现对树莓派设备的重放攻击。IOS系统:安装MQTT调试工具:MQTTool;手机接入局域网;伪装服务器:打开MQTTool,修改Host IP为步骤4中窃听的真实服务器IP。设置完后点击链接;伪造虚假控制指令:点击下方Publish,输入窃听来的Topic和控制指令实现对树莓派设备的重放攻击。安卓系统:安装MQTT调试工具:MQTT Clients;手机接入局域网;伪装服务器:打开软件,点击右上角的三点后点Settings,将URL改为(4)中窃取到客户端(树莓派)IP地址并加上:8080,port填写1883伪造虚假指令:点击右下方紫色按钮,输入窃听来的Topic和控制指令实现对树莓派设备的重放攻击。(注意这里的指令只用写{"pin":17,"value":0 },而非"{\"pin\":17,\"value\":0 }")通过以上步骤,本实验完成了一个最小化MQTT协议应用场景实现,并利用Wireshark和MQTT调试工具实现对MQTT协议的捕捉分析与重放攻击。五、实验要求完成基础实验和探究实验后撰写实验报告。探究实验部分制作ppt进行展示,说明组内分工。 ................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download