Security 文件 [轉貼]ICMP DoS攻擊之原理與防禦方法
作者: 鄭治中 (04-17 21:32) 發表討論 列印 詳細資料

摘要

隨著網路越來越普及,網路安全已經成為一個急迫且重要的課題。關於網路安全,以及駭客們透過網路對於某些特定目標進行的各種攻擊,近幾年已經漸漸受到重視。本文就阻絕服務攻擊(Denial of Service, DoS)來討論其原理、攻擊手法和所造成的傷害,並針對其中最為嚴重的ICMP DoS攻擊,提出進一步的防禦方法。

關鍵詞:網路安全、阻絕服務攻擊、分散式阻絕服務攻擊

 

一、簡介

DoS攻擊的出現最初是在199697之間,此時美國的資訊雜誌上已流傳著簡單的DoS攻擊工具[1]9798年間美國網路危機處理中心(CERT Coordination Center, CERT® /CC)陸續公布出現不同手法的DoS攻擊事件[2-6]。但是一直到去年年初(20002月),在YahooAmazon等知名站台相繼被駭客以分散式阻絕服務攻擊(Distributed Denialof Service, DDos)的手法進行攻擊,進而阻斷其對客戶的服務,以致使公司損失上千萬之後,DoS攻擊的嚴重性才真正上台面,成為網路安全討論中的重點議題。

我們將在接下來的內容中說明目前已知的DoS攻擊種類,並且針對其中的ICMP DoS攻擊,論述其詳細成因,以及防禦的方法。

 

二、阻絕服務攻擊手法介紹

DoS攻擊的手法目前主要分為四大類,包括TCP DoS攻擊、UDP Flood DoS攻擊、DDoS攻擊,以及ICMP DoS攻擊等等。以下將會分項論述各種DoS攻擊手法。

 

TCP DoS攻擊

TCP DoS攻擊,主要是由於攻擊主機發送大量的或不正常的TCP網路封包,造成被攻擊的目標主機當機、重新啟動,或是目標網段的交通壅塞,以致於該主機無法繼續進行某項服務。主要有三種攻擊途徑:

<!--[if !supportLists]-->1.     <!--[endif]-->Land攻擊:利用特殊的TCP封包傳送至目標主機,使其因無法判別而當機或被迫重新啟動。當封包的來源和目的主機的IP位址和埠號都相同的時候(經過偽造spoofed的封包),則會造成主機的損毀,或是當機[3]Land攻擊是利用TCP通訊協定中,定義規則與作業系統之間漏洞所造成的攻擊手法,而由於與作業系統相關,許多新版本的OS(或經過修補patch後)都已經免疫於此種攻擊手法(見附圖1)。

<!--[if !supportLists]-->2.     <!--[endif]-->Teardrop攻擊:在IP層中定義的封包分割和重組的規則為:「分割後的封包的大小必須小於傳輸介面(interface)的MTUmaximum transfer unit,最大傳送單位),並且符合以8 byte為單位的倍數。」Teardrop攻擊就是利用這種分割重組間的漏洞而產生的攻擊方式。正常的TCP封包片段應該是一個以互相接續的方式傳入目標主機,再由主機的IP層將其重組回原資料段。但如果有經過刻意製造的不正常封包序列(如封包大小改變等),則有可能會造成某些作業系統的當機或暫停服務[3]

<!--[if !supportLists]-->3.     <!--[endif]-->TCP SYN攻擊:此種攻擊主要是利用TCP連結時的三向交握訊息(three way handshake)來造成的。當攻擊者惡意地送出許多TCP SYN封包給被攻擊端,而沒有後續連結的封包傳出時,被攻擊端的SYN queue會因為儲存太多正在等待連結的資訊而超過其容許量,因而導致暫停服務。這就是TCP SYN攻擊手法,相關資料與防禦方法可參考[5,7-8]

 

UDP Flood DoS攻擊

UDP Flood Dos攻擊又稱為Fraggle攻擊,它是透過UDP protocol送出假造來源的UDP broadcast封包至目標網路,以產生放大的資料流,目標埠號(port)通常為7echo,回應服務);當目的網域中的眾多主機回應之後,便可以造成網路的壅塞。即使某些IP位址沒有回應,但產生的ICMP封包(type 3, Destination Unreachable)仍然可以達到DoS攻擊的效果[9]

 

DDoS攻擊

DDoS就是2000年年初時全球知名網站攻擊事件的主角。它是利用許多分散在世界各處的DoS agent(攻擊代理人,或稱執行者),在某一時刻點對特定目標主機以前述各種攻擊手法的混和方式,將大量封包傳入目標網域,以阻絕被攻擊者的服務功能。其手法特別之處是必須先選定一定數目的主機,入侵並植入其DDoS agent程式,並在攻擊發起時遠端操控它們的行為;至於攻擊原理,則和上述幾種攻擊相同。目前較為常見的DDoS tool有幾種,包括TFNtrin00、以及TFN2K等等,相關資訊及防禦方法請見[4,10-11]

 

ICMP DoS攻擊

ICMPInternet Control Message Protocol)是TCP/IP通訊協定中定義封包的一種,主要功能是用來在網路上傳遞一些簡單的控制訊號。ICMP DoS攻擊主要有以下兩種手法:

<!--[if !supportLists]-->1.     <!--[endif]-->Ping of Death在大部分的作業系統中都會提供Ping這個常見的系統指令;其功能為測試自身主機與某特定目標間連線是否暢通,這是典型的ICMP應用。它的工作原理是利用發出ICMP type 8Echo Request給對方主機,當對方收到這個request封包後,IP層會發出一個中斷(interrupt)訊號給作業系統,請系統回送一個type 0Echo Reply。當原系統接收了這個回應之後,同樣的IP層會中斷作業系統,並由作業系統將此回應訊息傳達給每一個曾經在系統中發出ICMP Echo Request的行程(process[1]

除了Echo Request/Reply之外,ICMP還有其他種類的控制訊息[12],不過DoS主要採用這兩訊息來進行攻擊,當然這跟它們本身的用途特殊有關。ICMP Echo Request/Reply的封包格式包括Option Data這一部分(附圖2),雖然其內容可有可無,但是當Echo Request包含此部分資料時,接收端必須將這些資料原封不動的包含在Echo Reply中回送給發送端。

由於Option Data的大小並非固定,因此形成了有心人士用來破壞系統的安全漏洞。在TCP/IP的定義中,雖然沒有明定封包的大小,但是小於65535 bytes封包才算合法。只要刻意地將Echo RequestOption Data塞入大量資料,便可以造出超過65535 bytesTCP/IP封包。當它送入被攻擊端的電腦時,由於作業系統本身無法處理這種變形封包,因此會造成當機的狀況。由於這是OS中對於ICMP處理的漏洞,因此部分的新版OS都已經針對這個問題作了修復(附圖1)。

<!--[if !supportLists]-->2.     <!--[endif]-->Smurf攻擊:這是目前為止最為可怕的一種的DoS攻擊,因為它可以在極短的時間內造成非常龐大的資料流,不但造成攻擊目標的暫停服務,並且會使目標所在的網段壅塞,造成網路交通癱瘓。”Smurf”一詞是從美國早期的電視卡通中得來的,國內引進後改名為「藍色小精靈」,內容描述一群住在森林中的小精靈對抗壞巫師的故事。雖然聽起來名字很可愛,但是卻與DoS攻擊中的可怕之處不謀而合(每一個封包size不大,但是數量龐大的封包從各處同時湧入目標主機,造成癱瘓)。

Smurf的攻擊手法如下:透過前面已經介紹過的Ping工作原理,讓它繼續扮演這種類型攻擊的要角。在TCP/IP對網路定址的定義中,有一個位址是用來代表此網段上的全部電腦的,這就是我們所稱的廣播(broadcast)位址,定義為「將子網路的bit全部設成1」。舉例來說,對於192.168.1.0這個網域,其廣播位址即為192.168.1.255當封包目標IP為這個地址時,該封包會透過實體網路介面的廣播網卡編號Ethernet為例,卡號為FFFFFFFFFFFF傳送出去,而所有連接此網路的網路卡都會將此封包接收進主機中,對此封包進行回應或處理。Smurf攻擊就是利用這一點來進行的[6,13-14]

首先,攻擊者會先假冒目標主機(受害者)之名向中介者(router)發出broadcastICMP Echo Request封包(利用IP spoofed)。因為是目的地是廣播位址,中介者在收到之後會對該區域網段內的所有電腦發出此ICMP封包,而所有的電腦在接收到此訊息之後,依照前述Ping的動作,會對來源主機(亦即被假冒的攻擊目標)送出ICMP Echo Reply回應。如此一來,所有的ICMP封包在極短的時間內湧入目標主機內,不但造成網路壅塞,更會使目標主機因為無法反應如此多的系統interrupt而導致當機、暫停服務。除此之外,如果一連串的ICMP broadcast封包流packet flood)被送進目標網域內的話,將會造成網路交通長時間的極度壅塞,使該網域上的電腦(包括中介者router)都成為攻擊的受害者。

Smurf攻擊的可怕之處,就是在於利用體積很小的網路封包(難以被網管人員察覺)瞬間創造出擊大量的封包流。舉例來說,假設目標網域中有100台電腦,攻擊者只需要送出20K bpsICMP封包流,即可瞬間產生高達20 Mbps資料量灌入目標主機;即使目標主機是用T1連結網路,平均的傳輸頻寬(bandwidth)也只有1.544 Mbps[9],因此Smurf攻擊可以輕易地耗盡這樣的頻寬資源。除此之外,由於此種攻擊手法走的是ICMP通訊協定,簡單的控制訊息又常為大眾所忽略,也因此成為安全上的一大漏洞。由於此種攻擊的嚴重性,本文後續部分即針對它現有的防禦手法及漏洞作進一步討論,並提出不同的解決方法。

 

三、現有對ICMP Dos攻擊的防禦

ICMP DoS攻擊是目前最為恐怖,危險程度最高的一種DoS攻擊,因此我們特別在此章針對它現有的防禦方法作一介紹,討論其適用及例外狀況,並在下章提出進一步的解決方案。

如前所述,因為最近的新版作業系統都已經對Ping of Death做了漏洞修補,或可將其傷害控制在一定的範圍中,因此相對的危害不並算大。本節重點為討論另一種較為嚴重而難以防範的Smurf攻擊。

Smurf攻擊最初是於19981月為Craig A. Huegen發表的[13],之後美國網路危機處理中心陸續的公布相關的報導,並提出了一些因應對策的建議[6,15]。主要的解決方法都是基於Huegen所提出的幾個對策[13],我們將在下面討論其作法。

<!--[if !supportLists]-->1.     <!--[endif]-->關閉broadcast功能:

最主要的防範方法是將區域網路內的router的廣播功能關閉。由於Smurf攻擊中的重點就是「將小量的ICMP封包透過router的廣播功能,傳送給在網段上的每一台電腦」,因此router在這場攻擊中扮演著舉足輕重的放大器(amplifier)角色。當攻擊者送出的broadcast ICMP Echo Request封包進到目標網域中時,網路層(IP layer)的廣播位址(以前面的例子來說,192.168.1.255)必須要能夠轉換成實體層(Physical layer)的廣播網卡編號Mac address,以Ethernet網路卡來說,是FFFFFFFFFFFF,才能夠真正被所有主機的網路卡接收,而這個轉換者,就是我們的放大器router。所以,如果將router的廣播功能關掉,便可以阻止此種broadcast封包的擴散,阻擋Smurf攻擊以及其UDP變形Fraggle攻擊的肆虐。至於如何讓router關閉廣播功能,請參閱[6,13]的詳細說明。

<!--[if !supportLists]-->2.     <!--[endif]-->實行封包過濾(packet filtering:

router的廣播功能必須打開的狀況之下,又該如何防止外界惡意的Smurf攻擊呢?由於典型的Smurf攻擊手法是「從外部網路傳送假造來源IPICMP封包」,因此另一種防禦方法是,在內部網路對外聯繫的窗口,如router(或防火牆,如果有建立的話),實行封包過濾功能,阻擋外界不正常的ICMP封包(如來源IP為內部網路)進入;如Cisco router可以利用編輯存取名單(access list)的方式來完成[6]

<!--[if !supportLists]-->3.     <!--[endif]-->關閉ICMP Echo Reply功能:

Huegen所提的最終解決方案是對Smurf攻擊的回應封包來源做處理,亦即關閉在此網路上的每台主機對於ICMP Echo Request的回應。雖然這是很基本的防禦措施,但這樣做有兩個缺點,一是會將正常的Echo Request Reply功能給擋掉,使得Ping指令無法使用,有可能會對網路系統的測試與管理,產生一些限制。某些較新的系統可以讓使用者設定擋掉廣播的Echo Request封包(如IBM AIX4.0Solaris2.2.5以上版本等[13]),可以讓系統的彈性較大一點。

 

四、進一步的解決方案:

在我們要提出新的解決方案之前,先來論述一下現有的防禦方法有什麼漏洞,或例外的狀況。

依據Huegen的推論,認為在現今的應用軟體或網路程式之中鮮少有使用到廣播功能的,因此建議將其關閉。但是實際上,網路管理時便常需要借助廣播功能。最基本的應用就是對網域內的所有電腦發出廣播的 Echo Request封包,藉此來判斷網路內各台主機是否存活(避免對每一台主機分別發出Ping指令)。另外,在以win32網路平台為主的作業環境內(如以WinNT做為網路伺服器,並且在沒有WINS server的情況下),區域網路的連結可能會需要用到UDP的廣播功能[13],基於這些因素,前一章所提的第一種防禦方法「關閉router的廣播功能」便有其限制。

除此之外,第二種方法「實行封包過濾」只適用於典型的Smurf攻擊,亦即ICMP broadcast封包是由外界傳入的。當遭受到來自網域內部的攻擊時,這種防禦方法卻沒有阻擋能力,如攻擊者從遠端操控網域內部已被種下木馬的電腦進行攻擊,或著純粹是內部員工惡意的傷害行為。至於最後一種方法所造成的限制和不便,更是無庸置疑的。

 

即時網路監控以及動態封包過濾

因此,如果想要兼顧系統功能,又要免於遭受ICMP DoS攻擊的侵害,從網路即時監控與動態封包過濾來著手較為可行。利用網路監控程式,隨時監控區域網路中的封包數量,並配合動態封包過濾,以便達到防禦DoS攻擊的目的。

首先,我們可以利用現有的網路監控軟體(如Microsoft Win2000的網路監視器、3rd party的網路管理軟體或防火牆等),或自行開發相關程式(如利用libpcap開發),即時監控網路上ICMP封包的數量。接著再配合封包過濾程式將網路流量依照重要性區分為數種狀態:依據平時的封包流量與使用頻寬來動態地建立安全流量等級,當封包流量不大於正常等級的25 %時為安全狀態,程式可以讓ICMP封包通過,並對Echo Request封包予以回應;一旦監測到同時存在於網路上的ICMP封包大過於正常等級的25 %時,便立即進入警戒狀態。此時過濾程式便會立即丟棄(discard)接續而來的ICMP封包,不再予以回應;同時立即會對網路管理者發出通告,報告可能遭受DoS攻擊的訊息,此時網路管理者便得以根據此通告的內容來採取適度的應對措施。當封包流量不再大於正常等級的25 %時,系統便會再度進入安全狀態。值得注意的是,25%的預設警戒標準並非一成不變,網路管理者可以依據網路流量的相關統計量來作適度的調整。如此,便能夠有效的防止ICMPDoS攻擊的發生,或降低傷害的程度,同時又兼顧系統使用的功能性。同樣的防禦方法亦可以用於控制不同的通訊協定(如TCPUDP等),以抵擋其他種類的DoS攻擊。

 

五、結論

ICMP DoS攻擊的最可怕之處,是在於它利用正常網路使用中的合法功能,而將其應用到非法的途徑上,這也是它最難以防範之處。本文即針對此種攻擊手法做了詳盡的說明與介紹,並進一步提出即時網路監控以及動態封包過濾這種可行的解決方案。雖然DoS攻擊只不過是眾多駭客攻擊手法中的一種,但也正因為如此,網路安全這個議題的重要性將會隨著網路的蓬勃發展而日益重要,實在需要所有相關的網路使用者一同關切與重視。

 

[1]. 目前有新型的木馬,便是利用ICMP的漏洞來傳資料,以達到躲避防護軟體偵測的情況下,與操控者連結。

0       8        16              31

 

 

 

 

 

附圖2. ICMP Echo Request/Reply header

Type 0/8  Code(0)     Checksum

 

 

          Option Data

Identifier      Sequence Number

<!--[if !vml]-->
<!--[endif]--><!--[if !mso]-->
<!--[endif]-->

<!--[if !vml]--><!--[endif]-->附圖1. OS防禦各種DoS攻擊的能力,取自[1],其中

!! -無防禦能力, ! -可限制其傷害範圍,

x -可防禦,     ? -情況不明。

 

<!--[if !mso]-->
<!--[endif]--><!--[if !mso & !vml]--> <!--[endif]--><!--[if !vml]-->
<!--[endif]--> 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


六、參考文獻

[1]. PC Magazine PC Tech (Denial-of-Service Attacks), http://www.zdnet.com/pcmag/pctech/content/17/08/nt1708.002.html

[2]. CERT Advisory CA-1996-26 Denial-of-Service Attack via ping, http://www.cert.org/advisories/CA-1996-26.html

[3]. CERT Advisory CA-1997-28 IP Denial-of-Service Attacks, http://www.cert.org/advisories/CA-1997-28.html

[4]. CERT® Incident Note IN-99-07 Distributed Denial of Service Tools, http://www.cert.org/incident_notes/IN-99-07.html

[5]. CERT® Advisory CA-1998-13 Vulnerability in Certain TCP/IP Implementations, http://www.cert.org/advisories/CA-1998-13.html

[6]. CERT Advisory CA-1998-01 Smurf IP Denial-of-Service Attacks, http://www.cert.org/advisories/CA-1998-01.html

[7]. 軟體系統安全弱點初探,黃世昆,http://crypto.ee.ncku.edu.tw/~ccisa/doc/主題4-軟體系統安全弱點初探.doc

[8]. Internet Security Systems, RealSecure, http://xforce.iss.net/prod/realsecure.pdf

[9]. 參考Hacking Exposed 2nd Edition, Joel Scambray, Stuart McClure & George Kurtz, Osborne/McGraw Hill.

[10]. 網上駭客的攻擊與反制,黃景彰,資訊安全通訊第七卷第一期,p.65~p.77

[11]. Internet Security Systems, Denial of service attack using the trin00 and tribe flood network programs, http://xforce.iss.net/alerts/advise40.php

[12]. TCP/IP protocol及相關書籍

[13]. "Smurfing": Amplified Network-based Denial of Service Attack, Craig. A. Huengen, http://www.pentics.net/denial-of-service/white-papers/smurf.html

[14]. The Latest in Denial of Service Attack: "SMURFING": Description & Information to Minimize Effects, Craig. A. Huengen, http://www.pentics.net/denial-of-service/white-papers/smurf.txt

[15]. RFC2267: Network Ingress Filtering: Defeating Denial of Service Attacks which employ IP Source Address Spoofing, http://www.lAndfield.com/rfcs/rfc2267.html