蓝牙安全浅析

越来越多地出现在使用带有蓝牙功能手机的朋友身边:明明自己不怎么爱发短信但是却发现自己短信费用突然增高、自己与朋友合影的照片被不认识的人登在了网上、自己的手机莫名其妙地向外拨号……到底是什么原因造成了这些问题呢?下面我们为大家讲述一则有关蓝牙安全的故事,通过这个故事,大家就知道造成这些问题的原因了。

周利是一个从事无线安全研究的技术专家,为了对蓝牙设备安全进行研究,周利决定在一家大型超市的入口执行一些攻击测试,以验证蓝牙手机中的安全问题和普遍的社会影响性。故事的另一个主角则是一部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)

攻陷蓝牙手机
在确认了目标设备的型号之后,周利决定对T610-Phone进行攻击。因为索尼爱立信的T610有一个安全缺陷,可能导致该型号的手机受到被称为BlueSnarf的攻击,这是针对蓝牙设备最常见的攻击方法。这种攻击是基于这样一种原理:通过连接到蓝牙设备的OPP(对象交换传输规格)可以在设备之间交换各种信息,例如电话簿等等,由于厂商的原因一些型号的蓝牙设备存在脆弱点,使攻击者可以在无须认证的情况下连接到这些设备上下载设备中的资料。

周利使用Linux系统下的obexftp工具连接到T610以下载其中的信息,obexftp是用于访问移动设备存储器的工具程序。在Linux的命令控制台执行如下命令:
# obexftp -b 00:0A:D9:15:0B:1C -B 10 -g telecom/pb.vcf
这个命令能够让周利从目标T610手机中获取电话簿文件,其中-b选项意味着使用蓝牙设备进行连接,在选项开关之后跟随的是目标设备T610的地址。-B选项规定了所使用的通道情况。另外,-g选项后面的参数是所获取的文件路径和名称,将该参数替换成telecom/cal.vcs就可以获取T610上的日程安排信息。事实上,通过这种攻击方法还可以获取图片和其它数据文件,只要知道文件存储的位置和名称就能够实现。

与BlueSnarf一样,一些存在问题的手机可能会被攻击者通过AT命令操纵,攻击者除了可以下载手机中的信息之外,还可以操纵手机进行拨号、短信发送和互联网访问等活动,这种攻击被称之为BlueBug攻击。
而攻击者还可以通过一些社交工程手段在某些型号的手机里留下后门,其前提是攻击者与目标建立了合法的连接。然后攻击者可以告知目标手机连接已被关闭但依然能在目标手机用户不知情的情况下通过该链路访问目标手机,这种攻击通常被归类为BACKDOOR攻击。

另外还有一些低安全风险的骚扰性的攻击,例如匿名在蓝牙设备之间发送信息的Bluejacking攻击,现在已经形成了一些社群专门研究和总结Bluejacking攻击方面的技巧。值得一提的是,诺基亚7610有很大的可能会遭受拒绝服务攻击,因为通过OBEX对象交换协议向某些7610手机发送名字中带有冒号等特殊字符的文件可能造成蓝牙功能失效,重启手机后能够恢复正常。

蓝牙安全建议4:保持对安全更新的跟踪
安全漏洞是造成蓝牙手机安全问题的最主要原因之一,好在大部分存在安全漏洞的手机都可以通过厂商提供的更新获得解决。所以蓝牙手机用户应该了解自己的设备是否有安全漏洞并及时从厂商处获取更新。另外更多地了解蓝牙安全方面的知识并应用一些免费的蓝牙安全工具也可以有效地减少受攻击的可能。

你可能感兴趣的:(嵌入式--蓝牙)