直接通过日志识别异常请求模式可实现扫描行为的早期发现,核心是捕捉高频、低价值、规律性强的扫描“指纹”,如短时大量404/403、固定ua、空referer、路径遍历特征及参数爆破规律,并结合状态码与响应时间建立组合告警。

直接看日志里的异常请求模式,就能在扫描刚发生时就识别出来。重点不是等攻击完成,而是抓住扫描行为本身的“指纹”。
关注高频、低价值、规律性强的请求
扫描器发包通常有明显特征:短时间内大量访问不存在路径、反复试探常见后台目录(如 /phpmyadmin/、/wp-admin/、/admin.php)、统一 User-Agent(如 sqlmap、dirb、gobuster 默认标识)。这些请求往往返回 404 或 403,但数量远超正常用户行为。
- 用日志分析工具(如 EventLog Analyzer 或阿里云 WAF 日志服务)设置规则:5 分钟内同一 IP 触发 ≥20 条 404 请求,且 URI 包含典型扫描关键词(backup、conf、.git、.env)
- 对 Nginx/Apache 访问日志,可用 shell 快速筛查:
awk '$9 == "404" {print $1}' access.log | sort | uniq -c | sort -nr | head -10,找出 Top 10 异常 IP
检查 User-Agent 和 Referer 的可疑一致性
真实用户浏览器 UA 多样,而自动化工具往往固定不变;Referer 若为空或批量出现相同非业务域名,也值得警惕。
- 筛选出所有 UA 包含 sqlmap、nuclei、acunetix、ZAP 等字样的请求
- 统计空 Referer 请求占比——正常业务中空 Referer 通常低于 5%,若某 IP 的空 Referer 请求达 90% 以上,高度疑似工具扫描
识别目录爆破与路径遍历尝试
攻击者常通过枚举路径探测敏感文件或接口,比如反复请求 /api/user?id=1、/download?file=../../etc/passwd,这类请求在日志中表现为参数值高度结构化、变化有规律。
- 匹配 URL 中含 ../、%2e%2e%2f、etc/passwd、shadow 等字符串的请求
- 对 GET 参数做频次聚类:同一参数名(如 id、file)在短时间被赋值为连续数字或常见文件名,即为爆破信号
结合响应状态与耗时判断意图
单纯 404 不一定代表恶意,但配合其他指标就有意义。例如:某 IP 在 1 分钟内发出 50 次请求,其中 48 次是 404、1 次是 200(命中某个备份文件)、1 次是 500(触发后端报错),这就构成完整扫描—探测—利用链。
- 建立组合告警:同一源 IP + 3 分钟内 404 ≥30 次 + 至少 1 次 200/500 + 平均响应时间
- WAF 日志中可直接用 Trace ID 关联整条请求链,快速还原扫描器行为序列










