白话物联网安全(三):IoT设备的安全防御
今天来谈谈 IoT 设备安全防御,这次谈 IoT 的设备安全,咱们先要涉及到 IoT 的协议,现在 IoT 的协议非常多,主要涉及这些:蓝牙、Zigbee、Z-Wave、6LowPAN、线程、WiFi、GSM/3G/4G 蜂窝、NFC、Sigfox、HTTP、MQTT、CoAP、DDS、AMQP、XMPP、JMS。
我们通过协议,会发现一个头疼的问题,现在涉及到的物联网协议标准不统一,应用范围和使用场景限定了必须要使用多种感知手段继续测试,而且基础层的大量感知设备因为内存,计算能力有限,本身很难做到安全防御,比如智能汽车的 CAN 总线,只要能直接通讯,一定能控制汽车,根据这些内容,我们把可能遭受的攻击方式分为了这么三种:
物理接触:OBD、NFC、USB 等等方式。
近场控制:蓝牙、WIFI、射频、信息模块等等方式。
远程控制:云服务系统、运营商网络、3G/4G 等等方式。
那我们在考虑安全防御的时候,需要按照层级防护进行联防控制,先从物理层开始,物理接触涉及到的最核心的问题两个,第一个恶意攻击者接触到设备不能进行认证,第二认证之后没有授权,无法进行操作。
以最常见的 NFC 破解为例,进行简单的说明,M1 卡的容量为 1KB,里面包含 16 个扇区,每个扇区有四个块,一般数据区域占用 1 个扇区,0 扇区会有 uid,内部存储为 16 进制,一般扇区数据 4 位为金额位,4 或者 2 位为校验位,金额常见是取反然后进制转换。 比如 1E75 取反(XOR)57E1 然后转 10 进制。
在能处理数据开始,先要确定能够访问存储的该扇区,也就是先要对访问扇区的密码进行破解(全加密只能利用字典破解,半加密可以采用验证漏洞破解一下)。
这玩意会生成一个 XXX.dump 的文件,然后拖进去 WinHex,搞搞校验方法就可以进行修改了。
还有各种小工具可以协助计算。
整理一下,如果说有公司找我们做这种 NFC(水卡,公交卡等等)的安全防护,从上面的内容先知道要注意以下几点:
1:UID 后端校验不能重复,出现重复冻结。
2:扇区加密不能采用半加密模式,必须采用全加密模式,密码足够强壮。
3:校验位算法要足够复杂,不要局限金额位的字节长度。
上面这个例子是在使用过程中一定要接触的设备,物理层次的一些建议,但是其实很多设备的物理接触是不需要的,或者设计对应的插拔式接触产品,绑定该产品的硬件编码,做唯一认证,其他人操作均需要厂家认证,这种方式相对麻烦,但是安全和便捷总是互相冲突的。
IoT 安全防御第二层必须要考虑的安全是近场控制。近场指的是在指定范围内,可以通过某种手段去连接到与 IoT 设备同一网络环境下,对 IoT 设备进行攻击,常见设备有 wifi、蓝牙、射频等。IoT 设备与其他设备不同,现在市面上大量 IoT 设备都是只需要配置网络网关,本身认证方式采取硬编码方式,一旦入侵,只要对内网端口和地址进行扫描,嗅探数据包,一打一个准,咱们就从一个蓝牙利用的小工具(Hcitool)谈一谈。
Hcitool 集成在 kali 里面,先执行 hciconfig 检查我们蓝牙适配器是否被识别并启用,然后启动 hciconfig hci0 up。
我们只有一个蓝牙适配器,启动 hci0,然后开始找找周边的蓝牙,用手机开了一个蓝牙(蓝牙系统所使用的波段为 2.4 GHz ISM 波段。其频率范围是 2400 – 2483.5 MHz。BlueTooth 有 79 个射频信道,按 0-78 排序,并于 2402 MHz 开始,以 1 MHz 分隔)。
发现手机的蓝牙,获取更多的信息,hcitools inq。
通过 hcitools,可以执行一些命令,比如:启用 iscan 和禁用 pscan 等等操作。
Hcitools 有很多用法,直接 hcitool -h 就可以。
对于我们发现的设备,下一步可以进行嗅探。
工具:ubertooth,下载地址:https://github.com/greatscottgadgets/ubertooth;在此基础上,还需要安装一个安装 BLE 解密工具 crackle,下载地址:https://github.com/mikeryan/crackle。
针对蓝牙的安全,可以看到做这种通用的安全协议本身可以通过增加破译每个 PIN 的时间。对于加密过程来说,加密时间如果比原来增加一倍,对于暴力攻击来说,要想得到正确的 PIN 码,便要增加密钥空间的倍数。也就是说,对于 PIN 长度为 4 的密钥来说,如果在蓝牙设备每次配对时的加密过程时间增加 1 秒,那么,对于暴力攻击来说,它的每一次 PIN 的破译过程便需要增加 1 秒,所以要想得到正确的 PIN 码,对于 PIN 码长度为 4 的密钥来说,平均便需要 l10∧4/20.36*10∧4=1 小时的时间。而对于 PIN 码长度为 8 的密钥来说,平均便需要增加
l10∧8/20.3610∧4=10000 小时的时间,从而可以看出,它的安全强度己经远远要超过原来的把 PIN 长度设置到 12 位的安全强度了。对于人们己经习惯的银行系统的 6 位密码来说,平均也需要 l10∧6/20.3610∧4=100 小时的时间。如果把中间的加密过程增加到 2 秒,那么平均攻击成功的时间便需要 210∧6/20.36*10∧4=200 小时的时间(此方法选自中国论文网-浅谈蓝牙的安全)。有关近场安全,现阶段安全的做法就是加密,隐藏信号。
我们现在谈一谈 IoT 安全防御的最后一块,远程控制,远程控制就是那些我们大量直接裸漏的暴露在公网上的 IoT 设备,单单只靠 IoT 设备本身很难进行防御。
这时候我们就不得不多现在裸露在公网的 IoT 设备的目前存在 5 大安全隐患。
也就是其实我们在做防御的时候,只需要把他当成一个直接开放在公网上的脆弱的业务系统即可,也就是对身份认证、会话管理、访问授权、数据验证、配置管理、业务安全、漏洞安全等七个方面进行安全安全防御即可,在出口部署下一代防火墙+WAF+APT,就能避免其中大部分安全问题,这就回归了常规的安全,这里就不多说。
总结一下,这次安全防御主要从三个方向去谈了 IoT 设备的安全:物理、近场和远程。现在市面上的安全设备针对 IoT 的防御很多都只是把 IoT 上的承载的功能系统作为纯互联网设备进行防御(而且缺乏大量规则库),面对近场和物理的防御,现阶段没有一个好的解决办法,接下来的文章,我们开始说漏洞和规则库吧(从物理、近场、远程这三个方向)。
本文转载自公众号:FreeBuf
- 点赞
- 收藏
- 关注作者
评论(0)