WAF 能否区分正常的用户行为与自动化攻击脚本

 

  • 基于行为模式的区分
    • 请求频率分析
      • 原理:正常用户的操作通常具有一定的节奏和频率。例如,在浏览网页时,用户会在页面上停留一段时间,阅读内容后再进行下一个操作,如点击链接或提交表单。而自动化攻击脚本可能会在短时间内发起大量的请求。WAF 可以通过分析请求的频率来区分。它可以设置一个阈值,当某个 IP 地址或用户账户在单位时间内发起的请求数量超过这个阈值时,就将其视为可疑行为。
      • 示例:对于一个电商网站,正常用户在搜索商品时,可能每隔几分钟才会进行一次新的搜索。但如果一个 IP 地址在 1 秒钟内发送了 100 次搜索请求,WAF 就会怀疑这可能是自动化攻击脚本在进行暴力搜索,试图发现网站的漏洞或者收集信息。
    • 请求路径和行为序列分析
      • 原理:正常用户在网站上的行为具有一定的逻辑性和连贯性。他们通常会按照网站的设计流程进行操作,如先登录,再浏览商品目录,然后查看商品详情,最后可能添加到购物车或进行购买。WAF 可以构建用户行为模型,分析请求的路径和行为序列。如果发现请求的路径不符合正常的用户行为模式,例如,直接跳过登录环节就进行敏感操作,或者频繁地在一些不相关的页面之间跳转,就可能是自动化攻击脚本的行为。
      • 示例:在一个在线银行系统中,正常用户会先登录,然后查看账户余额,再进行转账等操作。如果 WAF 检测到一个请求序列是直接尝试进行转账操作而没有经过登录步骤,就会判定这可能是一个自动化攻击脚本在试图利用系统漏洞进行非法转账。
  • 基于请求特征的区分
    • 请求头和参数分析
      • 原理:正常用户的请求头和参数通常具有一定的规律性。例如,浏览器发送的请求头会包含用户代理(User – Agent)信息,显示用户使用的浏览器类型和版本。自动化攻击脚本可能会使用自定义的或者伪造的请求头,或者在参数中包含一些异常的内容,如特殊的编码方式、不符合业务逻辑的参数值等。WAF 可以检查请求头的合法性和参数的合理性来区分。
      • 示例:正常用户通过主流浏览器访问网站时,请求头中的 User – Agent 会是类似于 “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36” 这样的信息。如果 WAF 检测到一个请求的 User – Agent 是一个奇怪的、不符合任何已知浏览器格式的字符串,或者请求参数中包含大量的 SQL 注入尝试相关的特殊字符,就会怀疑这是自动化攻击脚本。
    • 数据格式和内容验证
      • 原理:正常用户输入的数据通常符合一定的格式和内容要求。例如,在填写手机号码时,应该是符合手机号码格式的数字串。WAF 可以对用户输入的数据进行严格的格式和内容验证。自动化攻击脚本可能会输入不符合格式要求的数据或者包含恶意代码的数据,如在一个表单输入框中输入 SQL 注入语句或跨站脚本攻击(XSS)语句。
      • 示例:在一个用户注册页面,要求用户输入生日信息,格式为 “YYYY – MM – DD”。如果 WAF 检测到一个请求中的生日信息输入为不符合这个格式的内容,或者包含一些特殊字符(如 “<script>”),就会将其视为可疑输入,可能是自动化攻击脚本在进行攻击尝试。
  • 机器学习辅助区分
    • 原理
      • WAF 可以利用机器学习算法来学习正常用户行为的模式。通过收集大量的正常用户行为数据(如请求频率、请求路径、请求头和参数等)作为训练样本,训练一个分类模型。这个模型可以将新的请求分类为正常用户行为或自动化攻击脚本。机器学习算法可以处理复杂的行为模式和数据特征,并且能够随着时间和新数据的积累不断优化模型。
    • 示例
      • 假设使用监督学习中的决策树算法来训练一个区分正常用户和自动化攻击脚本的模型。WAF 收集了过去一个月内的正常用户行为数据和已知的自动化攻击脚本数据作为训练集。在训练完成后,当新的请求到来时,模型会根据请求的各种特征(如请求频率、请求路径、请求头等)进行判断。如果模型判定一个请求具有较高的概率是自动化攻击脚本,WAF 就可以采取相应的措施,如拦截请求或进行进一步的验证。
  • 验证码和挑战 – 响应机制辅助区分
    • 原理
      • 当 WAF 怀疑一个请求可能是自动化攻击脚本时,可以触发验证码或挑战 – 响应机制。正常用户能够相对容易地完成验证码的填写或者应对简单的挑战,如回答一个简单的安全问题。而自动化攻击脚本通常很难处理这些情况。通过这种方式,可以进一步验证请求是来自正常用户还是自动化攻击脚本。
    • 示例
      • 当 WAF 检测到一个 IP 地址的请求行为异常,如请求频率过高。它可以向该 IP 地址发送一个验证码,要求用户填写。如果请求是来自正常用户,用户可以看到验证码并填写正确的内容,然后请求可以继续进行。但如果是自动化攻击脚本,它通常无法正确填写验证码,WAF 就可以确定这是一个攻击行为并拦截后续请求。