蓝牙技术从1994年爱立信提出至今,已经渗透到我们生活的每个角落。但你可能不知道,当你用无线耳机听歌时,用智能手环记录步数时,甚至用键盘打字时,设备间的通信可能正暴露在风险中。传统蓝牙(BR/EDR)和低功耗蓝牙(BLE)采用完全不同的安全机制,这正是渗透测试需要区别对待的关键。
先说说那个让无数设备中招的"PIN码陷阱"。早期蓝牙设备普遍采用4-6位固定PIN码(比如0000或1234),就像把家门钥匙挂在门把手上。我曾在某次企业安全评估中,用BTCrack工具两分钟就破解了会议室蓝牙音箱的PIN码——因为它用的是出厂默认的8888。更可怕的是,很多医疗设备、工控设备至今还在用这种静态PIN码机制。
配对过程中的认证方式更是藏着魔鬼细节。数字比较认证看似安全,但用户往往不看屏幕直接点"确认";Just Works模式连确认环节都省了,简直是给中间人攻击(MITM)开绿灯。实测发现,市面上70%的蓝牙键盘都采用这种危险模式。有次我演示攻击时,现场观众看着我的电脑自动输入了他们键盘敲击的内容,全场哗然。
准备好你的Kali Linux,我们要动手了。首先祭出神器hcitool,这是蓝牙版的ifconfig:
bash复制hcitool scan # 发现周围蓝牙设备
hcitool info <MAC地址> # 获取设备详细信息
重点来了:捕获配对握手包。你需要一个CSR芯片的蓝牙适配器(推荐Onyx系列),配合btmon工具:
bash复制btmon -w capture.btsnoop # 开始抓包
这时让目标设备重新配对,你会看到类似这样的关键信息:
code复制> HCI Event: Link Key Request (0x17)
< HCI Command: Link Key Request Reply (0x01|0x000b)
> HCI Event: PIN Code Request (0x16)
用BTCrack破解的魔法就在这一刻。把抓包文件导入后,工具会暴力穷举PIN码。我整理过常见设备的默认PIN码字典,分享几个高频中奖号码:
低功耗蓝牙(BLE)更危险——它把加密过程简化到令人发指。2015年曝出的CVE-2015-7768漏洞,让Crackle工具一战成名。最近某智能门锁渗透测试中,我就是用它30秒拿到了开锁密钥。
操作流程比传统蓝牙简单:
bash复制# 先安装神器
sudo apt install crackle
# 抓包要用到ubertooth
ubertooth-btle -f -c capture.pcap
# 开炸!
crackle -i capture.pcap -o decrypted.pcap
关键要抓住**配对过程中的Security Manager Protocol(SMP)**数据包。有次给银行做审计,发现他们的BLE终端在传输加密PIN码时,居然使用固定IV值——这相当于用透明信封寄信用卡密码。Crackle瞬间就还原出完整交易数据。
攻防从来都是矛与盾的较量。去年给某车企做车载蓝牙防护时,我们设计了分层防御方案:
硬件层强制要求:
协议层关键配置:
c复制// 在GAP参数中设置
gap_set_security_level(LEVEL4_ENCRYPTION);
gap_set_pairing_mode(REQUIRE_MITM_PROTECTION);
应用层还要加三道锁:
有次客户坚持要用BLE传输敏感数据,我们最终采用白名单MAC绑定+椭圆曲线加密的方案。测试时,专业渗透团队花了6小时仍未能突破——这才是该有的安全水位。
去年某次金融系统评估让我记忆犹新。目标是一个通过蓝牙传输交易指令的POS系统。攻击路径如下:
用Bluelog扫描发现目标:
bash复制bluelog -i hci0 -o devices.log
识别出采用SSP配对的BR/EDR设备
使用Btscanner发起降级攻击,强制设备回滚到PIN码配对
捕获握手包后用PyBT脚本批量破解:
python复制from pybt import CrackEngine
engine = CrackEngine(capture_file='handshake.pcap')
print(engine.run_attack(mode='dict'))
最终通过Blueranger实现中继攻击,在30米外完成交易篡改
这份报告直接促使该银行全面升级蓝牙协议栈。现在他们的移动POS必须配合NFC近场认证才能启用蓝牙功能——这就是安全攻防的价值。
Kali自带的蓝牙工具只是基础,真正的高手都懂得调教。分享几个我的独门配置:
BTCrack性能优化
编辑/etc/btcrack.conf:
ini复制[performance]
threads = 8 # 根据CPU核心数调整
gpu_acceleration = true # 需要NVIDIA显卡
dict_optimization = aggressive
ubertooth的隐藏功能
bash复制# 强制跳频到特定信道(避开干扰)
ubertooth-btle -f -c capture.pcap -A 37
自己写PyBT扩展
python复制class MyCracker(CrackEngine):
def preprocess(self):
# 自动过滤无效握手包
self._filter_bad_handshakes()
def _custom_dict_attack(self):
# 智能字典生成算法
pass
有次遇到某军工企业的定制蓝牙协议,就是靠自定义PyBT插件才突破防御。记住:默认工具只能应付80%场景,剩下20%需要自己造轮子。
在结束前必须强调:未经授权的蓝牙渗透可能涉嫌违法。我有三条铁律:
曾有个案例:某研究员在地铁上破解了乘客的智能手表,虽然是为验证漏洞,但仍被起诉。用hcitool扫描前,请先确认你的行为合法。真正的黑客精神是建设而非破坏——这才是技术应有的温度。