抓包工具教程Tcpdump+ethereal+netcat.docx

上传人:b****6 文档编号:7210617 上传时间:2023-01-21 格式:DOCX 页数:14 大小:178.24KB
下载 相关 举报
抓包工具教程Tcpdump+ethereal+netcat.docx_第1页
第1页 / 共14页
抓包工具教程Tcpdump+ethereal+netcat.docx_第2页
第2页 / 共14页
抓包工具教程Tcpdump+ethereal+netcat.docx_第3页
第3页 / 共14页
抓包工具教程Tcpdump+ethereal+netcat.docx_第4页
第4页 / 共14页
抓包工具教程Tcpdump+ethereal+netcat.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

抓包工具教程Tcpdump+ethereal+netcat.docx

《抓包工具教程Tcpdump+ethereal+netcat.docx》由会员分享,可在线阅读,更多相关《抓包工具教程Tcpdump+ethereal+netcat.docx(14页珍藏版)》请在冰豆网上搜索。

抓包工具教程Tcpdump+ethereal+netcat.docx

抓包工具教程Tcpdump+ethereal+netcat

Tcpdump

超级详细Tcpdump的用法

1、抓取回环网口的包:

tcpdump-ilo

2、防止包截断:

tcpdump-s0

3、以数字显示主机及端口:

tcpdump-n

 

 第一种是关于类型的关键字,主要包括host,net,port,例如host210.27.48.2,指明210.27.48.2是一台主机,net202.0.0.0指明202.0.0.0是一个网络地址,port23指明端口号是23。

如果没有指定类型,缺省的类型是host.

第二种是确定传输方向的关键字,主要包括src,dst,dstorsrc,dstandsrc,这些关键字指明了传输的方向。

举例说明,src210.27.48.2,指明ip包中源地址是210.27.48.2,dstnet202.0.0.0指明目的网络地址是202.0.0.0。

如果没有指明方向关键字,则缺省是srcordst关键字。

第三种是协议的关键字,主要包括fddi,ip,arp,rarp,tcp,udp等类型。

Fddi指明是在FDDI(分布式光纤数据接口网络)上的特定的网络协议,实际上它是"ether"的别名,fddi和ether具有类似的源地址和目的地址,所以可以将fddi协议包当作ether的包进行处理和分析。

其他的几个关键字就是指明了监听的包的协议内容。

如果没有指定任何协议,则tcpdump将会监听所有协议的信息包。

 

 除了这三种类型的关键字之外,其他重要的关键字如下:

gateway,broadcast,less,greater,还有三种逻辑运算,取非运算是'not''!

',与运算是'and','&&;或运算是'or','||';这些关键字可以组合起来构成强大的组合条件来满足人们的需要,下面举几个例子来说明。

 普通情况下,直接启动tcpdump将监视第一个网络界面上所有流过的数据包。

#tcpdump 

tcpdump:

listeningonfxp0

11:

58:

47.873028bios-ns>bios-ns:

udp50

11:

58:

47.9743310:

10:

7b:

8:

3a:

56>1:

80:

c2:

0:

0:

0802.1dui/Clen=43

                      00000000008000001007cf0809000000

                      0e800000902b46950980870100140002

                      000f0000902b4695000800

11:

58:

48.3731340:

0:

e8:

5b:

6d:

85>Broadcastsape0ui/Clen=97

                      ffff00600004ffffffffffffffffffff

                      0452ffffffff0000e85b6d8540080002

                      06404d41535445525f57454200000000

                      000000

使用-i参数指定tcpdump监听的网络界面,这在计算机具有多个网络界面时非常有用,

使用-c参数指定要监听的数据包数量,

使用-w参数指定将监听到的数据包写入文件中保存

A想要截获所有210.27.48.1的主机收到的和发出的所有的数据包:

#tcpdumphost210.27.48.1

B想要截获主机210.27.48.1和主机210.27.48.2或210.27.48.3的通信,使用命令:

(在命令行中适用 括号时,一定要

#tcpdumphost210.27.48.1and/(210.27.48.2or210.27.48.3/)

C如果想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包,使用命令:

#tcpdumpiphost210.27.48.1and!

210.27.48.2

D如果想要获取主机210.27.48.1接收或发出的telnet包,使用如下命令:

#tcpdumptcpport23host210.27.48.1

E对本机的udp123端口进行监视123为ntp的服务端口

#tcpdumpudpport123

 

F系统将只对名为hostname的主机的通信数据包进行监视。

主机名可以是本地主机,也可以是网络上的任何一台计算机。

下面的命令可以读取主机hostname发送的所有数据:

 

#tcpdump-ieth0srchosthostname

 

G下面的命令可以监视所有送到主机hostname的数据包:

 

#tcpdump-ieth0dsthosthostname

H 我们还可以监视通过指定网关的数据包:

 

#tcpdump-ieth0gatewayGatewayname

I如果你还想监视编址到指定端口的TCP或UDP数据包,那么执行以下命令:

 

#tcpdump-ieth0hosthostnameandport80

J如果想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包

,使用命令:

#tcpdumpiphost210.27.48.1and!

210.27.48.2

K想要截获主机210.27.48.1和主机210.27.48.2或210.27.48.3的通信,使用命令

(在命令行中适用 括号时,一定要

#tcpdumphost210.27.48.1and/(210.27.48.2or210.27.48.3/)

L如果想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包,使用命令:

 #tcpdumpiphost210.27.48.1and!

210.27.48.2

M如果想要获取主机210.27.48.1接收或发出的telnet包,使用如下命令:

 #tcpdumptcpport23host210.27.48.1

第三种是协议的关键字,主要包括fddi,ip,arp,rarp,tcp,udp等类型

除了这三种类型的关键字之外,其他重要的关键字如下:

gateway,broadcast,less,

greater,还有三种逻辑运算,取非运算是'not''!

',与运算是'and','&&';或运算是'o

r','||';

第二种是确定传输方向的关键字,主要包括src,dst,dstorsrc,dstandsrc,

如果我们只需要列出送到80端口的数据包,用dstport;如果我们只希望看到返回80端口的数据包,用srcport。

 

#tcpdump–ieth0hosthostnameanddstport80 目的端口是80

或者

#tcpdump–ieth0hosthostnameandsrcport80 源端口是80 一般是提供http的服务的主机

如果条件很多的话 要在条件之前加and或or或not

#tcpdump-ieth0host!

211.161.223.70and!

211.161.223.71anddstport80

如果在ethernet使用混杂模式系统的日志将会记录

May 720:

03:

46localhostkernel:

eth0:

Promiscuousmodeenabled.

May 720:

03:

46localhostkernel:

deviceeth0enteredpromiscuousmode

May 720:

03:

57localhostkernel:

deviceeth0leftpromiscuousmode

tcpdump对截获的数据并没有进行彻底解码,数据包内的大部分内容是使用十六进制的形式直接打印输出的。

显然这不利于分析网络故障,通常的解决办法是先使用带-w参数的tcpdump截获数据并保存到文件中,然后再使用其他程序进行解码分析。

当然也应该定义过滤规则,以避免捕获的数据包填满整个硬盘。

 

#tcpdump  -ieth1src host211.167.237.199

00:

02:

03.096713IP211.167.237.199.ssh>221.216.165.189.1467:

P2010208:

2010352(144)ack33377win8576

00:

02:

03.096951IP211.167.237.199.ssh>221.216.165.189.1467:

P2010352:

2010496(144)ack33377win8576

00:

02:

03.100928IP211.167.237.199.ssh>221.216.165.189.1467:

P2010496:

2010640(144)ack33377win8576

00:

02:

03.101165IP211.167.237.199.ssh>221.216.165.189.1467:

P2010640:

2010784(144)ack33377win8576

00:

02:

03.102554IP211.167.237.199.ssh>221.216.165.189.1467:

P2010784:

2010928(144)ack33425win8576

表明在00:

02:

03点的时候,211.167.237.199通过ssh源端口连接到221.216.165.189的1467端口

#tcpdump-ieth1srchost211.167.237.199anddstport1467

00:

09:

27.603075IP211.167.237.199.ssh>221.216.165.189.1467:

P180400:

180544(144)ack2833win8576

00:

09:

27.605631IP211.167.237.199.ssh>221.216.165.189.1467:

P180544:

180688(144)ack2881win8576

截获所有由eth0进入、源地址(src)为192.168.0.5的主机(host),并且(and)目标(dst)端口(port)为80的数据包

观看网卡传送、接收数据包的状态

$netstat -i

KernelInterfacetable

IfaceMTUMetRX-OKRX-ERRRX-DRPRX-OVRTX-OKTX-ERRTX-DRPTX-OVRFlg

eth01500 0 14639  0     0     0   5705   119   0    0  BMRU

Iface:

 网卡

RX-OKRX-ERRRX-DRPRX-OVR:

网卡正确接收数据包的数量以及发生错误、流失、碰撞的总数

TX-OKTX-ERRTX-DRPTX-OVR:

网卡正确发送数据包的数量以及发生错误、流失、碰撞的总数

 

 

[root@linux~]#tcpdump[-nn][-i介面][-w儲存檔名][-c次數][-Ae]

[-qX][-r檔案][所欲擷取的資料內容]

參數:

-nn:

直接以IP及portnumber顯示,而非主機名與服務名稱

-i:

後面接要『監聽』的網路介面,例如eth0,lo,ppp0等等的介面;

-w:

如果你要將監聽所得的封包資料儲存下來,用這個參數就對了!

後面接檔名

-c:

監聽的封包數,如果沒有這個參數,tcpdump會持續不斷的監聽,

直到使用者輸入[ctrl]-c為止。

-A:

封包的內容以ASCII顯示,通常用來捉取WWW的網頁封包資料。

-e:

使用資料連接層(OSI第二層)的MAC封包資料來顯示;

-q:

僅列出較為簡短的封包資訊,每一行的內容比較精簡

-X:

可以列出十六進位(hex)以及ASCII的封包內容,對於監聽封包內容很有用

-r:

從後面接的檔案將封包資料讀出來。

那個『檔案』是已經存在的檔案,

並且這個『檔案』是由-w所製作出來的。

所欲擷取的資料內容:

我們可以專門針對某些通訊協定或者是IP來源進行封包擷取,

那就可以簡化輸出的結果,並取得最有用的資訊。

常見的表示方法有:

'hostfoo','host127.0.0.1':

針對單部主機來進行封包擷取

'net192.168':

針對某個網域來進行封包的擷取;

'srchost127.0.0.1''dstnet192.168':

同時加上來源(src)或目標(dst)限制

'tcpport21':

還可以針對通訊協定偵測,如tcp,udp,arp,ether等

還可以利用and與or來進行封包資料的整合顯示呢!

範例一:

以IP與portnumber捉下eth0這個網路卡上的封包,持續3秒

[root@linux~]#tcpdump-ieth0-nn

tcpdump:

verboseoutputsuppressed,use-vor-vvforfullprotocoldecode

listeningoneth0,link-typeEN10MB(Ethernet),capturesize96bytes

01:

33:

40.41IP192.168.1.100.22>192.168.1.11.1190:

P116:

232(116)ack1win9648

01:

33:

40.41IP192.168.1.100.22>192.168.1.11.1190:

P232:

364(132)ack1win9648

<==按下[ctrl]-c之後結束

6680packetscaptured<==捉下來的封包數量

14250packetsreceivedbyfilter<==由過濾所得的總封包數量

7512packetsdroppedbykernel<==被核心所丟棄的封包

如果你是第一次看tcpdump的manpage時,肯定一個頭兩個大,因為tcpdump幾乎都是分析封包的表頭資料,使用者如果沒有簡易的網路封包基礎,要看懂粉難吶!

所以,至少您得要回到網路基礎裡面去將TCP封包的表頭資料理解理解才好啊!

^_^!

至於那個範例一所產生的輸出範例中,我們可以約略區分為數個欄位,我們以範例一當中那個特殊字體行來說明一下:

∙01:

33:

40.41:

這個是此封包被擷取的時間,『時:

分:

秒』的單位;

∙IP:

透過的通訊協定是IP;

∙192.168.1.100.22> :

傳送端是192.168.1.100這個IP,而傳送的portnumber為22,您必須要瞭解的是,那個大於(>)的符號指的是封包的傳輸方向喔!

∙192.168.1.11.1190:

接收端的IP是192.168.1.11,且該主機開啟port1190來接收;

∙P116:

232(116):

這個封包帶有PUSH的資料傳輸標誌,且傳輸的資料為整體資料的116~232byte,所以這個封包帶有116bytes的資料量;

∙ack1win9648:

ACK與Windowsize的相關資料。

最簡單的說法,就是該封包是由192.168.1.100傳到192.168.1.11,透過的port是由22到1190,且帶有116bytes的資料量,使用的是PUSH的旗標,而不是SYN之類的主動連線標誌。

呵呵!

不容易看的懂吧!

所以說,上頭才講請務必到 TCP表頭資料的部分去瞧一瞧的啊!

再來,一個網路狀態很忙的主機上面,你想要取得某部主機對你連線的封包資料而已時,使用tcpdump配合管線命令與正規表示法也可以,不過,畢竟不好捉取!

我們可以透過tcpdump的表示法功能,就能夠輕易的將所需要的資料獨立的取出來。

在上面的範例一當中,我們僅針對eth0做監聽,所以整個eth0介面上面的資料都會被顯示到螢幕上,不好分析啊!

那麼我們可以簡化嗎?

例如只取出port21的連線封包,可以這樣做:

[root@linux~]#tcpdump-ieth0-nnport21

tcpdump:

verboseoutputsuppressed,use-vor-vvforfullprotocoldecode

listeningoneth0,link-typeEN10MB(Ethernet),capturesize96bytes

01:

54:

37.96IP192.168.1.11.1240>192.168.1.100.21:

.ack1win65535

01:

54:

37.96IP192.168.1.100.21>192.168.1.11.1240:

P1:

21(20)ack1win5840

01:

54:

38.12IP192.168.1.11.1240>192.168.1.100.21:

.ack21win65515

01:

54:

42.79IP192.168.1.11.1240>192.168.1.100.21:

P1:

17(16)ack21win65515

01:

54:

42.79IP192.168.1.100.21>192.168.1.11.1240:

.ack17win5840

01:

54:

42.79IP192.168.1.100.21>192.168.1.11.1240:

P21:

55(34)ack17win5840

瞧!

這樣就僅提出port21的資訊而已,且仔細看的話,你會發現封包的傳遞都是雙向的,client端發出『要求』而server端則予以『回應』,所以,當然是有去有回啊!

而我們也就可以經過這個封包的流向來瞭解到封包運作的過程。

舉例來說:

1.我們先在一個終端機視窗輸入『tcpdump-ilo-nn』的監聽,

2.再另開一個終端機視窗來對本機(127.0.0.1)登入『sshlocalhost』

那麼輸出的結果會是如何?

[root@linux~]#tcpdump-ilo-nn

1tcpdump:

verboseoutputsuppressed,use-vor-vvforfullprotocoldecode

2listeningonlo,link-typeEN10MB(Ethernet),capturesize96bytes

311:

02:

54.253777IP127.0.0.1.32936>127.0.0.1.22:

S933696132:

933696132(0)

win32767

411:

02:

54.253831IP127.0.0.1.22>127.0.0.1.32936:

S920046702:

920046702(0)

ack933696133win32767

wscale2>

511:

02:

54.253871IP127.0.0.1.32936>127.0.0.1.22:

.ack1win8192

nop,timestamp236681316236681316>

611:

02:

54.272124IP127.0.0.1.22>127.0.0.1.32936:

P1:

23(22)ack1win8192

711:

02:

54.272375IP127.0.0.1.32936>127.0.0.1.22:

.ack23win8192

nop,timestamp236681334236681334>

上表顯示的頭兩行是tcpdump的基本說明,然後:

∙第3行顯示的是『來自client端,帶有SYN主動連線的封包』,

∙第4行顯示的是『來自server端,除了回應client端之外(ACK),還帶有SYN主動連線的標誌;

∙第5行則顯示client端回應server確定連線建立(ACK)

∙第6行以後則開始進入資料傳輸的步驟。

從第3-5行的流程來看,熟不熟悉啊?

沒錯!

那就是 三向交握 的基礎流程啦!

夠有趣吧!

不過tcpdump之所以被稱為駭客軟體之一可不止上頭介紹的功能吶!

上面介紹的功能可以用來作為我們主機的封包連線與傳輸的流程分析,這將有助於我們瞭解到封包的運作,同時瞭解到主機的防火牆設定規則是否有需要修訂的地方。

更神奇的使用要來啦!

如果我們使用tcpdump在router上面監聽『明碼』的傳輸資料時,例如FTP傳輸協定,你覺得會發生什麼問題呢?

我們先在主機端下達『tcpdump-iloport21-nn-X』然後再以ftp登入本機,並輸入帳號與密碼,結果你就可以發現如下的狀況:

[root@linux~]#tcpdump-ilo-nn-X'port21'

0x0000:

450000482a284000400612867f000001E..H*(@.@.......

0x0010:

7f000001001580ab83552149835cd825.........U!

I./.%

0x0020:

80182000fe3c00000101080a0e2e0b67.....<.........g

0x0030:

0e2e0b61323230202876734654506420...a220.(vsFTPd.

0x0040

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 研究生入学考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1