新聞中心
就在幾周前,GitHub 網(wǎng)站遭受了有史以來最嚴(yán)重的DDoS攻擊。本文中將使用http-traceroute來深入分析此次攻擊的來源。

攻擊真的來自中國嗎?
GitHub是全球最大的社交編程及代碼托管網(wǎng)站,上面托管了大量的開源項(xiàng)目,比如就有著名開源操作系統(tǒng)Linux。
瑞典網(wǎng)絡(luò)安全公司Netresec認(rèn)為:
這次DDoS攻擊是通過一些中間人劫持設(shè)備并劫持了世界上其他地方向中國發(fā)起的訪問流量,攻擊者替換了其中的javascript代碼,間接對GitHub發(fā)起攻擊。
由于此次攻擊似乎來自任何地方,這讓GitHub難以抵擋。
用TTL值追蹤中間人攻擊
Netresec 通過查看數(shù)據(jù)包中的 TTL 值可以斷定這是一起中間人攻擊事件。
科普:什么是TTL?
TTL,或者 time-to-live,所有網(wǎng)絡(luò)中的數(shù)據(jù)包中都用這個(gè)字段來表示數(shù)據(jù)包經(jīng)過了幾跳。每一次路由器將一個(gè)數(shù)據(jù)包發(fā)出去的時(shí)候,就會(huì)將這個(gè)字段減一。當(dāng)這個(gè)字段為零的時(shí)候,數(shù)據(jù)包將會(huì)被丟棄。以防止路由器無限制發(fā)送數(shù)據(jù)包造成死循環(huán)。
很多操作系統(tǒng)發(fā)送數(shù)據(jù)包的時(shí)候默認(rèn) TTL 值是64,因此,當(dāng)一個(gè)數(shù)據(jù)包到達(dá)的時(shí)候,如果 TTL 值為46,我們便會(huì)知道這個(gè)數(shù)據(jù)包在你的機(jī)器和發(fā)送數(shù)據(jù)包的機(jī)器之間經(jīng)過了18個(gè)節(jié)點(diǎn)(64-18=46)。
netresec 所發(fā)現(xiàn)的結(jié)果正如下圖中所示,下圖顯示了客戶端和服務(wù)器之間的一些數(shù)據(jù)包,我機(jī)器發(fā)送給百度服務(wù)器的數(shù)據(jù)包 TTL 起始值是64,第一個(gè)響應(yīng)包的 TTL 值是46,因?yàn)榘俣劝l(fā)送的數(shù)據(jù)包起始值為64,期間經(jīng)過18次路由跳轉(zhuǎn)才到達(dá)我的電腦。當(dāng)我發(fā)起 web 請求之后,我收到的數(shù)據(jù)包中的 TTL 值很奇怪,TTL 值分別是98和99。這表明數(shù)據(jù)包明顯不是來自最初的服務(wù)器,而是一些中間設(shè)備。
我知道在我和百度之間肯定有中間人設(shè)備,但是它在哪里?為了回答這個(gè)問題,我們使用 traceroute。
Traceroute工具幫了大忙
Traceroute 是一個(gè)很棒的工具。它可以發(fā)送TTL 為任意值的數(shù)據(jù)包,比如1,2,3.。。等等。因?yàn)橛腥绱说偷?TTL,這些數(shù)據(jù)包無法到達(dá)目標(biāo)機(jī)器,當(dāng)這些數(shù)據(jù)包的 TTL 值為0的時(shí)候,路由器就會(huì)丟掉這個(gè)包,并且路由器會(huì)返回一個(gè)用于通知的數(shù)據(jù)包,叫做Time-Exceeded message,地址是路由器的地址。因此,我可以收集到我喝目標(biāo)服務(wù)器之間的所有路由器。
下圖顯示了這個(gè)工具的用法,是我電腦traceroute 到百度服務(wù)器的結(jié)果:
第二列是時(shí)間,如你所見,從我機(jī)器到Los Angeles用了大概80毫秒,然后,延遲飆到230毫秒才到達(dá)中國,另外,我發(fā)送的數(shù)據(jù)包沒有到達(dá)目標(biāo)服務(wù)器,第16跳得時(shí)候遇到了防火墻。
那么中間人劫持的設(shè)備到底在哪里?為了回答這個(gè)問題,我需要寫代碼,我自己寫了一個(gè)小的 traceroute 工具,它并不是只發(fā)送一個(gè)數(shù)據(jù)包,而是首先建立一個(gè)有正常TTL 值的鏈接,所以,無論如何數(shù)據(jù)包都可以到達(dá)目標(biāo)機(jī)器,然后,使用發(fā)起一個(gè) http 請求,攜帶的包得 TTL 值是比較小的,所以這個(gè)數(shù)據(jù)包在到達(dá)目標(biāo)前就會(huì)被丟棄掉,但是,當(dāng)中間人劫持設(shè)備受到這個(gè)數(shù)據(jù)包的時(shí)候,會(huì)更新 TTL 的值,這樣,我就可以發(fā)現(xiàn)中間人設(shè)備在什么地方了。
我發(fā)現(xiàn)中間人設(shè)備潛伏在11和12跳之間。web請求中 TTL 值為11的時(shí)候數(shù)據(jù)包沒有響應(yīng),而 TTL 值為12的時(shí)候,返回了正常響應(yīng),如下圖所示:
上面黑色被背景的就是我發(fā)送的數(shù)據(jù)包,TTL 值為12,橘黃色的數(shù)據(jù)包(及它上面的兩個(gè)數(shù)據(jù)包)是從中間人設(shè)備傳回的數(shù)據(jù)包,當(dāng)我將數(shù)據(jù)包的 TTL 值置為11的時(shí)候,不會(huì)從中間人設(shè)備獲得響應(yīng)包。
從traceroute的 IP 地址可以看到,中間人設(shè)備放置在中國聯(lián)通的骨干網(wǎng)絡(luò)中。
下一步就是從其他方面 traceroute,從中國到一個(gè)被封鎖的地址。用http://www.linkwan.net/tr.htm,這個(gè)網(wǎng)站,獲得了如下數(shù)據(jù):
結(jié)論
通過http-traceroute,Netresec判定攻擊 GitHub 的中間人設(shè)備在中國。當(dāng)然,這并不說明此次攻擊就是中國發(fā)起的——還有其他的可能,比如黑客攻擊或控制了這些網(wǎng)絡(luò)設(shè)備。
當(dāng)前名稱:剝開層層迷霧,深度追蹤針對GitHub的DDoS攻擊
標(biāo)題路徑:http://m.5511xx.com/article/dpsjiid.html


咨詢
建站咨詢
