物联网设备安全分析之MAX!

消息来源: 51CTO         消息类型: 行业新闻         发布日期:2016-12-26

物联网设备安全分析

前言

在这篇文章中,我们将为读者介绍如何对物联网设备进行安全评估。这里将会详细介绍进行评估所需的基本方法:对于不同的任务需要使用哪些工具,以及如何解决在分析过程中可能出现的问题。本文的目标读者对为对物联网设备安全分析感兴趣的朋友,对逆向工程感兴趣的读者,或者只想了解如何通过技术手段来处理未知设备的读者。

本文的重点不在于揭示某种设备的某种漏洞,而在于阐释影响各种IoT设备的安全弱点,因此,本文介绍的内容同样适用于其他的设备和场景。

分析对象

本文的分析对象是来自eQ-3公司的 MAX! Cube LAN Gateway (以下称为“Cube”)。实际上,许多产品都捆绑了该设备,比如我的加热控制系统中就带有该设备。通过该设备名称中的“Cube”不难猜出,它只是一个LAN网关,通过RF技术实现真正的“物联网设备”或“智能设备”之间的通信。在本文中,我们将重点介绍以太网通信,因为它是管理软件的主要通信方式。

搭建中间人攻击场景

为了全面地了解该设备的通信状况,我搭建了一个简单的中间人攻击场景。我在自己的系统上使用了一个USB网卡,并将其直接连接到Cube。首先,打开Cube,但是不要使用任何管理客户端或其他需要通信的软件,这样就能了解Cube自身发送了什么数据包。我们发现,它只是试图通过DHCP获得IP,然后开始解析ntp.homematic.com。

为了让Cube可以访问互联网,我已将自己的USB网卡配置为Cube的路由器。为了在不使用DHCP的时候可以通过192.168.0.222访问Cube,我把设备的IP地址设为192.168.0.1/24,并进行了如下所示的配置,以允许通过USB网卡的NAT访问互联网:

	
	
  1. sysctl net.ipv4.ip_forward=1 
  2. iptables -t nat -A POSTROUTING -o enp0s25 -j MASQUERADE 
  3. iptables -A FORWARD -i enp0s20u9u3 -o enp0s25 -j ACCEPT 
  4. iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT 

注意:设备enp0s20u9u3是连接到Cube的USB网卡,enp0s25是系统上的另一个网卡,该网卡连接到具有互联网连接的路由器上。

因为Cube会向默认的路由器发送DNS查询,所以,我们可以在机器上设置一个DNS服务器,或者直接将DNS查询转发给相应的域名服务器(例如OpenDNS服务器):

	
	
  1. iptables -t nat -A PREROUTING -i enp0s20u9u3 -p udp --dport 53 -j DNAT --to 208.67.222.222:53 
  2. iptables -t nat -A PREROUTING -i enp0s20u9u3 -p tcp --dport 53 -j DNAT --to 208.67.222.222:53 

这样一来,我们就能设法观察Cube发送的所有的数据了,例如使用Wireshark或tcpdump等工具来嗅探连接到Cube的NIC上通信数据。

发现网络中的Cube设备

为了方便管理员自动识别本地网络上的Cube设备,Cube提供了相应的网络发现功能。下面的Wireshark屏幕截图展示了由本地管理软件发送的数据包:

Wireshark屏幕截图

该软件会向23272端口上的多播组地址224.0.01发送UDP数据包。在右下方,标记出来的hexdump部分是有效载荷(eQ3Max * x00 ********** I)。这是一个所谓的身份消息,用来命令Cube向数据包的源主机报告其序列号。下面的截图显示了Cube的响应:

Wireshark屏幕截图

同样,这里响应的有效载荷也在右下侧(eQ3MaxApKMD1016788> I)做了标记。 我的设备的序列号是KMD1016788,所以一切正常。现在,我们只要发送这样的UDP数据包,就能轻松找出本地网络上所有的Cube设备。同时,我们也可以检查某个主机是否是使用单播数据包的Cube设备。

我们自己也可以发送所有这些数据包,甚至单播数据包。对于这些任务,我更喜欢使用Scapy来完成。因为有了它,我们就可以在交互式Python shell中创建、发送/接收和操作数据包,这样做是很

服务热线
025-8660 3700

微信公众号