天天看點

淺談黑客攻擊

作為一個搞軟體的,能有機會經曆被黑客攻擊、并參與到抵抗攻擊方案的讨論與實施中來,我覺得是很幸運的。雖然每天都有很多攻擊産生,但是這種攻擊能降臨到我們這種不是很知名的公司身上,确實非常難得。下面就把我們對攻擊相關的一些認識整理一下并記錄,我們也是剛開始積累這些經驗,是以有什麼錯誤和不足之處,希望大家不吝斧正和補充。

   雖然,我們經常看到一些門戶網站被攻擊,但是攻擊者并不局限于隻攻擊網站,他可以攻擊你對外提供的一切服務,比如,攻擊你的遊戲伺服器、攻擊DNS伺服器等等。

一、為什麼會産生攻擊?

所有攻擊的産生都有其背後的原因,我們能想到的有以下幾點:

(1) 黑客小試身手,拿你的服務做試驗。

真正有實力的黑客是很少動手的,但是一些剛入門的初級黑客就會經常挑一些不大不小的網站來做試驗,而不大不小的網站對于防黑客攻擊的經驗通常都很少,防範力量也很薄弱,是以攻擊這些網站很容易得手。攻擊成功了,初級黑客就有了成就感,就有了進一步學習攻擊的動力。

(2) 利益目的。

這種攻擊通常是非常有實力的黑客策劃和實施的,他通常選擇一些知名度比較高盈利好的公司。他會在攻擊之前聯系你們公司的客服,告訴你,如果不向某個賬号彙多少錢,就會在今晚幾點幾分攻擊你們的網站,讓你們的所有客人都無法通路你們提供的服務。他們很有計劃和耐心,如果你不給他錢,他會在接下來的一段時期内,不斷地攻擊你,特别是挑那些最多客人線上的時候來攻擊。

(3) 競争對手。

正所謂“人怕出名豬怕壯”,當你的網站營運的不錯威脅到同行的利益時,你的競争對手就會想辦法來阻礙你了。非常有效的方式之一,就是在你穩步發展階段來攻擊你。通常,你的競争對手自己沒有攻擊你的技術和能力,但是,它們會出錢請專業的黑客或黑客團體來攻擊你。

二、攻擊的層次

   OSI标準是7層網絡模型,現實中普遍應用的是4層模型,從下至上分别是鍊路層、網絡層、運輸層、應用層。除了一些專門的Sniffer程式或黑客程式,我們的網站和應用程式都是工作在應用層。但是,攻擊者卻可以攻擊這4層中的任意一層。黑客軟體通常都是基于Raw Socket編寫,他們可以構造任意的TCP資料報、UDP資料報、IP資料報、甚至是鍊路層的資料報,是以,資料報中的一切資訊都可以僞裝。

1.      鍊路層攻擊:

比如MAC位址泛洪攻擊,它可以讓交換機的工作出現異常。

2.      網絡層:

比如像IP碎片攻擊、ARP攻擊、ICMP攻擊、IGMP攻擊、死亡之ping等等。

3.      運輸層

運輸層的攻擊通常是利用TCP協定的漏洞來進行的,比如像Syn flood攻擊。

我們的應用程式通常使用TCP來提供服務,即使是網站HTTP協定底層也是采用的TCP通道。是以,有很多著名的DOS攻擊和DDOS攻擊都是針對TCP進行的。

常見的一些針對TCP進行攻擊方式有:

(1)TCP協定堵塞視窗算法攻擊技術 : http://sec.chinabyte.com/207/8816207.shtml

(2)TCP RST攻擊 :http://baike.baidu.com/view/1044719.htm

(3)低速率拒絕服務攻擊原理 : http://blog.chinaunix.com/u/12592/showart_2058363.html

(4)TCP漏洞可導緻緻命DoS攻擊 :http://sec.chinabyte.com/279/8339279.shtml

(5)淚滴攻擊 : http://baike.soso.com/v4492311.htm

(6)Land攻擊 : http://baike.soso.com/v4194619.htm?pid=baike.box

4.      應用層

著名的CC攻擊就是針對應用層的攻擊,它僞裝成為正常的請求,專門請求那些非常消耗伺服器資源的服務,當成千上萬的這樣的請求過來時,你的伺服器可能就忙不過來而挂掉了。

如果是采用C/S模式的架構提供服務(像QQ),當黑客可以破解/解密用戶端與服務端之間的通信協定,那麼他就可以進行更深入的應用層攻擊,甚至可以入侵你的伺服器。

三、攻擊的類别

如今大部分的攻擊都是DOS攻擊或其變種DDOS攻擊,目的是使你的伺服器喪失提供正常服務的能力,即形成“拒絕服務攻擊”。我們可以對“拒絕服務攻擊”進行一下簡單的分類。

(1)    利用系統漏洞

通常是利用作業系統的漏洞來進行攻擊,是以保證你伺服器的作業系統打上最新的更新檔是非常有必要的。

(2)    破解型的侵入

比如,破解作業系統的administrator的密碼或者SQLSERVER資料庫sa的密碼,這種侵入通常是為了竊取伺服器上的資料并在你的伺服器上留下後門。采用這種方式時,黑客會非常小心以不留下任何痕迹,以便以後随時可以進入。如果真的發生了入侵,黑客可以完全控制你的伺服器,DOS攻擊就不在話下了。

(3)    暴力型的流量攻擊

現在很多的DDOS攻擊都是流量攻擊,把你服務的帶寬塞暴,客人就無法連接配接到你的伺服器了。DDOS攻擊需要很多的“殭屍電腦”參與進行同時發動攻擊才能産生顯著效果,殭屍電腦通常隐藏于我們下載下傳的那些免費軟體和一些木馬中。也許,你用的某個免費好用的工具軟體中就隐藏了這樣的“殭屍電腦”程式。

(4)    技巧型的低帶寬攻擊

這種攻擊通常利用系統核心的漏洞(如TCP/IP協定的漏洞),像TCP RST攻擊,隻需要很小的流量,就能産生很顯著的攻擊效果。它非常的隐蔽,以至于你的防火牆忽略了它。對于這種攻擊,我們需要采取針對性的措施來進行防範。

四、防火牆及監控

除了程式的漏洞需要修複bug和OS的漏洞需要打更新檔外,對抗攻擊的重任落在防火牆的身上。目前國内知名的專業抗DDOS防火牆有“三盾”:冰盾、傲盾、金盾。在對防火牆做了正确的配置和設定後,我們還需要使用一些性能監控工具來監視各個伺服器的運作狀态,以便及時發現狀況。另外需要使用一些抓包工具,在攻擊到來時,抓取資料包進行分析以便确定攻擊的類型和方式,隻有确定了攻擊的類型和方式,才能對症下藥。

五、軟體架構與攻擊

   有很多黑客說,沒有攻不下的站點。對于一個“孤島”的站點來說,我是相信這句話的。

   我們提供的服務工作于應用層,是以,當攻擊者攻擊鍊路層/網絡層/運輸層時,程式幾乎是愛莫能助的。但是,在軟體架構方面,我們軟體工程師可以為抵抗或緩解攻擊助一臂之力。

分布式架構、甚至地域分布式架構,即在世界/全國各主要城市都部署服務節點,這些服務節點通過高速的骨幹網或光纖或專線連接配接起來構成一個統一的系統,是目前很多大的網絡營運公司采用的普遍架構。地域分布式架構,不僅解決了因不同地域、不同ISP寬帶接入而導緻的使用者通路服務速度慢的問題,其另外一個重要作用就是對抗DDOS攻擊。比如,你在全國分布了100個服務節點,當其中的一個節點受攻擊而不能正常服務時,受到影響的使用者隻占總數的1%左右,如果用戶端在連接配接目前節點失敗時,能自動切換連接配接到其它的服務節點,那麼,這1%左右的使用者可能都不會明顯的服務不正常的感覺。是以,軟體架構師在做架構設計時,需要考慮到對(地域)分布式的支援。也許現在使用者的數量比較小,也沒人攻擊你,搞一個“孤島”就足夠應付了。但當有一天發展了,要能夠做到在不修改程式的前提下,僅僅通過修改配置和增加節點就能輕松地擴充為(地域)分布式。對于任何一個想做大做強的公司,這點無疑是非常重要的。

地域分布式架構很好,就是要投入巨大。是以,是否實施地域分布式、實施多大規模,應該是與你公司的發展一緻的。當你的公司做到像騰訊一樣時,你可以在全世界部署服務節點,這點投入對于收入來說就是九牛一毛了。

   你也許會說,如果黑客同時攻擊你所有的節點了?當你的公司能在全國或全世界部署服務節點的時候,通常,你的公司已經在攻擊方面積累了很多的經驗,也幾乎堵住了所有程式的、作業系統的漏洞。這個時候,黑客就隻剩下流量攻擊這種暴力方式了,如果他要攻擊你所有的節點,那麼,他就要付出更大的流量和更大的帶寬和更多的“殭屍電腦”資源,這種可能性就非常小了。當采用暴力攻擊方式的時候,大家比拼的就是财力啦 –- 你費了九牛二虎之力用1G的流量來攻擊,我就把服務帶寬提升到2G。