assia-ahmedabdi/BrakTooth-Attack-Classification
GitHub: assia-ahmedabdi/BrakTooth-Attack-Classification
基于机器学习的 BrakTooth 蓝牙攻击类型多分类管道,利用数据包级特征从流量中识别 11 种攻击类型或正常流量。
Stars: 0 | Forks: 0
# 🛡️ BrakTooth 攻击类型分类
## 📖 描述
BrakTooth 系列漏洞主要通过崩溃、死锁或在某些情况下执行任意代码来攻击 Bluetooth Classic 设备。这些攻击专门利用了 Bluetooth Classic 协议栈的 **LMP 和基带层**。
本项目构建了一个 **多分类模型**,仅基于数据包级别的特征来识别正在发生的 BrakTooth 攻击类型——或者判断流量是否正常。早期且准确地识别攻击类型有助于加快事件响应速度、实施更有针对性的补丁修复,并加深对蓝牙威胁模式的理解。
该[笔记本](https://www.kaggle.com/code/spredisbread/type-of-attack-detection)在 **Kaggle** 上运行。
该数据集包含来自 ISOT BrakTooth Attack Dataset 的 **6,402 个带标签的蓝牙数据包**,涵盖 **12 个类别**(11 种攻击类型 + 正常流量)。
## 🗂️ 数据集
**来源:** Kaggle 上的 [ISOT BrakTooth Attack Dataset](https://www.kaggle.com/datasets/detecting-braktooth-attacks)
| 特征 | 描述 | 类型 |
|---|---|---|
| `Protocol` | 使用的蓝牙协议(L2CAP、OBEX、SDP、RFCOMM、LMP、HCI 等) | Categorical |
| `Info` | 取决于协议的额外数据包信息 | Categorical |
| `Length` | 数据包长度(字节) | Integer |
| `Delta` | 与前一个数据包的时间差(秒) | Float |
| `Type` | 攻击类型标签——目标变量(12 个类别) | Categorical |
**攻击类别:**
`au_rand_flooding`, `duplicated_encapsulated_payload`, `duplicated_iocap`, `feature_response_flooding`, `invalid_feature_page_execution`, `invalid_setup_complete`, `invalid_timing_accuracy`, `lmp_auto_rate_overflow`, `lmp_overflow_dm1`, `truncated_lmp_accepted`, `truncated_sco_link_request`, `normal`
## 🛠️ 技术
| 层级 | 工具 |
|---|---|
| **语言** | Python 3 |
| **数据处理** | Pandas, NumPy |
| **可视化** | Matplotlib, Seaborn |
| **特征工程** | Scikit-learn (StandardScaler, MinMaxScaler, One-Hot Encoding) |
| **ML 模型** | Scikit-learn, XGBoost, LightGBM |
| **超参数调优** | GridSearchCV |
| **平台** | Kaggle Notebooks |
## ⚙️ 流程
### 1. 🔍 探索性数据分析
加载并检查训练集(6,402 个样本,5 个特征)。识别类别分布(12 种独特的攻击类型),对 `Length` 和 `Delta` 进行异常值检测,并分析 308 个独特的 `Info` 值的特征。
### 2. 🧹 数据预处理
- 基于 `Delta` 范围移除异常值
- 将高基数 `Info` 变量简化为更宽泛的类别(Sent、Rcvd、LMP、Configure、Connection、Disconnection 等)
- 使用分位数变换消除 `Delta` 特征的偏度
- 分箱(将 `Delta` 划分到 `qtDelta` 桶中)
- 对类别特征(`Protocol`, `Info`)进行 One-hot 编码
- 对数值特征进行标准化
### 3. 🔧 特征工程
从基础数值列构建了 17 个工程特征,包括指数变换、幂变换和交互项(`Delta*Length`、`qtDelta+Length`、`Length_on_Delta` 等),随后进行特征选择以保留信息量最大的 21 个特征。
### 4. 🤖 模型选择
- 使用 **LazyPredict** 对 26 个分类器进行广泛基准测试
- 表现最佳的模型:`ExtraTreesClassifier`(78% 准确率)、`RandomForestClassifier`(79%)、`LGBMClassifier`(79%)
- 对 **One-vs-Rest** 策略进行额外测试(KNN、Decision Tree、Random Forest、Bagging、SVM、SGD)
- 通过对前 3 名候选模型进行 **GridSearchCV** 来完成最终模型选择
### 5. 🎯 预测
使用微调后表现最佳的模型对 `X_test.csv` 生成最终预测结果。
## 📊 结果
| 模型 | 准确率 | 平衡准确率 | F1 分数 |
|---|---|---|---|
| ExtraTreesClassifier | 0.78 | 0.37 | 0.78 |
| RandomForestClassifier | 0.79 | 0.36 | 0.78 |
| LGBMClassifier | 0.79 | 0.36 | 0.78 |
| XGBClassifier | 0.78 | 0.35 | 0.78 |
| KNeighborsClassifier | 0.74 | 0.28 | 0.72 |
## 🔭 未来工作
- **类别不平衡处理** —— 应用 SMOTE 或类别权重损失来提高少数派攻击类型的召回率
- **深度学习** —— 探索基于 LSTM 或 Transformer 的模型,用于时序数据包序列建模
- **实时检测** —— 将模型部署为实时蓝牙流量上的流式分类器
## 🏷️ 标签
`bluetooth` `braktooth` `cybersecurity` `attack-detection` `network-security` `intrusion-detection` `classification` `machine-learning` `scikit-learn` `xgboost` `lightgbm` `feature-engineering` `multiclass-classification` `imbalanced-data` `python` `kaggle` `isot-dataset` `lmp` `bluetooth-classic` `anomaly-detection`
标签:Apex, Python, 多分类, 无后门, 机器学习, 蓝牙, 逆向工具