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(比较运算符):
英文写法 | 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
更多推荐
所有评论(0)