从免费的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

样本要求

  1. 足够的随机化:在不同IP地址之间随机采集
  2. 足够多的样本:保证99.99%正确率需要数万份样本
  3. 足够的时间:在不同时间段采集3-7天的样本
  4. 尽量采集正常流量:减少被黑客攻击污染的可能性

示例样本

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%的样本)

滤噪方法

  1. URL参数过滤:过滤出现频率低于1%的异常参数
  2. URL长度过滤:使用切比雪夫不等式过滤异常长度(均值μ,方差σ³范围外)
  3. 参数值长度过滤:同上方法过滤异常参数值长度
  4. SQL注入过滤:使用libinjection库检测SQL注入特征
  5. XSS攻击过滤:使用libinjection库检测XSS特征
  6. 其他已知攻击过滤:使用ModSecurity的OWASP规则检测

可用算法

  • K均值(K-Mean)
  • 主成分分析(PCA)
  • 切比雪夫不等式
  • 高斯混合模型(GMM)
  • 稀疏矩阵

3. 降维处理

目的:将复杂数据转换为机器可理解的特征向量

降维方法分类

  • 线性降维:PCA、ICA、LDA、LFA、LPP等
  • 非线性降维:KPCA、KICA、KDA、ISOMAP、LLE、LE、LPP、LTSA、MVU等

文本降维模型

  1. 词袋模型

    • 使用one-hot稀疏编码
    • 采用n-gram语法(unigram、bigram、trigram)
  2. 维度选择方法

    • 统计检验方法:卡方、互信息
    • 机器学习模型:随机森林、逻辑回归筛选重要特征
  3. 主题模型

    • LSI、LDA、PLSA、HDP等统计主题模型
  4. 神经网络

    • 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. 生成对抗规则

基于样本分析和特征提取,自动生成对抗规则:

示例规则

  1. GET /hihttps?id=123 → 参数缺失(视为攻击)
  2. GET /hihttps?id=abc&token=2458-a632-3d56-a9bf → id参数类型不符(视为攻击)
  3. GET /hihttps?admin=%0acdef → 未知攻击模式(视为攻击)

三、关键总结

  1. 学习方式

    • 主要采用无监督机器学习
    • 可结合网络安全专家干预实现半监督学习,提高准确率
  2. 技术优势

    • 传统WAF规则难以应对未知漏洞和攻击
    • 机器学习方法能够检测未知攻击模式
    • 结合特征工程和机器学习是未来Web安全发展方向
  3. 发展前景

    • hihttps在机器学习自主对抗方面做了有益尝试
    • Web安全未来将是AI技术的重要应用领域
    • 网络安全对抗本质上是顶尖智力的较量,仍需持续发展

四、参考资料

  1. hihttps开源项目:https://github.com/qq4108863/hihttps/
  2. AI相关算法源码:https://github.com/qq4108863/AI
  3. libinjection库:用于SQL注入和XSS检测
  4. ModSecurity OWASP规则:用于已知攻击检测
基于机器学习的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天的样本 尽量采集正常流量:减少被黑客攻击污染的可能性 示例样本 : 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: 标点分隔符(.-|) 将样本降维为: 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规则:用于已知攻击检测