網絡協議分析期末複習專題(一)

期末重點
1.過濾器:區分顯示過濾器和捕獲過濾器;表達式寫監聽端口和報文.
2.嗅探:通過集線器,交換機或其他設備進行嗅探;以及嗅探器的位置;網卡可以進行嗅探的原因(混雜模式).
3.網絡協議分析:IP頭,TCP報文結構,各種網絡協議報頭域功能,ARP,IP,ICMP,三次握手四次揮手,DNS,HTTP.
4.實驗報文的分析:查看實驗報告進行分析.
過濾器
wireshark過濾器分爲兩種,顯示過濾器和捕獲過濾器。顯示過濾器指的是針對已經捕獲的報文,過濾出符合過濾規則的報文;捕獲過濾器指的是提前設置好過濾規則,只捕獲符合過濾規則的報文。
爲什麼wireshark使用兩套過濾器規則呢?原因在於wireshark使用winpcap或者libpcap第三方的報文捕獲庫來對網卡的報文進行捕獲,因此捕獲過濾器就沿用了這些第三方庫提供的捕獲過濾出規則。但是對於已經捕獲報文的解析和處理,wireshark本身構建了一套新的過濾規則,顯示過濾器。
捕捉過濾器(CaptureFilters):用於決定將什麼樣的信息記錄在捕捉結果中。需要在開始捕捉前設置。
顯示過濾器(DisplayFilters):在捕捉結果中進行詳細查找。他們可以在得到捕捉結果後隨意修改。
顯示過濾器比之捕獲過濾器要強大許多,在報文分析的過程中經常使用到,因此有必要了解下。
1.過濾特定端口的報文:tcp.port eq 80 , 不管端口是源端口還是目的端口都顯示,因此如果是過濾源端口,則是tcp.srcport eq 80;如果是目的端口,則是tcp.dstport eq 55332 這種形式。

2.長度過濾:過濾具有有效載荷的tcp報文,規則爲tcp.len >0,表示tcp生成沒有數據。如果是UDP報文則是形如udp.length = = 26 ,這個長度是指udp本身固定長度8加上udp下面那塊數據包之和。如果想過濾IP長度則是 ip.len = = 94 形式,表示除了以太網頭固定長度14,其它都算是ip.len,即從ip本身到報文末尾的總長度。frame.len = = 119 表示整個數據包長度,從eth開始到報文末尾的總長度。

上述是體現wireshark顯示過濾器優秀的地方,不止能夠過濾協議的定義字段,例如udp.length ;還提供了額外豐富的字段供使用,比如tcp.len。關於比較字符的使用羅列如下:

eq,== 等於
ne,!= 不等於
gt,> 比…大
lt,< 比…小 ge,>= 大於等於
le,<= 小於等於

4.如果過濾源IP的數據報文:ip.src eq 192.168.1.107 ,目的則是形如ip.dst eq 192.168.1.107 ,不區分源和目的則是ip.addr eq 192.168.1.107 。MAC層地址的過濾是同樣的道理。

5.過濾包含特定字符串域名的報文,形如http.host contains “moe”。

8.多個過濾條件的使用,例如同時滿足http以及且端口爲80的過濾規則 http && tcp.port == 80,關於組合符號有and&& 且 or,||,或 not,! 取反這幾種。

9.查詢數據包的內容,可以使用ctrl + F直接搜索,也可以使用規則:
例如判斷UDP的數據部分三個字節是否等於0x20 0x21 0x22,規則爲udp[8:3]= =20:21:22,表示偏移8個bytes,再取3個數,是否與= =後面的數據相等。如果判斷TCP數據包的前三個字節是否等於0x20 0x21 0x22,則是tcp[20:3]= =20:21:22,tcp一般情況下,頭部長度爲20,但也有不是20的時候,如果想得到最準確的,應該先知道tcp長度。
具體規則是:
tcp[20]表示從20開始,取1個字符
tcp[20:]表示從20開始,取1個字符以上
tcp[20:8]表示從20開始,取8個字符
捕獲過濾器
羅列一些簡單的示例:
1.過濾指定端口規則:port 80
2.過濾指定IP規則:host 192.168.0.115
3.過濾指定域名規則:host www.example.com
可以看到捕獲過濾器的規則是host 192.168.0.115 and tcp port 8080,而對應的顯示過濾器規則是ip.addr eq 192.168.0.115 and tcp.port eq 8080,兩者的語法還是不同的.
常見用顯示過濾需求及其對應表達式
數據鏈路層:

篩選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”
wireshark捕捉過濾器和顯示過濾器規則

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章