Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/404notf0und/AI-for-Security-Landing
企业级安全智能化实践
https://github.com/404notf0und/AI-for-Security-Landing
Last synced: 21 days ago
JSON representation
企业级安全智能化实践
- Host: GitHub
- URL: https://github.com/404notf0und/AI-for-Security-Landing
- Owner: 404notf0und
- Created: 2021-08-09T03:18:42.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2022-03-16T02:11:10.000Z (over 2 years ago)
- Last Synced: 2024-02-11T21:20:40.185Z (10 months ago)
- Homepage:
- Size: 28.3 KB
- Stars: 69
- Watchers: 7
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-hacking-lists - 404notf0und/AI-for-Security-Landing - 企业级安全智能化实践 (Others)
README
# AI-for-Security-Landing
企业级、可落地、可复用的安全智能化实践## 版本
- 当前更新版本:2022-02-19 版本地址:[commit](https://github.com/404notf0und/AI-for-Security-Landing-Guide)
- 如果您发现任何更新、问题或改进,请随时 fork 和 PR
- Please feel free to fork and PR if you find any updates, issues or improvement.## 企业级实践
- [攻击同源聚类]
- [恶意机器流量分类]
- [CVE漏洞命名实体识别]
- [CVE漏洞利用可能性预测]
- [攻击者知识图谱](https://mp.weixin.qq.com/s/tDJJOfwac5NAick15lS7-A)## 踩坑经验
### 目录
- [版本](#版本)
- [目录](#目录)
- [介绍](#介绍)
- [指导原则](#指导原则)
- [安全问题](#安全问题)
- [定义好问题](#定义好问题)
- [数据问题](#数据问题)
- [检查数据标签纯净度](#检查数据标签纯净度)
- [剔除数据集的噪声](#剔除数据集的噪声)
- [黑样本分布多样性](#黑样本分布多样性)
- [避免黑样本浓度过低](#避免黑样本浓度过低)
- [排查脏数据](#排查脏数据)
- [数据向量化](#数据向量化)
- [特征工程选型](#特征工程选型)
- [机器学习算法/神经网络的构建问题](#机器学习算法/神经网络的构建问题)
- [机器学习算法选型](#机器学习算法选型)
- [训练问题](#训练问题)
- [机器学习算法调参](#机器学习算法调参)
- [预测问题](#预测问题)
- [训练过程和预测过程保持强一致性](#训练过程和预测过程保持强一致性)### 介绍
该指南最初由 [404notfound@柳星](https://github.com/404notf0und "404notfound@柳星") 编写,分享机器学习落地安全的经验,趟过的路,哪条路是通畅的,哪条路是需要避免的,目的是使一些同路人能快速Landing,同时也欢迎同路人加入一起编写。### 指导原则
#### 安全问题
##### 0 定义好问题
落地优先级:安全>数据>特征>算法,定义问题,即确定待解决的安全问题,是第一要务。「好问题」最好同时需要满足「必要性」、「充分性」、「新颖性」,必要性是指安全团队内部价值需要,充分性是指样本及标签等可被低成本构建,新颖性是指不再是复制现有问题,例如URL异常检测、XSS检测等。#### 数据问题
##### 1 检查数据标签纯净度
garbage in, garbage out。训练阶段,检查黑白样本标签纯净度。尽可能100%纯净。如果,黑中有白,预测阶段会误报,白中有黑,预测阶段会漏报。
##### 2 剔除数据集的噪声
预测结果不理想的原因,可能是基于噪声训练了模型,此时最佳选择是剔除噪声样本,剔除的方法可以是人工,也可以是模型,比如预测得分在0.5附近的样本我们认为是噪声数据。出发点是假设大部分样本标签标注正确,而模型对预测结果的不确定是噪声导致的。##### 3 黑样本分布多样性
训练阶段,检查黑样本标签分布多样性。原始数据来源和风险标签类型尽可能覆盖全面,因为会影响到预测阶段模型的泛化性。##### 4 避免黑样本浓度过低
训练阶段,检查黑白样本标签分布均衡性。建议黑白样本比例最低控制在1:100~1:1000。可以通过白样本的下采样抽样和黑样本的上采样控制浓度。##### 5 检查脏数据
脏数据,可能会导致后续数据和算法处理有效率和性能问题。比如sql长耗时、算法长耗时,训练准、预测不准等问题。因此,当出现预期外的问题时,排查脏数据。- 如果是处理效率问题,尝试数据截断
- 如果是算法性能问题,遵循第一条守则`检查数据标签`#### 数据向量化
##### 6 特征工程选型
- 统计特征。考虑时间+空间维度,比如过去90天内xx的统计特征,当天xx的统计特征。
- 如果数据体现出行为序列方面的规律,使用NLP处理特征化。#### 机器学习算法/神经网络的构建问题
##### 7 机器学习算法选型
1. 在显性黑样本极少时,行为手法未知,风险类型不明,优先采用无监督算法发现事件,总结规律,写成规则。反之,优先采用有监督算法
2. 聚类算法优先采用dbscan(参数敏感型),异常检测优先采用iforest,有监督算法优先采用lgb
3. dbscan落地安全的优劣势
- 优势:不需要输入类别数k;可以发现任意形状的聚类簇
- 劣势:聚类收敛时间可能较长;调参复杂,需要联合调参#### 训练问题
##### 8 调整超参数
- dbscan有2个核心参数,建议联合调参。
1. 𝜖-邻域的距离阈值eps
2. 𝜖-邻域的样本数阈值min_samples
#### 预测问题
##### 9 训练过程和预测过程保持强一致性
训练过程中使用的特征提取方法,产出的产物如:模型、词嵌入向量词典,在预测过程中要对应使用训练过程中的成套方法和产物。
bad case:在预测过程中,使用了一次训练模型任务中的词嵌入向量词典,使用了另一次训练模型任务中的模型,导致预测发生意外,不符合预期。