蓝牙安全入门详解 超详细
1.基本概念
蓝牙是个啥:
蓝牙是一个无线通信协议,让传输数据从有线到无线,让通信更加便捷。
其他无线协议:Wifi ZigBee。
视频演示:https://space.bilibili.com/430241559
蓝牙名字由来
很久很久以前,一个维京海盗狠人,丹麦的国王(Harald Blåtand Gormsen),可能像图上一样又壮又狠。
这个海贼王大佬统一了散乱的北欧,海贼王大佬的绰号是 蓝牙。
有这个绰号是因为, 这个狠人有一颗坏牙,很多人说是吃蓝莓吃成蓝色的了,大家就喊他蓝牙。
很多年后,巨头爱立信搞了一个无线协议,就用这个海贼王的绰号做了协议的名字。也可以看出爱立信当时野心不小,蛋糕就那么大,他想都吃了。
放到中国,可能就叫 秦牙,不,叫嬴政了。
官网和官方文档
https://www.bluetooth.com
https://www.bluetooth.com/specifications/specs/core-specification/
打开官方文档是酱紫的
英语只有3.5级的我,对英语有密集恐惧症,害 难受
相关版本
蓝牙版本 | 发布时间 |
---|---|
蓝牙5.3 | 2021.07.13 |
蓝牙5.2 | 2019.12.31 |
蓝牙5.1 | 2019.01.21 |
蓝牙5.0 | 2016.12.16 |
蓝牙4.2 | 2014.12.04 |
蓝牙4.1 | 2013.12.06 |
蓝牙4.0+BLE | 2010.06.30 |
蓝牙3.0+HS | 2009.04.21 |
蓝牙2.1+EDR | 2007.07.26 |
蓝牙2.0+EDR | 2004.11.09 |
蓝牙1.2 | 2003.11.05 |
蓝牙1.1 | 2001.02.22 |
今年7月13号 蓝牙已经发布了 5.3版本。特性我还没看,毕竟4.0我都没有搞清楚。
≥ 4.0 开始有了低功耗蓝牙 (Bluetooth Low Energy)
< 4.0 的被称为经典蓝牙 (Classic Bluetooth)
学不动了 太难了
蓝牙分类
Bluetooth :经典蓝牙 (相关设备:蓝牙耳机)
Bluetooth Smart :单模蓝牙 也就是 低功耗蓝牙 (相关设备:蓝牙锁)
Bluetooth Smart Ready:双模蓝牙 同时支持 经典蓝牙和低功耗蓝牙 (相关设备:手机)
低功耗蓝牙 经典蓝牙区别
(表格来自某基百科,我简单改了改)
简单总结。
低功耗蓝牙:耗电量小,传输距离远, 速度快,适合数据量小 的传输。 (蓝牙锁,蓝牙灯泡)
经典蓝牙: 耗电量大,传输距离近,速度一般,适合数据量大的传输。 (蓝牙耳机 蓝牙音箱)
基本用途
主要分为经典蓝牙 和 低功耗蓝牙
各自用途如下,左边是经典蓝牙,右边是低功耗蓝牙。
2.蓝牙安全威胁
海量cve:
BlueBorne,Bleedingbit,Fixed Coordinate Invalid Curve Attack,SweynTooth,KNOB,KNOB,
Pairing Method Confusion,BlueFrag,Spectra,BLURtooth,BLESA,BleedingTooth,BlueMirror,
InjectaBLE,BrakTooth
完整链接:
https://github.com/engn33r/awesome-bluetooth-security/
PIN码爆破:
pin码 (Personal Identification Number) 就是蓝牙配对的时候,弹窗让你输入的那个身份验证码。
蓝牙在认证配对过程中,会生成一个 Link key (链路密钥)。
Link key 用于蓝牙之间的身份认证 鉴权,也是 Encryption Key (加密密钥)的主要参数。
生成 Link key 的其他参数很容易被直接获取,Pin码是最后一道防护。
抓包蓝牙设备配对的数据包,然后相关软件爆破pin码后,蓝牙的整个加密认证体系就凉凉了。
身份伪造:
每一个蓝牙都有一个唯一的设备地址 ,蓝牙mac地址。
攻击者可以修改自身的设备地址,来伪造身份。
或者扫描附近的蓝牙设备,把自己信息修改的和另一个设备一模一样,完成身份克隆。
这里一般和别的攻击配合使用。比如 中继攻击 和 鉴权Dos攻击。
中继攻击(Relay Attack):
蓝牙传输范围是有限的。假设这里最远是100米。 你的车在500米开外。
现在很多车都安装了蓝牙数字钥匙,一般你的手机靠近车一定距离,车端蓝牙连接到你手机端蓝牙,车就会自动解锁。(很多车都有这个功能)
这时候我搞几个蓝牙信号增幅的设备,这几个设备啥也不干,就当搬运工,可以理解成基站类似的东西,一个设备放你身边,一个被法外狂徒带着,在你车旁边,你的车感受到了被搬运工设备传过来的蓝牙电波,还以为你已经靠近了车。
这时候法外狂徒直接拉车门就能把车开走了。
当前大多数设备都没有对这个问题做出防范。
油管上的蓝牙中继视频。是一个美女黑阔大佬录的,用蓝牙中继解锁了一个蓝牙智能锁。
https://www.youtube.com/watch?v=3e4DBk5BKLg&t=239s
美女又飒技术又好 推介去看看
拒绝服务攻击 (Denial Of Service Attack )
l2ping Dos
用l2ping之类的工具对设备进行 Dos 连接,类似于ping 攻击,设备如果没有做安全防护,直接被打瘫,打到设备没电也是正常的。
鉴权Dos攻击
每次鉴权失败是有间隔时间的,就解锁手机,连续输错几次,发现要等得时间越来越长,蓝牙也是这样的。
修改设备Mac地址,伪装成发起方尝试连接目标设备,故意失败多次,间隔时间不断增大,达到一个最大值。
这时候,你伪装的那个设备,正主过来了,都不能连接了。
obex 文件Dos
利用 OBEX 协议, 大批量给目标设备发送文件,目标设备被大量请求打到瘫痪,啥事都不能干了。正常设备过来连也连不了了。
中间人攻击
中间人攻击比较骚,同时欺骗两个设备,让设备A B 以为他们在正常通讯。
实际上,中间人设备在这里当搬运工,在这里偷窥双方传递了啥消息。
当然,中间人设备也可以不止是搬运工,他也可以修改双方传输的数据。
重放攻击:
跟很多协议的重放类似,没啥说的。
fuzz攻击
逆向分析设备端的逻辑,大概看看蓝牙发了啥指令,编写自动化脚本,构造随机,畸形指令进行大批量测试,看设备还能正常工作。
位置暴露:
蓝牙设备如果没有设置随机地址,那么在处于可发现的状态时,每次开启都是固定地址。
如果设备是随身的,或者是车载蓝牙,那么这个设备被发现了,就说明你在附近了。
如果搞得高级一点,在你可能经过的地方布置一些蓝牙探测设备,那么就能完整的跟踪行程,方便后续搞一些,法外狂徒喜欢干的事。
3.蓝牙安全国家标准
这里关注一下 2020年4月28 发布的国标蓝牙安全指南
GB/T 38648-2020
蓝牙安全入门详解 超详细相关推荐
- Java 泛型详解(超详细的java泛型方法解析)
Java 泛型详解(超详细的java泛型方法解析) 1. 什么是泛型 泛型:是一种把明确类型的工作推迟到创建对象或者调用方法的时候才去明确的特殊的类型.也就是说在泛型使用过程中,操作的数据类型被指定为 ...
- mysql 联表比对,MySQL联表查询详解/超详细mysql left join,right join,inner join用法分析比较...
超详细mysql left join,right join,inner join用法分析 下面是例子分析 表A记录如下: aID aNum 1 a20050111 2 a20050112 3 a200 ...
- log4j 配置详解(超详细)
一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使 ...
- 【bind()函数】JavaScript手写bind()及详解-超详细~~~
这两天学习了手写call.apply.bind,手写bind思考了很久才实现了MDN的示例的结果,所以记录下来~ 因为是第一篇文章,所以可能存在一些错误,希望各位大佬批评指正,不吝赐教. 也欢迎不懂的 ...
- @Autowired注解详解——超详细易懂
@Autowired详解 要搞明白@Autowired注解就是要了解它是什么?有什么作用?怎么用?为什么? 首先了解一下IOC操作Bean管理,bean管理是指(1)spring创建对象 (2)spr ...
- 斜率优化详解(超详细, 有图有代码有注释)
文章目录 斜率优化引入 从例题开始 斜率优化Part 1: 推为斜率式 斜率优化Part 2: 合法点集的斜率单调性 Part 3: 找到最优决策点 Part 4: 斜率优化大流程 Part 5: 斜 ...
- web服务器常见配置搭建详解(超详细)
前言: 本博客借鉴一些写的比较好的博客,进行归纳总结,整理了一篇比较详细的服务器常见配置搭建教程 一来是和大家一起分享,二来也是作为自己的学习笔记记录一下. 温馨提示: 篇幅较长,请分阶段选择性查看. ...
- 计算机网络 - IPv4 常考知识点详解(超详细!)
目录 一.IPv4分组 1.IPv4分组的格式 2.IP数据报分片 3.网络层转发分组的流程 二.IPv4地址与NAT 1.IPv4地址 2.NAT 三.子网划分与子网掩码.CIDR 1.子网划分 2 ...
- Linux目录功能及文件类型,linux目录作用详解(超详细,树状排版)
自己在网上找了好久,没找到,干脆自己做一个.给大家分享下,希望能顺便指出我的错误.请复制到记事本,然后取消自动换行.看起来就会很清晰了. /根目录 │ ├boot/启动文件.Linux的内核及引导系统 ...
最新文章
- 这么流行的ZooKeeper,原来是这样设计的!
- OSSIM下部署HIDS
- leetcode 202. Happy Number
- android 面试题(一)
- 想让AI在企业落地?微软最新Azure AI不容错过!
- mysql日志监控 zabbix_zabbix监控mysql哪些性能
- keras中文文档_【DL项目实战02】图像识别分类——Keras框架+卷积神经网络CNN(使用VGGNet)
- Java中的变量分类_开发简单的Java应用
- mysql必知必会第一节
- android guide 中文,Android API Guide:Toast 中文翻译
- Python风格总结:迭代器与生成器
- c获取当前程序的路径_漏洞挖掘|使用AFL Fuzzing网络程序
- pycharm使用技巧及最常用的几个快捷键
- 正则表达式 —— 一种模式描述语言(贪婪匹配与惰性匹配)
- 还贷的那些事VI——自由贷的设想
- python利用danmu实时获取斗鱼等直播网站字幕
- P3386 【模板】二分图匹配(匈牙利模板)
- 友盟推送和阿里云移动推送使用注意事项、不同点比较
- 自定义函数实现对n个数进行选择法排序,主函数调用.
- jQuery中实现,datatable后台数据获取与前端分页展示
热门文章
- JS调用本地摄像头拍照(兼容各大浏览器及IE8+)
- 基于51的MPX4115压力检测仿真
- Could not find artifact com.oracle:ojdbc6:pom:11.2.0.3 in central
- Android软件开发之获取通讯录联系人信息
- BUUCTF warmup_csaw_2016 writeup
- Python数据库篇
- Win7下的Linux通过Nat的VMnet8下的NAT方式进行上网
- javaScript用函数的方法判断素数:判断一个数是否是素数(代码)
- Eclypse-Z7 + Zmod ADC 1410 基础环境搭建(SDK部分)
- linux命令--useradd/userdel