应急响应:Web日志分析

发布时间:2026/8/1 3:01:23
应急响应:Web日志分析 Web日志分析ox01 Web日志Web访问日志记录了Web服务器接收处理请求及运行时错误等各种原始信息。通过对WEB日志进行的安全分析不仅可以帮助我们定位攻击者还可以帮助我们还原攻击路径找到网站存在的安全漏洞并进行修复。我们来看一条Apache的访问日志127.0.0.1 - - [11/Jun/2018:12:47:22 0800] GET /login.html HTTP/1.1 200 786 - Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36通过这条Web访问日志我们可以清楚的得知用户在什么IP、什么时间、用什么操作系统、什么浏览器的情况下访问了你网站的哪个页面是否访问成功。本文通过介绍Web日志安全分析时的思路和常用的一些技巧。0x02 日志分析技巧在对WEB日志进行安全分析时一般可以按照两种思路展开逐步深入还原整个攻击过程。第一种确定入侵的时间范围以此为线索查找这个时间范围内可疑的日志进一步排查最终确定攻击者还原攻击过程。第二种攻击者在入侵网站后通常会留下后门维持权限以方便再次访问我们可以找到该文件并以此为线索来展开分析。常用分析工具Window下推荐用 EmEditor 进行日志分析支持大文本搜索效率还不错。Linux下使用Shell命令组合查询分析。ShellLinux命令实现日志分析一般结合grep、awk等命令等实现了几个常用的日志分析统计技巧。Apache日志分析技巧1、列出当天访问次数最多的IP命令cut -d- -f 1 log_file|uniq -c | sort -rn | head -202、查看当天有多少个IP访问awk {print $1} log_file|sort|uniq|wc -l3、查看某一个页面被访问的次数grep /index.php log_file | wc -l4、查看每一个IP访问了多少个页面awk {S[$1]} END {for (a in S) print a,S[a]} log_file5、将每个IP访问的页面数进行从小到大排序awk {S[$1]} END {for (a in S) print S[a],a} log_file | sort -n6、查看某一个IP访问了哪些页面grep ^111.111.111.111 log_file| awk {print $1,$7}7、去掉搜索引擎统计当天的页面awk {print $12,$1} log_file | grep ^\Mozilla | awk {print $2} |sort | uniq | wc -l8、查看2018年6月21日14时这一个小时内有多少IP访问:awk {print $4,$1} log_file | grep 21/Jun/2018:14 | awk {print $2}| sort | uniq | wc -l0x03 日志分析案例Web日志分析实例通过nginx代理转发到内网某服务器内网服务器某站点目录下被上传了多个图片木马虽然II7下不能解析但还是想找出谁通过什么路径上传的。在这里我们遇到了一个问题由于设置了代理转发只记录了代理服务器的ip并没有记录访问者IP这时候如何去识别不同的访问者和攻击源呢这是管理员日志配置不当的问题但好在我们可以通过浏览器指纹来定位不同的访问来源还原攻击路径。1、定位攻击源首先访问图片木马的记录只找到了一条由于所有访问日志只记录了代理IP并不能通过IP来还原攻击路径这时候可以利用浏览器指纹来定位。浏览器指纹Mozilla/4.0(compatible;MSIE7.0;WindowsNT6.1;WOW64;Trident/7.0;SLCC2;.NETCLR2.0.50727;.NETCLR3.5.30729;.NETCLR3.0.30729;.NET4.0C;.NET4.0E)2、搜索相关日志记录通过筛选与该浏览器指纹有关的日志记录可以清晰地看到攻击者的攻击路径。3、对找到的访问日志进行解读攻击者大致的访问路径如下A、攻击者访问首页和登录页B、攻击者访问MsgSjlb.aspx和MsgSebd.aspxC、攻击者访问Xzuser.aspxD、攻击者多次POST怀疑通过这个页面上传模块缺陷E、攻击者访问了图片木马打开网站访问Xzuser.aspx确认攻击者通过该页面的进行文件上传了图片木马同时发现网站了存在越权访问漏洞攻击者访问特定URL无需登录即可进入后台界面。通过日志分析找到网站的漏洞位置并进行修复。0x04 日志统计分析技巧统计爬虫grep -E Googlebot|Baiduspider /www/logs/access.2019-02-23.log | awk { print $1 } | sort | uniq统计浏览器cat /www/logs/access.2019-02-23.log | grep -v -E MSIE|Firefox|Chrome|Opera|Safari|Gecko|Maxthon | sort | uniq -c | sort -r -n | head -n 100IP 统计grep 23/May/2019 /www/logs/access.2019-02-23.log | awk {print $1} | awk -F. {print $1.$2.$3.$4} | sort | uniq -c | sort -r -n | head -n 102206 219.136.134.131497 182.34.15.2481431 211.140.143.1001431 119.145.149.1061427 61.183.15.1791427 218.6.8.1891422 124.232.150.1711421 106.187.47.2241420 61.160.220.2521418 114.80.201.18统计网段cat /www/logs/access.2019-02-23.log | awk {print $1} | awk -F. {print $1.$2.$3.0} | sort | uniq -c | sort -r -n | head -n 200统计域名cat /www/logs/access.2019-02-23.log |awk {print $2}|sort|uniq -c|sort -rn|moreHTTP Statuscat /www/logs/access.2019-02-23.log |awk {print $9}|sort|uniq -c|sort -rn|more5056585 3041125579 2007602 4005 301URL 统计cat /www/logs/access.2019-02-23.log |awk {print $7}|sort|uniq -c|sort -rn|more文件流量统计cat /www/logs/access.2019-02-23.log |awk {sum[$7]$10}END{for(i in sum){print sum[i],i}}|sort -rn|moregrep 200 /www/logs/access.2019-02-23.log |awk {sum[$7]$10}END{for(i in sum){print sum[i],i}}|sort -rn|moreURL访问量统计cat /www/logs/access.2019-02-23.log | awk {print $7} | egrep \?| | sort | uniq -c | sort -rn | more脚本运行速度查出运行速度最慢的脚本grep -v 0$ /www/logs/access.2019-02-23.log | awk -F \ {print $4 $1} web.log | awk {print $1 $8} | sort -n -k 1 -r | uniq /tmp/slow_url.txtIP, URL 抽取tail -f /www/logs/access.2019-02-23.log | grep /test.html | awk {print $1 $7}参考链接ShellLinux命令实现日志分析_linux shell_脚本之家Shell日志分析常用命令和例子_linux shell_脚本之家运维必备技能 WEB 日志分析-腾讯云开发者社区-腾讯云