CTF视角的Wireshark基础

1.0 原文信息

CTF| 吃个鸡,一起破流量分析题吧!
2017-11-03 reborn 漏斗社区 (微信公众号)
已备份印象笔记

1.1 过滤报文

  1. 根据IP过滤,如源IP或者目标 x.x.x.x
1
2
ip.src eq x.x.x.x or ip.dst eq x.x.x.x
ip.addr eq x.x.x.x
  1. 根据端口过滤
1
2
3
4
5
6
tcp.port eq 80 or udp.port eq 80
# 只显tcp协议的目标端口为80
tcp.dstport == 80
# 只显tcp协议的源端口为80
tcp.srcport == 80
tcp.port >= 1 and tcp.port <= 80
  1. 根据协议过滤
1
2
3
4
5
6
7
8
tcp
udp
arp
icmp
http
ftp
dns
ip
  1. 根据MAC地址过滤
1
eth.dst == A0:00:00:04:C5:84
  1. 根据数据包长度过滤
1
2
3
4
5
6
7
8
# 这个长度是指udp本身固定长度8加上udp下面那块数据包之和。
udp.length == 26
# 以下是ip数据包(tcp下面那块数据),不包括tcp本身
tcp.len >= 7
# 除了以太网头固定长度14,其它都算是ip.len,即从ip本身到最后
ip.len == 94
# 整个数据包长度,从eth开始到最后
frame.len == 119
  1. 与HTTP相关的过滤器
1
2
3
4
5
6
http.request.method == "GET"
http.request.method == "POST"
http.request.uri == "/img/logo-edu.gif"
http contains "GET"
http contains "HTTP/1."
http.request.method == "GET" && http contains "User-Agent:"

1.2 协议分析

statistics 下选择 protocol hierarchy ,可以查看当前数据包中包含哪些协议。

将所有选项都展开,通常我们关注HTTP协议的内容,其他明文的TCP协议或UDP协议内容也有可能需要关注。

在我们关注的协议上右键点击 apply as filter -> selected ,可以过滤出需要的协议类型。

同样的方法也可以用来选择想要的数据包特征,比如想筛选http post请求数据包,可打开一个http post请求包,点击到post请求方式,右键apply as filter -> selected

1.3 流汇聚

在关注的http数据包或tcp数据包中选择流汇聚,可以将HTTP流或TCP流汇聚或还原成数据,在弹出的框中可以看到数据内容。

HTTP流:
右键 -> Follow HTTP Stream

常见的HTTP流关键内容:

  1. HTML中直接包含重要信息
  2. 上传或下载文件内容,通常包含文件名、hash值等关键信息,常用POST请求上传。(PUT?)
  3. 一句话木马,POST请求, 内容包含eval,内容使用base64。

TCP流
右键 -> Follow TCP Stream

1.4 数据提取

wireshark自动分析

使用wireshark可以自动提取通过HTTP传输的文件内容,方法如下:
file -> export objects -> http
在打开的对象列表中找到有价值的文件,如压缩文件、文本文件、音频文件、图片等,点击save as进行保存,或者save all保存所有对象再进入文件夹进行分析。

手动数据提取

有时候自动提取得不到想要的结果时,也可以使用wireshark也可以手动提取文件内容:
点击想要的数据包,选定media type的位置,点击file->export selected Packet Bytes,在弹出的框中将文件保存成二进制文件。

2 案例

无线密码破解

有时候我们打开一个文件,里面只有wireless LAN 协议,很有可能是WPA或WEP加密后的无线数据包。
1、首先是命令行模式的教程,将目标加密包复制到aircrack-ng文件夹下
(1) 用aircrack-ng检查cap包:

1
aircrack-ng.exe shipin.cap

可见这里是wpa加密,并且bssid:00:1D:0F:5D:D0:EE,essid:0719

(2)使用弱口令字典破解wpa加密

1
aircrack-ng.exe shipin.cap -w wordlist.txt

这里wordlist.txt是弱口令字典,包含了常见的路由器密码,可以网上下载到,也可以自动生成。
可见破解到的密码是88888888。

(3)用密码解密cap
这里用到airdecap-ng解密cap报文,使用到了刚才的essid和破解的密码

1
airdecap-ng.exe shipin.cap -e 0719 -p 88888888

于是在目录下生成一个shipin-dec.cap,使用wireshark打开

GUI操作教程略

相关CTF的题目:
http://www.shiyanbar.com/ctf/writeup/1451

2017年 第三届上海市大学生网络安全大赛 流量分析题

1
2
3
4
5
看 统计-协议分级
使用过滤器 "ftp || ftp-data"
追踪ftp-data的TCP流,另存为binary来提取文件
提取出 key.log 以及两个 flag.zip
其中一个flag.zip是伪加密,解开后获得提示应关注加密数据