欢迎来到天天文库
浏览记录
ID:16355169
大小:9.94 MB
页数:42页
时间:2018-08-09
《web日志安全分析浅谈》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Web日志安全分析浅谈Web日志安全分析浅谈一、为什么需要对日志进行分析?随着Web技术不断发展,Web被应用得越来越广泛,所谓有价值的地方就有江湖,网站被恶意黑客攻击的频率和网站的价值一般成正比趋势,即使网站价值相对较小,也会面对“脚本小子”的恶意测试攻击或者躺枪于各种大范围漏洞扫描器,正如安全行业的一句话:“世界上只有两种人,一种是知道自己被黑了的,另外一种是被黑了还不知道的”此时对网站的日志分析就显得特别重要,作为网站管理运维等人员如不能实时的了解服务器的安全状况,则必定会成为“被黑了还不
2、知道的”那一类人,从而造成损失,当然还有一个场景是已经因为黑客攻击造成经济损失,此时我们也会进行日志分析等各种应急措施尽量挽回损失,简而言之日志分析最直接明显的两个目的,一为网站安全自检查,了解服务器上正在发生的安全事件,二为应急事件中的分析取证。二、如何进行日志分析?在说如何进行分析之前,我们先来了解一下Web服务器中产生的日志是什么样子.我们以Nginx容器为例:随机抽取一条日志:61.144.119.65--[29/May/2017:22:01:32+0800]"GET/page/1HTT
3、P/1.1"2006403"http://www.baidu.com""Scrapy/1.1.2(+http://scrapy.org)"作为Web开发或者运维人员,可能对图中的日志信息比较熟悉,如果对日志不那么熟悉也没关系,我们可以查看Nginx中关于日志格式的配置,查看nginx.conf配置文件:可以看到日志格式为:remote_addr-remote_user[time_local]"request"'statusbody_bytes_sent"http_referer"'http_us
4、er_agent""$http_x_forwarded_for"';翻译过来即为:远程IP-远程用户服务器时间请求主体响应状态响应体大小请求来源客户端信息客户端代理IP通过以上信息,我们可以得知服务器会记录来自客户端的每一个请求,其中有大量来自正常用户的请求,当然也包括来自恶意攻击者的请求,那么我们如何区分正常请求和恶意攻击请求呢?站在攻击者的角度,攻击者对网站进行渗透时,其中包含大量的扫描请求和执行恶意操作的请求,而这两者在日志中都有各自的特征,如扫描请求会访问大量不存在的地址,在日志中体现则
5、为大量的响应状态码为404,而不同的恶意请求都有各自相应的特征,如当有人对服务器进行SQL注入漏洞探测时:(图中以"select"为关键字进行过滤)聪明的你肯定想到了,如果此时加上时间条件,状态码等条件就能查询到最近可能成功的SQL注入攻击了,当然实际情况中,仅仅只依靠状态码来判断攻击是否成功是不可行的,因为很多时候请求的确成功了,但并不能代表攻击也成功了,如请求一个静态页面或者图片,会产生这样一个请求:/logo.png?www.2cto.com?attack=test';select//1/
6、/from/**/1,此时请求状态码为200,但是此注入攻击并没有得到执行,实际情况中,还会有更多情况导致产生此类的噪声数据。抛开这类情况不谈,我们来说说在一般应急响应场景中我们分析日志的常规办法。在常规应急响应常见中,一般客户会有这几种被黑情况:1.带宽被占满,导致网站响应速度变慢,用户无法正常访问2.造成已知经济损失,客户被恶意转账、对账发现金额无端流失3.网站被篡改或者添加暗链,常见为黑客黑页、博彩链接等..对于这些情况,按照经验,我们会先建议对已知被黑的服务器进行断网,然后开始进行日志分
7、析操作。假设我们面对的是一个相对初级的黑客,一般我们直接到服务器检查是否存有明显的webshell即可。检查方式也很简单:1.搜索最近一周被创建、更新的脚本文件2.根据网站所用语言,搜索对应webshell文件常见的关键字找到webshell后门文件后,通过查看日志中谁访问了webshell,然后得出攻击者IP,再通过IP提取出攻击者所有请求进行分析如果不出意外,可能我们得到类似这样一个日志结果:(为清晰呈现攻击路径,此日志为人工撰造)eg:00:01GEThttp://localhost/in
8、dex.php9.9.9.9200[正常请求]00:02GEThttp://localhost/index.php?id=1'9.9.9.9500[疑似攻击]00:05GEThttp://localhost/index.php?id=1'and1=user()or''='9.9.9.9500[确认攻击]00:07GEThttp://localhost/index.php?id=1'and1=(selecttop1namefromuserinfo)or''='9.9.9.9500[确认攻击]00:
此文档下载收益归作者所有