簡介
AWD比賽中我們會進行流量監控,通過linux中的tcpdump進行流量記錄,我們記錄了流量之後可以對他們的攻擊進行流量分析,我們通過wireshark查看流量包對我們哪裏進行了攻擊並且可以對其溯源,然後防禦並且編寫腳本得分。
工具
Wireshark:
是一個網絡封包分析軟件。網絡封包分析軟件的功能是網絡封包,並儘可能顯示出最爲詳細的網絡封包資料。wireshark使用winpcap作爲藉口,直接與網卡進行數據報文交換.tcpdump:
linux作爲網絡服務器,特別是作爲路由器和網關時,數據的採集和分析是不可少的。tcpdump時linux中強大的網絡數據採集分析工具之一。
用簡單的化來定義tcpdump,就是:dump the traffic on a network,根據使用者的定義對網絡上的數據包進行截獲的包分析工具。
Wireshark分析
TCP三次握手協議
第一次握手:客戶端的應用程序主動打開,並向服務端發出請求報文段。其首部中SYN=1,seq=x。
第二次握手:服務器應用被動打開。若同意客戶端的請求,則發回確認報文。其首部中:SYN=1,ACK=1,ack=x+1,seq=y。
第三次握手:客戶端收到確認報文之後,通知上層應用進程已建立,並向服務器發出確認報文。其首部ACK=1,ack=y+1。
Comparing operators(比較運算符):
英文寫法 | C語言寫法 | 含義 |
---|---|---|
eq | == | 等於 |
ne | != | 不等於 |
gt | > | 大於 |
lt | < | 小於 |
ge | >= | 大於等於 |
le | <= | 小於等於 |
Logical expressions(邏輯運算符):
英文寫法 | C語言寫法 | 含義 |
---|---|---|
and | && | 邏輯與 |
or | | *2(表格打不了兩個啊難受) | 邏輯或 |
xor | ^^ | 邏輯異或 |
not | ! | 邏輯非 |
過濾規則
過濾IP地址
(1) ip.addr == 192.168.1.1 //只顯示源/目的IP爲192.168.1.1的數據包
(2) not ip.src == 1.1.1.1 //不顯示源IP爲1.1.1.1的數據包
(3 ip.src == 1.1.1.1 or ip.dst == 1.1.1.2 //只顯示源IP爲1.1.1.1或目的IP爲1.1.1.2的數據包
過濾端口
(1) tcp.port eq 80 #不管端口是來源還是目的都顯示80端口
(2) tcp.port == 80
(3) tcp.port eq 2722
(4) tcp.port eq 80 or udp.port eq 80
(5) tcp.dstport == 80 #只顯示tcp協議的目標端口80
(6) tcp.srcport == 80 #只顯示tcp協議的來源端口80
(7) udp.port eq 15000
(8) tcp.port >= 1 and tcp.port <= 80 #過濾端口範圍
過濾MAC地址
(1) eth.dst == MAC地址 #過濾目標MAC
(2) eth.src eq MAC地址 #過濾來源MAC
(3)eth.addr eq MAC地址 #過濾來源MAC和目標MAC都等於MAC地址的
http請求方式過濾
(1) http.request.method == “GET”
(2) http.request.method == “POST”
(3) http.host mathes “www.baidu.com|baidu.cn” #matches可以寫多個域名
(4) http.host contains “www.baidu.com” #contain只能寫一個域名
(5) http contains “GET”
例如:
http.request.method ==“GET” && http contains "Host: "
http.request.method == “GET” && http contains "User-Agent: "
http.request.method ==“POST” && http contains "Host: "
http.request.method == “POST” && http contains "User-Agent: "
http contains “HTTP/1.1 200 OK” && http contains "Content-Type: "
http contains “HTTP/1.0 200 OK” && http contains "Content-Type: "
TCPdump分析
tcpdump採用命令行方式,它的命令格式爲:tcpdump [-adeflnNOpqStvx0] [-c 數量]
[-F 文件名] [-i 網絡接口]
[-r 文件名] [-s snaplen]
[-T 類型] [-w 文件名] [表達式]
基本界面
詳細參數:
抓包選項: | 作用 |
---|---|
-c: | 指定要抓取的包數量。 |
-i interface: | 指定tcpdump需要監聽的接口。默認會抓取第一個網絡接口 |
-n | :對地址以數字方式顯式,否則顯式爲主機名,也就是說-n選項不做主機名解析。 |
-nn: | 除了-n的作用外,還把端口顯示爲數值,否則顯示端口服務名。 |
-P: | 指定要抓取的包是流入還是流出的包。可以給定的值爲"in"、“out"和"inout”,默認爲"inout"。 |
-s len: | 設置tcpdump的數據包抓取長度爲len,如果不設置默認將會是65535字節。對於要抓取的數據包較大時,長度設置不夠可能會產生包截斷,若出現包截斷,輸出行中會出現"[proto]"的標誌(proto實際會顯示爲協議名)。但是抓取len越長,包的處理時間越長,並且會減少tcpdump可緩存的數據包的數量,從而會導致數據包的丟失,所以在能抓取我們想要的包的前提下,抓取長度越小越好。 |
輸出選項: | 作用 |
---|---|
-e: | 輸出的每行中都將包括數據鏈路層頭部信息,例如源MAC和目標MAC。 |
-q: | 快速打印輸出。即打印很少的協議相關信息,從而輸出行都比較簡短。 |
-X: | 輸出包的頭部數據,會以16進制和ASCII兩種方式同時輸出。 |
-XX: | 輸出包的頭部數據,會以16進制和ASCII兩種方式同時輸出,更詳細。 |
-v: | 當分析和打印的時候,產生詳細的輸出。 |
-vv: | 產生比-v更詳細的輸出。 |
-vvv: | 產生比-vv更詳細的輸出。 |
其他功能性選項: | 作用 |
---|---|
-D: | 列出可用於抓包的接口。將會列出接口的數值編號和接口名,它們都可以用於"-i"後。 |
-F: | 從文件中讀取抓包的表達式。若使用該選項,則命令行中給定的其他表達式都將失效。 |
-w: | 將抓包數據輸出到文件中而不是標準輸出。可以同時配合"-G |
time | 選項使得輸出文件每time秒就自動切換到另一個文件。可通過"-r"選項載入這些文件以進行分析和打印。 |
-r: | 從給定的數據包文件中讀取數據。使用"-"表示從標準輸入中讀取。 |
端口過濾
抓取所有經過ens33,目的或源端口22的網絡數據:
tcpdump -i ens33 port 22
指定源端口:tcpdump -i ens33 sec port 22
指定目的端口: tcpdump -i ens33 dst port 22
網絡過濾
tcpdump -i ens33 net 192.168.1.1
tcpdump -i ens33 src net 192.168.1.1 #源端口
tcpdump -i ens33 dst net 192.168.1.1 #目的端口
協議過濾
tcpdump -i ens33 arp
tcpdump -i ens33 ip
tcpdump -i ens33 tcp
tcpdump -i ens33 udp
tcpdump -i ens33 icmp
tcpdump -w 1.pcap #抓所有包保存到1.pcap中然後使用wireshark分析
本文到此也就結束了,如有疑問,可以私信筆者,筆者很樂意解答,由於水平有限,定有所紕漏,還請讀者斧正,寫作不易,還望支持。
2020-03-04
ro4lsc