前言
用了一週多的時間看了《Wireshark數據包分析實戰詳解》這本書的第一篇,這前九章的內容主要是講解wireshark的使用方法和技巧,以及capinfos、dumpcap、editcap和tshark等命令行工具的使用技巧。另外我也參考了網絡上的一些文章,對本階段學習做一個小總結,方便以後複習。
Wireshark圖形化工具
在過去,網絡封包分析軟件是非常昂貴的,或是專門屬於盈利用的軟件。Wireshark的出現改變了這一切。在GNUGPL通用許可證的保障範圍底下,使用者可以以免費的代價取得軟件與其源代碼,並擁有針對其源代碼修改及客製化的權利。Wireshark是目前全世界最廣泛的網絡封包分析軟件之一。
wireshark視圖
定製Profile
可定製profile配置文件,右鍵profile,進行管理。
基礎使用不在贅述。
延時檢測
新增列,將TCP中的Timestamps中的Time since previous。。。應用為新的列。
捕獲過濾
捕捉過濾器語法
語法:<protocol> <direction> <host> < Value> < Logical Operations> <other>/<host>/<direction>/<protocol>
Protocol(協議): ether,fddi, ip,arp,rarp,decnet,lat, sca,moprc,mopdl, tcp , udp 等,如果沒指明協議類型,則默認為捕捉所有支持的協議。
Direction(方向):src, dst,src and dst, src or dst等,如果沒指明方向,則默認使用 “src or dst” 作為關鍵字。
Host(s): net, port, host, portrange等,默認使用”host”關鍵字,”src 10.1.1.1″與”src host 10.1.1.1″等價。
Logical Operations(邏輯運算):not, and, or 等,否(“not”)具有最高的優先級。或(“or”)和與(“and”)具有相同的優先級,運算時從左至右進行。
常見使用的捕獲過濾語句
只(不)捕獲某主機的HTTP流量
host 192.168.5.231 and port 80 and http
#只捕獲主機192.168.5.231 的http流量。注意如果你的HTTP端口為8080,把80 改為8080。
port 80 and http
#捕獲所有經過該接口的http流量。注意如果你的HTTP端口為8080,把80 改為8080。
host 192.168.5.231 and not port 80
#捕獲主機192.168.5.231除 http 之外的其他所有流量,注意如果你的HTTP端口為8080,把80 改為8080。
not port 80
#捕獲除 http 之外的其他所有流量,注意如果你的HTTP端口為8080,把80 改為8080。
not port 80 and !http
#捕獲除 http 之外的其他所有流量,注意如果你的HTTP端口為8080,把80 改為8080。
只捕獲某主機的所有流量
host 192.168.5.231
#捕獲源目主機均為192.168.5.231
dst 192.168.5.231
#捕獲目的主機均為192.168.5.231
src 192.168.5.231
#捕獲來源主機均為192.168.5.231
net 192.168.5.0/24
#捕獲網段為d192.168.5的所有主機的所有流量
只捕獲某主機的DNS流量
host 192.168.5.231 and port 53
#只捕獲主機192.168.5.231 的dns流量。
src 192.168.5.231 and port 53
#只捕獲主機192.168.5.231 對外的dns 的流量。
dst 192.168.5.231 and port 53
#只捕獲dns服務器相應主機192.168.5.231的dns流量。
port 53
#捕獲接口中的所有主機的dns流量
只(不)捕獲APR流量
host 192.168.5.231 and arp
#只捕獲主機192.168.5.231 的arp流量。
host 192.168.5.231 and !arp
#只捕獲主機192.168.5.231 除arp外的所有流量。
arp
#捕獲接口中的所有arp請求
!arp
#捕獲接口中所有非arpq請求。
只捕獲特定端口的流量
tcp portrange 8000-9000 an port 80
#捕獲端口8000-9000之間和80端口的流量
port 5060
#捕獲sip流量,因為sip的默認端口是5060。舉一反三:port 22#捕獲ssh流量
捕獲電子郵件的流量
host 192.168.5.231 and port 25
#捕獲主機192.168.5.231 的POP3協議的流量。
port 25 and portrange 110-143
#因為電子郵件的協議:SMTP、POP3、IMAP4,所以捕獲端口的流量。
捕獲vlan 的流量
vlan
#捕獲所有vlan 的流量
vlan and (host 192.168.5.0 and port 80)
#捕獲vlan 中主機192.168.5.0 ,前提是有vlan,在wifi中不一定可以捕獲到相應的流量,局域網(公司,學校裡面的網絡應該有vlan)
更多的案例,可以參考
端口常識:https://svn.nmap.org/nmap/nmap-services#
常見協議及其端口: http://tool.chinaz.com/port/#
顯示過濾器
捕獲過濾器使用BPF語法,而顯示過濾器使用wireshark專有格式。
並且顯示顯示過濾器區分大小寫,大部分使用的是小寫。
語法格式:Protocol String1 String2 Comparision operator Value Logical Operations Other expression
Protocol(協議):該選項用來指定協議。該選項可以使用位於OSI模型第2-7層的協議。
String1,String2(可選項):協議的子類。
Comparision operator: 指定運算比較符。
英文寫法C語言寫法含義
eq==等於
ne!=不等於
gt>大於
lt
ge>=大於等於
le<=小於等於
Logical expression: 指定邏輯運算符。
英文寫法C語言寫法含義
and&&邏輯與
or||邏輯或
xor^^邏輯異或
not!邏輯非
協議過濾器
arp
#顯示所有ARP流量
ip
#顯示所有IPv4流量
ipv6
#顯示所有IPv6流量
tcp
#顯示所基於TCP的流量數據
應用過濾器
bootp
#顯示所有DHCP流量
dns
#顯示所有NDS流量,包括tcp傳輸和udp的dns請求和響應
tftp
#顯示所有TFPT(簡單文件傳輸協議)流量
http
#顯示所有HTTP命令、響應和數據傳輸包。但是不現實tcp握手包、tcp確認報和tcp斷開包的流量數據。
icmp
#顯示所有ICMP流量(ping命令發出的數據包)。
字段存在過濾器
bootp.option.hostname
#顯示所有DHCP流量,包含主機名(DHCP是基於BOOTP)。
http.host
#顯示所有包含http主機名字段的數據包。通常是由一個客戶端發給web服務器的請求。
ftp.request.command
#顯示所有ftp命令數據,如USER、PASS、RETR命令。
特有的過濾器
tcp.analysis.flags
#顯示所有與tcp表示有關的包,包括丟包、重發和零窗口標誌。
tcp.analysis.zero_window
#顯示被標誌的包,表示發送方的緩存空間已滿
顯示過濾器語法檢查
紅色表示錯誤
綠色標識正確可執行
黃色表示語法正確,但是可能不會過濾出用戶想要的過濾的數據包。
常用顯示過濾器及其表達式
數據鏈路層:
篩選mac地址為04:f9:38:ad:13:26的數據包----eth.src == 04:f9:38:ad:13:26
篩選源mac地址為04:f9:38:ad:13:26的數據包----eth.src == 04:f9:38:ad:13:26
網絡層:
篩選ip地址為192.168.1.1的數據包----ip.addr == 192.168.1.1
篩選192.168.1.0網段的數據---- ip contains “192.168.1”
篩選192.168.1.1和192.168.1.2之間的數據包----ip.addr == 192.168.1.1 && ip.addr == 192.168.1.2
篩選從192.168.1.1到192.168.1.2的數據包----ip.src == 192.168.1.1 && ip.dst == 192.168.1.2
傳輸層:
篩選tcp協議的數據包----tcp
篩選除tcp協議以外的數據包----!tcp
篩選端口為80的數據包----tcp.port == 80
篩選12345端口和80端口之間的數據包----tcp.port == 12345 && tcp.port == 80
篩選從12345端口到80端口的數據包----tcp.srcport == 12345 && tcp.dstport == 80
應用層:
特別說明 :http中http.request表示請求頭中的第一行(如GET index.jsp HTTP/1.1),http.response表示響應頭中的第一行(如HTTP/1.1 200 OK),其他頭部都用http.header_name形式。
篩選url中包含.php的http數據包----http.request.uri contains “.php”
篩選內容包含username的http數據包----http contains “username”
tshark命令行工具
tshark的 - 轉儲和分析網絡流量
概要
tshark的 [ -2 ] [ -a ] … [ -b ] … [ -B ] [ -c ] [ - ? ] [ -d == ,] [ -D ] [ -e ] [ -E ] [ -f ] [ -F ] [ -g ] [ -h ] [ -H ] [ -i | - ] [ -I ] [ -K ] [ -l ] [ -L ] [ -n ] [ -N ] [ -o ] … [ -O ] [ -p ] [ -P ] [ -q ] [ -Q ] [ -r ] [ -R ] [ -s ] [ -S ] [ -t 一個|廣告| adoy | D | DD | E | - [R | U | UD | udoy] [ -T 領域| PDML | PS | PSML |文] [ -u ] [ -v ] [ -V ] [ -w | - ] [ -W ] [ -x ] [ -X ] [ -y ] [ -Y ] [ -z ] [ --capture註釋 ] []
tshark -G [column-formats|currentprefs|decodes|defaultprefs|fields|ftypes|heuristic-decodes|plugins|protocols|values]
選項(概要)
如要查詢更詳細的選項解析可參考鏈接
-a
設置一個標準,指定當tshark的是停止寫入捕捉文件。標準是的形式測試:值,其中測試是下列之一:
持續時間:值停止寫入捕捉文件後價值秒鐘過去了。
作品尺寸:值停止寫入捕捉文件後,它達到的大小 值 KB。如果此選項與-b選項一起使用,tshark的 將停止寫入當前捕捉文件,並切換到下一個,如果文件大小達到。當讀取捕獲文件,tshark的將停止讀取文件之後讀取的字節數超過此數值(完整數據包將被讀取,所以比這個數目更多的字節可被讀取)。注意,文件大小限制為2吉布最大值。
文件:值停止寫入捕捉文件後,值被寫入文件的數量。
-c
設置數據包捕獲實時數據時,讀取的最大數量。如果讀一個捕獲文件,設置數據包要讀取的最大數量。
-D
打印接口上的列表tshark的可以捕捉,並退出。每個網絡接口,一個數字和一個接口名,可能緊跟在界面的文本描述,被打印。接口名稱或數量可以提供給-i選項指定要在其上捕捉的接口。
這可以在不具有命令列出它們(例如,Windows系統或UNIX系統缺乏系統是有用的ifconfig -a); 數量可在Windows 2000和更高版本的系統,其中接口名稱是一個比較複雜的字符串是有用的。
需要注意的是“可以捕獲”是指tshark的是能夠打開設備進行實時捕捉。根據您的系統,你可能需要從具有特殊權限的帳戶下運行tshark的(例如,作為root)才能夠捕獲網絡流量。如果tshark的-D不是從這樣的帳戶下運行,它不會顯示任何接口。
-e
添加一個字段,字段列表顯示,如果-T領域被選中。這個選項可以在命令行上多次使用。如果該至少一個字段必須提供-T字段選項被選中。列名可以使用前綴“_ws.col。”
例如:-e frame.number -e ip.addr -e UDP -e _ws.col.info
給人一種協議,而不是一個單一的場將打印有關的協議作為一個單一的場數據的多個項目。字段之間用製表符分隔默認。 -E控制打印領域的格式。
-E
設置選項控制領域的印刷時-T領域被選中。
選項??有:
標題= Y | N如果Y,打印的使用給定的字段名稱的列表-e 作為輸出的第一行; 字段名稱將使用相同的字符作為字段值中分離出來。默認為。
分離器= / T | /秒| 設置分隔符使用領域。如果/噸標籤將會被使用(這是默認值),如果 /秒,一個單一的空間將被使用。否則,可以通過命令行被接受為選擇一部分的任何字符都可以使用。
發生= F | L |一個用於具有多個事件字段選擇對哪些發生。如果F第一次出現將被使用,如果升 最後出現的將被使用,如果一個事件都將使用(這是默認值)。
聚合=,| / S | 設置聚合字符用於具有多次出現的字段。如果,一個逗號將被使用(這是默認值),如果/秒,一個單一的空間將被使用。否則,可以通過命令行被接受為選擇一部分的任何字符都可以使用。
報價= D | S | N,設置引號字符使用環繞領域 e 使用雙引號,單引號,暫無報價(默認值)。
-f
設置捕捉過濾器表達式。
這個選項可以出現多次。如果第一次出現之前使用-i選項,它設置默認的捕獲過濾器表達式。如果使用後-i選項,它為在最後指定的接口捕獲過濾表達式-i此選項之前發生的選項。如果捕獲過濾器表達式沒有設置具體而言,如果所提供的默認捕獲篩選表達式中使用。
-F
設置使用寫入的輸出捕獲文件的文件格式-w 選項。寫有輸出-w選項是原始數據包數據,沒有文字,所以沒有-F選項來要求的文本輸出。選項-F 沒有價值將列出可用的格式。
-i | -
設置網絡接口或管道的名稱,用於現場數據包捕獲。
網絡接口名稱應與所列出的名稱之一“ tshark的-D(如上所述)“; 一個數字,所報告的“ tshark的-D “,也可以使用。如果您使用的是UNIX,“ netstat的-i “或” 使用ifconfig -a “也可能工作獲得的接口名,雖然不是所有的UNIX版本都支持-a選項的ifconfig。
如果不指定接口,tshark的搜索列表界面,選擇第一個非回送接口,如果有任何非Loopback接口,並選擇第一個loopback接口,如果沒有非環回接口。如果沒有接口可言, tshark的報告錯誤,不執行捕捉。
管道名即可以是FIFO(命名管道)的名稱或`` - ''從標準輸入讀取數據。從管道讀取的數據必須是標準的PCAP格式。
這個選項可以出現多次。當從多個接口捕獲,捕獲文件將被保存在PCAP-ng的格式。
注:Win32版本的tshark的不支持從管道捕捉!
-r <infile>
讀取數據包INFILE,可以是任何支持的捕捉文件格式(包括gzip壓縮文件)。也可以使用命名管道或標準輸入( - )在這裡,但只能使用特定的(未壓縮的)捕獲的文件格式(特別是:那些可無求向後讀取)。
-w <outfile> | -/<outfile>
寫入原始分組數據OUTFILE或標準輸出,如果 OUTFILE為“ - ”。
注:-w提供原始數據包數據,而不是文字。如果你想文本輸出需要重定向標準輸出(例如,使用’>’),不使用-w 選項這一點。
-W
保存在文件中的額外信息,如果該格式支持它。例如,
-F pcapng -W?
將節省主機名解析記錄以及捕獲的數據包。
Wireshark的未來版本可能會採集格式自動更改為 pcapng需要。
的說法是,可能包含了下面這封信的字符串:
寫網絡地址解析信息(僅pcapng)
-Y
原因指定的過濾器(它使用的讀/顯示過濾器的語法,而不是捕獲過濾器)打印數據包的解碼形式或寫入數據包文件之前得到應用。匹配的數據包過濾器打印或寫入文件; 該匹配的數據包取決於(例如,片段),不打印,但寫入文件包; 包不匹配的過濾器,也不依賴於被丟棄,而不是被印刷或書寫。
使用此,而不是-R使用單通分析濾波。如果這樣做兩遍分析(見-2)然後只包匹配的讀取濾波器(如果有的話)將被針對該過濾器進行檢查。
tshark實例
tshark -i 4 -f “tcp” -w tcp.pcapng
#捕獲4號網絡接口的tcp數據,保存為tcp.pcapng
tshark -r "tcp.pcapng" -Y "tcp.analysis.flags"
#使用-Y指定的顯示過濾器顯示tcp.pcapng流量包
tshark -i 4 -f “dst port 80 and host 192.168.1.3” -T fields -e frame.number -e ip.src -e ip.dst -e tcp.window_size
#導出到達192.168.1.3主機接口4上的80端口的所有數據,並且導出的字段包括幀編號,目的和源ip和tcp窗的大小。
tshark -i 4 -Y "htpp.host" -T fields -e http.host > httphosts.txt
#導出HTTP包的Host字段值。
tshark -i 4 -qz io,phs
#導出統計數據,當按下Ctrl+C停止時,會顯示統計信息。
tshark -i 4 -qz hosts
#查看整個網絡中活躍的主機列表。
tshark -r "http.capng" -qz expert,notes
#導出http.capng中的專家信息中的notes信息。若只要導出專家信息中的Errors&Warnings信息可以 -qz expert,warn
參考:
https://www.cnblogs.com/lsdb/p/9254544.html
http://www.360doc.com/content/15/0516/18/14900341_471040655.shtml
《Wireshar數據包分析實戰解析》
原文鏈接:https://blog.csdn.net/qq_41420747/java/article/details/92069054