抓包分析FTP协议
理论
简介
FTP(File Transfer Protocol)即文件传输协议,是一种基于TCP的协议,采用客户/服务器模式。通过FTP协议,用户可以在FTP服务器中进行文件的上传或下载等操作。它也是一个应用程序,用户可以通过它把自己的计算机与世界各地所有运行FTP协议的服务器相连,访问服务器上的大量程序和信息。FTP服务的功能是实现完整文件的异地传输。
FTP是用来在两台计算机之间传输文件,是Internet中应用非常广泛的服务之一。它可根据实际需要设置各用户的使用权限,同时还具有跨平台的特性,即在UNIX、Linux和Windows等操作系统中都可实现FTP客户端和服务器,相互之间可跨平台进行文件的传输。因此,FTP服务是网络中经常采用的资源共享方式之一。
模式
主动模式port
在主动模式下,FTP客户端首先与FTP服务器的21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送Port命令。Port命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过其TCP20端口连接到客户端的指定端口发送数据。FTP服务器必须与客户端建立一个新的连接用来传送数据。主动FTP连接过程如下:

命令连接:客户端>1024端口→服务器21端口;
数据连接:客户端>1024端口←服务器20端口。
被动模式pasv
在被动模式下,建立控制通道时与主动模式类似,但建立连接后发送的不是Port命令,而是Pasv命令。FTP服务器收到Pas命令后,随机打开一个高端端口(端口号大于1024)并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器上的这个端口,然后FTP服务器将通过这个端口传送数据。在这种情况下,FTP服务器不再需要与客户端建立一个新的连接,被动FTP连接过程如下:

命令连接:客户端>1024端口→服务器21端口;
数据连接:客户端>1024端口→服务器>1024端口
主动与被动FTP优缺点
主动FTP对FTP服务器的管理有利,但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉。被动FTP对FTP客户端的管理有利,但对服务器端的管理不利。因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。
FTP服务器特点
(一)FTP使用两个平行连接:控制连接和数据连接。控制连接在两主机间传送控制命令,如用户身份、口令、改变目录命令等。数据连接只用于传送数据。
(二)在一个会话期间,FTP服务器必须维持用户状态,也就是说,和某一个用户的控制连接不能断开。另外,当用户在目录树中活动时,服务器必须追踪用户的当前目录,这样,FTP就限制了并发用户数量。
(三)FTP支持文件沿任意方向传输。当用户与一远程计算机建立连接后,用户可以获得一个远程文件也可以将一本地文件传输至远程机器。
FTP命令
访问命令
| 访问命令 | 解释 |
|---|---|
| USER |
用于指定登录的用户名,以便服务器进行身份验证。USER命令通常是控制连接建立后发出的第一个命令。 |
| PASS |
用于指定用户密码,该命令用于登录用户命令之后。 |
| REIN | 重新初始化用户信息,该命令会终止当前 USER的传输,也会终止正在传输的数据,然后重置所有参数,并打开控制连接,以便客户端再次发出USER命令。 |
| QUIT | 关闭与服务器之间的连接。 |
2.模式设置命令
| 模式设置命令 | 解释 |
|---|---|
| PASV | 告诉服务器,让FTP服务器在指定的数据端口进行监听,被动接受客户端的请求。是默认模式。 |
| PORT | 告诉FTP服务器,客户端监听的端口号是address,FTP服务器采用主动模式连接客户端。 |
| TYPE | 指定要传输的数据类型,有ASCLL和二进制。 |
| MODE |
指定传输模式,S(流),B(块),C(压缩)。 |
3.文件管理命令
| 文件管理命令 | 解释 |
|---|---|
| CWD |
用户可以在不同的目录或数据集下工作而不改变登录信息,directory一般是用户名与系统相关的文件集合。 |
| PWD | 返回当前工作目录。 |
| MKD |
在指定目录下创建新目录,directory表示指定目录的字符串。 |
| CDUP | 回到上层目录。 |
| RMD |
删除指定目录。 |
| LIST |
返回指定路径下的子目录及文件列表,name为路径,若省略,返回当前路径下的文件列表。 |
| NLIST |
返回指定路径下的目录列表,省略路径时,返回当前目录。 |
| RNFR |
重新命名文件,该命令的下一条命令用RNTO指定新的文件名。 |
| RNTO |
和RNFR命令共同完成对文件的重命名。 |
| DELE |
删除指定路径下的文件。 |
4.文件传输命令
| 文件传输命令 | 解释 |
|---|---|
| RETR |
下载指定路径的文件。 |
| STOR |
上传一个指定的文件,并将其存储在指定的位置,如果文件已经存在,原文件被覆盖,如果文件不存在,则创建新文件。 |
FTP响应码
客户端发送FTP命令后,服务器会返回FTP的响应码,FTP响应码由ASCLL编码的3为数字开头,后接一行文本提示信息,数字和提示信息中有一个空格,每个响应码以回车换行结束。
第一位数字代表的含义
| 响应码 | 含义 |
|---|---|
| 1XX | 信息已经被服务器正确接收,但尚未处理。 |
| 2XX | 信息已经被服务器正确处理完毕。 |
| 3XX | 信息已经被服务器正在接收,并正在处理。 |
| 4XX | 信息处理错误,暂时的。 |
| 5XX | 信息处理错误,永久的。 |
第二位数字代表的含义
| 响应码 | 含义 |
|---|---|
| X0X | 语法错误。 |
| X1X | 系统状态和信息。 |
| X2X | 与FTP服务器连接状态。 |
| X3X | 用户认证有关信息。 |
| X4X | 未定义。 |
| X5X | 与文件系统有关的信息。 |
抓包分析
FTP连接与密码明文抓取
服务器端创建FTP站点

在客户端连接登录到FTP服务器

登录成功

查看FTP连接时的帧信息

查看FTP连接时的链路层信息

查看FTP连接时的网络层信息

查看抓取到FTP连接时数据包中所包含的传输层信息。
该包为TCP“三次握手”的第一次

TCP“三次握手”的第二次。

TCP“三次握手”的第三次。

传输建立后,服务器做出响应,查看该分组包


在传输连接成功后,客户端会进行匿名用户登录

进行键入用户和口令登录
通过抓包可以看到用户名和明文密码

本文来自博客园,作者:whitehe,转载请注明原文链接:https://www.cnblogs.com/whitehe/p/18578410

浙公网安备 33010602011771号