从免费的WEB应用防火墙hihttps谈机器学习之生成对抗规则过程
字数 2496 2025-08-18 11:39:19
基于机器学习的Web应用防火墙hihttps工作原理详解
一、hihttps简介
hihttps是一款免费的Web应用防火墙(WAF),具有以下特点:
- 支持传统WAF所有功能:SQL注入、XSS、恶意漏洞扫描、密码暴力破解、CC、DDOS等防护
- 支持无监督机器学习,能够自主对抗攻击
- 采用反向代理模式采集HTTP协议数据
- 开源项目,源码地址:https://github.com/qq4108863/hihttps/
二、机器学习生成对抗规则的五个关键过程
1. 样本采集
采集方法:
- 通过反向代理模式采集完整的HTTP协议数据
- 样本包括全部的HTTP请求头和body
样本要求:
- 足够的随机化:在不同IP地址之间随机采集
- 足够多的样本:保证99.99%正确率需要数万份样本
- 足够的时间:在不同时间段采集3-7天的样本
- 尽量采集正常流量:减少被黑客攻击污染的可能性
示例样本:
GET /hihttps?id=123&token=2458-a632-3d56-a9bf
GET /hihttps?id=238&token=ce58-a49d-b767-68ed
GET /hihttps?id=523&token=2bd8-c4d2-d324-29b3
GET /hihttps?id=abc&token=2bd8-c4d2-d324-29b3
GET /hihttps?id=abc%20'or 1=1'
2. 滤噪处理
目的:过滤掉可能被污染的异常样本(通常小于3%的样本)
滤噪方法:
- URL参数过滤:过滤出现频率低于1%的异常参数
- URL长度过滤:使用切比雪夫不等式过滤异常长度(均值μ,方差σ³范围外)
- 参数值长度过滤:同上方法过滤异常参数值长度
- SQL注入过滤:使用libinjection库检测SQL注入特征
- XSS攻击过滤:使用libinjection库检测XSS特征
- 其他已知攻击过滤:使用ModSecurity的OWASP规则检测
可用算法:
- K均值(K-Mean)
- 主成分分析(PCA)
- 切比雪夫不等式
- 高斯混合模型(GMM)
- 稀疏矩阵
3. 降维处理
目的:将复杂数据转换为机器可理解的特征向量
降维方法分类:
- 线性降维:PCA、ICA、LDA、LFA、LPP等
- 非线性降维:KPCA、KICA、KDA、ISOMAP、LLE、LE、LPP、LTSA、MVU等
文本降维模型:
-
词袋模型:
- 使用one-hot稀疏编码
- 采用n-gram语法(unigram、bigram、trigram)
-
维度选择方法:
- 统计检验方法:卡方、互信息
- 机器学习模型:随机森林、逻辑回归筛选重要特征
-
主题模型:
- LSI、LDA、PLSA、HDP等统计主题模型
-
神经网络:
- CNN、RNN等深度学习模型
示例降维:
定义稀疏编码:
- N: 整数(0-9)
- C: 字符(a-z)
- X: 16进制数字(0-9a-f)
- D: 标点分隔符(.-|)
将样本降维为:
GET /hihttps?id=123&token=2458-a632-3d56-a9bf → id=N&token=XDXDXDX
4. 特征提取
对正常流量进行数值化特征提取和分析:
| 类别 | 序号 | 特征名称 | 特征描述 |
|---|---|---|---|
| 语法特征 | 1 | URL_len | URL长度 |
| 2 | Path_len | 路径长度 | |
| 3 | Path | 路径最大长度 | |
| 4 | Path_Maxlen | 路径平均长度 | |
| 5 | Argument_len | 参数部分长度 | |
| 6 | Name_Max_len | 参数名最大长度 | |
| 7 | Name_Avglen | 参数名平均长度 | |
| 8 | Value_Max_len | 参数值最大长度 | |
| 9 | Value_Avg_len | 参数值平均长度 | |
| 10 | Argument_len | 参数个数 | |
| 11 | String_Max_len | 字符串最大长度 | |
| 12 | Number_Maxlen | 连续数字最大长度 | |
| 13 | Path_number | 路径中的数字个数 | |
| 14 | Unknow_len | 特殊字符的个数 | |
| 15 | Number_Percentage | 参数值中数字占有比例 | |
| 16 | String_Percentage | 参数值字母占有比例 | |
| 17 | Unkown_Percentage | 参数值中特殊字符的比例 | |
| 18 | BigString_Percentage | 大写字符所占比例 | |
| 19 | Spacing_Precentage | 空格字符所占比例 | |
| 领域特征 | 20 | ContainIP | 参数值是否包含IP |
| 21 | Sql_Risk_level | SQL类型危险等级 | |
| 22 | Xss_Risk_level | Xss类型危险等级 | |
| 23 | Others_Risk_level | 其他类型危险等级 |
5. 生成对抗规则
基于样本分析和特征提取,自动生成对抗规则:
示例规则:
GET /hihttps?id=123→ 参数缺失(视为攻击)GET /hihttps?id=abc&token=2458-a632-3d56-a9bf→ id参数类型不符(视为攻击)GET /hihttps?admin=%0acdef→ 未知攻击模式(视为攻击)
三、关键总结
-
学习方式:
- 主要采用无监督机器学习
- 可结合网络安全专家干预实现半监督学习,提高准确率
-
技术优势:
- 传统WAF规则难以应对未知漏洞和攻击
- 机器学习方法能够检测未知攻击模式
- 结合特征工程和机器学习是未来Web安全发展方向
-
发展前景:
- hihttps在机器学习自主对抗方面做了有益尝试
- Web安全未来将是AI技术的重要应用领域
- 网络安全对抗本质上是顶尖智力的较量,仍需持续发展
四、参考资料
- hihttps开源项目:https://github.com/qq4108863/hihttps/
- AI相关算法源码:https://github.com/qq4108863/AI
- libinjection库:用于SQL注入和XSS检测
- ModSecurity OWASP规则:用于已知攻击检测