天天看点

蓝牙(bluetooth)攻击与防护(二)

            上一节内容提到的是蓝牙协议栈的一些内容

       现阶段的嗅探和攻击尝试主要基于Backtrack 3的一些现有集成工具,BackTrack是基于Slackware和SLAX的自启动运行光盘,它包含了一套安全及计算机取证工具。它其实是依靠融合Auditor Security Linux和WHAX(先前的Whoppix)而创建成的。BackTrack 4版本之后使用了ubuntu 8.10 的系统,而且只能装Debian的软件包,最新版本是BackTrack 5,国内比较全面的BackTrack网站是Backtrack中文网。比较可笑的是BackTrack在国内为人熟知的原因是淘宝上或者其他渠道一直在宣传的所谓永久免费上网卡捆绑销售的软件就是BackTrack,其原理除了无线信号通过功放获得更大的活动半径之外就是通过BackTrack嗅探SSID破解低密度的WEP无线加密方式获取无线基站(一般来说就是家庭用户的无线路由器)的密码来达到蹭网的目的,如果说用户密码比较规律或者简单的话从时间上来看还是可以接受的,如果不规律且长的话这个耗时就比较难以忍受了,更何况对于现在主流的WPA加密方式通过破解的WEP的方式几乎是天方夜谭,用最有效的字典破解方式也几乎是不可能(因为字典的量难以掌握)。好了,在这里先告诫一下巴望着免费午餐的人们,况且BackTrack出现的目的并不是用来蹭网,从目的性上来讲它的目的是打击蹭网,这里暂时先不讨论BackTrack了,有兴趣的可以自己到中文网站上获取相关信息,或者直接上国外的网站。

      在具体操作之前先看看蓝牙的链接过程:

蓝牙(bluetooth)攻击与防护(二)

(1)建立ACL即基带层的链接;

      AG接收到一个呼叫时,首先建立与HS之间的ACL链接,或者把原来处于休眠状态的下的HS唤醒。这是通过page进程完成的,在page进程建立ACL时,定义AG是Master角色,于是AG首先发起查询,通过查询AG获得HS的蓝牙地址。AG在应用层的驱动下向查询到的HS发起一个page进程,当接收到HS返回的应答信号,AG与HS之间的ACL链接则已经成功建立。一旦ACL链接建立,它可以被用来传送振铃信号。振铃信号的发送是通过AT命令RING来完成的。振铃信号也可以在SCO链路上发送。

(2)建立L2CAP层的链接;

      ACL链接好后,接着建立L2CAP链路。AG首先在信令信道上发送一个链接请求信令L2CAP_req,要求建立信道标号为0x0040的L2CAP(0x0001-0x003F是协议保留不可动态分配的,0x0040-0xFFFF可以自由分配),此信道的PSM(协议服务服用)标志为0001(用于SDP协议),当对方返回链接响应信号,表明0x0040信道已经建好。然后对此信道进行配置,配置完信道后,就可以利用此CID为0x0040的L2CAP信道进行SDP查询。

(3)进行SDP的查询过程;

利用CID为0x0040的L2CAP信道进行SDP查询过程,首先是AG在此L2CAP信道上发送一个SDP查询包,SDP查询包将查询SDP服务器端HS是否具有所需要的服务。若查询成功,在ACL链路上在AG上再建立一条标号为0x0041的L2CAP链路,此信道的PSM为0003(用于RFCOMM协议),用来传输RFCOMM数据流的。同时断开用作SDP查询的标号为0x0040的L2CAP链路。

(4)建立RFCOMM的链路;

当CID为0x0041的L2CAP信道建好之后,接着就是RFCOMM的链接建立过程,首先建立控制信道DLCI0(DLCI,Data Link Connection Identifier,用来识别客户机和服务器间应用的正在进行的连接),建链发起方AG在信道上发送一个SABM帧,即要求建立RFCOMM层上的Channel 0,如果响应方HS希望建立链接,返回一个UA帧,表明已经建立好了Channel 0这条RFCOMM信道。此信道为控制信道,用来传送携带控制信息和命令的UIM帧。如果响应方HS不希望建立链接,返回一个DM帧。

其次建立数据信道,先是对数据传送信道的参数进行协商,协商命令PN参数包括对将要建立的信道Channel1的优先级,最大帧长等,当双方协商好建立传输数据的信道Channel 1。

(5)当RFCOMM建立完成,将通过RFCOMM信道传输Headset的控制层的部分AT命令;

即在RFCOMM数据传送信道Channel 1上利用UIH帧传送AT+CKPD等命令,当接收到对方的响应OK后,就可以开始建立SCO链接。

(6)建立SCO的链接;

初始化时,HCI发一个WRITE_VOICE_SETTING命令,对音频状态进行一些设置,当接收到AG的建立SCO链接的请求时,若HS允许,发送一个接收的HCI命令,在命令完成之后,传输音频信号的SCO链路就建立好了,此时就可以进行语音通信。

(7)应用层执行蓝牙HS和AG之间的音频传输。

      上面的描述比较繁琐,但实际上除去跳频需要和蓝牙信令的内容,每个层次之间的链接的建立还是模仿TCP三次握手的通讯方式,既然如此,考虑从TCP常规的攻击方式演进到蓝牙形式上是否可行呢,下一节中我来展示一下一些普通的攻击。

继续阅读