- A+
白话物联网安全系列文章
我们这次先说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分隔)。
发现我手机,oppo r15 的蓝牙,咱们获取更多的信息,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的密钥来说,如果在蓝牙设备每次配对时的加密过程时间增加l秒,那么,对于暴力攻击来说,它的每一次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上的承载的功能系统作为纯互联网设备进行防御(而且缺乏大量规则库),面对近场和物理的防御,现阶段没有一个好的解决办法,接下来的文章,我们开始搞漏洞和规则库吧(从物理,近场,远程这三个方向)。