高效分析日志文件(下)

日期: 2009-07-26 作者:Brad Causey翻译:Sean 来源:TechTarget中国 英文

第3步:继续改进   有时候我们很想看看由Bob发出,并且服务器响应代码为200的那些请求。因为那表明它获取了所请求的资源。我们可以采用如下这条命令: >egrep –n -i “bob|200” access_log   它返回的结果是出现了“Bob”或“200”的那些条目,不过这还并不能保证就一定由是Bob发出、并且响应为200的请求。它返回的结果还有不少其实并不是我们想要的。

如果我们把Bob和200同时作为搜索条件,搜索出来的结果就可以更准确一些。如果注意到Bob和200都是被空格分隔开了的话,我们还可以更进一步地改进搜索条件。另外, 注意-……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

第3步:继续改进

  有时候我们很想看看由Bob发出,并且服务器响应代码为200的那些请求。因为那表明它获取了所请求的资源。我们可以采用如下这条命令:

>egrep –n -i “bob|200” access_log

  它返回的结果是出现了“Bob”或“200”的那些条目,不过这还并不能保证就一定由是Bob发出、并且响应为200的请求。它返回的结果还有不少其实并不是我们想要的。如果我们把Bob和200同时作为搜索条件,搜索出来的结果就可以更准确一些。如果注意到Bob和200都是被空格分隔开了的话,我们还可以更进一步地改进搜索条件。另外, 注意-i这个参数,它表示忽略大小写,因此Bob, bOb, boB, bob, 以及 BOB都可以匹配我们的搜索结果。

>egrep –n –i “bbobb. *200*” access_log

  这条命令就可以把搜索条件设为“bob"和”200“同时出现的行。在bob两头的b表示的是单词边界,或者说单词的开始和结束。200前的那个*表示的是在bob和200之前有一些字符,200之后的那个*则表示允许200后面存在其它字符。这样的话,将返回如下结果:

57:10.10.10.10 - bob
[10/Oct/2007:20:24:18 -0700] “GET /
webmin HTTP/1.0” 404 726
59:10.10.10.10 - bob
[10/Oct/2007:20:24:59 -0700] “GET
/admin HTTP/1.0” 404 726
65:10.10.10.10 - bob
[10/Oct/2007:20:25:35 -0700] “GET /login
HTTP/1.0” 404 726

  从上面的搜索结果里,你应该能看出来,Bob似乎在找什么东西。很可能是管理员登陆入口之类的,或者是入侵Web服务器的通道。另外,如果你注意一下时间戳信息的话,你就会发现他在短短一分钟内发送了三次请求,这说明他要么打字超快,要么就是在用某种自动工具。而更可能的是后一种情况,这让我们有了足够的理由进一步分析他的行为。
 
  同时,注意Bob的请求返回结果全都是404 ”not found"信息。为什么会这样呢?我们要搜索的明明是返回代码为200的记录啊。这就是电脑没有人聪明的典型例子,在我们这个例子里,日期时间戳恰好包含有200这个字串,于是它就被搜索出来了。使用正则表达式经常会造成误报,但是通过我们的简单查询,我们可以排除大部分误报。
 
  下面让我们进一步分析Bob的行为。

  第4步:继续追踪

  我们的最后手段就是找出Bob发送请求时的IP地址,以此跟踪它的行为。这要求我们必须在正则表达式里转义IP地址里的句号。转义的目的是告诉正则表达式引擎,按字面意思解释这个字符,而不用考虑它的特殊意义。请看下面这条命令:

>egrep –n –i “10.10.10.10” access_log

  它让egrep找出日志文件里所有含10.10.10.10的条目。结果如下:

57:10.10.10.10 - bob
[10/Oct/2000:20:24:18 -0700] “GET /web
min HTTP/1.0” 404 726
59:10.10.10.10 - bob
[10/Oct/2000:20:24:59 -0700] “GET
/admin HTTP/1.0” 404 726
65:10.10.10.10 - bob
[10/Oct/2000:20:25:35 -0700] “GET /login
HTTP/1.0” 404 726
120:10.10.10.10 - [10/Oct/2000:21:14:11
-0700] “GET /index.html HTTP/1.0” 200
2571
157:10.10.10.10 - [10/Oct/2000:21:50:59
-0700] “GET /parent/directory HTTP/1.0”
404 726
260:10.10.10.10 - [10/Oct/2000:22:25:15
-0700] “GET /support.htm HTTP/1.0” 200
1056

  由此可以看出,Bob明显是在四处试探我们的网站,但是还不一定有什么违法或越轨行为。不过,继续查看包含这一信息记录也是非常有必要的。

  保持警惕

  在进一步寻找更严重的攻击迹象时,我们不能只盯着请求频率和请求目标。比如说,在监视一个网络银行应用时,就一定要特别注意发送给transfer的请求。例如,如果有人试图偷窥他人的转帐记录,那就会出现好多下面这种记录:

10.10.10.10 - [10/Oct/2000:x:x:x -0700]
“GET /banking/view/transfer.jsp?id=12345
HTTP/1.0” 200 1042
10.10.10.10 - [10/Oct/2000:x:x:x -0700]
“GET /banking/view/transfer.jsp?id=12346
HTTP/1.0” 500 798
10.10.10.10 - [10/Oct/2000:x:x:x -0700]
“GET /banking/view/transfer.jsp?id=12347
HTTP/1.0” 200 1042
10.10.10.10 - [10/Oct/2000:x:x:x -0700]
“GET /banking/view/transfer.jsp?id=12348
HTTP/1.0” 500 798

  从这里我们可以看出来,有人发现了URL里的id有机可乘,并企图通过每次给id加1看到别的转帐记录。这样的大安全漏洞肯定是你在分析日志时最希望斩获的。

翻译

Sean
Sean

相关推荐