kali无线渗透之蓝牙攻击与原理

原理

蓝牙网络中的“个人身份码”攻击传统的蓝牙设备,主要是指“蓝牙规范2.1版”以前的各版蓝牙设备,以及使用“安全简化配对”(Secure SimplePairing,SSP)协议的蓝牙设备。

这些传统的蓝牙设备仅仅依赖于“个人身份码”( PersonalldentificationNumber,PIN)的有效性作为唯一的认证规则,只要通信双方的蓝牙设备使用了相同的“个人身份码",就认为通过认证,否则就认为没有通过认证。

“个人身份码”只是一个由1位到16位数字组成的一个号码。

在很多产品中,“个人身份码”都是在产品生产的时候,直接由产品静态定义的,终端用户也无法修改。在“安全简化配对”的蓝牙设备中,主要是指“基本速率蓝牙”和“增强数据速率蓝牙”,而二者在本章中统称为“传统蓝牙”,并且,这两种蓝牙设备都支持多种认证方式,主要有如下几种。

“数字比较”认证(NumericComparison)在两个蓝牙设备上显示一个六位数字,提示用户判断两个数字是否相同,相同就选“配对”(Yes),否则就选“不配对”(No)。

“只比较不确认”认证(Just Works)尽管这种认证方式同“数字比较”的认证方式使用了相同的认证策略,但这种方式下并不提醒用户来验证这两个六位数字是否相同。

“密码输入”认证(PasskeyEntry)在特殊场景下的认证方式,该场景中,一方设备有一个显示器,而另一方有一个数字输入键盘。这时,有显示器的一方会在显示器上显示一串六位数字,然后要求用户通过另一方设备的键盘上输人所看到的这个六位数字来进行验证。


“带外认证”〇OB认证(Out ofBand)“带外认证"OOB 认证利用第三方的技术交换“认证数据和派生的密钥”,这种第三方技术如:近场通信(NearFieldCommunicationNFC)。


“传统蓝牙”中,基于“安全简化配对”功能的设备通常使用“数值比较”认证方式“只比较不确认”认证方式,或者是“密码输入”认证方式。无论是哪种认证方式,都使用“Difie-Hellman 椭圆曲线密钥”(Elliptic Curve Diffie-Hellman,ECDH)算法加密通信的数据以便防御侦听攻击。此外,“数值比较”认证方式和“密码输人”认证方式都对防御“中间人的畸形数据”(MitM)攻击提供了保护措施,而“只比较不确认”认证方式并不能对防御“中间人的畸形数据”攻击提供保护;“带外认证”认证是否对防御“中间人的畸形数据”攻击提供保护,则取决于所选用的第三方的“带外认证”协议是否对于被动式侦听和“中间人的畸形数据”攻击提供防御措施。


随着“低功耗蓝牙”的引人,“蓝牙技术联盟”(BluetoothSpecialInterest Group,SIG)简化了对设备认证的支持,其目的是为了降低“蓝牙控制器”(Bluetoothcontroller)的成本并将“从设备”的复杂度降到最低。

“低功耗蓝牙”设备上仍然还保留有“数值比较”“只比较不确认”和“带外认证”等认证方式,但“密码输人”认证方式在“低功耗蓝牙”上并不支持“安全简化配对”功能。

虽然“低功耗蓝牙”支持上面多种认证方式,但是在“低功耗蓝牙”设备上,由于不再支持“Difie-Hellman椭圆曲线密钥”加密算法,所以缺乏对被动式侦听攻击的防御保护措施。


从实际开发的角度来看,蓝牙“安全简化配对”SSP功能是难以利用。在蓝牙“安全简化配对”SSP功能处理过程中,被动式侦听也不能获得足够的信息可以发起一次还原“派生的加密主键”(derived encryptionkey)的攻击,很显然,这个“主键”正是数据可以解密的最关键元素。
尽管使用“Difie-Hellman椭圆曲线密钥”加密算法,但蓝牙“安全简化配对”功能已在几个实例中证明,该功能是容易受到“中间人的畸形数据”的攻击的,主要是当攻击者可以干扰 2.4GHz频谱,使原来处于活动状态的一对蓝牙设备不得不重新配对(re-pairing),加之在“只比较不确认”认证方式中,配对方式是“哑状态”(dumb down)下进行的,所以“中间人的畸形数据”就可以通过强制双方蓝牙设备使用“只比较不确认”认证方式静悄悄地完成攻击,有时,这种合二为一的攻击也称为“BT-NINO-MITM攻击”。虽然这种攻击方式被几个学术论文证明肯定是存在的,但到目前为止,还没有公开的、实际的工具是可以直接拿来使用的。尽管存在这样的限制,仍然有基于蓝牙数据包捕获的公开、可访问的攻击工具,可以用来攻击“传统蓝牙”和“低功耗蓝牙”设备上的数据交换。这里所说的数据包捕获,主要是指超牙设备的数据包捕获功能。


传统蓝牙中的个人身份码攻击


正如在第7章中所看到的一样,两个设备可以通过配对,派生出来的一个128位的连接密钥(128-bit link key)。该密钥用在认证中,用于识别“呼叫设备”(claimant device)和加密所有通信的数据。这个“配对交换”(pairingexchange)只能在“传统蓝牙”中通过一个“个人身份码”值进行保护。
两个“传统蓝牙”设备之间的配对过程存在一个点的重大的漏洞,那就是攻击者在观察整个配对交换过程的前提下,可以加载一个离线的、针对“个人身份码”选择的暴力攻击在配对过程完成后,后续的连接可以使用之前保存的128位的连接密钥用于认证和密钥派生。这种技术在当前对于攻击来说是有点不切实际的。
为了破解“个人身份码”的信息,攻击者必须首先单独地还原如下信息:

“发起随机数”IN RAND,由“发起方”(initiator)向“响应方”(responder)发送

两个“COMB_KEY 值”,“发起方”和“响应方”都会发送。


“认证随机数”AU RAND,由“认证呼叫方”(auchentication claimant)发送

“签署响应”SRES(Signed Response),由“验证确认方”(authenticaLion verifier)发送

由于“传统蓝牙”的认证机制属于是“相互身份验证”(mutual-authentication),也就是说“从设备”的身份由“主设备”进行认证,反之亦然,所以攻击者有两次机会识别“发起随机数”值和“签署响应”值。这时的攻击者主要的精力全部放在完成认证的操作上,对于“配对交互”本身,攻击者反而不必关注太多,势在必得的重要数据是“主设备”或者“从设备”的“蓝牙设备地址”。

此外,攻击者既要知道“从设备”的“蓝牙设备地址”,也要知道“主设备”的“蓝牙设备地址”,因为这两个地址“配对交换”的过程中并不会进行无线传送,所以只能通过上面“相互身份验证”过程中,捕获“发起随机数”值和“签署响应”值。

使用 BTCrack 攻击“个人身份码”

要使用 BTCrack 软件,首先要进行“配对交换”数据包的捕获。在这一点上,可选的工具非常多,超牙系统、Wireshark 软件、“前线蓝牙协议分析器600通信探测”设备、Elisys公司的“蓝牙资源管理器400”,都可以在两个通信的蓝牙设备之间捕获“配对交换”数据包并从中识别出“发起随机数”、两个“COMB KEY值”、“认证随机数”、“签署响应”等值一旦这些字段的值被捕获到或计算出,随后就可以确定“个人身份码”的最大长度,通过这个值,BTCrack软件就可以发起一起还原“个人身份码”的攻击了。对于BTCrack程序来说,上面的操作只需要单击“破解”(Crack)按钮即可,随后 Crack 程序就会通过暴力破解的方式对“个人身份码”进行破解,直到最终破解成功,拿到“个人身份码”的值;或者将字典中,所有可能的“个人身份码”全部用完,仍然没有正确的“个人身份码”,这时就意味着破解失败。

低功耗蓝牙中的个人身份码攻击

通过 Crackle 工具破解低功耗蓝牙

你可能感兴趣的:(kali无线渗透,无线渗透,渗透,蓝牙,蓝牙渗透)