AWD流量分析
簡介
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(比較運算符):
| eq | == | 等于 |
| ne | != | 不等于 |
| gt | > | 大于 |
| lt | < | 小于 |
| ge | >= | 大于等于 |
| le | <= | 小于等于 |
Logical expressions(邏輯運算符):
| 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
總結
- 上一篇: Oracle的12c版本打补丁
- 下一篇: 在大数据中如何寻找相似的文档(shing