嗅探FTP之被动模式

FTP(File Transfer Protocol)是文件传输协议的简称。FTP服务是Internet上的标准服务之一。全世界有无数个FTP文件服务器对所有Internet用户开放,在国内,每天也有新的FTP服务器开通使用。用户们通过FTP,可以快速方便的传输自己需要的文件。正是由于FTP服务应用的广泛性,促使我们有必要通过底层的TCP连接来理解FTP应用协议的实现原理。 我们知道FTP协议处于TCP/IP四层协议系统中的应用层(图1)。它支持两种工作模式,这两种模式被称为“标准”(或PORT,或主动)和“被动”(或PASV)。今天我们通过下面的一个小实验,首先对FTP的被动模式做一个较为细致的了解。

图1在这里插入图片描述

第一部份:实验
(一)实验环境
1、A机IP地址为10.4.152.16(本机)、 B机IP地址为10.4.144.5(支持匿名文件传输的FTP服务器),;
2、工具:Netcat 和 Sniffer Pro;
(二)、实验步骤
1、设置Sniffer pro的过滤器;

图2在这里插入图片描述
2、运行捕获;
3、对B机进行FTP连接;
(1)在A机上打开两个DOS窗口。
(2)在1号DOS提示符状态窗口,对FTP服务器(10.4.144.5)进行连接。

图3在这里插入图片描述
(3)计算B机返回的端口号(13×256+229=3557)后,在2号DOS提示符状态窗口,以pasv模式与B机3557端口建立连接。

图4在这里插入图片描述
4、在1号DOS提示符状态窗口,继续输入List 命令。

图5在这里插入图片描述
5、观察2号DOS提示符状态窗口。

图6在这里插入图片描述
5、停止并显示捕获的数据包
点击Sniffer Pro解码卷标(Decode)后,窗体将显示捕获数据包解包后的结果(图6),这个栏工具被分成了三格:“总结”部分窗体显示的是对数据包的概述,每个数据包一行;“详细”部份窗体显示了在总结窗体选中的数据包的详细内容; “Hex”部份窗体以十六进制和ASCII格式显示选中的数据包。下面我们的分析主要利用“总结”和“详细”两部份内容来说明。

图7在这里插入图片描述
第二部份 实验说明
(一)实验工具软件介绍:
1、Netcat 能够建立并接受传输控制协议和用户数据报协议连接。由于其功能强大、使用用户众多,因此被称为TCP/IP及UDP的“瑞士军刀。Netcat的官方下载地址是http://www.atstake.com/research/tools/。其基本命令行形式是nc [options]host ports
“host”是要扫描的主机名或IP地址,“ports”可以是一个单独的端口,也可以是一个端口范围。本例中我们用NC登录了FTP服务器并与之建立数据传输通道。
2、Sniffer Pro是Network Associates公司的一款网络分析软件,可以通过它捕获数据包,实现对网络底层协议的分析。当然它也是一款比较好的网络嗅探工具。
(二)FTP匿名服务及控制命令说明:
1、本例中FTP服务器提供了匿名FTP服务,所谓FTP匿名服务是指允许匿名访问的FTP节点,不要求在访问时输入口令——登录时用户只需输入Anonymous作为用户名,并将自己的e-mail地址作为口令(这个e-mail地址并不需要通过真实性验证,只需符合相应的格式即可)。
2、 FTP控制命令又叫FTP内部命令,是Internet用户使用最频繁的命令之一,不论是在DOS还是UNIX操作系统下使用FTP,都会遇到大量的FTP内部命令,熟悉并灵活应用FTP的内部命令,可以大大方便使用者。(FTP内部命令跟FTP客户端工具在交互模式下提供给用户操作的命令,虽然有些相似,但却有着本质的区别。)本例中使用了6条FTP内部命令。
ftp的命令行格式为:ftp -v -d -i -n -g[主机名] 
(1)、USER username:FTP登录用户名,本例使用匿名身份登录;
(2)、PASS password:在发送了用户名后,用此命令发送口令,匿名文件传输可使用Email地址作为口令;
(3)、TYPE type:用于指明文件传输类型,A代表ASCII,即一般的文本文件;
(4)、PASV:请求服务器打开一个监听端口,客户端与之建立数据连接。这里要说明的是服务器返回监听端口号的计算方法。本例中客户端运行PASV命令后,服务器端返回如下信息:
图8在这里插入图片描述
很明显图7中“10,4,144,5”是FTP服务器的地址,而“13,229”则指的是监听端口号,其计算方法是13×256+229,得数3557。即FTP 服务器在本机3557端口监听。
5、LIST filelist:请求传输当前工作目录下的文件、目录列表;
6、QUIT:终止连接。
第三部份 数据包解码分析

(一)第一组 建立控制连接

图9在这里插入图片描述
我们知道在TCP/IP协议族中,FTP作为应用层的协议,它依靠TCP为其提供高可靠的端到端数据通信,这三行数据是A机与B机建立TCP连接的过程。(1)A机发送一个TCP SYN包给B机的FTP控制端口21,客户端使用大于1024的随机端口作为它的源端口(此例中A机使用的是1196端口);(2)B机发送一个SYN ACK包给A机;(3)A机发送一个ACK包,进行确认。通过三次握手,建立了一个完整TCP连接。而这条连接也就是众所周知的FTP用于传输控制命令的控制连接。以下控制命令的传送都将在这个连接上进行。
(二)第二组 控制操作

图10在这里插入图片描述
上图的数据有两层核心内容。
1、第四行、第六行、第七行、第九行、第十行、第十二行、第十三行、第十五行、第十六行,是A机与B机利用建立的TCP通道,传送FTP控制命令以及服务器应答的过程。将这几行数据包的内容单独截图(图11)与图5进行比较观察,就会更清楚的理解这个过程。比如图11中第一行数据包 “Summary”部份的内容, A机与B机建立TCP连接之后,FTP服务器返回版本信息“220 console Microsoft FTP Service (Version 5.0)”。而在图5中的第二行我们也可以看到相同的屏显提示。

图11在这里插入图片描述
2、第五行、第八行、第十一行、第十四行、第十七行数据则是接收端收到来自发送端的信息时,接受端发送一条应答信息,表示收到此信息。这是TCP提供的面向连接的、可靠字节流服务的必要手段。
(三)第三组 建立数据传输连接

图12在这里插入图片描述
我们知道一个FTP文件传输过程,Client端除了与Server端的TCP21端口建立控制连接外,还需要建立另一个连接来进行真正的数据传输。在FTP被动模式的工作方式下,这个TCP连接是Client端请求(Pasv)Server端提供一个监听端口,由其向这个端口发起连接,服务器端被动接受而建立的。在本例中A机在获得B机提供的端口号,从其1199端口向B机的监听端口3557发起连接。经过三次握手,建立了一个新的TCP连接,而这条连接正是用于数据传输的。
(四)第四组 数据传输

图13在这里插入图片描述
上图的数据包括三方面的内容。
1、第21行是A机发出“List”请求(详细内容参看图14),第22行显示B机应答“Data connection already open:Transfer starting”,(详细内容参看图15)请注意这两行数据包中用于传输命令的两个端口是B机TCP 21端口和A机的TCP 1196端口。前面我们已经讲过,本例中这条21到1196的连接是FTP控制连接,在整个FTP会话过程中,控制连接是一直存在的,而所有FTP支持的控制命令,都是通过该连接进行的。

图14
在这里插入图片描述
图15
在这里插入图片描述
2、图13中第23行、第24行是B机从TCP 3557端口到A机TCP 1199端口的数据传输,第25行接收方A机的ACK确认;
3、我们知道在TCP断开连接过程中,通信一方要主动关闭连接,就会向对方发送带FIN标志的包,而另一方在收到FIN包后,返回带ACK标志的包,表示确认一方单方面提出的关闭连接请求。这时被动关闭方的读通道就被关闭了。图13中第26行、第27行是数据传输完成后,发送数据的B机以一个FIN命令来结束数据连接,A机收到后进行ACK确认,A机读通道关闭。但这时A机写通道还没有关闭,也就是说,A机还可以向B机发送数据。B机也可以正常读数据。因此,第28行、第29行,A在完成数据处理工作后,也要关闭连接,向B机发送一个FIN包,B机收到后,返回一个ACK包,这时B机读通道关闭,A机在收到ACK包后,写通道关闭。至此,这条数据传输通道彻底断开连接。
通过上面的实验我们可以清楚地看到三点。一是FTP作为TCP/IP协议族中应用层的协议,它是建立在在传输层TCP协议之上的,TCP采用确认接收等一系列措施提供了可靠的传输;其二FTP文件传输过程中,Client端除了与Server端的TCP 21端口建立控制连接外,还需要建立另一条连接来进行数据传输;其三所谓FTP被动模式,是指其数据通道是服务器响应客户端的PASV请求并提供监听端口,被动地接受客户端发起连接建立的。
第四部份 初级实战

(一)什么状况下需要将FTP客户端工作模式设置为被动模式 (PASV mode)
当你的PC机接入Internet的方式如图16所示时,如果你采用的不是PASV模式,那么FTP服务端将无法同你的计算机提供的监听端口连接上,你会看到服务器反馈的错误信息,提示本机打开的端口无法连接。此时你就需要把传送模式设置成为PASV模式。
为什么会这样呢?大家知道,采用网关设备实现内外网地址转换,所有内网设备通过一个公网IP地址接入互联网时,互联网中的服务器不可能直接找到内网中的计算机。因为它们看到的IP,其实只是为我们提供地址转换的网关设备的IP。(这个设备可以是一台提供代理服务的计算机,也可以是防火墙,更多可能是打开了具备路由功能的ADSL猫)。而当我们客户端工作在另外一种FTP工作模式(Port模式)下时。客户端会在本地计算机上打开一个端口,然后发送一条 “命令”给FTP服务端“我已打开了n端口你现在可以连接我”,FTP服务器端收到后按照它所知道的公网ip连接你的N端口,但是此时FTP服务器实际上找到的是你的网关设备,因此在这种工作模式下,我们也就无法实现正常的数据传输了。通俗地讲,就是FTP服务器没有办法根据公网IP直接找到“你”,自然也就不能建立“联系”了。(FTP的PORT工作模式原理详见作者的另一篇文章《FTP之标准模式》)
显而易见,我们只要将客户端的FTP工作模式改为PASV mode,就可以与服务器建立数据通道,成功实现数据传输。为什么呢,通过上面对FTP被动模式数据包的解码分析,我们知道,在这种工作模式下,客户端与服务器端建立数据通道的过程是这样的,当客户端通过服务器端的ftp认证后,客户端首先向服务器发送一条PASV命令,服务器端接收到命令后打开一个端口并告诉客户端“我已打开了一个端口,你可以来连接了" 客户端收到信息后,就会主动去连接服务器端已经打开的端口,从而完成数据连接。

图16在这里插入图片描述

(二) 如何设置FTP被动模式(PASV mode )
1、IE浏览器设置:IE5.5以上版本的浏览器中包含一个内置的FTP客户端。我们可以使用浏览器来直接访问一个FTP站点并下载文件。IE提供了一个手工选项来改变PORT和PASV客户端角色,就是internet选项->高级->为FTP站点启用文件夹视图,选择它,IE为PORT模式客户端(IE的默认值),不选则为PASV客户端。你需要根据服务器的类型手工更改这个选项。如果服务器的出口是ADSL类的链路,还要把“使用被动FTP(为防火墙和DSL调制解调器兼容性)”一项选上。

图17在这里插入图片描述
2、CutFtp设置: 以CuteFtp5.0.1 XP版(新春贺岁中文版)为例。如图示,在编辑—设置—连接—防火墙,选中“PASV模式(V)”。

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值