當前位置:編程學習大全網 - 腳本源碼 - PING命令就是向主機發UDP數據包,但是什麽端口

PING命令就是向主機發UDP數據包,但是什麽端口

ping是ICMP協議

壹般說的端口是TCP/UDP的端口。

TCP和UDP能承載數據,但ICMP僅包含控制信息。因此,ICMP信息不能真正用於入侵其它機器。Hacker們使用ICMP通常是為了掃描網絡,發動DoS攻擊,重定向網絡交通。(這個觀點似乎不正確,可參考shotgun關於木馬的文章,譯者註)

壹些防火墻將ICMP類型錯誤標記成端口。要記住,ICMP不象TCP或UDP有端口,但它確實含有兩個域:類型(type)和代碼(code)。而且這些域的作用和端口也完全不同,也許正因為有兩個域所以防火墻常錯誤地標記了他們。更多關於ICMP的知識請參考Infosec Lexicon entry on ICMP。

關於ICMP類型/代碼的含義的官方說明請參閱阻塞

5 * Redirect 有人試圖重定向妳的默認路由器,可能Hacker試圖對妳進行“man-in-middle”的攻擊,使妳的機器通過他們的機器路由。

8 * Echo Request ping

9 * Router Advertisement hacker可能通過重定向妳的默認的路由器DoS攻擊妳的Win9x 或Solaris。鄰近的Hacker也可以發動man-in-the-middle的攻擊

11 * Time Exceeded In Transit 因為超時包未達到目的地

0 TTL Exceeded 因為路由循環或由於運行traceroute,路由器將包丟棄

1 Fragment reassembly timeout 由於沒有收到所有片斷,主機將包丟棄

12 * Parameter Problem 發生某種不正常,可能遇到了攻擊

(壹) type=0 (Echo reply)

發送者在回應由妳的地址發送的ping,可能是由於以下原因:

有人在ping那個人:防火墻後面有人在ping目標。

自動ping:許多程序為了不同目的使用ping,如測試聯系對象是否在線,或測定反應時間。很可能是使用了類似VitalSign‘s Net.Medic的軟件,它會發送不同大小的ping包以確定連接速度。

誘騙ping掃描:有人在利用妳的IP地址進行ping掃描,所以妳看到回應。

轉變通訊信道:很多網絡阻擋進入的ping(type=8),但是允許ping回應(type=0)。因此,Hacker已經開始利用ping回應穿透防火墻。例如,針對internet站點的DdoS攻擊,其命令可能被嵌入ping回應中,然後洪水般的回應將發向這些站點而其它Internet連接將被忽略。

(二) Type=3 (Destination Unreachable)

在無法到達的包中含有的代碼(code)很重要

記住這可以用於擊敗“SYN洪水攻擊”。即如果正在和妳通訊的主機受到“SYN洪水攻擊”,只要妳禁止ping(type=3)進入,妳就無法連接該主機。

有些情況下,妳會收到來自妳從未聽說的主機的ping(type=3)包,這通常意味著“誘騙掃描”。攻擊者使用很多源地址向目標發送壹個偽造的包,其中有壹個是真正的地址。Hacker的理論是:受害者不會費力從許多假地址中搜尋真正的地址。

解決這個問題的最好辦法是:檢查妳看到的模式是否與“誘騙掃描”壹致。比如,在ICMP包中的TCP或UDP頭部分尋找交互的端口。

1) Type = 3, Code = 0 (Destination Net Unreachable)

無路由器或主機:即壹個路由器對主機或客戶說,:“我根本不知道在網絡中如何路由!包括妳正連接的主機”。這意味著不是客戶選錯了IP地址就是某處的路由表配置錯誤。記住,當妳把自己UNIX機器上的路由表搞亂後妳就會看到“無路由器或主機”的信息。這常發生在配置點對點連接的時候。

2) Type = 3, Code = 3 (Destination Port Unreachable)

這是當客戶端試圖連擊壹個並不存在的UDP端口時服務器發送的包。例如,如果妳向161端口發送SNMP包,但機器並不支持SNMP服務,妳就會收到ICMP Destination Port Unreachable包。

解碼的方案

解決這個問題的第壹件事是:檢查包中的端口。妳可能需要壹個嗅探器,因為防火墻通常不會記錄這種信息。這種方法基於ICMP原始包頭包含IP和UDP頭。以下是復制的壹個ICMP unreachable包:

00 00 BA 5E BA 11 00 60 97 07 C0 FF 08 00 45 00

00 38 6F DF 00 00 80 01 B4 12 0A 00 01 0B 0A 00

01 C9 03 03 C2 D2 00 00 00 00 45 00 00 47 07 F0

00 00 80 11 1B E3 0A 00 01 C9 0A 00 01 0B 08 A7

79 19 00 33 B8 36

其中字節03 03是ICMP的類型和代碼。最後8個字節是原始UDP頭,解碼如下:

08A7 UDP源端口 port=2215,可能是臨時分配的,並不是很重要。

7919 UDP目標端口 port=31001,很重要,可能原來用戶想連接31001端口的服務。

0033 UDP長度 length=51,這是原始UDP數據的長度,可能很重要。

B836 UDP校驗和 checksum=0xB836,可能不重要。

妳為什麽會看到這些?

“誘騙UDP掃描”:有人在掃描向妳發送ICMP的機器。他們偽造源地址,其中之壹是妳的IP地址。他們實際上偽造了許多不同的源地址使受害者無法確定誰是攻擊者。如果妳在短時間內收到大量來自同壹地址的這種包,很有可能是上述情況。檢查UDP源端口,它總在變化的話,很可能是Scenario。

“陳舊DNS”:客戶端會向服務器發送DNS請求,這將花很長時間解析。當妳的DNS服務器回應的時候,客戶端可能已經忘記妳並關閉了用於接受妳回應的UDP端口。如果發現UDP端口值是53,大概就發生了這種情況。這是怎麽發生的?服務器可能在解析壹個遞歸請求,但是它自己的包丟失了,所以它只能超時然後再試。當回到客戶時,客戶認為超時了。許多客戶程序(尤其是Windows中的程序)自己做DNS解析。即它們自己建立SOCKET進行DNS解析。如果它們把要求交給操作系統,操作系統就會壹直把端口開在那裏。

“多重DNS回應”:另壹種情況是客戶收到對於壹個請求的多重回應。收到壹個回應,端口就關閉了,後序的回應無法達到。此外,壹個Sun機器與同壹個以太網中的多個NICs連接時,將為兩個NICs分配相同的MAC地址,這樣Sun機器每楨會收到兩個拷貝,並發送多重回復。還有,壹個編寫的很糟糕的客戶端程序(特別是那些吹噓是多線程DNS解析但實際上線程不安全的程序)有時發送多重請求,收到第壹個回應後關閉了Socket。但是,這也可能是DNS欺騙,攻擊者既發送請求由發送回應,企圖使解析緩存崩潰。

“NetBIOS解析”:如果Windows機器接收到ICMP包,看看UDP目標端口是否是137。如果是,那就是windows機器企圖執行gethostbyaddr()函數,它將將會同時使用DNS和NetBIOS解析IP地址。DNS請求被發送到某處的DNS服務器,但NetBIOS直接發往目標機器。如果目標機器不支持NetBIOS,目標機器將發送ICMP unreachable。

“Traceroute”:大多數Traceroute程序(Windows中的Tracert.exe除外)向關閉的端口發送UDP包。這引起壹系列的背靠背的ICMP Port Unreachable包發回來。因此妳看到防火墻顯示這樣ICMP包,可能是防火墻後面的人在運行Traceroute。妳也會看到TTL增加。

3) Type = 3, Code = 4 (Fragmentation Needed and Don‘t Fragment was Set)

這是由於路由器打算發送標記有(DF, 不允許片斷)的IP報文引起的。為什麽?IP和TCP都將報文分成片斷。TCP在管理片斷方面比IP有效得多。因此,餞堆趨向於找到“Path MTU”(路由最大傳輸單元)。在這個過程將發送這種ICMP包。

假設ALICE和BOB交談。他們在同壹個以太網上(max frame size = 1500 bytes),但是中間有連接限制最大IP包為600 byte。這意味著所有發送的IP包都要由路由器切割成3個片斷。因此在TCP層分割片斷將更有效。TCP層將試圖找到MTU(最大傳輸單元)。它將所有包設置DF位(Don‘t Fragment),壹旦這種包碰到不能傳輸如此大的包的路由器時路由器將發回ICMP錯誤信息。由此,TCP層能確定如何正確分割片斷。

妳也許應該允許這些包通過防火墻。否則,當小的包可以通過達到目的地建立連接,而大包會莫名其妙的丟失斷線。通常的結果是,人們只能看到Web頁僅顯示壹半。

路由最大傳輸單元的發現越來越整合到通訊中。如IPsec需要用到這個功能。

(三) Type = 4 (Source Quench)

這種包可能是當網絡通訊超過極限時由路由器或目的主機發送的。但是當今的許多系統不生成這些包。原因是現在相信簡單包丟失是網絡阻塞的最後信號(因為包丟失的原因就是阻塞)。

現在source quenches的規則是(RFC 1122):

路由器不許生成它們

主機可以生成它們

主機不能隨便生成它們

防火墻應該丟棄它們

但是,主機遇到Source Quench仍然減慢通訊,因此這被用於DoS。防火墻應該過濾它們。如果懷疑發生DoS,包中的源地址是無意義的,因為IP地址肯定是虛構的。

已知某些SMTP服務器會發送Source Quench。

(四) Type = 8 (Echo aka PING)

這是ping請求包。有很多場合使用它們;它可能意味著某人掃描妳機器的惡意企圖,但它也可能是正常網絡功能的壹部分。參見Type = 0 (Echo Response)

很多網絡管理掃描器會生成特定的ping包。包括ISS掃描器,WhatsUp監視器等。這在掃描器的有效載荷中可見。許多防火墻並不記錄這些,因此妳需要壹些嗅探器捕捉它們或使用入侵檢測系統(IDS)標記它們。

記住,阻擋ping進入並不意味著Hacker不能掃描妳的網絡。有許多方法可以代替。例如,TCP ACK掃描越來越流行。它們通常能穿透防火墻而引起目標系統不正常的反應。

發送到廣播地址(如x.x.x.0或x.x.x.255)的ping可能在妳的網絡中用於smurf放大。

(五) Type = 11 (Time Exceeded In Transit)

這壹般不會是Hacker或Cracker的攻擊

1) Type = 11, Code = 0 (TTL Exceeded In Transit)

這可能有許多事情引起。如果有人從妳的站點traceroute到Internet,妳會看到許多來自路由器的TTL增加的包。這就是traceroute的工作原理:強迫路由器生成TTL增加的信息來發現路由器。

防火墻管理員看到這種情況的原因是Internet上發生路由循環。路由器Flapping(持續變換路由器)是壹個常見的問題,常會導致循環。這意味著當壹個IP包朝目的地前進時,這個包被壹個路由器錯誤引導至壹個它曾經通過的路由器。如果路由器在包經過的時候把TTL域減壹,這個包只好循環運動。實際上當TTL值為0時它被丟棄。

造成這種情況的另壹個原因是距離。許多機器(Windows)的默認TTL值是127或更低。路由器也常常會把TTL值減去大於1的值,以便反應諸如電話撥號或跨洋連接的慢速連接。因此,可能由於初始TTL值太小,而使站點無法到達。此外,壹些Hacker/Cracker也會使用這種辦法使站點無法到達。

2) Type = 11, Code = 1 (Fragment Reassembly Time Exceeded)

當發送分割成片斷的IP報文時,發送者並不接收所有片斷。通常,大多數TCP/IP通訊甚至不分割片斷。妳看到這種情況必定是采用了分割片斷而且妳和目的地之間有阻塞。

(六) Type = 12 (Parameter Problem)

這可能意味著壹種進攻。有許多足印技術會生成這種包。

  • 上一篇:三星gti9008l是不是不支持聯通卡啊
  • 下一篇:金庸群俠傳之蒼龍逐日怎麽修改獲得經驗
  • copyright 2024編程學習大全網