CC攻击的防护有一个底层难题:攻击请求和真人访问在协议层完全一样。 一个CC攻击的HTTP GET请求,一个真人点击页面的HTTP GET请求,从报文格式、请求方法、请求头结构上无法区分。唯一的差异在于行为——真人访问有停顿、有路径逻辑、有指纹多样性;机器请求则往往均匀、重复、单一。
AI行为分析的核心工作就是把这些行为差异量化,建立正常用户的行为基线,识别偏离基线的异常请求。本文拆解行为分析采集的六类特征维度。
一、请求时间间隔分布
真人访问和机器请求在时间维度上有本质差异。
真人用户在页面上停留的时间是不均匀的——可能看一段内容停留几秒,然后快速滚动到下一段,再停留更久。点击按钮的间隔也不均匀,有时连续操作,有时停顿思考。这种不均匀性是真人行为的自然特征。
机器请求的时间间隔通常高度均匀——如果脚本设置为每秒请求一次,请求间隔就精确在1秒附近波动极小。或者呈现固定的周期模式——如每5秒重试一次,失败后间隔加倍,成功后再恢复。这种规律性在统计上非常明显。
行为分析通过统计请求间隔的标准差、分布形态、周期性特征,可以准确区分真人和机器。真人的间隔分布标准差大、无明显周期性;机器的间隔分布标准差小、周期性强。
二、TCP/IP指纹特征
TCP/IP指纹是网络层的客户端特征。不同的操作系统(Windows、macOS、Linux、iOS、Android)在TCP/IP协议栈的实现上有差异,这些差异体现在:
初始TTL值。 不同操作系统的默认TTL不同(Windows通常128、Linux通常64、某些路由器255)。TCP窗口大小。 不同操作系统的默认窗口大小不同。TCP选项字段。 不同操作系统支持的TCP选项(MSS、SACK、Timestamps、Window Scale等)和顺序不同。
这些特征组合起来形成TCP/IP指纹。真实的用户设备指纹多样——因为用户使用的操作系统和浏览器组合是多样的。而自动化工具通常运行在固定的服务器环境,指纹单一。
行为分析统计请求的TCP/IP指纹分布。如果大量请求的指纹完全一致,说明可能来自同一批自动化工具;如果指纹多样化,符合真实用户特征。
三、TLS指纹特征
TLS指纹是加密层的客户端特征。TLS握手时,客户端会发送支持的加密套件列表、扩展字段、签名算法等。不同的浏览器、不同版本的浏览器,这些字段的组合和顺序不同。例如Chrome的TLS指纹与Firefox不同,与Safari也不同。
自动化工具通常使用固定的TLS库(如OpenSSL、BoringSSL),其TLS指纹与真实浏览器有明显差异。部分攻击工具会伪造TLS指纹试图绕过检测,但伪造的指纹通常与请求头中的User-Agent不匹配——例如声明自己是Chrome,但TLS指纹是Python的requests库。
行为分析通过比对TLS指纹与User-Agent的一致性,可以识别出伪造身份的请求。这与高防CDN七层防护和四层防护的区别中提到的协议层校验是相关的——TLS指纹属于传输层特征,在应用层判定之前就可以采集。
四、访问路径的连贯性
真人用户在网站上的访问路径有逻辑连贯性。例如,访问一个电商网站,真实用户可能先访问首页,然后进入商品列表,然后点击某个商品详情,最后进入购物车。路径有明确的逻辑链条,每一步都有合理的来源(Referer)和去向。
CC攻击的访问路径通常单一且重复——大量请求集中在某一个接口,路径没有逻辑连贯性,Referer字段可能是空的或不合理的。部分高级攻击工具会伪造Referer,但伪造的路径通常不符合真实用户的行为模式——例如声称从首页跳到支付页面,跳过了中间步骤。
行为分析通过构建访问路径图谱,统计路径的正常性和连贯性。偏离正常路径模式的请求被标记为可疑。
五、请求头的合理性
真实浏览器的请求头有特定的结构和字段组合。例如:User-Agent字段符合某个浏览器版本的格式;Accept字段包含浏览器支持的内容类型;Accept-Language字段与用户的地理位置相符;Accept-Encoding字段包含浏览器支持的压缩算法。
自动化工具的请求头往往存在问题:字段缺失(如缺少Accept-Language)、字段值不合理(如User-Agent声称是Chrome但版本号不存在)、字段组合矛盾(如声明的浏览器版本不支持声明的压缩算法)。
行为分析通过校验请求头的完整性和合理性,识别出不符合真实浏览器特征的请求。
六、会话行为模式
真人用户在会话中有特定的行为模式。例如,真人会经历"登录→浏览→操作→退出"的完整流程;真人会打开多个页面;真人会在页面上停留不同的时间;真人会遇到操作错误并修正。
机器请求通常缺乏这些模式。它们可能只调用单一接口;可能不登录就访问受保护资源;可能以固定的顺序调用接口;可能不会出现人类用户的"错误-修正"行为。
行为分析通过统计会话的完整性和行为模式的多样性,识别出不符合真人模式的会话。
| 特征维度 | 真人特征 | 机器特征 |
|---|---|---|
| 时间间隔分布 | 不均匀,无明显周期 | 均匀,周期性强 |
| TCP/IP指纹 | 多样化 | 单一或批量一致 |
| TLS指纹 | 与User-Agent一致 | 与User-Agent不匹配 |
| 访问路径 | 有逻辑连贯性 | 单一重复 |
| 请求头 | 完整合理 | 字段缺失或矛盾 |
| 会话行为 | 完整多样 | 单一重复 |
七、行为基线的建立与更新
行为分析的前提是有一个准确的正常用户基线。基线的建立和更新需要关注几个要点。
基线需要分业务建立。 不同业务的正常行为模式不同——游戏业务的正常请求频率高、电商业务的正常访问路径复杂、API业务的正常调用模式与浏览器访问不同。基线需要按业务类型分别建立,而不是用统一的标准。
基线需要动态更新。 业务模式会变化——大促期间用户行为改变、新功能上线后访问路径变化、用户群体发生变化。基线需要根据最新数据动态更新,而不是固定不变。
基线需要分层。 不同的用户群体有不同的行为模式。例如,新用户和活跃用户的行为不同,移动端和PC端的行为不同,不同地域的用户行为不同。基线需要按用户群体分层建立,而不是用单一基线覆盖所有用户。
坚果盾高防CDN的CC防护方案基于行为分析与指纹识别,正常访问无感知,误封率控制在极低水平。对于正常用户行为本身就存在高并发特征的业务,这种防护路线的误封控制能力比单一频率阈值方案更具优势。
八、结语
AI行为分析的核心是从多个维度区分机器请求和真人访问。时间间隔分布、TCP/IP指纹、TLS指纹、访问路径连贯性、请求头合理性、会话行为模式,这六个维度组合起来构成行为指纹。通过建立正常用户基线,识别偏离基线的异常请求,行为分析在拦截CC攻击的同时把误封率控制在极低水平。评估时需要确认服务商的防护方案是否采集多维行为特征、基线是否按业务分层建立并动态更新、可疑请求是否先验证再放行。这些细节,比“是否支持CC防护”更能说明防护方案的实际水平。