日志审计的基本流程日志审计的核心是从海量访问日志中提取关键线索定位异常行为。通常需要结合时间戳、IP、请求路径、状态码等字段进行多维分析。关键字段提取HTTP访问日志的标准格式包含以下关键字段远程IP地址攻击源IP可能被伪造时间戳攻击发生的时间区间请求方法GET/POST/PUT等HTTP方法请求URL被攻击的路径和参数状态码200/403/500等响应状态User-Agent攻击者使用的工具特征示例日志片段192.168.1.100 - - [15/Jul/2023:14:23:45 0800] GET /admin.php?cmduname%20-a HTTP/1.1 200 437 - Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.1)异常行为识别模式高频访问检测使用命令行工具统计IP访问频率awk {print $1} access.log | sort | uniq -c | sort -nr敏感路径扫描通过正则匹配管理后台、API等敏感路径grep -E (admin|api|login|\.php\?) access.log非常规状态码筛选非常规成功响应如403/404突然变200awk $9200 {print $0} access.log | grep -v static攻击链重构技术时间轴分析使用时间范围过滤攻击时段sed -n /15\/Jul\/2023:14:00/,/15\/Jul\/2023:15:00/p access.log会话追踪通过Cookie或SessionID关联操作序列grep SESSIONIDabc123 access.log | sort -k4载荷解码对URL编码的攻击载荷进行还原from urllib.parse import unquote print(unquote(uname%20-a)) # 输出: uname -a自动化审计工具ELK Stack方案使用Filebeat收集日志Logstash进行实时过滤Elasticsearch建立索引Kibana可视化分析OSSEC告警规则示例检测SQL注入的规则rule id100101 level10 matchselect.from|union.select/match descriptionSQL injection attempt/description /rule证据固定方法原始日志保全# 计算校验值 sha256sum access.log access.log.sha256 # 创建只读副本 cp --preserveall access.log evidence.log时间戳转换将日志时间转为UTC标准时间from datetime import datetime dt datetime.strptime(15/Jul/2023:14:23:45 0800, %d/%b/%Y:%H:%M:%S %z) print(dt.isoformat()) # 输出: 2023-07-15T14:23:4508:00溯源扩展技巧IP反向追踪whois 192.168.1.100 | grep -E netname|country威胁情报关联查询IP是否在恶意IP库curl -s https://otx.alienvault.com/api/v1/indicators/IPv4/192.168.1.100
日志审计实战:通过访问日志溯源攻击行为
日志审计的基本流程日志审计的核心是从海量访问日志中提取关键线索定位异常行为。通常需要结合时间戳、IP、请求路径、状态码等字段进行多维分析。关键字段提取HTTP访问日志的标准格式包含以下关键字段远程IP地址攻击源IP可能被伪造时间戳攻击发生的时间区间请求方法GET/POST/PUT等HTTP方法请求URL被攻击的路径和参数状态码200/403/500等响应状态User-Agent攻击者使用的工具特征示例日志片段192.168.1.100 - - [15/Jul/2023:14:23:45 0800] GET /admin.php?cmduname%20-a HTTP/1.1 200 437 - Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.1)异常行为识别模式高频访问检测使用命令行工具统计IP访问频率awk {print $1} access.log | sort | uniq -c | sort -nr敏感路径扫描通过正则匹配管理后台、API等敏感路径grep -E (admin|api|login|\.php\?) access.log非常规状态码筛选非常规成功响应如403/404突然变200awk $9200 {print $0} access.log | grep -v static攻击链重构技术时间轴分析使用时间范围过滤攻击时段sed -n /15\/Jul\/2023:14:00/,/15\/Jul\/2023:15:00/p access.log会话追踪通过Cookie或SessionID关联操作序列grep SESSIONIDabc123 access.log | sort -k4载荷解码对URL编码的攻击载荷进行还原from urllib.parse import unquote print(unquote(uname%20-a)) # 输出: uname -a自动化审计工具ELK Stack方案使用Filebeat收集日志Logstash进行实时过滤Elasticsearch建立索引Kibana可视化分析OSSEC告警规则示例检测SQL注入的规则rule id100101 level10 matchselect.from|union.select/match descriptionSQL injection attempt/description /rule证据固定方法原始日志保全# 计算校验值 sha256sum access.log access.log.sha256 # 创建只读副本 cp --preserveall access.log evidence.log时间戳转换将日志时间转为UTC标准时间from datetime import datetime dt datetime.strptime(15/Jul/2023:14:23:45 0800, %d/%b/%Y:%H:%M:%S %z) print(dt.isoformat()) # 输出: 2023-07-15T14:23:4508:00溯源扩展技巧IP反向追踪whois 192.168.1.100 | grep -E netname|country威胁情报关联查询IP是否在恶意IP库curl -s https://otx.alienvault.com/api/v1/indicators/IPv4/192.168.1.100