接下来,我们就详细的对上面的步骤,进行分析。
实验步骤二 分析FTP协议数据包
在FTP工作流程中使用控制链接和数据连接两种方式来实现数据传输,下面我们来分析这两种包的详细信息。
分析控制链接的数据
FTP的控制连接用于传送用户名、密码及设置传输方式等控制信息,下面以保存的ftp.pcapng捕获文件为例,分析FTP协议控制连接数据包。
上图中显示了所有数据包的Info列,在这里可以看到ftp传输的所有信息,因为FTP是明文形式传输数据包的,所有我们在InFo列里能看到登录FTP服务器的用户名、密码和传输文件等。在上图中,登录FTP服务器的用户名为Hetian,密码为123456,下载了文件cat.jpg及上传了文件Tulip.jpg。这里显示的都是成功,如果传输过程中出差的话,会返回相应的应答码。
在捕获的FTP数据包中,USER,PASS,CWD,RETR和STOR等都是控制连接使用的控制命令。这些控制命令在包详细信息中,显示的格式都相同。这里以控制用户信息的命令为例,分析包的详细信息。在ftp.pcapng捕获文件中,捕获的用户信息如下:
从该界面可以看到登录FTP服务器时,使用的控制命令是USER和PASS。根据这两个命令,可以看到登录的账号为Hetian,密码为123456.这两个包的详细信息如下
用户名包详细信息
File Transfer Protocol (FTP)
USERHetian\r\n
Requestcommand: USER
Requestarg: Hetian
从上面的信息中,可以看到该包使用了FTP协议,输入的用户名为Hetian,请求的命令是USER,请求参数为Hetian。
密码的详细信息
FileTransfer Protocol (FTP)
PASS123456\r\n
Requestcommand: PASS
Requestarg: 123456
从上面的信息中,可以看到输入的密码为123456,请求的命令是PASS,请求参数为123456。
其余的CMD等命令,学习者自己查看下。
分析数据连接的数据
数据连接用于传送文件数据,也就是通过FTP服务器进行上传和下载文件。下面以捕获的文件为例,分析数据连接的数据。
上面的图中,控制命令RETR和PORT的数据分别为上传和下载的数据包。这里我们以下载文件为例(上传相同原理),点击上面的第811帧数据,右键,
选择Follow TCPStream选择,
上面显示了所有FTP的传输信息,如果想要查看传输的数据,就要将这些信息去掉。关闭上面的窗口,在Wireshark中,你会发现过滤条件被修改为如下
最简单的方法就是,在前面加一个!,就能达到去掉的效果。如下图:
接下来就是要找到我们下载的文件。如何能快速的找到下载的文件呢,这里给出两种方法,大家自行选择:
通过协议的字段去分析:你会发现,去掉了FTP的控制连接数据,显示的是TCP协议的数据,在TCP协议中,PUSH字段表示推送数据,我们就可以在Info中找到PUSH字段,间接找到想要的文件。
我们知道下载的文件是JPG格式,所以也就知道二进制的表示为JFIF(exe格式用二进制分析器打开是MZ的道理是一样的),所以就可以通过Wireshark自带的搜索,快速找到文件所在的帧数。搜索的快捷键是Ctrl+F.如下图
这样也能找到相应的帧信息。我们在找到帧信息之后(814帧或者820均可),通过右键,Follow TCPStream,可以看到数据的信息,其中的JFIF表示了文件格式为jpg,如下:
我们点击上图的Save as,输入名字cat.jpg即可。
打开保存的文件,即我们下载的图片
这个时候关闭Follow TCP Stream弹出的窗口,Wireshark显示的信息如下:
上面的数据包显示了传输cat.jpg文件的所有非FTP控制数据包,在该过程中,明细可以看到,经理了TCP的三次握手和四次断开连接。请学习者根据上面的方法,去寻找找到上传的文件信息。
最后
🍅 硬核资料:关注即可领取PPT模板、简历模板、行业经典书籍PDF。
🍅 技术互助:技术群大佬指点迷津,你的问题可能不是问题,求资源在群里喊一声。
🍅 面试题库:由技术群里的小伙伴们共同投稿,热乎的大厂面试真题,持续更新中。
🍅 知识体系:含编程语言、算法、大数据生态圈组件(Mysql、Hive、Spark、Flink)、数据仓库、Python、前端等等。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!