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, 多分类, 无后门, 机器学习, 蓝牙, 逆向工具