理论
简介
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命令
访问命令
|
|
---|---|
|
|
|
|
|
|
|
|
2.模式设置命令
|
|
---|---|
|
|
|
|
|
|
|
|
3.文件管理命令
|
|
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4.文件传输命令
|
|
---|---|
|
|
|
|
FTP响应码
客户端发送FTP命令后,服务器会返回FTP的响应码,FTP响应码由ASCLL编码的3为数字开头,后接一行文本提示信息,数字和提示信息中有一个空格,每个响应码以回车换行结束。
第一位数字代表的含义
|
|
---|---|
|
|
|
|
|
|
|
|
|
|
第二位数字代表的含义
|
|
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
抓包分析
FTP连接与密码明文抓取
服务器端创建FTP站点
在客户端连接登录到FTP服务器
登录成功
查看FTP连接时的帧信息
查看FTP连接时的链路层信息
查看FTP连接时的网络层信息
查看抓取到FTP连接时数据包中所包含的传输层信息。
「该包为TCP“三次握手”的第一次」
「TCP“三次握手”的第二次。」
「TCP“三次握手”的第三次。」
传输建立后,服务器做出响应,查看该分组包
在传输连接成功后,客户端会进行匿名用户登录
进行键入用户和口令登录
「通过抓包可以看到用户名和明文密码」
原文始发于微信公众号(泷羽sec-何生安全):抓包分析FTP协议及原理
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论