目? 錄
1、實驗目的
2、實驗環境
3、實驗內容
3.1 tcpdump 基本用法
3.2 wireshark基本用法
3.3 利用tcpdump抓包,wireshark分析包
4、實驗結果與分析
4.1 tcpdump命令的基本用法
4.2 wireshark的基本用法
4.3 利用tcpdump抓包,wireshark分析包
5、實驗小結
5.1 問題與解決辦法:
5.2 心得體會:
1、實驗目的
? ? ? ? 1、了解Linux命令終端和Windows命令行使用
? ? ? ? 2、了解IP報文格式,熟悉IP報文各個字段含義、長度
? ? ? ? 3、掌握基于tcpdump和wireshark軟件進行數據包抓取和分析技術
2、實驗環境
? ? ? ? 1、硬件要求:阿里云云主機ECS 一臺、筆記本電腦一臺
? ? ? ? 2、軟件要求:Linux/ Windows 操作系統
3、實驗內容
3.1 tcpdump 基本用法
????????1. tcpdump是一個用于截取網絡分組,并輸出分組內容的工具。憑借強大的功能和靈活的截取策略,使其成為類UNIX系統下用于網絡分析和問題排查的首選工具。
????????2. tcpdump 支持針對網絡層、協議、主機、網絡或端口的過濾,并提供and、or、not等邏輯語句來幫助你去掉無用的信息。
????????3. 參考文獻:
https://www.cnblogs.com/ggjucheng/archive/2012/01/14/2322659.html
https://www.jianshu.com/p/d9162722f189
3.2 wireshark基本用法
????????1. Wireshark(前稱Ethereal)是一個網絡封包分析軟件。網絡封包分析軟件的功能是擷取網絡封包,并盡可能顯示出最為詳細的網絡封包資料。Wireshark使用WinPCAP作為接口,直接與網卡進行數據報文交換。
????????2. 網絡管理員使用Wireshark來檢測網絡問題,網絡安全工程師使用Wireshark來檢查資訊安全相關問題,開發者使用Wireshark來為新的通訊協定除錯,普通使用者使用Wireshark來學習網絡協定的相關知識。
????????3. 參考文獻:
https://www.wireshark.org/#download
https://pc.qq.com/search.html#!keyword=wireshark
https://www.cnblogs.com/csnd/p/11807736.html
https://pc.qq.com/search.html#!keyword=xshell
3.3 利用tcpdump抓包,wireshark分析包
????????1. 在阿里云主機運行命令traceroute www.xju.edu.cn ,并利用tcpdump抓包。下載文件到本地機器利用wireshark軟件進行分析。
????????2. 提示:
????????必須首先執行抓包命令,然后再執行路徑追蹤命令,抓包命令 tcpdump -i eth0 -w test.cap
????????可使用scp命令或者利用xshell和xftp下載數據包到本地機器
????????1)利用tcpdump抓包,通過wireshark分析捕獲的數據包,分析IP的報文結構,將IP協議樹中各個名字字段,字段長度,字段信息填入下表。
????????2) 利用wireshark分析并解讀相關traceroute命令執行結果。
????????提示:在wireshark 過濾器工具欄設置僅顯示ICMP
4、實驗結果與分析
4.1 tcpdump命令的基本用法
????????1. 直接啟動tcpdump監視第一個網絡接口上所有流過的數據包。
tcpdump
????????2. 監視指定網絡接口eth0的數據包,使用-i指定tcpdump需要監聽的接口,默認會抓取第一個網絡接口。
tcpdump -i eth0
????????3. 截獲所有172.16.2.5的主機收到和發出的所有數據包。
tcpdump host 172.16.2.5
????????4. 使用參數src截獲主機172.16.2.5發送的所有數據。
tcpdump -i eth0 src host 172.16.2.5
????????5. 使用參數dst監視所有送到主機172.16.2.5的數據包。
tcpdump -i eth0 dst host 172.16.2.5
????????6. 使用參數net打印網絡地址為172.16.2.5的所有通信數據包。
tcpdump net 172.16.2.5
????????7. 打印所有源地址或目標地址是本地主機的IP數據包。
tcpdump ip
????????8. 打印TCP會話中的開始和結束數據包,并且數據包的源地址或目的地址不是本地網絡上的172.16.2.5主機。
tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0 and not src and dst net 172.16.2.5'
????????9. 監視指定網絡接口eth0與172.16.2.5網段通信的數據包,參數-c可以指定抓取包的數量。
tcpdump -i eth0 -c 20 net 172.16.2.5
????????10. 只抓取接口為eth0的包,并且只抓取20個數據包,將地址以數字方式顯示。
tcpdump -c 20 -nn -i eth0
????????11. 抓取目標端口為22的數據包,只抓取20個數據包,將地址以數字方式顯示。
tcpdump -c 20 -nn -i eth0 tcp dst port 22
????????12. 解析目標端口為22的數據包,快速打印輸出詳細的包的頭部數據,將地址以數字方式顯示。
tcpdump -c 5 -q -XX -vvv -nn -i eth0 tcp dst port 22
4.2 wireshark的基本用法
????????1. Wireshark使用WinPcap作為接口,直接與網卡進行數據報文交換,打開Wireshark后選擇要打開的數據包或者要抓取的網卡。
????????2. 雙擊選擇WLAN網卡之后,開始進行抓包,停止抓包后保存抓取到的數據包。
????????3. 使用Wireshark對eth.pcap中爬取的數據包中地址為172.16.2.91的過濾地址。
ip.addr == 172.16.2.91
????????4. 使用Wireshark對eth.pcap中爬取的數據包中地址為172.16.2.91的過濾源地址。
ip.src == 172.16.2.91
????????5. 使用Wireshark對eth.pcap中爬取的數據包中地址為172.16.2.91的過濾目的地址。
ip.dst == 172.16.2.91
????????6. 使用Wireshark對eth.pcap中爬取的數據包中協議名為HTTP的數據包進行過濾。
http
????????7. 使用Wireshark對eth.pcap中爬取的數據包中協議名為TCP的數據包進行過濾。
tcp
????????8. 使用Wireshark對eth.pcap中爬取的數據包中端口號為80的數據包進行過濾。
tcp.port == 80
????????9. 使用Wireshark對eth.pcap中爬取的數據包中http協議的請求方式為POST的數據包進行過濾。
http.request.method == "POST"
10. 使用Wireshark對eth.pcap中爬取的數據包中地址為172.16.2.91并且http協議的請求方式為POST的數據包進行過濾。
ip.src == 172.16.2.91 and http.request.method == "POST"
4.3 利用tcpdump抓包,wireshark分析包
????????1. 使用traceroute命令測試數據包到達www.xju.edu.cn所經過的路徑。
traceroute www.xju.edu.cn
????????2. 使用tcpdump命令對網關eth0進行抓包操作,并將數據包信息保存在test.cap中。
tcpdump -i eth0 -w test.cap
????????3. 通過Wireshark分析捕獲的數據包,分析IP的報文結構,將IP協議樹中各個字段的名字、長度等信息填入下表。
????????4. 使用Wireshark對eth.pcap中爬取的數據包中相關treceroute命令執行結果的數據包進行過濾,即對協議名為ICMP的數據包進行過濾。
icmp
5、實驗小結
5.1 問題與解決辦法:
????????1. 問題一:使用traceroute命令時出現如下提示此命令未找到:
????????解決方法:由于系統中沒有traceroute命令所導致,需要在使用此命令前通過 yum install traceroute 命令進行安裝。
????????2. 問題二:使用tcpdump進行數據包的抓取時出現如下提示此命令未找到:
解決方法:由于命令輸入錯誤導致,數據包的抓取命令為tcpdump,而不是tcpdnmp,將對應命令進行更改后錯誤消失。
????????3. 問題三:對指定網絡接口的數據包進行抓取時出現如下提示語法錯誤:
解決方法:由于命令鍵入不完整所導致,指定網絡接口所需要的參數是-i,在eth0前方添加-i后錯誤消失。
????????4. 問題四:截獲所有172.16.2.5的主機收到和發出的數據包時出現如下提示語法錯誤:
解決方法:由于命令鍵入不完整所導致,指定主機所需要的參數是host,在172.16.2.5前方添加host后錯誤消失。
????????5. 問題五:使用tcpdump抓取所有的數據包時一直在抓取,不能夠自動停止抓包:
解決方法:使用Ctrl+c就可以終止運行的命令,進而就可以停止抓包。
????????6. 問題六:使用Wireshark對抓取的數據包進行過濾時出現如下提示輸入框出現紅色:
解決方法:由于過濾命令輸入錯誤,在過濾地址時使用ip.addr,將輸入內容中的id.addr改為ip.addr后紅色報錯消失。
????????7. 問題七:使用Wireshark對抓取的數據包進行多個條件同時成立過濾時出現如下提示輸入框出現紅色:
解決方法:由于多個條件同時成立時需要使用and進行連接,但是輸入命令時并沒有使用and進行連接所導致,在輸入內容中加入and后紅色報錯消失。
5.2 心得體會:
????????1、tcpdump 對截獲的數據并沒有進行徹底解碼,數據包內的大部分內容是使用十六進制的形式直接打印輸出的。因此先使用帶-w參數的tcpdump 截獲數據并保存到文件中,然后再使用Wireshark軟件進行解碼分析。
????????2、tcpdump是基于Unix系統的命令行式的數據包嗅探工具。如果要使用tcpdump抓取其他主機MAC地址的數據包,必須開啟網卡混雜模式,所謂混雜模式,用最簡單的語言就是讓網卡抓取任何經過它的數據包,不管這個數據包是不是發給它或者是它發出的。
????????3、使用SSH登錄到遠程Linux,然后直接運行tcpdump,會抓到大量的數據包,而且速度非常快,這是因為tcpdump抓到的包發送給遠程的終端顯示,同時又抓了這個包,再顯示,再抓取,造成了循環抓取。
????????4、38039是客戶端的TCP端口,http的默認端口是80,如果tcpdump在/etc/services中發現端口對應的服務名稱,那么會自動的轉為名字。
????????5、默認情況下,tcpdump抓包結果顯示在屏幕上,這不利于進一步的數據分析,因此我們需要將抓包結果存放在文件中,可是使用-w命令將結果保存在文件中。