日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Ubuntu >内容正文

Ubuntu

tcpdump 在ubuntu上使用命令学习笔记 /tcp、ip、icmp数据包格式

發布時間:2024/8/1 Ubuntu 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 tcpdump 在ubuntu上使用命令学习笔记 /tcp、ip、icmp数据包格式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

- 常用命令詳解

  • 基本命令
$ tcpdump //默認抓取第一個網卡接口的所有數據包 $ tcpdump –i ens33 //抓取網卡ens33的數據包 $ tcpdump host 47.95.224.4 //監聽主機47.95.224.4接收發送的所有數據包 $tcpdump host 47.95.224.4 and 10.13.32.60 //截獲主機47.95.224.4與10.13.32.60之間的所有數據包

$ tcpdump host 47.95.224.4 and \(10.13.32.60 or 10.13.32.169\) //截獲主機47.95.224.4與10.13.32.60或10.13.32.169之間的所有數據包 $tcpdump host 47.95.224.4 and !10.13.32.169 //截獲主機47.95.224.4 和 非10.13.32.169主機的所有數據包 $ tcpdump -i ens33 src host 47.95.224.4 //截獲主機47.95.224.4發出的所有數據包 $ tcpdump -i ens33 dst host 47.95.224.4//截獲主機47.95.224.4接收的所有數據包 $ tcpdump tcp port 443 and host www.baidu.com //截獲本機443端口(https)與www.baidu.com之間的數據包

  • 監聽指定網絡地址的數據包
$ tcpdump net 47.95.224.0/24//監聽網絡地址47.95.224.0/24收發的所有數據包 $ tcpdump ip and not net 10.13.32.169 //監聽本地網絡所有的ip數據包
  • 監聽icmp數據包
$ 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資源處理,疲于奔命。*

  • http抓包
$tcpdump –XvvennSs 0 –i eth0 tcp[20:2]=0x4745 or tcp[20:2]=0x4850 GET: 45(E)、47(G) HTTP:H:48 T:54 ASC659026個大寫英文字母
  • 監聽指定ip/tcp字段內容的數據包
$ tcpdump ‘ip[2:2]>3//截獲本機ip數據包長度大于3字節的數據包 //ip[2]表示ip數據包的第三個字節的內容,ip[2:2]代表第三個字節與第四個字節的所有內容 //也就是ip數據包中的總長度字段的值$ tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)' //截獲端口為80,ip數據包數據負載不為0數據包 //判斷ip數據包數據負載是否為0: ip數據包長度-ip包頭長度-tcp首部長度=ip數據負載長度 //ip[0]代表版本字段和首部長度字段的內容 //ip[0]&0xf 表示首部長度字段 //ip[0]&0xf<<2 首部長度以32bit(4字節)為單位,所以需要左移2位,即擴大四倍 //tcp[12]&0xf0>>2原理同ip[0],表示tcp的首部長度$ tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-fin)!=0 and host 47.95.224.4' //截獲主機47.95.224.4建立或斷開TCP連接的數據包
  • tcpdump基本格式小結
$ 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, 如果不設置默認是262144byte -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碼形式打印出每個包的數據, 其中包括數據鏈路層的頭部.這對于分析一些新協議的數據包很方便.
  • 操作符小結
有效的操作符有:否定操作 (`!' 或 `not')與操作(`&&' 或 `and')或操作(`||' 或 `or')
  • 端口號

周至端口: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|
  • tcp連接建立
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
  • tcp 數據傳輸
例子: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
  • tcp斷開連接
例子: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数据包格式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。