Loading... # 引言 在信息安全领域,启发式杀毒(Heuristic Antivirus)一直是一种重要的防御手段。其核心思路不是单纯依赖病毒特征码,而是通过分析程序的行为——如调用哪些 API、操作了哪些文件或注册表、建立了哪些网络连接——来打分、评估潜在威胁。 最近,我在分析 Nginx 日志时,意识到这种思路同样适用于日志分析:如果我们把每条请求看作“行为”,并为其赋予“风险评分”,就能快速识别异常访问、爬虫行为或潜在攻击。本文将从实际日志出发,分享我如何借鉴启发式思路进行分析。 # 分析最近30天的nginx日志 单独拎出来一条(实际上nginx日志格式是可以自定义的): ``` 47.251.93.227 - - [07/Aug/2025:00:01:53 +0800] "GET / HTTP/1.1" 403 146 "-" "Mozilla/5.0 zgrab/0.x" ``` | 字段 | 含义 | | ------------------------------------ | ------------------------------------------------- | | `47.251.93.227` | 客户端 IP | | `-` | 用户身份信息(通常未启用,显示`-`) | | `-` | 用户名(如果开启 HTTP Basic Auth,否则`-`) | | `[07/Aug/2025:00:01:53 +0800]` | 请求时间(含时区) | | `"GET / HTTP/1.1"` | 请求行:方法 + URI + 协议版本 | | `403` | HTTP 响应状态码 | | `146` | 响应体大小(字节) | | `"-"` | Referer(上级页面) | | `"Mozilla/5.0 zgrab/0.x"` | User-Agent(客户端信息) | 其中我们可以根据时间、IP、请求行、状态码、UA来分析 # 基本行为分析角度 我们可以基于以下维度对日志行为进行分析: 1. 时间维度:请求时间分布,是否有异常高频访问或非工作时间访问。 2. IP 维度:是否存在异常 IP(爬虫、扫描、黑名单 IP)。 3. 请求内容:请求 URI、HTTP 方法,是否访问敏感路径。 4. 状态码:403、404、500 等状态码的异常访问频率。 5. User-Agent:是否为常见浏览器、爬虫或伪造 UA。 # 行为评估打分 可以借鉴启发式杀毒的评分方法,为每条请求分配“风险分数”。例如: | 行为特征 | 风险评分 | | ---------------------------------------------------- | ---------- | | GET参数包含SQL注入嫌疑 | 4 | | 请求非首页敏感目录(比如`/admin`、`/login`) | 3 | | 状态码为 4xx 或 5xx | 2 | | 非常见或空 User-Agent | 2 | | 短时间内同 IP 多次请求 | 3 | | Referer 可疑或缺失 | 1 | 这种情境下,通过行为风险评分进行标记,后续如果对接威胁情报系统,多维分析,能够大幅提高准确度。 # 结语 通过启发式思路,日志分析不再仅仅是统计访问次数或状态码,而是赋予行为风险权重,进而快速识别进行封锁,进而实现主动防御。 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏