越来越多地出现在使用带有蓝牙功能手机的朋友身边:明明自己不怎么爱发短信但是却发现自己短信费用突然增高、自己与朋友合影的照片被不认识的人登在了网上、自己的手机莫名其妙地向外拨号……到底是什么原因造成了这些问题呢?下面我们为大家讲述一则有关蓝牙安全的故事,通过这个故事,大家就知道造成这些问题的原因了。
周利是一个从事无线安全研究的技术专家,为了对蓝牙设备安全进行研究,周利决定在一家大型超市的入口执行一些攻击测试,以验证蓝牙手机中的安全问题和普遍的社会影响性。故事的另一个主角则是一部T610手机的用户,暂且让我们称他为Joey。我们希望Joey或者与Joey存在同样问题的用户能够看到这个故事,并学会故事中介绍到的技巧,保护自己的蓝牙手机安全。在开始讲述故事之前我们先给出第一个建议。
蓝牙安全建议1:不使用就不启用
如果希望保护蓝牙的安全,一个首要的原则是在不需要使用蓝牙的时候将其关闭。对于移动电话来说可以在蓝牙设置页面中将蓝牙关闭,而对于计算机上的蓝牙适配器则可以通过附带的工具软件或操作系统本身的蓝牙软件将其设置为不可连接状态。
探询蓝牙设备
发现周围的蓝牙设备
周利找了一个角落坐了下来,并打开了自己接有USB蓝牙棒的笔记本电脑,这上面运行着内置了蓝牙支持的SuSE Linux 9.3(目前大部分的蓝牙安全工具包括故事中出现的工具都运行于Linux之上)。有不少方法可以发现周围的蓝牙设备,周利首先使用了最简单的方法,使用Linux系统所提供的hcitool工具集进行探测。在命令行键入hcitool scan就可以对周围的环境执行一次快速的扫描操作。周利的运气不错,没用多长时间就发现了一个名为T610-Phone的蓝牙设备。
发现处于不可见状态的蓝牙设备
蓝牙设备可以设置三种模式,分别是可见、不可见和有限可见。这些模式决定了该蓝牙设备在何种情况下可被其它蓝牙设备发现。
由于hcitool只能发现处于可见状态下的蓝牙设备,所以周利决定利用BTScanner扫描程序检测是否存在处于不可见状态的蓝牙设备。在命令行下进入BTScanner所在目录并执行BTScanner命令。BTScanner提供了被称为brute force的暴力扫描模式,在该模式下可以发现那些处于不可见状态下的蓝牙设备。在这一轮的检测中,周利又有了新的收获,一个名为MESSIAH和一个名为Redwolf的处于不可见状态下的蓝牙设备被发现。
蓝牙安全建议2:可见模式存在安全隐患
事实上将设备设置为不可见并不会对验证受信任设备造成影响,而且可以减少不必要的安全威胁。尽管将设备设置为不可见仍然有可能被发现,但是攻击者必须进行强度高得多的扫描,相对来说设置为不可见的蓝牙设备是较难被攻击的。以故事中的情况为例,如果名为T610的设备没有设置为可见的话是不可能在这么短的时间内被发现的,特别是在人流平均每5分钟就会变化的情况下。
巧妙识别蓝牙型号
通过检测的设备名识别
在发现目标之后,可以首先从设备的名字判断设备的型号。从目标发现阶段获得的信息来看,名为T610-Phone的蓝牙设备很可能是索尼爱立信生产的T610移动电话,这是一种市场占有率很高的产品。而名为MESSIAH和Redwolf的设备则无法从名字判断出设备的情况。
通过地址识别制造商
除了设备名之外周利还获取了设备地址信息,该地址对于蓝牙设备来说是独一无二的,跟网卡的MAC地址极为相似。根据地址的前三个字节可以判断出设备的制造厂商,从而进一步判断设备的型号。举例来说,诺基亚所使用的地址前缀通常为00:02:EE、00:60:57、00:E0:03,而索尼爱立信使用的地址前缀通常为00:0A:D9,西门子则是00:01:E3。各个厂商被分配的地址范围可以从IEEE的OUI数据库进行查询,地址是http://standards.ieee.org/regauth/oui/index.shtml。对照地址规范,名为T610的设备确实是索尼爱立信制造的,而Redwolf是一部诺基亚生产的设备,MESSIAH使用的则是一个不太常见的地址前缀。
验证蓝牙设备指纹
尽管已经获得了一些信息,但是还不足以确认设备的实际型号,所以周利借鉴了PC平台上的方法,对这些发现的蓝牙设备进行了指纹识别。进行这样的识别是因为每种蓝牙设备提供的服务以及应答服务查询的方式都各不相同,所以可以通过匹配目标设备返回的信息来确认设备的型号,这种方法与NMAP程序识别计算机操作系统的方法非常类似。
在btdsd项目所属的页面http://www.betaversion.net/btdsd/db发布了很多蓝牙手机的指纹,这些指纹也包含在BluePrint工具的数据库当中。周利进入到BluePrint程序所在的目录,执行了如下的命令:sdp browse --tree 00:13:EF:F0:D5:06 | ./bp.pl 00:13:EF:F0:D5:06。这里的sdp是Linux系统下的SDP(服务发现协议)工具,可以用于查询蓝牙设备的服务状态。在对发现的所有目标执行了指纹识别之后,周利得出了如下的结论:目标设备T610返回的指纹是00:0A:D9@4063698,这说明该设备确实是一部索尼爱立信的T610手机,而目标设备Redwolf的指纹是00:11:9F@3408116,表明这是一部诺基亚7610手机。
蓝牙安全建议3:使用安全设置
在蓝牙规范中定义了三种安全模式,没有任何保护的无安全模式、通过验证码保护的服务级安全、可以应用加密的设备级安全,在适用的情况下尽可能应用较高的安全模式。事实上平均每一百部蓝牙手机中有大约10%到20%设置了1111或1234这样容易猜解的密码,设置了强壮密码的蓝牙手机可以在很大程度上避免未受权访问和一些暴力破解类型的攻击。
蓝牙手机安全攻防战
| |
(2006-01-11 12:45:29)
| |
|