拿到 pcapng 文件后,首先分析流量类型:
- 发现有 TCP 连接,其中一个连接使用端口 21(FTP 默认控制端口)
- 确认这是 FTP 流量
从控制连接(端口 21)中提取所有 FTP 命令和响应:
表格
命令 / 响应 说明
USER uftp 用户名:uftp
PASS whoami127.0.0.1 密码:whoami127.0.0.1
MKD key is here 创建了 "key is here" 目录
CWD key is here 进入该目录
STOR key.zip 上传 key.zip 文件
STOR README.txt 上传 README.txt 文件
FTP 使用被动模式(PASV),每次数据传输都会建立新的 TCP 连接:
- 从
227 Entering Passive Mode (192,168,174,141,71,31)中解析数据端口 - 端口号 = 71 × 256 + 31 = 18207
- 每个 LIST、STOR 命令对应一个数据连接
从数据连接中提取文件内容:
- key.zip(197 字节):从 STOR 命令对应的数据连接中提取,是一个 ZIP 压缩包
- README.txt(66 字节):说明文档,中文内容
README.txt 内容(UTF-8 编码中文):
"秘密钥匙就在,很多用户名密码用一样的密码。"
意思是:ZIP 压缩包的密码和 FTP 登录密码相同。
使用 FTP 密码whoami127.0.0.1解压 key.zip:
- 解压成功,得到
key.txt - 内容:
KEY{351d5ead1ca31ed33deb6f6a3111e117}
先找控制连接
FTP 控制连接通常在端口 21
先看控制连接里的命令,了解用户做了什么操作
用户名、密码、上传 / 下载了什么文件,都能在控制连接里看到
再找数据连接
FTP 数据连接的端口不固定
主动模式:服务器端口 20
被动模式:从 227 Entering Passive Mode (a,b,c,d,p1,p2) 中计算端口 = p1×256+p2
每个 LIST、RETR、STOR 命令都会对应一个数据连接
提取文件内容
注意 TCP 序列号,按顺序重组数据
注意传输方向:STOR 是客户端→服务器(上传),RETR 是服务器→客户端(下载)
注意传输模式:ASCII 模式和二进制模式(TYPE A / TYPE I)
注意隐藏信息
密码可能藏在 README、注释、文件名里
注意密码复用的情况(很多人不同地方用同一个密码)
压缩包可能有密码,密码可能在流量的其他地方