秦玉海+陈杰+康小彤
摘 要 随着个人蓝牙设备的普及,蓝牙通过公共频段进行信息传输的方式使得蓝牙安全问题显得越来越突出。同时,基于蓝牙技术实现通讯的软件,如FireChat聊天软件等大量兴起,一方面成为公众推崇私密通信的新宠,另一方面却成为不法分子逃避监管的工具。而由于蓝牙技术短时间内的快速发展,加之嗅探的困难性,很少有设备能够实现对蓝牙通信数据的监听或是注入。本文重点关注蓝牙底层协议,研究数据包结构和蓝牙设备微微网的建立过程,分析蓝牙嗅探工作中存在的难点,并借助现有的软硬件证明蓝牙嗅探的可行性。
关键词 蓝牙;嗅探;协议;微微网
中图分类号 TP3 文献标识码 A 文章编号 1674-6708(2017)194-0072-02
近年来,蓝牙技术享有前所未有的声望和发展速度,在移动设备上的覆盖率更是惊人。事实上,蓝牙已经成为无线配件及智能设备的主要连接方式[1]。不幸的是,最近研究表明,蓝牙所采用的两级流加密模式存在许多缺陷,用户隐私受到潜在危胁。另一方面,则是利用蓝牙传递信息的新型通讯软件被用于违法犯罪活动中,严重影响社会和谐安定。面对蓝牙技术的发展,应当积极采取应对措施,加强在蓝牙嗅探方向的研究。
1 技术背景
1.1 蓝牙
蓝牙技术是一种支持短距离的无线数据交换方式。一个主设备和一个或多个从设备建立的蓝牙网络被称为微微网(Piconet)。蓝牙技术因其低功耗、低成本、灵活性强而被广泛应用于短距离无线通信中。根据实用需求,蓝牙设备的最大发射功率也被分为三个等级[2],而其覆盖范围也随着功率而变化。
目前,蓝牙技术联盟负责监督蓝牙规范的研究,管理认证项目,并维护商标权益[3]。
1.2 无线电层
蓝牙协议栈最底层被称为无线电层。蓝牙技术采用2.4GHz工作频段,该频段是全世界公开通用的无线频段(ISM Band),无需付费和申请,保证了蓝牙可以获得更大的使用范围。蓝牙使用跳频技术,并以1 600跳/s的速率进行跳频,传输的数据将会分割成多个数据包,通过指定的79个蓝牙信道分别传输数据包,每个信道占1MHz,蓝牙的实际使用波段为2 400MHz~2 483.5MHz(包括防护频带)。这种方法导致了选择性拦截的困难,因为攻击者往往需要知道连续的跳频序列。
1.3 基带层
基带层负责管理物理连接,确保由蓝牙设备组成的微微网内各单元之间由射频构成的物理连接。每个蓝牙设备都有一个唯一的48位蓝牙设备地址(BD_ADDR),分为3个部分,包括24位的低端地址部分(LAP)、8位的高端地址部分(UAP)和16位的非有效地址部分(NAP)。该地址可以说是蓝牙技术的运算核心,负责几乎所有蓝牙正常工作的控制参数,如密钥、跳频序列都是由此地址计算得到的。
1.4 数据包结构
所有的蓝牙数据包都按统一的结构进行封装,由访问码、报头和有效载荷组成。一个有效的数据包必须包含访问码,访问码用于数据同步和DC偏移补偿。一个最简单的蓝牙数据包,如用于寻呼、查询和相应过程的ID包,可以仅包含一个68bit的访问码。蓝牙通信过程中有一个非常重要的包——跳频同步(FHS)包,它包含蓝牙设备的BD_ADDR和时钟信息。
1.5 连接的建立
为进行蓝牙数据传输,必须先建立连接。首先,主设备会广播发送ID包作为查询。此时所使用的是79个蓝牙信道中的32个广播信道。从设备收到这个包后,会发送一个FHS包,其中包含了从设备的BD_ADDR和时钟信息。收到FHS包的主设备进入寻呼状态,并按照从设备的跳频序列计算出特定的应答时间,发送ID包。从设备会固定间隔地扫描外部寻呼,在收到主设备的应答ID包后,响应该应答,发送ID包。主设备收到从设备ID包后,发送FHS包确定连接的跳频序列。最后,主从设备分别发送ID包和FHS包进行验证,建立连接。
在微微网中,所有设备共享主设备的时钟,以312.5?s为一个时钟周期,两个周期构成625?s一个时间槽。通常情况下,主设备都会从双数槽传输数据,从设备从单数槽传输数据。
2 蓝牙嗅探方案
2.1 蓝牙嗅探的难点
蓝牙嗅探的第一个障碍就是截获蓝牙跳频序列。想要获得一个完整的蓝牙数据传输需要监听所有的79个蓝牙信道,必须拦截和过滤获得完整的数据包,这就要求必须知道正确的蓝牙跳频序列。获得蓝牙跳频序列的方法有两个,一种是依靠强大的软硬件设备,另一种方法需要等待设备重新建立连接,并从建立连接的数据包中获得跳频序列。
另一个问题是常见蓝牙硬件基于数据包的访问码自动进行过滤。由于过滤行为发生在硬件层面,无法通过上层软件的设计来解决,必须依靠相应的硬件设备才能解决该问题。
2.2 蓝牙抓包工具Wireshark
Wireshark作为一款常用的抓包工具而被广泛使用。而1.12以上及版本的Wireshark中增添了蓝牙协议标准,意味着可以通过Wireshark对捕获的蓝牙数据包进行分析,为嗅探工作提供了很大的便利。同时,Wireshark也提供了监听本机蓝牙接口的功能,能够监听与本机相连的蓝牙设备。图1为用Wireshark抓取的蓝牙数据包信息。
图1中展示的是计算机与蓝牙耳机建立连接过程中的部分数据包。编号27为计算机作为主设备广播发射的一个数据包,查询附近的蓝牙设备。编号28至编号31都是蓝牙耳机对计算机的查询响应,除编号28外的三个数据包中都含有耳机的BD_ADDR。自此,计算机与蓝牙耳机通过互相发送数据包,逐步建立蓝牙连接。
2.3 蓝牙无线开发平台Ubertooth
Ubertooth One是由Ubertooth项目组设计提供的一款用于蓝牙研究的硬件。Ubertooth是一个开放源代码的2.4GHz无线开发平台,适用于蓝牙监测。Ubertooth One同样通过USB接口与计算机相连。
利用Specan UI工具能够直观地观测到实时的蓝牙频谱信息,如图2所示。在图2的观测中存在一个与手机相连的蓝牙耳机。
可以发现,活跃的无线信号主要集中在2 403Hz到2 446Hz之间,意味着该手机与蓝牙的数据传输主要集中在这些信道上。另外,2 402Hz、2 426Hz、2 480Hz为固定的广播信道,用于对未连接设备间发送广播数据,连接建立和发现远程设备。这3个信道在频谱上也有明显的特点。
Ubertooth One也能支持选择要监听的信道,或是捕获蓝牙数据包等功能。捕获的蓝牙数据包可以通过Wireshark等软件进行分析。通过Ubertooth One发送蓝牙数据包目前为止还是不可能的,意味着不能使用Ubertooth One實现蓝牙数据包的注入操作。
3 结论
蓝牙嗅探方案的实现,目前还存在不少的难点。另一方面来看,过高的门槛也杜绝了大量不法分子利用蓝牙盗取公民信息的企图。但是,诸如FireChat之类的,通过蓝牙进行通信的软件常常被应用在违法犯罪活动中,已经严重危害了公共安全。深入研究蓝牙技术,积极研究蓝牙嗅探方案,不但能解决当前问题,更为将来的蓝牙安全问题做好应对准备。
参考文献
[1]Albazrqaoe W, Huang J, Xing G. Practical Bluetooth Traffic Sniffing: Systems and Privacy Implications[C]//International Conference on Mobile Systems, Applications,and Services.ACM,2016:333-345.
[2]李旭辉,梁晓炜.短距离无线通信技术在信息传输中的应用[J].信息通信,2017(2).
[3]高宋伟,徐洪智,黄艳,等.基于Android的蓝牙通信程序设计[J].电脑编程技巧与维护,2015(11):44-46.endprint