人工智能WAF防火墙"/>
AiSEC全自动人工智能WAF防火墙
2019年大环境下机器学习越来越火,不管是为了适应环境,还是仅仅因为兴趣,我们计划在业余时间里启动一个小项目,不占用公司任何资源,生存周期不超过半年,但是名字很霸气,叫AiSEC全自动人工智能WAF防火墙,哈哈哈。
3月8号周五临时组了一个小团队,简单商议了一下,准备实现一个人工智能防火墙,但是仅仅做一个人工智能防火墙,其实可以训练好一个深度学习网络,然后起一个Nginx第三方模块,在请求行和请求体的回调函数上挂上我们的引擎就可以了。
这一切都是不可见的,没有可视化的Ai操作,我们的人工智能体现不出来,所以商议了一下,那就起一个Web服务管理Ai算法的Ai平台,让用户自己选择特征提取算法,自己选择机器学习算法,在线调参,在线学习生成模型,然后应用到代理保护模块。
当然,更进阶的玩法是,指定Nginx的访问日志和告警日志路径,然后起一个定时器,每30天重新训练一次模型,持续迭代机器学习模型,发挥天马行空的想象,这都是后话。
AiSEC需求:
- 机器学习配置模块:
- 支持上传训练样本
- 支持数据清洗
- 支持选择特征提取
- 支持选择机器学习模型
- 支持学习结果可视化
- 支持模型持久化
- 支持模型应用于代理保护模块
- 反向代理保护模块:
- 支持获取报文字段
- 支持特征提取
- 支持机器学习模型切换
通俗的说:
- 模块1:机器学习训练日志样本,生成机器学习模型
- 模块2:自由切换机器学习模型,应用保护模块
一期规划:
基于django开发web服务器,基于Nginx开发代理模块,实现web可配置的机器学习WAF:
- 文件上传1:上传攻击样本,标记1;
- 文件上传2:上传正常样本,标记0;
- 数据清洗:限制长度在10到100之间;
- 特征提取:支持词集,词袋,1-gram,2-gram,HMM泛化,SVM泛化,深度学习泛化;
- 机器学习模型:支持7种机器学习算法,3种深度学习算法;
- 学习结果可视化:支持学习结果可视化,展示图片;
- 模型持久化:支持模型冷冻和解冻;
- 模型应用:支持模型嵌入代理保护模块;
- 代理模块:Nginx+第三方模块;
开发语言:
Python2.7+Scikit-Learn+TFlearn+Django+C+Nginx
算法-特征提取算法:
- KNN、决策树、随机森林、逻辑回归:词集,词袋
- NB:1-gram,2-gram
- SVM:SVM泛化算法
- HMM:HMM泛化算法
- DNN、CNN、RNN:ASCII
不重启自由切换机器学习引擎:
- 回调机制设计中...
示例:KNN(K近邻算法检测异常操作)
- 文件上传:1万恶意操作,1万条正常操作。
- 特征化:去重,使用词集模型,将操作进行向量化。
- 训练模型:实例化K近邻算法,准备好数据x、y,设置好参数。
- 效果验证:交叉验证,输出准确率。
- 模型持久化:保存模型到磁盘。
- 预测新数据:输入新数据,激活模型进行预测。
示例:决策树|随机森林(决策树检测FTP暴力破解)
- 文件上传:1万条暴力破解数据,1万条正常操作数据。
- 特征化:使用词袋模型,将操作进行向量化。
- 训练模型:实例化决策树算法,准备好数据x、y,设置好参数。
- 效果验证:交叉验证,输出准确率。
- 模型持久化:保存模型到磁盘。
- 预测新数据:输入新数据,激活模型进行预测。
示例:朴素贝叶斯(NB检查webshell)
- 文件上传:1万条webshell数据,1万条正常PHP数据。
- 特征化:2-gram、1-gram生成词汇表。
- 训练模型:实例化NB,准备好数据x、y,设置好参数。
- 效果验证:交叉验证,输出准确率。
- 模型持久化:保存模型到磁盘。
- 预测新数据:输入新数据,激活模型进行预测。
示例:逻辑回归(逻辑回归识别JAVA溢出攻击)
- 文件上传:1万条JAVA溢出数据,一万条正常JAVA数据。
- 特征化:词集模型,将数据向量化。
- 训练模型:实例化Logistic回归,准备好数据x、y,设置好参数。
- 效果验证:交叉验证,输出准确率。
- 模型持久化:保存模型到磁盘。
- 预测新数据:输入新数据,激活模型进行预测。
示例:支持向量机(支持向量机识别XSS注入攻击)
- 文件上传:1万条XSS注入数据,1万条正常PHP数据。
- 特征化:XSS特征提取算法(SQL特征提取算法、僵尸网络DGA特征提取算法)。
- 训练模型:实例化SVM算法,准备好数据x、y,设置好参数。
- 效果验证:交叉验证,输出准确率。
- 模型持久化:保存模型到磁盘。
- 预测新数据:输入新数据,激活模型进行预测。
HMM(隐马尔科夫识别XSS)
- 文件上传:1万条XSS注入数据,1万条正常PHP数据。
- 特征化:HMM特有泛化算法。
- 训练模型:实例化HMM算法,准备好数据x、y,设置好参数。
- 效果验证:设定阈值,输出准确率。
- 模型持久化:保存模型到磁盘。
- 预测新数据:输入新数据,激活模型进行预测。
DNN、CNN、RNN(识别SQL注入攻击)
- 文件上传:1万条SQL注入数据,1万条正常SQL数据。
- 特征化:报文字段ASCII化。
- 训练模型:实例化算法,准备好数据x、y,设置好参数。
- 效果验证:输出准确率。
- 模型持久化:保存模型到磁盘。
- 预测新数据:输入新数据,激活模型进行预测。
谢谢阅读~
更多推荐
AiSEC全自动人工智能WAF防火墙
发布评论