茫茫網海中的冷日
         
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已!
 恭喜您是本站第 1671408 位訪客!  登入  | 註冊
主選單

Google 自訂搜尋

Goole 廣告

隨機相片
IMG_00029.jpg

授權條款

使用者登入
使用者名稱:

密碼:


忘了密碼?

現在就註冊!

小企鵝開談 : [教學]如何抓取主機現有連線的封包?

發表者 討論內容
冷日
(冷日)
Webmaster
  • 註冊日: 2008/2/19
  • 來自:
  • 發表數: 15771
[教學]如何抓取主機現有連線的封包?
如何抓取主機現有連線的封包?

使用 tcpdump 就可以了, 假設想抓取 192.168.1.1 和主機之間連線的封包:
$tcpdump host 192.168.1.1

也可以透過指定tcp port的方式,限定抓取的服務種類,假設想記錄telnet連線
$tcpdump tcp port 23 host 192.168.1.1


更進一步的使用方式請參考:
$man tcpdump
冷日
(冷日)
Webmaster
  • 註冊日: 2008/2/19
  • 來自:
  • 發表數: 15771
[分享]Tcpdump的使用
tcpdump採用命令行方式,它的命令格式為:
tcpdump [ -adeflnNOpqStvx ] [ -c 數量 ] [ -F 文件名 ] [ -i 網絡接口 ] [ -r 文件名] [ -s snaplen ] [ -T 類型 ] [ -w 文件名 ] [表達式 ]


1. tcpdump的選項介紹
-a 將網絡地?#125;和廣播地?#125;轉變成名字;
-d 將匹配信息?#93;的代碼以人們能夠理解的彙編格式給出;
-dd 將匹配信息?#93;的代碼以c語言?#123;序段的格式給出;
-ddd 將匹配信息?#93;的代碼以十進制的形式給出;
-e 在輸出行打印出數據鏈路層的頭部信息;
-f 將外部的Internet地?#125;以數字的形式打印出來;
-l 使標準輸出變為緩衝行形式;
-n 不把網絡地?#125;轉換成名字;
-t 在輸出的每一行不打印時間戳;
-v 輸出一個稍微詳細的信息,例如在ip?#93;中可以?#93;括ttl和服務類型的信息;
-vv 輸出詳細的報文信息;
-c 在收到指定的?#93;的數目後,tcpdump就會停止;
-F 從指定的文件中讀取表達式,忽略其它的表達式;
-i 指定監聽的網絡接口;
-r 從指定的文件中讀取?#93;(這些?#93;一般通過-w選項產生);
-w 直接將?#93;寫入文件中,並不分析和打印出來;
-T 將監聽到的?#93;直接解釋為指定的類型的報文,常見的類型有rpc ?#93;遠?#123;過?#123;調用)和snmp?#93;簡單網絡管理協議;)


2. tcpdump的表達式介紹
表達式是一個正則表達式,tcpdump利用它作為過濾報文的條件,如果一個報文滿足表達式的條件,則這個報文將會被捕獲。如果沒有給出任何條件,則網絡上所有的信息包將會被截獲。
在表達式中一般如下幾種類型的關鍵字,一種是關於類型的關鍵字,主要包括host,net,port, 例如 host 210.27.48.2,指明 210.27.48.2是一台主機,net 202.0.0.0 指明202.0.0.0是一個網絡地址,port 23 指明端口號是23。如果沒有指定類型,缺省的類型是host.
第二種是確定傳輸方向的關鍵字,主要包括src , dst ,dst or src, dst and src ,這些關鍵字指明了傳輸的方向。舉例說明,src 210.27.48.2 ,指明ip包中源地址是210.27.48.2 , dst net 202.0.0.0 指明目的網絡地址是202.0.0.0 。如果沒有指明方向關鍵字,則缺省是src or dst關鍵字。
第三種是協議的關鍵字,主要包括fddi,ip ,arp,rarp,tcp,udp等類型。Fddi指明是在FDDI(分布式光纖數據接口網絡)上的特定的網絡協議,實際上它是"ether"的別名,fddi和ether具有類似的源地址和目的地址,所以可以將fddi協議包當作ether的包進行處理和分析。
其他的幾個關鍵字就是指明了監聽的包的協議內容。如果沒有指定任何協議,則tcpdump將會監聽所有協議的信息包。
除了這三種類型的關鍵字之外,其他重要的關鍵字如下:gateway, broadcast,less,greater,還有三種邏輯運算,取非運算是 'not ' '! ', 與運算是'and','&&';或運算 是'or' ,'||';
這些關鍵字可以組合起來構成強大的組合條件來滿足人們的需要,下面舉幾個例子來說明。
(1)想要截獲所有210.27.48.1 的主機收到的和發出的所有的數據包:
#tcpdump host 210.27.48.1

(2) 想要截獲主機210.27.48.1 和主機210.27.48.2 或210.27.48.3的通信,使用命令:(在命令行中適用括號時,一定要
#tcpdump host 210.27.48.1 and  (210.27.48.2 or 210.27.48.3 )

(3) 如果想要獲取主機210.27.48.1除了和主機210.27.48.2之外所有主機通信的ip包,使用命令:
#tcpdump ip host 210.27.48.1 and ! 210.27.48.2

(4)如果想要獲取主機210.27.48.1接收或發出的telnet包,使用如下命令:
#tcpdump tcp port 23 host 210.27.48.1


3. tcpdump 的輸出結果介紹
下面我們介紹幾種典型的tcpdump命令的輸出信息

(1) 數據鏈路層頭信息
使用命令
#tcpdump --e host ice

ice 是一台裝有linux的主機,她的MAC地址是0:90:27:58:AF:1A
H219是一台裝有SOLARIC的SUN工作站,它的MAC地址是8:0:20:79:5B:46;上一條
命令的輸出結果如下所示:
21:50:12.847509 eth0 < 8:0:20:79:5b:46 0:90:27:58:af:1a ip 60: h219.33357 > ice.
telne
t 0:0(0) ack 22535 win 8760 (DF)

分析:21:50:12是顯示的時間, 847509是ID號,eth0 <表示從網絡接口eth0 接受該數據包,eth0 >表示從網絡接口設備發送數據包, 8:0:20:79:5b:46是主機H219的MAC地址,它表明是從源地址H219發來的數據包. 0:90:27:58:af:1a是主機ICE的MAC地址,表示該數據包的目的地址是ICE . ip 是表明該數據包是IP數據包,60 是數據包的長度, h219.33357 > ice.
telnet 表明該數據包是從主機H219的33357端口發往主機ICE的TELNET(23)端口. ack 22535表明對序列號是222535的包進行響應. win 8760表明發送窗口的大小是8760.

(2) ARP包的TCPDUMP輸出信息
使用命令
#tcpdump arp

得到的輸出結果是:
22:32:42.802509 eth0 > arp who-has route tell ice (0:90:27:58:af:1a)
22:32:42.802902 eth0 < arp reply route is-at 0:90:27:12:10:66 (0:90:27:58:af:1a)

分析: 22:32:42是時間戳, 802509是ID號, eth0 >表明從主機發出該數據包, arp表明是ARP請求包, who-has route tell ice表明是主機ICE請求主機ROUTE的MAC地址。 0:90:27:58:af:1a是主機ICE的MAC地址。

(3) TCP包的輸出信息
用TCPDUMP捕獲的TCP包的一般輸出信息是:
src > dst: flags data-seqno ack window urgent options

src > dst:表明從源地址到目的地址, flags是TCP包中的標誌信息,S 是SYN標誌, F (FIN), P (PUSH) , R (RST) "." (沒有標記); data-seqno是數據包中的數據的順序號, ack是下次期望的順序號, window是接收緩存的窗口大小, urgent表明數據包中是否有緊急指針.Options是選項.

(4) UDP包的輸出信息
用TCPDUMP捕獲的UDP包的一般輸出信息是:
route.port1 > ice.port2: udp lenth

UDP十分簡單,上面的輸出行表明從主機ROUTE的port1端口發出的一個UDP數據包到主機ICE的port2端口,類型是UDP, 包的長度是lenth
冷日
(冷日)
Webmaster
  • 註冊日: 2008/2/19
  • 來自:
  • 發表數: 15771
[轉貼]tcpdump: Monitor ALL eth1 Traffic Except My Own SSH Session
tcpdump: Monitor ALL eth1 Traffic Except My Own SSH Session

I‘m using tcpdump to dump, debug and monitor traffic on a network. However, there is lots of noise and I would like to exclude ssh from my dumps. How do I monitor all traffic except my ssh session?

The tcpdump command displays out the headers of packets on a network interface that match the boolean expression. In other words you can use boolean expression to drop ssh traffic from dumping and monitoring operation using the following syntax:
tcpdump -i eth1  -s 1500 port not 22

You can skip additional ports too:
tcpdump -i eth1  -s 1500 port not 22 and port not 53

You can also use ip or hostname:
tcpdump -i eth1 port not 22 and host 1.2.3.4

SEE ALSO:
man tcpdump

原文出處:tcpdump: Monitor ALL eth1 Traffic Except My Own SSH Session - nixCraft
冷日
(冷日)
Webmaster
  • 註冊日: 2008/2/19
  • 來自:
  • 發表數: 15771
[轉貼]tcpdump 的用法
tcpdump 的用法

tcpdump 可用來擷取通過某網路介面的封包。(需有 root 權限!)

這個很久以前上課就有教了,但都沒啥用到!最近因為要查 Mail Server 為啥無法寄信,才又重新上網找了一下相關資料。

參考: 鳥哥Tsung Blog510CTO


基本選項有:
.-n:以數字顯示,不對 IP 作反解,但仍顯示服務名稱。
.-nn:直接以 IP 及 port number 顯示,而非主機名與服務名稱。
.-p:不要以 promiscuous mode 執行。
.-t:不要顯示 timestamp。
.-i:指令要監控的網路介面,如 eth0、lo、any 等。
.-e:使用資料連接層 (OSI 第二層) 的 MAC 封包資料來顯示。
.-c:監聽的封包數,如果沒有這個參數,tcpdump 會持續不斷的監聽,直到使用者輸入 [ctrl]-c 為止。
.-q:僅列出較為簡短的封包資訊,每一行的內容比較精簡。
.-s:抓比較長的 data 做一筆記錄。
.-v:輸出一個稍微詳細的資訊,例如在 IP 封包中可以包括 ttl 和服務類型的資訊。
.-A:封包的內容以 ASCII 顯示,通常用來捉取 WWW 的網頁封包資料。
.-X:可以列出十六進位 (hex) 以及 ASCII 的封包內容,對於監聽封包內容很有用。
.-w:如果你要將監聽所得的封包資料儲存下來,用這個參數就對了!後面接檔名。
.-r:從後面接的檔案將封包資料讀出來。那個『檔案』是已經存在的檔案,並且這個『檔案』是由 -w 所製作出來的。
《範例》 tcpdump -nn -i eth0

可指定條件式要求 tcpdump 只擷取某些封包。
條件式可以是單一的『基本條件式(primitives)』,
或用 and(&&),or(||),not(!) 以及『(』、『)』組合基本條件式而成。

常用的『基本條件式(primitives)』:


host 192.168.0.254
來源或目的 IP 是 192.168.0.254
src host 192.168.0.254
來源 IP 是 192.168.0.254
dst host 192.168.0.254 目的 IP 是 192.168.0.254
ether host aa:bb:cc:dd:ee:ff 來源或目的 mac address 是 aa:bb:cc:dd:ee:ff
ether src aa:bb:cc:dd:ee:ff 來源 mac address 是 aa:bb:cc:dd:ee:ff
ether dst aa:bb:cc:dd:ee:ff 目的 mac address 是 aa:bb:cc:dd:ee:ff

net 192.168.0.0 mask 255.255.255.0
來源或目的 IP 在 192.168.0.X 可加上 src 或 dst 做進一步限制
net 192.168.0.0/24 同上
tcp/udp/icmp 封包內有 tcp/udp/icmp 的資料
port domain 來源或目的 port 為 domain (53) 可加上 src,dst 或 tcp,udp 做進一步限制
port 53 同上
tcp src port smtp 來源 port 為 TCP/25

範例:

tcpdump -i eth0 'tcp'
tcpdump -i eth0 'host 192.168.0.X'
tcpdump -i eth0 'tcp and host 192.168.0.X'
tcpdump -i eth0 'tcp port 22 and host 192.168.0.X'
tcpdump -i eth0 'tcp and (not port 22) and (net 192.168.0.0/24)'

看了鳥哥介紹 -X 的參數,忍不住也來進行個實驗,決定來抓抓 POP3 的封包,我先輸入下列指令來保存封包內容:
# tcpdump -i eth0 -nn -X 'port 110' -w packet
執行後,畫面就不會出現所抓取的封包內容,直接就寫到 packet 這個檔案中。接下來我再執行下列指令來檢視封包內容:
# tcpdump -nnXr packet |less
果不其然,終於也見識到了明碼傳輸的危險性了。


節錄一些「超級詳細 Tcpdump 的用法」的內容

第一種是關於類型的關鍵字,主要包括 host、net、port,例如 host 210.27.48.2,指明 210.27.48.2
是一台主機,net 202.0.0.0 指明 202.0.0.0 是一個網路位址,port 23 指明埠號是 23。如果沒有指 定類型,預設的類型是 host。

第二種是確定傳輸方向的關鍵字,主要包括 src、dst、dst or src、dst and src。這些關鍵字指明了傳 輸的方向。舉例說明,src 210.27.48.2,指明 IP 封包中來源位址是 210.27.48.2 , dst net 202.0.0.0 指明目的位址是 202.0.0.0。如果沒有指明方向關鍵字,則預設是不分方向(src or dst)。

第三種是協定的關鍵字,主要包括 fddi、ip、arp、rarp、tcp、udp 等類型。fddi指明是在FDDI(光纖分 佈式數據介面)上特定的網路協定,實際上它是“ether”的別名,fddi 和 ether 具有類似的來源位址和 目的位址,所以可以將 fddi 協議封包當作 ether 的封包進行處理和分析。其他的幾個關鍵字就是指明了 擷取的封包協定。如果沒有指定任何協定,則 tcpdump 將會擷取所有協定的封包。

除了這三種類型的關鍵字之外,其他重要的關鍵字如下:gateway、broadcast、less、greater。還有三種
邏輯運算,反相運算式 not,!;與運算式 and,&&;或運算式 or,||。這些關鍵字可以組合起來構成強 大的組合條件來滿足人們的需要,下面舉幾個例子來說明。

A.想要擷取所有 210.27.48.1 的主機收到的和發出的所有的數據封包:
# tcpdump host 210.27.48.1

B.想要擷取主機 210.27.48.1 和主機 210.27.48.2 或 210.27.48.3 的通信,使用命令:(在命令行中使 用小括號時,一定要加跳脫符號\)
# tcpdump host 210.27.48.1 and \( 210.27.48.2 or 210.27.48.3 \)

C.如果想要擷取主機 210.27.48.1 和除了與主機 210.27.48.2 之外所有主機通信的 IP 封包,使用命令
# tcpdump ip host 210.27.48.1 and ! 210.27.48.2

D.如果想要擷取主機 210.27.48.1 接收或發出的 telnet 封包,使用如下命令:
# tcpdump tcp port 23 host 210.27.48.1


E.對本機的 udp 123 埠號進行監視(123 為 ntp 的服務埠號):
# tcpdump udp port 123

F.系統將只對名稱為 hostname 的主機的通信數據封包進行擷取。主機名可以是本地主機,也可以是網路 上的任何一台電腦。下面的命令可以擷取主機 hostname 發送的所有數據封包:
# tcpdump -i eth0 src host hostname

G.下面的命令可以擷取所有送到主機 hostname 的數據封包:
# tcpdump -i eth0 dst host hostname

H.我們還可以擷取通過指定閘道的數據封包:
# tcpdump -i eth0 gateway GatewayIP

I.如果你還想擷取主機指定埠號的 TCP 及 UDP 數據封包,那麼執行以下命令:
# tcpdump -i eth0 host hostname and port 80

J.如果我們只需要列出送到 80 埠號的數據封包,用 dst port;如果我們只希望看到返回 80 埠號的數據
封包,用 src port。
# tcpdump -i eth0 host hostname and dst port 80  目的埠號是 80
或者
# tcpdump -i eth0 host hostname and src port 80  來源埠號是80,一般是提供 HTTP 服務的伺服器

K.如果條件很多的話,要在條件之前加 and 或 or 或 not
# tcpdump -i eth0 host ! 211.161.223.70 and ! 211.161.223.71 and dst port 80

記錄備查囉!


原文出處:tcpdump 的用法 @ 暉獲無度的步烙閣 :: 隨意窩 Xuite日誌
前一個主題 | 下一個主題 | 頁首 | | |



Powered by XOOPS 2.0 © 2001-2008 The XOOPS Project|