9.1 传统蓝牙的侦听
“传统蓝牙”网络因为各种各样的应用广受欢迎,从蓝牙键盘和鼠标,到无线“PIN密码输入设备”(PIN Entry Device,PED),都无处不在。这里的PIN指的“个人识别码”(Personal Identification Number),通过“PIN密码输入设备”可以用于信用卡的验证。然而不像Wi-Fi无线网络和其他无线标准在物理层特性上很相似,“传统蓝牙”网络的物理层差别较大。因此,要想在这些“微微网”上捕获蓝牙的通信数据包十分困难。其原因如下所示。
首先,“传统蓝牙”采用的是“跳频扩频”(Frequency Hopping Spread Spectrum,FHSS)技术,由于频率不停地切换,所以发送方(transmitter)和接收方(receiver)需要共同知道并共同按照某一个频率顺序一起跳变,并在共同跳变期间完成数据交换。对于每一个“微微网”,频率跳变模式都是基于蓝牙“主设备”的“蓝牙设备地址”,所以它们跳变顺序也是互不相同的。跳频的频率,正常情况下是每秒跳1600次,这意味着,在切换到其他频率之前,蓝牙设备只能在很短的一个时间段内发送和接收数据,这个很短的时间段称为“时隙”(time slot)。在大多数情况下,我们知道,“微微网”中“主设备”的“蓝牙设备地址”都是与其他蓝牙设备进行通信不可或缺的重要元素。
其次,对于黑客来说,要在“微微网”内相互通信,只知道“蓝牙设备地址”,来推算出其他蓝牙设备的跳频顺序是不够的。要想知道双方的“跳频顺序”(frequency-hopping pattern),还必须知道在这个“跳频顺序”下,负责侦听的嗅探程序要了解在每一个给定时间内该蓝牙设备位于哪个频率点上。在“传统蓝牙”的规范中,使用了另外一个重要的信息,这就是“主设备”的时钟,简称“CLK”。这个时钟用来按照信道顺序的数组中的每一个值,来跟踪设备当前应该使用哪一个信道。这里的时钟值与我们平时所说的用于表示每天年月日、时分秒时间的时钟没有关系,它只是一个由“微微网”中的“主设备”控制的,每312.5微秒就增加1的28位的值计数器。所表示的,其实也只是一个相对时间。
最后,对于黑客来说,“传统蓝牙”的接口并不是简单地只为被动地侦听而设计的,所以“传统蓝牙”的接口没有Wi-Fi无线网络接口那样的“监测模式”可供使用,同时“传统蓝牙”的接口也不存在“本地嗅探”,以及在基带层(baseband layer)搜集网络信号等说法。你可以在Linux操作系统中,使用像hcidump工具一样在“主机控制接口协议”上嗅探到本地所有的通信数据,但是这种类型的嗅探并不会显示低层信息或者蓝牙设备的活动状态,它需要一个“微微网”中的主动连接,然后才能显示出“到”或由本地系统中“出”的那个活动状态。你可以把它看作是一个“非混杂”(nonpromiscuous)模式下的嗅探,并且它只能显示会话层(session-layer)的信息。
除了这些原因之外,“传统蓝牙”的侦听是一个很有价值的话题,不论是从安全角度、开发角度,还是工程角度,都值得人们去克服。正因为如此,所以黑客们设计了一些开源的或者商业的项目,专为克服这些挑战而来。
9.1.1 传统蓝牙的开源侦听技术
正如你在第7章中看到的一样,超牙是一个开源的硬件和软件工程,其设计目的就是利用“超牙一号”的硬件进行蓝牙网络的嗅探。作为一种低成本的硬件设备,超牙具有非常广泛的应用者范围,研究人员和黑客都可以使用,通过它可以捕获和评估低级无线信号的活动状态,当然,这里也包含了“传统蓝牙”网络中的数据包。
⚡ 超牙对传统蓝牙的嗅探
超牙主机上的软件提供捕获“传统蓝牙”的通信数据包的能力,以及“微微网”中,伴随着跳频识别“低位地址部分”和“高位地址部分”的能力。首先,我们需要识别出“微微网”中“主设备”的“低位地址部分”和“高位地址部分”部分,然后就可以使用ubertooth-scan工具(需要超牙设备和标准蓝牙加密狗),或者是ubercooth-rx工具,进行数据的侦听。不过,要使用ubercooth-rx工具,则只需要超牙设备,还需要该超牙设备具备一种能力,那就是在拿到“高位地址部分”的能力之后,还可以排查“格式没错,但数据有错”(false-positives)数据包的能力。
在这个例子中,你可以看到超牙发现了“微微网”中的两个蓝牙设备,并依次破解了它们的“低位地址部分”和“高位地址部分”。在发现部分“蓝牙设备地址”之后,ubertooth-scan就尝试识别这两个设备的“友好名称”(friendly name),并且在处理的过程中,根据实例中分别为“Joshua Wright的键盘”(Joshua Wright's Keyboard)和“Joshua Wright的鼠标”(Joshua Wright's Mouse)的两个“友好名称”,揭示每个设备最可能的设备角色,分别是键盘和鼠标。
有了部分“蓝牙设备地址”,我们就可以使用ubertooth-follow工具在指定的蓝牙设备上进行侦听。这个ubertooth-follow工具和ubertooth-scan工具很像,都既需要有一个可用的超牙设备,也需要一个标准的蓝牙设备,为了从目标蓝牙设备上捕获通信数据包,需要先与目标设备建立信道间跳转的跳频规则,ubertooth-follow工具使用蓝牙接口频繁地查询目标蓝牙设备的时钟,并快速地调整超牙设备的信道,使之与“微微网”中的频率匹配起来。
在下面的例子中,我们通过指定“高位地址部分”为0x43,指定“低位地址部分”为Oxa36fa0,来侦听“友好名称”为“Joshua Wright的鼠标”的蓝牙设备。很显然,这里的数值和名称都是在上面步骤中通过ubertooth-scan工具读到的。其扫描效果如下,不过,下面的内容不是ubertooth-follow工具实例中的全部输出,为了显示清楚,有一些不太重要的输入内容都删掉了。
这个输出格式相当多而杂,不过,在我们感兴趣的内容中,一些重要冠以“类型”(Type)的字段,其意义解释如下。
·类型: 空 (Type:NULL) 这样的输出表示ubertooth-follow捕获到了一个空(NULL)的蓝牙数据包,所谓“空数据包”表示的是该数据包的有效载荷(payload)为空,其发送目的主要是为了让对方确认一下,所以这个数据包的后面,往往会跟着一个主动的“确认”(acknowledgement)数据包。
·类型:DM1 (Type:DM1) “DM1”类型的数据包,表示的是这个数据包中装载有数据。这个数据以中等的数据速率,占用了一个时隙(或者说,占用了两次跳频的一个间隙)。因为这个数据包包含了数据,所以ubertooch-follow工具就会根据8.1.3节的格式说明,对数据包中“有效载荷”进行进一步解码。
·逻辑设备地址 (LD_ADDR) “逻辑设备地址”是“微微网”在蓝牙设备加入的时候分配给蓝牙设备的。当“逻辑设备地址”的值为1时,表示这个设备是微微网中的“主设备”,该值为0表示这个地址用于表示广播信息。
·逻辑连接ID (LLID) “逻辑连接ID”是“逻辑链路控制及适配协议”许多蓝牙数据包包头的第一个字段。如果该值为2,就表示这个数据包是一个新信息的开始;反之,如果“逻辑连接ID”的值是1,就表示这个数据包是前一个信息的继续;如果“逻辑连接ID”的值是3,表示这个数据包所用的协议是“连接管理器协议”协议。
·流量控制 (Flow) “流量控制”位用于流量控制,是告诉发送方因为队列管理的需要而停止发送信息。
·有效载荷长度 (Payload length) 该字段指的是有效载荷的长度,以字节为单位。
·有效载荷数据 (Data) “有效载荷数据”就是要传输的数据本身,ubertooth-follow工具并不打算对有效载荷数据的内容进行解码,而是将解码的工作留给分析程序来完成。
·类型:拉 (Type:POLL) 以“拉”[1]方式发送的数据包,是由“微微网”中的蓝牙“主设备”发送的,发送的目的是征取能得到“从设备”的响应。
使用超牙和一个标准Linux操作系统蓝牙接口,我们可以捕获“传统蓝牙”的数据包,并解码一部分字段。然而,这个接口的能力是有限的,并且缺少一个复杂的解码接口来帮助我们检查侦听到的数据。在写这本书的时候,“超牙项目”(Project Ubertooth)的团队正在努力工作,以便能开发一个基于libpcap的蓝牙数据包捕获的标准格式,这样,侦听过程中捕获到的数据将可以由类似于Wireshark一样的程序来负责解码工作。如果你对“超牙项目”感兴趣,可以通过网址http://ubertooth.sourceforge.net了解该团队在这项开发进度中最新的消息。
✔ 通过超牙对传统蓝牙嗅探的防御措施
作为一个价格并不算贵的蓝牙分析设备,Ubertooth工具不管是对于安全分析人员还是对于黑客来说,无疑是一个非常有价值的工具。然而,在该设备也存在很多不足,主要体现在该设备捕获“传统蓝牙”网络活动点的能力上。
超牙设备只能捕获“基本速率蓝牙”在网络中的活动,而不能捕获后来的“增强数据速率蓝牙”在规范改进后的设备在网络中的活动。所以,对于一个单位来说,应该将老掉牙的“基本速率蓝牙”遗留设备的硬件升级到支持“增强数据速率蓝牙”的硬件版本上,以减免来自超牙数据包侦探的威胁。另外,各单位也应该换用强大的加密协议来保护蓝牙数据的机密和数据的完整性。
“增强数据速率蓝牙”中的问题
在蓝牙2.0的规范中,“蓝牙技术联盟”增加了对“增强数据速率蓝牙”通信技术的支持。如前所述,在蓝牙1.0规范中,传统的数据传输速率是1Mbps,使用的是“高斯频移键控”(Gaussian Frequency Shift Keying,GFSK)调制方式,而蓝牙2.0并没有使用这些技术,而是使用了2Mbps或3Mbps的数据传输速率,调制方式呢,如果速率是2Mbps则改成“四相相对相移键控”(Differential Quadrature Reference Phase Shift Keying,DQPSK)调制方式;如果速率是3Mbps则改成“差分相移键控”(Differential Phase Shift Keying,DPSK)方式。这对于特别能消耗带宽的蓝牙应用来说,无疑是个天大的好事。例如高保真的立体声音频耳机就是个实例。但是对超牙项目来说,这些改变又变成了一个重大的挑战。
在1 Mbps速率的蓝牙连接中,基带数据包通过无线发送时,开始于“访问码”(access code)、数据包的“包头”(header)和“有效载荷”(payload)。通过“访问码”我们可以推算出“低位地址部分”,通过“包头”我们可以还原出“高位地址部分”。这些字段都是采用“高斯频移键控”调制方式调制编码的,其调制的结构如下所示。
对于“增强数据速率蓝牙”网络中的通信数据,“访问码”和“包头”信息仍然通过1Mbps速率的“高斯频移键控”调制方式,但一旦数据包的开始这两个部分发送完成,经过一个“守候”(guard)和“同步期”(synchronization period)之后,发送方就切换到“四相相对相移键控”调制方式或“差分相移键控”调制方式。守候和同步期的作用形同其名,就是留出一定时间,让发、收双方都能适应改变调制机制,改变数据速率的一个缓冲时间段。该过程的时序如下所示。在数据帧的前面,保留“高斯频移键控”调制的原因是让传统蓝牙设备可以检测到这是一个“增强数据速率蓝牙”发送器,从而避免后面的数据冲突。
“超牙一号”的硬件使用了“得克萨斯仪器公司CC2400”(Texas Instruments Chipcon CC2400)芯片作为其设备的无线收发器接口,所以设备解调的能力也仅限于该芯片的解调能力。“得克萨斯仪器公司CC2400”芯片可以适应“频移键控”(Frequency-Shift Keying,FSK)和“高斯频移键控”的解调,但是却无法适应“四相相对相移键控”解调和“差分移相键控”解调。从实践的角度来看,ubertooth-rx工具和ubertooth-scan工具可以识别老旧的“基本速率蓝牙”和“增强数据速率蓝牙”的活动,因为这个数据包的头部信息是通过“高斯频移键控”调制发送的。然而,ubertooth-follow工具无法捕获“增强数据速率蓝牙”的“有效载荷数据”,因为“得克萨斯仪器公司CC2400”芯片不支持“四相相对相移键控”和“差分移相键控”调制机制。目前,只有商业工具包括解调“增强数据速率蓝牙”通信数据包的能力,这个我们将在下面的内容中介绍。
9.1.2 传统蓝牙的商业侦听技术
只有少量的商业蓝牙侦听工具可以使用,却个个贵的出奇,毕竟,要想让蓝牙开发者看得上眼,就得帮他们解决蓝牙产品实现方法上的问题。这些商业产品的设计是以满足开发工程师在软硬件开发上的需要,而不是特定为黑客制作的。当然,万物同理,关键看谁来用,作为黑客,你完全可以使用这些工具中的通用功能,实施对蓝牙网络的侦听和攻击。
⚡ 前线蓝牙协议分析器600侦听器
“前线测试设备”(Frontline Test Equipment)简称“前线”(Frontline),主要用于基于个人电脑上,针对各种各样的协议所做的一个“协议分析器”(protocol analyzer)。该程序的目标人群是系统集成商、软硬件开发者、系统排障工程师。“前线”系统的销售策略是“卖硬件,送软件”,而软件当然是与硬件相关联的。软件的侦听范围包括SCADA系统[2]、RS-232串口通信、Ethernet以太网通信、ZigBee网络通信,以及蓝牙网络技术。“前线”的蓝牙侦听产品,名称一般称作“蓝牙通信探测协议分析系统”(Bluetooth ComProbe Protocol Analyzer System,CPAS),可以通过“蓝牙协议分析器600蓝牙通信探测接口”(Bluetooth Protocol Analyzer 600 Bluetooth ComProbe interface)和“通信探测”(ComProbe)软件,允许开发者观察和记录“微微网”上的活动。由于协议对“主机控制接口协议”(HCI)层的数据包捕获没有任何限制,所以“蓝牙通信探测协议分析系统”工具组也允许用户访问“连接管理器协议”(Link Management Protocol,LMP)协议的数据,和部分基带层数据的头部。这里的基带位于蓝牙网络通信层次中的第二层(layer two),但是“蓝牙通信探测协议分析系统”通过“蓝牙协议分析器600蓝牙通信探测接口”接口无法捕获类似于“数据包包头纠错”(Header Error Correction,HEC)字段。
“蓝牙通信探测协议分析系统”可不是个便宜货!有趣的是“前线测试设备”的设计者不允许公布设备的价格信息,不过,很显然,这个价格,对于很多业余级发烧友来说,肯定是可望而不可即的,如果你想知道这个确切信息,那就访问他们的网站吧,该网站的网址是http://www.fte.com 。当然,从功能上,这个工具对于分析和在蓝牙网络中排查问题确实很有用。
在购买了“蓝牙通信探测协议分析系统”之后,用户就可以访问连同“蓝牙协议分析器600蓝牙通信探测接口”硬件在内的软件工具集了。该设备的硬件如图9-1所示。使用这个硬件以及运行在硬件上的软件,我们就可以捕获蓝牙网络上的通信数据包,以备将来分析使用,或者作为一个攻击者,利用蓝牙部署的弱点进行攻击。因为很多蓝牙设备所交换的数据包都是不加密的,所以简单地捕获蓝牙网络上通信的数据包本身,就可以读到很多对入侵者很有用的敏感信息。
⊗ 注意
“前线蓝牙协议分析器600通信探测”设备支持“基本速率蓝牙”、“增强数据速率蓝牙”和“低功耗蓝牙”几个版本的蓝牙网络,不过,这里主要关注在前两版本蓝牙网络中的侦听技术,后一个版本的蓝牙网络侦听技术将在本章后面的内容中介绍。
在运行“蓝牙通信探测协议分析系统”工具并初始化捕获数据包工具以后,你就可以看到程序的主界面上显示的是数据源(Datasource)选择工具,这个工具允许你查看“前线蓝牙协议分析器600通信探测”设备的详细配置信息,将其指定为嗅探模式(sniffer mode)。可选的嗅探设备类型有“只对低功耗蓝牙进行嗅探”(Low Energy,即图9-2中“LE Only”单选项)、“只对单连接的传统蓝牙进行嗅探”(Classic,即图中“Classic Only Single Connection”单选项)、“双工模式下进行嗅探”(Dual Mode,即图中同名单选项)、“只对多连接的传统蓝牙进行嗅探”(Classic Only MulLiple Connections,即图中同名单选项)四种。然后再指定一个要监视的设备的“蓝牙设备地址”信息,如图9-2所示。
“蓝牙通信探测协议分析系统”的无线嗅探组件需要分别与“终端用户”(end-user)和目标蓝牙网络进行关联,以便能捕获到完全的数据。要初始化一个数据包的捕获,“终端用户”必须指定这个“微微网”设备的“蓝牙设备地址”,不过,在“前线蓝牙协议分析器600通信探测”设置的“无角色”(roleless)模式的连接获取支持系统中,不需要指定哪个是“从设备”,哪个是“主设备”。如果当前的设备处于“可发现的”模式,那么,“前线蓝牙协议分析器600通信探测”设备就使用“查询扫描”(inquiry scan)攻击方式,这时需要使用界面上“可被发现的设备”(Discover Devices)选项卡进行选择并设置。如果对方的蓝牙设备已在此之前通过“蓝牙通信探测协议分析系统”软件已经发现,那么用户就可以从下拉列表中,选择要攻击设备的“蓝牙设备地址”信息了。另外,如果蓝牙设备的地址是通过前面第7章中的其他发现手段获得的,那么用户就可以手动地输入那个以“0x”为前导的十六进制数,以便指定这个设备或服务作为攻击目标。其实是0x是一些可以涉及较低层的高级编语言(如C语言和C++语言)对十六进制数据表示格式的一些约定。
不幸的是,“蓝牙通信探测协议分析系统”系统所用的“时钟同步”(clock synchroni-zation)技术需要“前线蓝牙协议分析器600通信探测”设备查看由“主设备”给“从设备”的“初始页请求数据包”(initial page request frame)。这一要求有效地限制了在一个新形成的“微微网”中,捕获通信数据包的能力。“前线蓝牙协议分析器600通信探测”设备无法从一个正在处理的进程中,从一个“微微网”中嗅探通信数据包。从攻击的角度来看,这个缺点让我们感觉很不顺手,但是它其实是符合“前线蓝牙协议分析器600通信探测”设备的操作意图的:一个软硬件工程师在捕获蓝牙产品的故障时,当然是希望在“微微网”形成之前就开始捕获,否则一个攻击者就可以从一个已存在的网络连接中进行数据采集了。幸运的是,对于捕获蓝牙数据包,也存在着替代的技术,你会看到在本章的后面看到,即使是对已经建立的网络,攻击者仍然可以进行蓝牙数据包的捕获工作。
一旦“前线蓝牙协议分析器600通信探测”设备对于所需要的时钟同步配置好了以后,那么很快就可以获得“主设备”和“从设备”上的“蓝牙设备地址”信息。用户可以在设置好“将捕获到的数据包放到内存中进行缓存”(buffering the captured packets to memory)选项以后,单击工具栏上的“开始”(Play)按钮发起新的数据包捕获动作。这里的“缓存”选项除了缓冲到内存之外,也可以在用户停止这次捕获动作以后,缓存到文件中,还可以在捕获过程中,直接缓存到文件中。最后,在停止数据包捕获后,“前线蓝牙协议分析器600通信探测”设备会对捕获的数据包内容进行解析和解码,然后,用户就可以通过选择单个帧的内容,或者是通过协议进行过滤,如图9-3所示。
“前线蓝牙协议分析器600通信探测”设备所捕获的文件查看程序的界面和Wireshark程序的界面看上去很像。两者都允许用户选择一个帧,然后在一个“导航树”(navigation tree)的结构中,查看其详细的解码内容。数据包的内容在显示的时候,可以是ASCII码的形式,也可以是十六进制的形式(这个要看该程序上的“radix”参数怎么设置),还可以是二进制的形式。单击数据包列表上面任意一个协议或配置文件的选项卡,下面的数据包列表都将会依据该选项卡的名称,对所有数据包类型进行过滤,最终排除那些不包含该名称所对应的协议的那些数据包,而只显示出与选项卡名称所对应协议一致的数据包内容。
由于“前线蓝牙协议分析器600通信探测”设备可以捕获到这个“微微网”中所有蓝牙之间的所有通信,所以所捕获到的数据类型当然也是五花八门,如果所捕获的数据包类型是如下几个蓝牙协议所支持的类型之一,那么“前线蓝牙协议分析器600通信探测”设备上的软件“蓝牙通信探测协议分析系统”就会自动地对数据进行解析和解码工作,并且它们将还原成初始的文件格式,便于人们阅读。目前,所支持的协议主要有“对象交换规范”OBEX(Object Exchange Profile)、“耳机的音频规范”(Headset Audio Profile)、“同步规范”(Sync Profile)、“打印规范”(Printing Profile)、“图片规范”(Imaging Profile)等。对于攻击者来说这是很有帮助的一项功能,因为几乎捕获结果中的所有数据包都可以被提取出来,重新转换成原始格式。进一步来说,用户不需要为“蓝牙通信探测协议分析系统”软件指定数据集或者规范。用户可以单击“视图(View)|获取数据(Extract Data/Audio)”菜单打开“数据/音频解码设置”(Data/Audio Extraction Settings)对话框。可以选择需要提取数据的协议(或者选择所有支持的协议),指定输出目录和文件名前缀,如图9-4所示。
在提取前,请先确保输出目录已经存在。“蓝牙通信探测协议分析系统”CPAS软件会根据所选的协议类型,然后依次处理被选协议的所有帧,再通过数据重组,达到解码提取,并将最后的结果通过文件保存起来。如果原始文件名已知,则以这个文件名进行保存,如果文件名不是已知,那么就用特定的文件名前缀,后附一个序号作为文件名。
⊗ 注意
⛳网站
如果想看到“蓝牙通信探测协议分析系统”软件针对这些特性的演示功能,有一个在实战中保存的数据包捕获文件可供大家观摩使用,这是一个通过“名片交换”(business card exchange)过程中数据包捕获序列。文件的下载地址是:http://www.hackingexposedwireless.com/files/09/,文件的名称是72105_BCard_exchange.cfa。使用“蓝牙通信探测协议分析系统”软件的数据提取功能可以从数据包捕获内容中获取已经传输的“名片”,保存的文件名为Bean,_David.vcf。
✔ “前线蓝牙通信探测协议分析系统”侦听的防御措施“蓝牙通信探测协议分析系统”工具,借助攻击者已经知道的“主设备”的“蓝牙设备地址”,就可以在“微微网”中捕获通信数据了。但是这个蓝牙设备的“蓝牙通信探测协议分析系统”产品就不能辨别一个“非可发现的”模式的设备,所以攻击者必须使用另一种机制来确定“微微网”中蓝牙设备的“蓝牙设备地址”信息。
正如你看到的一样,攻击者仍然可以通过超牙设备和其他分析技术,识别“非可发现的”模式的蓝牙设备。虽然将设备设置并保持为“非可发现的”模式会使超牙工具在捕获数据包的时候变得更加困难,但这很显然不是一个全面的防御措施。相反,应该假设攻击者可以从无线蓝牙接口中捕获到来往的数据包,然后使用更强大的加密和认证系统来保护数据包通信。
⚡ Ellisys“蓝牙资源管理器400”侦听器
Ellisys公司的“蓝牙资源管理器400”,简称BEX400,设备如图9-5所示,是一个独特的蓝牙数据通信捕获系统。
当被侦听的蓝牙设备在信道发生跳频时,对于超牙工具和“蓝牙通信探测协议分析系统”工具只能尝试在一个窄带(narrowband)无线接口上疲于奔命,频繁地同步切换,以便能捕获这个蓝牙设备在“微微网”中的活动。而“蓝牙资源管理器400”BEX400设备却使用了不同的方法进行应对。Ellisys公司的“蓝牙资源管理器400”BEX400使用了一个宽带(wideband)的接收器,可以同时侦听蓝牙整个79MHz的所有频谱,如图9-6所示。
通过这个无线接入方法,“蓝牙资源管理器400”设备使捕获蓝牙数据包和评估蓝牙活动变得很容易。在“蓝牙资源管理器400”设备宽带接收能力的强大支持下,我们可以同时捕获蓝牙所有的活动,且不需要指定“蓝牙设备地址”信息。此外,该“蓝牙资源管理器400”设备在捕获一个“微微网”上蓝牙的通信数据时,既可以在连接建立后进行捕获,也可以在连接建立前就进行捕获。
⊗ 注意
同“前线蓝牙协议分析器600通信探测”设备一样,Ellisys公司的“蓝牙资源管理器400”设备支持“基本速率蓝牙”、“增强数据速率蓝牙”和“低功耗蓝牙”等几个版本的蓝牙网络。
与“蓝牙资源管理器400”设备相配套的软件,名叫“蓝牙分析”软件(Bluetooth Analyzer software),这是一个计算机程序。在计算机上安装好“蓝牙分析”软件之后,就可以通过USB口连接上作为硬件的“蓝牙资源管理器400”设备,然后运行“蓝牙分析”软件,随后单击“录制”(Record)按钮就可以初始化数据包的捕获操作。这时的界面如图9-7所示。
“蓝牙资源管理器400”设备在随后就开始捕获和处理“微微网”上所有通信的数据包,并通过USB口将蓝牙的活动状态反馈给“蓝牙分析”软件,这时的界面如图9-8所示。
♥ 提示
Ellisys的“蓝牙资源管理器”软件可以自由下载并使用,网址是:http://www.ellisys.com/better_analysis/bex400a_latest.htm 。这个版本的“蓝牙资源管理器”也包含一个数据包的捕获样例,通过在“蓝牙资源管理器”程序中使用该样例,可以了解“蓝牙资源管理器”的特征,以及这款产品都可以完成什么功能。
在这个例子中,我们通过使用“蓝牙网络交换协议”(Bluetooth Necwork Exchange Protocol,BNEP)的配置文件,借助于“蓝牙资源管理器400”设备,捕获了在“从设备”和“主设备”之间的一次“活动”(activity)。这次活动的主体是通过一部手机与网络相连后的各项动作。在这里,“蓝牙资源管理器”允许我们不仅可以看到底层蓝牙的活动,还可以看到高层的TCP协议数据。而且,我们可以把这次高层“蓝牙网络交换协议”的通信数据包导出到一个PcapNg包的捕获文件中,其流程是单击“文件(File)|导出(Export)”菜单,然后在“导出”(Export)对话框中,选择“导出为互联网协议”(Internet Protocol Export),然后保存数据包捕获文件即可,如图9-9所示。
Ellisys的“蓝牙资源管理器”软件会提取“蓝牙网络交换协议”或“拨号网络”(Dial-Up Networking,DUN)协议的通信数据包,然后将数据转换成以太网中的数据格式,这样,就可以使用Wireshark或其他与“PcapNg-”兼容(PcapNg-compatible)的计算机软件工具进行查看,如图9-10所示。从Wireshark软件中,可以将PcapNg捕获的数据包转换成通用的libpcap格式。要完成这个操作,只需要单击“文件(File)|导出指定数据包(Export Specified Packets)”菜单即可。
Ellisys公司的“蓝牙资源管理器400”设备是一个功能强大的蓝牙嗅探工具,该设备的功能非常丰富。不过,这些特性功能的价格成本也是极高的,这可能也是“只有制造蓝牙产品的专业组织会用,而蓝牙业余爱好者和黑客却望而却步”的唯一原因了。要想知道关于“蓝牙资源管理器400”设备更详细的信息,可以登录Ellisys公司的网站,网址是http://www.ellisys.com/products/bex400。
通过“蓝牙资源管理器400”实施PIN入侵“蓝牙资源管理器400”除了是一个功能强大的蓝牙数据包嗅探工具之外,还是一款能够对“老式配对”(legacy pairing)方式实施自动PIN入侵的工具。这里的PIN仍然是前面提到过的“个人识别码”(personal identification number),而上面提到的“老式配对”指的是采用“安全简化配对”(Secure Simple Pairing,SSP)协议。“蓝牙资源管理器400”设备的使用手册中,针对这个特性,非常一板一眼地提到:“对于‘个人识别码’的配对,分析类的程序可以对其进行解密,计算出‘连接密钥’(link key),然后再解密所有相关的数据包,整个过程完全不需要用户的干预。”
在实践中,用户只须启动“蓝牙资源管理器400”设备就可以捕获到两个蓝牙设备之间以老式的配对交换过程的数据包。所有加密的数据包也会通过“蓝牙资源管理器400”设备进行解密,并以未加密的格式显示。
✔ Ellisys“蓝牙资源管理器400”侦听防御措施在“蓝牙资源管理器400”设备宽带接收机的功能中,对于捕获通信数据包的功能,目前,几乎没有什么好的办法可以避免。一个使用“蓝牙资源管理器400”设备的攻击者所要做的,也只是找定一片地方,简单地打开该设备上捕获数据包的功能,然后该设备就开始对这片区域内所有蓝牙的捕获活动,并对其进行解码。就像防御“前进蓝牙通信探测协议分析系统”的防御策略一样,网络管理员应确保所有的网络通信都进行了加密,以此来加强系统的保密性。不幸的是,许多蓝牙在设计实现的时候,并不愿意完全遵守这一基本原则,最终导致安全信息明显暴露,在本章的后面会详细介绍。
到目前为止,你已了解了好几种“传统蓝牙”网络的侦听技术,如果选择商业设备,那么可能只需要简单地访问和分析工具就可以实现。所完成的也主要是对“基本速率蓝牙”和“增强数据速率蓝牙”蓝牙活动点的捕获。下面将目光转向在“低功耗蓝牙”网络中进行通信数据包的捕获。
- 在计算机通信中的一种数据传送策略,由发送方主动完成的方式称为“推”(push),由接收方主动要求完成的方式称为“拉”(pull,有时也写成poll)。以设备采集为例,某个温度计有两个功能,一个功能是实时检测当前的温度;另一个功能是当温度高于80度就报警。那么对于这个温度计来说,对于实时的温度值就可以采用“拉”的方式,采集的频率取决于监测程序的灵敏度:监测程序要得快,就给得快;监测程序要得慢,就给得慢。而对于高温报警的值,由于是个小概率事件,并且灵敏度要求较高,就可以采用“推”的方式,报警出现,就立即发送。——译者注
- SCADA(Supervisory Control And Data Acquisition System)是“监控与数据采集系统”。可以简单地认为这是一种针对设备的,集采集、汇总、展示、反馈、应急等设备监控为一体的大型一体机。——译者注
本书评论