流量分析在ctf比赛中也是常见的题目,参赛者通常会收到一个网络数据包的数据集,这些数据包记录了网络通信的内容和细节。参赛者的任务是通过分析这些数据包,识别出有用的信息,例如登录凭据、加密算法、漏洞利用等等
Wireshark是一款开源的网络数据包分析工具,用于捕获、分析和可视化网络流量。它在多个平台上可用,包括Windows、Mac和Linux,工具下载地址
https://www.wireshark.org/download.html
默认安装即可
演示的流量包:
https://anonfiles.com/laS2l3v2zd/Alpha_1_pcapng
访问网址下载即可
这是流量包的文件格式
.pcapng
安装好wireshark后,双击打开这个文件
最上方的一栏是任务栏,下面是搜索框,最下面的是数据包的详细信息和数据包的数据
协议筛选:
tcp:显示所有TCP协议的数据包
udp:显示所有UDP协议的数据包
http:显示所有HTTP协议的数据包
dns:显示所有DNS协议的数据包
icmp:显示所有ICMP协议的数据包
在搜索框里输入http就能看到所有的http流量,其他同理
IP地址筛选:
ip.addr == 192.168.0.1:显示与指定IP地址相关的所有数据包
src host 192.168.0.1:显示源IP地址为指定地址的数据包
dst host 192.168.0.1:显示目标IP地址为指定地址的数据包
这里我们筛选192.168.1.25ip相关的数据包
筛选过后就是都关于这个ip的数据包流量
端口筛选:
tcp.port == 80:显示使用指定TCP端口的数据包
udp.port == 53:显示使用指定UDP端口的数据包
port 80:显示源或目标端口为指定端口的数据包
筛选tcp 80端口的流量
逻辑运算符:
and:使用AND逻辑运算符连接多个条件,例如 tcp and ip.addr == 192.168.0.1
or:使用OR逻辑运算符连接多个条件,例如 tcp or udp
not:使用NOT逻辑运算符排除满足条件的数据包,例如 not tcp
筛选tcp流量和ip地址为192.168.1.5的流量包tcp and ip.addr == 192.168.1.5
比较运算符:
==:等于,例如 http.request.method == "POST"
!=:不等于,例如 ip.addr != 192.168.0.1
<、>:小于、大于,例如 tcp.len > 100
筛选http的post请求流量包http.request.method == “POST”
复杂筛选:
使用括号 () 来组合多个条件,例如 (tcp and port 80) or (udp and port 53)
使用复合条件进行筛选,例如 (tcp.flags.syn == 1 or tcp.flags.ack == 1) and ip.addr == 192.168.0.1
演示的流量包:
https://anonfiles.com/laS2l3v2zd/Alpha_1_pcapng
访问网址下载即可
点击协议分级,可以看到这个流量包里所有协议的流量
有udp流量,ipv4流量,tcp流量,http流量,我们选择http流量数据,右击选择选中
就可以看到这个流量包里的所有http流量
我们随便选择一个包,跟踪他的http流量,以便查看详细数据
在下面,很明显能看到sql注入的流量
之后他上传了自己的php一句话木马并连接执行命令
右击跟踪这个流量包
这个一句话木马将执行的内容加密了,使用的是base64编码,我们复制加密后的参数,进入网站解密
https://base64.us/
他查询了C:\phpStudy\WWW\目录下的文件,我们可以看到回显
点击右下角的返回,继续跟踪流量包
在最后一个用一句话木马的流量里,可以看到它导出了一个叫flag.zip的文件
由于文件未加密,我们还能看到flag.txt的内容
flag.txt文件内的文本为:
DPS
题目下载地址:
https://anonfiles.com/S5Fc91v3za/capture_pcap
打开流量包,可以看到全是DNS流量,使用strings工具可以发现很多十六进制
我们把这些十六进制导出来
tshark -r capture.pcap -T fields -e dns.qry.name > a.txt
用文本编辑器把.pumpkincorp.com字符去掉
然后再用uniq工具将重复的字符串去掉
cat a.txt| uniq > b.txt
将十六进制转换为ascii码可以发现,这是一个Excel 文件
https://gchq.github.io/CyberChef/
可以看到flag文本
最常见的usb键盘流量包如下图
协议为USB,并且键盘数据存储在usbhid.data中,这里0c对应的就是i字符
我们将流量包里的usbhid.data数据提取出来,然后一一和字符对应即可,这里我开发了一个脚本,可以直接提取和转换usb键盘流量数据
https://github.com/baimao-box/KeyboardTraffic
这篇文章我只是展示了一些流量分析的基础,想要成为大佬,就要多刷题