- 常用命令詳解
$ tcpdump
$ tcpdump –i ens33
$ tcpdump host
47.95 .224 .4
$tcpdump host
47.95 .224 .4 and 10.13 .32 .60
$ tcpdump host
47.95 .224 .4 and \ (
10.13 .32 .60 or 10.13 .32 .169 \ )
$tcpdump host
47.95 .224 .4 and ! 10.13 .32 .169
$ tcpdump
-i ens33 src host
47.95 .224 .4
$ tcpdump
-i ens33 dst host
47.95 .224 .4
$ tcpdump tcp port
443 and host www
. baidu
. com
$ tcpdump net
47.95 .
224.0 /
24
$ tcpdump ip
and not net
10.13 .
32.169
$ tcpdump 'icmp[icmptype] != icmp-
echo and icmp[icmptype] != icmp-echoreply'
//打印除'
echo request'或者'
echo reply'類型以外的ICMP數據包(比如,需要打印所有非
ping 程序產生的數據包時可用到此表達式。'
echo reuqest' 與 '
echo reply' 這兩種類型的ICMP數據包通常由
ping 程序產生))
//注意, 單引號或反斜桿不能省略, 這可以防止shell對&的解釋或替換.
*ICMP協議:是一種面向無連接的協議,用于傳輸出錯報告控制信息。它是一個非常重要的協議,它對于網絡安全具有極其重要的意義。ICMP的全稱是 Internet Control Message Protocol 。從技術角度來ICMP就是一個“錯誤偵測與回報機制”,其目的就是讓我們能夠檢測網路的連線狀況。 ICMP 是個非常有用的協議﹐尤其是當我們要對網路連接狀況進行判斷的時候。 ICMP協議對于網絡安全具有極其重要的意義。ICMP協議本身的特點決定了它非常容易被用于攻擊網絡上的路由器和主機。例如,在1999年8月海信集團“懸賞”50萬元人民幣測試防火墻的過程中,其防火墻遭受到的ICMP攻擊達334050次之多,占整個攻擊總數的90%以上!可見,ICMP的重要性絕不可以忽視! 比如,可以利用操作系統規定的ICMP數據包最大尺寸不超過64KB這一規定,向主機發起“Ping of Death”(死亡之Ping)攻擊。“Ping of Death” 攻擊的原理是:如果ICMP數據包的尺寸超過64KB上限時,主機就會出現內存分配錯誤,導致TCP/IP堆棧崩潰,致使主機死機。(操作系統已經取消了發送ICMP數據包的大小的限制,解決了這個漏洞) 此外,向目標主機長時間、連續、大量地發送ICMP數據包,也會最終使系統癱瘓。大量的ICMP數據包會形成“ICMP風暴”,使得目標主機耗費大量的CPU資源處理,疲于奔命。*
$tcpdump –XvvennSs
0 –i eth0 tcp[
20 :
2 ]=
0x4745 or tcp[
20 :
2 ]=
0x4850
GET :
45 (E)、
47 (G)
HTTP:H:
48 T:
54
ASC 碼
65 ~
90 為
26 個大寫英文字母
$ tcpdump ‘ip[
2 :
2 ]>
3 ’
$ tcpdump
'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
$ tcpdump
'tcp[tcpflags] & (tcp-syn|tcp-fin)!=0 and host 47.95.224.4'
$ tcpdump tcp
-i eth1
-t -s 0 -c 100 and dst port
! 22 and src net
192.168 .1 .0 /
24 -w . /target
. cap
(
1 )tcp: ip icmp arp rarp 和 tcp、udp、icmp這些選項等都要放到第一個參數的位置,用來過濾數據報的類型
(
2 )
-i eth1 : 只抓經過接口eth1的包
(
3 )
-t : 不顯示時間戳
(
4 )
-s 0 : 抓取數據包時默認抓取長度為
68 字節。加上
-S 0 后可以抓到完整的數據包
(
5 )
-c 100 : 只抓取
100 個數據包,抓完后自動停止
(
6 )dst port
! 22 : 不抓取目標端口是
22 的數據包
(
7 )src net
192.168 .1 .0 /
24 : 數據包的源網絡地址為
192.168 .1 .0 /
24
(
8 )
-w . /target
. cap : 保存成cap文件,方便用ethereal(即wireshark)分析
-
c count tcpdump將在接受到count個數據包后退出.
-
e 每行的打印輸出中將包括數據包的數據鏈路層頭部信息
-
w file 數據包輸出到file,用于wireshark分析包
-
s len設置tcpdump的數據包抓取長度為len, 如果不設置默認是262144 byte
-
w 把包數據直接寫入文件而不進行分析和打印輸出. 這些包數據可在隨后通過-r 選項來重新讀入并進行分析和打印.
-
x 當分析和打印時, tcpdump 會打印每個包的頭部數據, 同時會以16 進制打印出每個包的數據(但不包括連接層的頭部).總共打印的數據大小不會超過整個數據包的大小與snaplen 中的最小值. 必須要注意的是, 如果高層協議數據沒有snaplen 這么長,并且數據鏈路層(比如, Ethernet 層)有填充數據, 則這些填充數據也會被打印.(nt: so for link layers that pad, 未能銜接理解和翻譯, 需補充 )
-
xx tcpdump 會打印每個包的頭部數據, 同時會以16 進制打印出每個包的數據, 其中包括數據鏈路層的頭部.
-
X 當分析和打印時, tcpdump 會打印每個包的頭部數據, 同時會以16 進制和ASCII 碼形式打印出每個包的數據(但不包括連接層的頭部).這對于分析一些新協議的數據包很方便.
-
XX 當分析和打印時, tcpdump 會打印每個包的頭部數據, 同時會以16 進制和ASCII 碼形式打印出每個包的數據, 其中包括數據鏈路層的頭部.這對于分析一些新協議的數據包很方便.
有效的操作符有: 否定操作 (
`! ' 或
`n ot')與操作(
`& &' 或
`a nd')或操作(
`| |' 或
`o r')
周至端口:0~1023 動態端口:1024~65535 按照協議類型分為tcp/udp/ip/icmp端口
tcp端口:面向連接的可靠傳輸 常見的有ftp服務的21端口,telnet服務的23端口,smtp服務的25端口以及http服務的80端口,https服務的443端口。 udp端口:無需建立連接,不可靠。常見的有dns服務的53端口,snmp服務的161端口,ntp服務的123端口。還有經常使用的8000端口和4000端口。1024端口分配給第一個向系統發出申請的端口。
HTTP服務器,默認的端口號為
80 /tcp(木馬Executor開放此端口);
HTTPS(securely transferring web pages)服務器,默認的端口號為
443 /tcp
443 /udp;
Telnet(不安全的文本傳送),默認端口號為
23 /tcp(木馬Tiny Telnet
Server 所開放的端口);
FTP,默認的端口號為
21 /tcp(木馬Doly Trojan、Fore、Invisible FTP、WebEx、WinCrash和Blade Runner所開放的端口);
TFTP(Trivial File Transfer Protocol ),默認的端口號為
69 /udp;
SSH(安全登錄)、SCP(文件傳輸)、端口重定向,默認的端口號為
22 /tcp;
SMTP Simple Mail Transfer Protocol (E-mail),默認的端口號為
25 /tcp(木馬Antigen、Email Password Sender、Haebu Coceda、Shtrilitz Stealth、WinPC、WinSpy都開放這個端口);
POP3 Post Office Protocol (E-mail) ,默認的端口號為
110 /tcp;
WebLogic,默認的端口號為
7001 ;
WebSphere應用程序,默認的端口號為
9080 ;
WebSphere管理工具,默認的端口號為
9090 ;
JBOSS,默認的端口號為
8080 ;
TOMCAT,默認的端口號為
8080 ;
WIN2003遠程登陸,默認的端口號為
3389 ;
Symantec AV/
Filter for MSE ,默認端口號為
8081 ;
Oracle 數據庫,默認的端口號為
1521 ;
ORACLE EMCTL,默認的端口號為
1158 ;
Oracle XDB( XML 數據庫),默認的端口號為
8080 ;
Oracle XDB FTP服務,默認的端口號為
2100 ;
MS SQL*
SERVER 數據庫
server ,默認的端口號為
1433 /tcp
1433 /udp;
MS SQL*
SERVER 數據庫monitor,默認的端口號為
1434 /tcp
1434 /udp;
QQ,默認的端口號為
1080 /ud
- TCP數據包格式
序號:Seq序號,占32位,用來標識從TCP源端向目的端發送的字節流,發起方發送數據時對此進行標記。 確認序號:Ack序號,占32位,只有ACK標志位為1時,確認序號字段才有效,Ack=Seq+1。 標志位:共6個,即URG、ACK、PSH、RST、SYN、FIN等,具體含義如下: URG:緊急指針(urgent pointer)有效。 ACK:確認序號有效。 PSH:接收方應該盡快將這個報文交給應用層。 RST:重置連接。 SYN:發起一個新連接。 FIN:釋放一個連接。
標志位:tcp[
13 ]標志位 S置
1 |C|E|U|A|P|R|S|F|
|---------------|
|0 0 0 1 0 0 1 0|
c->s :
SYN =1,隨機產生一個seq=j,length=0
s->c :
SYN=1,ACK=1,seq=I,ack=j+1,length=0
c->s :
ACK=1,ack=1,length=0
例子:c->s發送cyn,s->c回送
Copy cyn
c ->s:
PSH =
1 ,
ACK =
1 ,seq=
1 :
4 ,ack=
1 ,length=
3
s ->c:
PSH =
1 ,
ACK =
1 ,seq=
27 :
38 ,ack=
4 , length=
11
c ->s:
ACK =
1 ,ack=
38 ,length=
0
例子:c->s發送exit,s收到該消息后斷開tcp連接
c ->s:
PSH =
1 ,
ACK =
1 ,seq=
4 :
8 ,ack=
38 ,length=
4
c ->s:
FIN =
1 ,
ACK =
1 ,seq=
8 ,ack=
38 ,length=
0
s ->c:
ACK =
1 ,ack=
9 ,length=
0
c ->s:
RST =
1 ,
ACK =
1 ,seq=
9 ,ack=
38 ,length=
0
總結
以上是生活随笔 為你收集整理的tcpdump 在ubuntu上使用命令学习笔记 /tcp、ip、icmp数据包格式 的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網站內容還不錯,歡迎將生活随笔 推薦給好友。