在感恩节的晚上,我们的站点遭遇了攻击,几名未知性别的黑客成功涂改掉了我们的首页,事情发生后很多朋友对我们被攻击的原因和经过都很关心,各种猜测都有,加上我们后续对于这次攻击的分析结果来看,我们觉得整次攻击和事后应急及分析的过程都适合作为一次典型的案例分析,把整件事情披露出来无论是对我们还是对业界会非常有意义,入侵者给我们在感恩节送了这么好的礼物,我们要好好接受才对:) 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了,当你被黑了的时候,第一个访问那个页面的基本就是攻击者本人,他们会迫不及待的来看攻击成果:) 既然服务器有问题了,那我们来看看今天有什么文件被修改了: