标题:
[组图]浅析FTP的工作原理
[打印本页]
作者:
飛鳥
时间:
2005-3-10 01:02
标题:
[组图]浅析FTP的工作原理
[这个贴子最后由飛鳥在 2005/03/10 03:31am 第 1 次编辑]
起初, FTP并不是应用于IP网络上的协议,而是ARPANET网络中计算机间的文件传输协议, ARPANET是美国国防部组建的老网络,于1960~1980年使用。在那时, FTP的主要功能是在主机间高速可靠地传输文件。目前FTP仍然保持其可靠性,即使在今天,它还允许文件远程存取。这使得用户可以在某个系统上工作,而将文件存贮在别的系统。例如,如果某用户运行Web服务器,需要从远程主机上取得HTML文件和CGI程序在本机上工作,他需要从远程存储站点获取文件(远程站点也需安装Web服务器)。当用户完成工作后,可使用FTP将文件传回到Web服务器。采用这种方法,用户无需使用Telnet登录到远程主机进行工作,这样就使Web服务器的更新工作变得如此的轻松。
FTP是TCP/IP的一种具体应用,它工作在OSI模型的第七层, TCP模型的第四层上,即应用层,使用TCP传输而不是UDP,这样FTP客户在和服务器建立连接前就要经过一个被广为熟知的“三次握手”的过程,它带来的意义在于客户与服务器之间的连接是可靠的,而且是面向连接,为数据的传输提供了可靠的保证。
下面,让我们来看看,一个FTP客户在和服务器连接是怎么样的一个过程(以标准的FTP端口号为例)。
首先,FTP并不像HTTP协议那样,只需要一个端口作为连接(HTTP的默认端口是80,FTP的默认端口是21),FTP需要2个端口,一个端口是作为控制连接端口,也就是21这个端口,用于发送指令给服务器以及等待服务器响应;另一个端口是数据传输端口,端口号为20(仅PORT模式),是用来建立数据传输通道的,主要有3个作用
1) 从客户向服务器发送一个文件。
2) 从服务器向客户发送一个文件。
3) 从服务器向客户发送文件或目录列表。
其次,FTP的连接模式有两种,PORT和PASV。PORT模式是一个主动模式,PASV是被动模式,这里都是相对于服务器而言的。为了让大家清楚的认识这两种模式,分别举例说明。
PORT模式
当FTP客户以PORT模式连接服务器时,他动态的选择一个端口号(本次试验是6015)连接服务器的21端口,注意这个端口号一定是1024以上的,因为1024以前的端口都已经预先被定义好,被一些典型的服务使用,当然有的还没使用,保留给以后会用到这些端口的资源服务。当经过TCP的三次握手后,连接(控制信道)被建立(如图1和图2)。
图1:FTP客户使用FTP命令建立于服务器的连接
图2:用netstat命令查看,控制信道被建立在客户机的6015和服务器的20端口
现在用户要列出服务器上的目录结构(使用ls或dir命令),那么首先就要建立一个数据通道,因为只有数据通道才能传输目录和文件列表,此时用户会发出PORT指令告诉服务器连接自己的什么端口来建立一条数据通道(这个命令由控制信道发送给服务器),当服务器接到这一指令时,服务器会使用20端口连接用户在PORT指令中指定的端口号,用以发送目录的列表(如图3)。
图3:ls命令是一个交互命令,它会首先与服务器建立一个数据传输通道。经验证本次试验客户机使用6044端口
当完成这一操作时,FTP客户也许要下载一个文件,那么就会发出get指令,请注意,这时客户会再次发送PORT指令,告诉服务器连接他的哪个“新”端口,你可以先用netstat -na这个命令验证,上一次使用的6044已经处于TIME_WAIT状态(如图4)。
图4:使用netstat命令验证上一次使用ls命令建立的数据传输通道已经关闭
当这个新的数据传输通道建立后(在微软的系统中,客户端通常会使用连续的端口,也就是说这一次客户端会用6045这个端口),就开始了文件传输的工作。
PASV模式
然而,当FTP客户以PASV模式连接服务器时,情况就有些不同了。在初始化连接这个过程即连接服务器这个过程和PORT模式是一样的,不同的是,当FTP客户发送ls、dir、get等这些要求数据返回的命令时,他不向服务器发送PORT指令而是发送PASV指令,在这个指令中,用户告诉服务器自己要连接服务器的某一个端口,如果这个服务器上的这个端口是空闲的可用的,那么服务器会返回ACK的确认信息,之后数据传输通道被建立并返回用户所要的信息(根据用户发送的指令,如ls、dir、get等);如果服务器的这个端口被另一个资源所使用,那么服务器返回UNACK的信息,那么这时,FTP客户会再次发送PASV命令,这也就是所谓的连接建立的协商过程。为了验证这个过程我们不得不借助CUTEFTP Pro这个大家经常使用的FTP客户端软件,因为微软自带的FTP命令客户端,不支持PASV模式。虽然你可以使用QUOTE PASV这个命令强制使用PASV模式,但是当你用ls命令列出服务器目录列表,你会发现它还是使用PORT方式来连接服务器的。现在我们使用CUTEFTP Pro以PASV模式连接服务器(如图5),
图5:使用CUTEFTP Pro以PASV模式连接服务器
请注意连接LOG里有这样几句话:
其中,
227 Entering Passive Mode (127,0,0,1,26,80).代表客户机使用PASV模式连接服务器的26x256+108=6764端口。(当然服务器要支持这种模式)
125 Data connection already open; Transfer starting.说明服务器的这个端口可用,返回ACK信息。
再让我们看看用CUTEFTP Pro以PORT模式连接服务器的情况。其中在LOG里有这样的记录:
其中,
PORT 127,0,0,1,28,37告诉服务器当收到这个PORT指令后,连接FTP客户的28x256+37=7205这个端口
Accepting connection: 127.0.0.1:20 表示服务器接到指令后用20端口连接7205端口,而且被FTP客户接受。
在这两个例子中,请注意: PORT模式建立数据传输通道是由服务器端发起的,服务器使用20端口连接客户端的某一个大于1024的端口;在PASV模式中,数据传输的通道的建立是由FTP客户端发起的,他使用一个大于1024的端口连接服务器的1024以上的某一个端口。如果从C/S模型这个角度来说,PORT对于服务器来说是OUTBOUND,而PASV模式对于服务器是INBOUND,这一点请特别注意,尤其是在使用防火墙的企业里,比如使用微软的ISA Server 2000发布一个FTP服务器,这一点非常关键,如果设置错了,那么客户将无法连接。
最后,请注意在FTP客户连接服务器的整个过程中,控制信道是一直保持连接的,而数据传输通道是临时建立的。
在本文中,把重点放到了FTP的连接模式,没有涉及FTP的其他内容,比如FTP的文件类型(Type),格式控制(Format control)以及传输方式(Transmission mode)等。不过这些规范大家可能不需要花费过多的时间去了解,因为现在流行的FTP客户端都可以自动的选择正确的模式来处理,对于FTP服务器端通常也都做了一些限制,如下
• 类型:ASCII或图像。
• 格式控制:只允许非打印。
• 结构:只允许文件结构。
• 传输方式:只允许流方式
至于这些内容,限于篇幅在这里就不想再介绍了。希望这篇文章能对大家有些帮助,特别是正在学习ISA Server的朋友和一些对FTP不很了解的朋友。
作者:
ouli
时间:
2005-3-10 01:04
标题:
[组图]浅析FTP的工作原理
第一个正在观看`````
作者:
线头
时间:
2005-3-16 00:38
标题:
[组图]浅析FTP的工作原理
路过。。。不错!!!顶
作者:
copyday
时间:
2005-3-16 01:40
标题:
[组图]浅析FTP的工作原理
不错 ,很详细,谢谢楼主~
作者:
Admin
时间:
2005-3-17 00:25
标题:
[组图]浅析FTP的工作原理
吕劼的这篇文章的确很有启发,特别是对于初学者,接下来我们可以看一篇关于 FTP协议的分析 作者:Priscilla Oppenheimer(CCNP、CCDP) 翻译:dragoncsc 修补:freedemon >>0.<< 序言 很多人对于FTP的工作原理的认识存在着许多误区。本白皮书的目的是简要地描述一下FTP原理 并消除大家对FTP认识的误区。 FTP是早期互联网协议(注:IP协议组)中的一个,FTP协议是设计用在当时还比较封闭的互联网 上传输文件,当时互联网只是互连了一些大学、政府机构和设计该互联网模型的一些商业公司 。FTP在当今网络上,特别是在安全问题比较严重的网络上(如互联网Internet)的行为模式 是有一些问题的,本白皮书也提供了一些理论背景知识,这些知识可以帮助你在一个有防火墙 或者使用NAT的网络上正确实施FTP。 FTP协议早在Client/Server(C/S)模式流行前就已经被设计,但FTP工作模式与C/S模式十分 相似。FTP使用两个TCP连接,一个TCP连接用于控制信息(控制连接),一个TCP连接用于实际 的数据传输(数据连接)。对FTP对话的分析包括在控制连接上所发送命令的检查和在数据连 接上发送的TCP数据段(注:segment---OSI模型中对第4层数据单元的称呼)的评估。对于普通 的(活跃的)FTP,控制连接由客户端初始化,数据连接由服务器端初始化。活跃的FTP也称为 (Port模式)。另一种模式是被动模式(Passive模式),这种模式下客户端初始化数据连接。 >>1.0<< FTP和TCP端口号 根据是使用Port模式还是Passive模式,FTP使用不同的TCP端口号,在详细描述FTP前,我们来 简单讨论一下TCP端口号的一些基本概念。TCP使用端口号来标识所发送和接收的应用,端口号 可以帮助TCP来分离字节流并且帮相应字节传递给正确的应用程序。 TCP端口号可以是半永久的和暂时的。服务器端监听在半永久的端口上来让客户端访问。客户 端使用暂时的端口在本地标识一个对话,客户端端口只在使用TCP服务时候才存在,而服务器 端口只要服务器在运行就一直在监听。 TCP端口可以归为3类: 1、众所周知的端口来标识在TCP上运行的标准服务,包括FTP、HTTP、TELNET、SMTP等,这些 端口号码范围为0-1023; 2、注册端口号用来标识那些已经向IANA(Internet Assigned Numbers Assigned Numbers Authority)注册的应用,注册端口号为1024-49151; 3、私有端口号是非注册的并且可以动态地分配给任何应用,私有端口为49152-65535; 注册的端口号本来打算只给注册的应用使用,可近年来端口号已经陷入了到达极限的困境,你 可能会看到本来应该是给注册应用使用的注册端口被非注册应用用做暂时的端口。RFC1700详 细标注了众所周知的和注册的端口号,然而不幸的是,这个RFC文档自从1994年以来一直没有 被更新,然后你仍可以从IANA得到一个及时更新的端口列表,详细URL为: http://www.iana.org/assignments/port-numbers >>2.0<< FTP Port模式和FTP Passive模式 当你对一个FTP问题进行排错时候,你首先要问的一个问题是使用的是port模式的还是passive 模式。因为这两种行为迥异,所以这两种模式引起的问题也不同;在过去,客户端缺省为acti ve(port)模式;近来,由于Port模式的安全问题,许多客户端的FTP应用缺省为Passive模式。 >>2.1 FTP Port模式 Port模式的FTP步骤如下: 1、 客户端发送一个TCP SYN(TCP同步)包给服务器段众所周知的FTP控制端口21,客户端 使用暂时的端口作为它的源端口; 2、 服务器端发送SYN ACK(同步确认)包给客户端,源端口为21,目的端口为客户端上使用 的暂时端口; 3、 客户端发送一个ACK(确认)包;客户端使用这个连接来发送FTP命令,服务器端使用这个 连接来发送FTP应答; 4、 当用户请求一个列表(List)请求或者发起一个要求发送或者接受文件的请求,客户端软件使用 PORT命令,这个命令包含了一个暂时的端口,客户端希望服务器在打开一个数据连接时候使用 这个暂时端口;PORT命令也包含了一个IP地址,这个IP地址通常是客户自己的IP地址,而且FT P也支持第三方(third-party)模式,第三方模式是客户端告诉服务器端打开与另台主机的连接; 5、 服务器端发送一个SYN包给客户端的暂时端口,源端口为20,暂时端口为客户端在PORT命令中 发送给服务器端的暂时端口号; 6、 客户端以源端口为暂时端口,目的端口为20发送一个SYN ACK包; 7、 服务器端发送一个ACK包; 8、 发送数据的主机以这个连接来发送数据,数据以TCP段(注:segment,第4层的PDU)形式发送( 一些命令,如STOR表示客户端要发送数据,RETR表示服务器段发送数据),这些TCP段都需要 对方进行ACK确认(注:因为TCP协议是一个面向连接的协议) 9、 当数据传输完成以后,发送数据的主机以一个FIN命令来结束数据连接,这个FIN命令需要另一 台主机以ACK确认,另一台主机也发送一个FIN命令,这个FIN命令同样需要发送数据的主机以A CK确认; 10、 客户端能在控制连接上发送更多的命令,这可以打开和关闭另外的数据连接;有时候客户端结 束后,客户端以FIN命令来关闭一个控制连接,服务器端以ACK包来确认客户端的FIN,服务器 同样也发送它的FIN,客户端用ACK来确认。 下图图示了FTP PORT模式前几步步骤: /====================================================================\ | | | [ ftp Client ] [ ftp Server ] | | | | (TCP:21 连接初始化,控制端口) | | SYN | | Port xxxx ----------------------> Port 21 [TCP] | | SYN+ACK | | Port xxxx <---------------------- Port 21 | | ACK | | Port xxxx ----------------------> Port 21 | | | | (控制操作: 用户列目录或传输文件) | | | | Port, IP, Port yyyy | | Port xxxx <---------------------- Port 21 | | Port Seccussful | | Port xxxx <---------------------- Port 21 | | List, Retr or Stor | | Port xxxx ----------------------> Port 21 | | | | | | (TCP:20 连接初始化,数据端口) | | SYN | | Port yyyy <---------------------- Port 20 | | SYN+ACK | | Port yyyy ----------------------> Port 20 | | ACK | | Port yyyy <---------------------- Port 20 | | | | | | (数据操作: 数据传输) | | Data + ACK | | Port yyyy <---------------------> Port 20 | | . | | . | | . | | | \====================================================================/ FTP Port模式会给网络管理人员在许多方面带来很多问题,首先,在PORT命令消息中的IP地址和端 口号的编码不是直白地显示。另外,应用层的协议命令理论上不应该包含网络地址信息(注: IP地址),因为这打破了协议层的原则并且可能导致协同性和安全性方面的问题。 下图是WildPackets EtherPeek协议分析仪解码了PORT命令的地址参数,地址参数后是端口号,见PORT 192,168,10,232,6,127;6,127部分的第一个阿拉伯数字乘以256,然后加上第2个阿拉伯数字 就得到端口号,所以客户端指定了端口号为6*256+127=1663; /====================================================================\ | IP Header - Internet Protocol Datagram | | Version: 4 | | Header Length: 5 (20 bytes) | | | | ............... | | | | Time To Live: 128 | | Protocol: 6 TCP - Transmission Control Protocol | | Header Checksum: 0xAA36 | | Source IP Address: 192.168.0.1 DEMO | | Dest. IP Address: 192.168.0.3 VI | | No IP Options | | | | TCP - Transport Control Protocol | | Source Port: 2342 manage-exec | | Destination Port: 21 ftp | | Sequence Number: 2435440100 | | Ack Number: 9822605 | | Offset: 5 (20 bytes) | | Reserved: %000000 | | Flags: %011000 | | 0. .... (No Urgent pointer) | | .1 .... Ack | | .. 1... Push | | .. .0.. (No Reset) | | .. ..0. (No SYN) | | .. ...0 (No FIN) | | | | Window: 65150 | | Checksum: 0x832A | | Urgent Pointer: 0 | | No TCP Options | | | | FTP Control - File Transfer Protocol | | Line 1: PORT 192,168,0,1,9,39
| | | | FCS - Frame Check Sequence | | FCS (Calculated): 0xF4C04A4F | \====================================================================/ 下图验证了服务器端的确从端口20打开到端口1663的TCP连接: /====================================================================\ | TCP - Transport Control Protocol | | Source Port: 20 ftp-data | | Destination Port: 1663 | | Sequence Number: 2578824336 | | Ack Number: 0 | | Offset: 6 (24 bytes) | | Reserved: %000000 | | Flags: %000010 | | 0. .... (No Urgent pointer) | | .0 .... (No Ack) | | .. 0... (No Push) | | .. .0.. (No Reset) | | .. ..1. SYN | | .. ...0 (No FIN) | | | | Window: 3731 | | Checksum: 0x8A4C | | Urgent Pointer: 0 | | No TCP Options | | | | TCP Options | | Options Type: 2 Maxinum Segment Size | | Length: 4 | | MSS: 1460 | | | | FCS - Frame Check Sequence | | FCS (Calculated): 0x5A1BD023 | \====================================================================/ 当使用FTP时候,网络中的防火墙必须要声明相应的端口,防火墙必须要跟踪FTP对话然后检查 PORT命令,防火墙必须要参与从服务器端到客户端在PORT命令中指定的端口连接的建立过程。 如果网络中使用了NAT(注:网络地址翻译),那么NAT的网关同样也需要声明相应的端口,网 关需要把在PORT命令中指定的IP地址翻译成分配给客户的地址,然后重新计算TCP的Checksum ;如果网关没有正确地执行这个操作,FTP就失败了。 黑客可能会利用FTP支持第三方特性这一特点,在PORT命令中设置IP地址和端口号参数来指定 一台目标主机的地址和端口号(有时候称这种攻击为FTP反弹攻击),例如黑客可以让一台FTP 服务器不断地从它的源端口20发送TCP SYN包给一系列目的端口,让FTP服务器看起来正在进行 端口扫描,目的主机不知道攻击来自黑客的主机,看起来攻击象是来自FTP服务器。一些常用的 FTP应用在PORT命令中设置地址为0.0.0.0,这样做的意图是让FTP服务器只需要与打开控制连接 的相同客户进行数据连接,设置地址为0.0.0.0可能会让防火墙不知所措。例如,CISCO PIX IOS 6.0以上版本的PIX(注:CISCO硬件防火墙设备,6.0以上版本为其修正了相关的FTP协议) 要求数据连接的IP地址与已经存在的控制连接的IP地址必须相同。这样做的原因是防止黑客用 PORT命令来攻击别的机器,虽然一些FTP应用设置IP地址为0.0.0.0不是有意图的攻击,但在PI X修正协议环境下的确引起了一些问题,同时对其他不允许第三方模式和避免FTP反弹攻击的防 火墙来说,这也会引起相同的问题。 >>2.2 FTP Passive模式 下面的列表描述了Passive模式的FTP的步骤,步骤1到3和Port模式FTP相同,步骤9到11同样与 Port模式FTP最后三步相同。 1、客户端发送一个TCP SYN(TCP同步)包给服务器段众所周知的FTP控制端口21,客户端使 用暂时的端口作为它的源端口; 2、服务器端发送SYN ACK(同步确认)包给客户端,源端口为21,目的端口为客户端上使用 的暂时端口; 3、客户端发送一个ACK(确认)包;客户端使用这个连接来发送FTP命令,服务器端使用这个 连接来发送FTP应答; 4、当用户请求一个列表(List)或者发送或接收文件时候,客户端软件发送PASV命令给服务器端 表明客户端希望进入Passive模式; 5、服务器端进行应答,应答包括服务器的IP地址和一个暂时的端口,这个暂时的端口是客户端 在打开数据传输连接时应该使用的端口; 6、客户端发送一个SYN包,源端口为客户端自己选择的一个暂时端口,目的端口为服务器在PASV 应答命令中指定的暂时端口号; 7、服务器端发送SYN ACK包给客户端,目的端口为客户端自己选择的暂时端口,源端口为PASV 应答中指定的暂时端口号; 8、客户端发送一个ACK包; 9、发送数据的主机以这个连接来发送数据,数据以TCP段(注:segment,第4层的PDU)形式发送( 一些命令,如STOR表示客户端要发送数据,RETR表示服务器段发送数据),这些TCP段都需要 对方进行ACK确认; 10、当数据传输完成以后,发送数据的主机以一个FIN命令来结束数据连接,这个FIN命令需要另一 台主机以ACK确认,另一台主机也发送一个FIN命令,这个FIN命令同样需要发送数据的主机以A CK确认; 11、客户端能在控制连接上发送更多的命令,这可以打开和关闭另外的数据连接;有时候客户端结 束后,客户端以FIN命令来关闭一个控制连接,服务器端以ACK包来确认客户端的FIN,服务器 同样也发送它的FIN,客户端用ACK来确认。 下图图示了Passive模式FTP的开始几个步骤: /====================================================================\ | | | [ ftp Client ] [ ftp Server ] | | | | (TCP:21 连接初始化,控制端口) | | SYN | | Port xxxx ----------------------> Port 21 [TCP] | | SYN+ACK | | Port xxxx <---------------------- Port 21 | | ACK | | Port xxxx ----------------------> Port 21 | | | | (PASV操作: 被动连接数据端口初始化) | | | | PASV | | Port xxxx ----------------------> Port 21 | | PASV OK, IP, Port yyyy | | Port xxxx <---------------------- Port 21 | | SYN | | Port zzzz ----------------------> Port yyyy | | SYN+ACK | | Port zzzz <---------------------- Port yyyy | | ACK | | Port zzzz ----------------------> Port yyyy | | | | | | (数据操作: 数据传输) | | List, Retr or Stor | | Port xxxx ----------------------> Port 21 | | Data + ACK | | Port zzzz <---------------------> Port yyyy | | . | | . | | . | | | \====================================================================/ 一个PASV请求要求服务器在服务器选择的一个新的端口上接受数据连接,PASV命令没有任何参 数,服务器端的回应只是一行显示服务器IP地址和服务器接受连接的TCP端口号。 下图显示了服务器对PASV命令的回应,服务器告诉客户端它在端口5365(192,168,179,100,20 ,245)上进行监听,计算端口的方法是20*256+245=5365; /====================================================================\ | TCP - Transport Control Protocol | | Source Port: 21 ftp | | Destination Port: 1249 | | Sequence Number: 4239887193 | | Ack Number: 36925357 | | Offset: 5 (20 bytes) | | Reserved: %000000 | | Flags: %011000 | | 0. .... (No Urgent pointer) | | .1 .... Ack | | .. 1... Push | | .. .0.. (No Reset) | | .. ..0. (No SYN) | | .. ...0 (No FIN) | | | | Window: 8760 | | Checksum: 0x3EAB | | Urgent Pointer: 0 | | No TCP Options | | | | FTP Control - File Transfer Protocol | | Line 1: PASV 192,168,0,1,100,20,245
| | | | FCS - Frame Check Sequence | | FCS (Calculated): 0xBED4346D | \====================================================================/ 当收到PASV命令的回应后,客户端打开一个TCP连接,源端口为一个暂时的端口,目的端口为 服务器提供的暂时端口。 下图显示了客户端的TCP连接建立过程,正如上面所说,目的端口为5365。 /====================================================================\ | TCP - Transport Control Protocol | | Source Port: 1250 | | Destination Port: 5365 | | Sequence Number: 36931503 | | Ack Number: 0 | | Offset: 7 (28 bytes) | | Reserved: %000000 | | Flags: %000010 | | 0. .... (No Urgent pointer) | | .0 .... (No Ack) | | .. 0... (No Push) | | .. .0.. (No Reset) | | .. ..1. SYN | | .. ...0 (No FIN) | | | | Window: 8192 | | Checksum: 0x1A57 | | Urgent Pointer: 0 | | No TCP Options | | | | TCP Options | | Options Type: 2 Maxinum Segment Size | | Length: 4 | | MSS: 1460 | | | | FCS - Frame Check Sequence | | FCS (Calculated): 0x5A1BD023 | \====================================================================/ 大多数人认为在防火墙网络环境中Passive模式比Port模式的问题小,但我们注意到在Passive 模式下,客户端打开一个暂时的目的端口连接,一些防火墙或者CISCO设备的访问列表(ACL)可 能会阻止这种连接,同样服务器的回应也是从一个暂时的端口到一个暂时的端口,防火墙或者 CISCO的访问列表也会阻止这种连接。在CISCO路由器上你可以用访问列表关键字"established "来避免第二个问题,"established"关键字告诉路由器允许带ACK字端的包通过,服务器端的S YN ACK包带有ACK字端。在新版本PIX IOS中也可以通过fixit关键字建立针对ftp协议的深层状 态检测过滤,其他大多数状态检测防火墙例如LinuxNetfilters也支持ftp协议的状态检测,进行 准确的PASV动态端口过滤。 >>2.3 用户名和口令的明文传输 FTP另一个声名狼藉的问题是它以明文方式发送用户名和口令,也就是不加密地发送。任何人 只要在网络中合适的位置放置一个协议分析仪就可以看到用户名和口令;FTP发送的数据也是 以明文方式传输,通过对ftp连接的监控和数据收集就可以收集和重现ftp的数据传输并实现协 议连接回放。事实上很多用户把相同的用户名和口令用在不同的应用中,这样这个问题可能 看起来更为糟糕;如果黑客收集到FTP口令,他们也可能就得到了你在线帐号或者其他一些 机密数据的口令。 下面是通过tcpdump -- 一个著名的网络协议分析程序抓取的ftp的完整通讯过程。 /===============================================================================\ 21:55:36.682402 IP 192.168.0.1.2323 > 192.168.0.3.21: S 2047626269:2047626269(0) win 65535
(DF) 21:55:36.682792 IP 192.168.0.3.21 > 192.168.0.1.2323: S 3917547047:3917547047(0) ack 2047626270 win 65535
(DF) 21:55:36.682855 IP 192.168.0.1.2323 > 192.168.0.3.21: . ack 1 win 65535 (DF)
21:55:36.854899 IP 192.168.0.3.21 > 192.168.0.1.2323: P 1:115(114) ack 1 win 65535 (DF) 0x0000 4500 009a d570 4000 8006 a398 c0a8 0003 E....p@......... 0x0010 c0a8 0001 0015 0913 e981 0628 7a0c 4c1e ...........(z.L. 0x0020 5018 ffff cd50 0000 3232 302d 5468 6973 P....P..220-This 0x0030 2073 6572 7665 7220 6973 2066 6f72 2070 .server.is.for.p 0x0040 7269 7661 7465 2075 7365 206f 6e6c 790d rivate.use.only. 0x0050 0a32 .2 21:55:37.016115 IP 192.168.0.1.2323 > 192.168.0.3.21: . ack 115 win 65421 (DF) 0x0000 4500 0028 b8d0 4000 8006 c0aa c0a8 0001 E..(..@......... 0x0010 c0a8 0003 0913 0015 7a0c 4c1e e981 069a ........z.L..... 0x0020 5010 ff8d 6f83 0000 P...o... 21:55:37.016471 IP 192.168.0.3.21 > 192.168.0.1.2323: P 115:154(39) ack 1 win 65535 (DF)
0x0000 4500 004f d586 4000 8006 a3cd c0a8 0003 E..O..@......... 0x0010 c0a8 0001 0015 0913 e981 069a 7a0c 4c1e ............z.L. 0x0020 5018 ffff 074f 0000 3232 3020 506c 6561 P....O..220.Plea 0x0030 7365 2065 6e74 6572 2079 6f75 7220 6c6f se.enter.your.lo 0x0040 6769 6e20 6e61 6d65 206e 6f77 2e0d 0a gin.name.now... 21:55:37.022282 IP 192.168.0.1.2323 > 192.168.0.3.21: P 1:12(11) ack 154 win 65382 (DF) 0x0000 4500 0033 b8d2 4000 8006 c09d c0a8 0001 E..3..@......... 0x0010 c0a8 0003 0913 0015 7a0c 4c1e e981 06c1 ........z.L..... 0x0020 5018 ff66 c4eb 0000 5553 4552 2065 6c6c P..f....USER.ell 0x0030 790d 0a y.. <用户名:elly> 21:55:37.059430 IP 192.168.0.3.21 > 192.168.0.1.2323: P 154:188(34) ack 12 win 65524 (DF) 0x0000 4500 004a d58b 4000 8006 a3cd c0a8 0003 E..J..@......... 0x0010 c0a8 0001 0015 0913 e981 06c1 7a0c 4c29 ............z.L) 0x0020 5018 fff4 b343 0000 3333 3120 5061 7373 P....C..331.Pass 0x0030 776f 7264 2072 6571 7569 7265 6420 666f word.required.fo 0x0040 7220 656c 6c79 202e 0d0a r.elly.... 21:55:37.060301 IP 192.168.0.1.2323 > 192.168.0.3.21: P 12:27(15) ack 188 win 65348 (DF) 0x0000 4500 0037 b8db 4000 8006 c090 c0a8 0001 E..7..@......... 0x0010 c0a8 0003 0913 0015 7a0c 4c29 e981 06e3 ........z.L).... 0x0020 5018 ff44 e479 0000 5041 5353 2038 3838 P..D.y..PASS.888 0x0030 3838 3838 380d 0a 88888.. <密码:88888888> 21:55:37.243954 IP 192.168.0.3.21 > 192.168.0.1.2323: . ack 27 win 65509 (DF) 0x0000 4500 0028 d59d 4000 8006 a3dd c0a8 0003 E..(..@......... 0x0010 c0a8 0001 0015 0913 e981 06e3 7a0c 4c38 ............z.L8 0x0020 5010 ffe5 6ec8 0000 0000 0000 0000 P...n......... 21:55:37.285586 IP 192.168.0.3.21 > 192.168.0.1.2323: . 188:1648(1460) ack 27 win 65509 (DF) 0x0000 4500 05dc d5a4 4000 8006 9e22 c0a8 0003 E.....@....".... 0x0010 c0a8 0001 0015 0913 e981 06e3 7a0c 4c38 ............z.L8 0x0020 5010 ffe5 0300 0000 3233 302d 5765 6c63 P.......230-Welc 0x0030 6f6d 6520 746f 2076 6920 4654 5020 7365 ome.to.vi.FTP.se 0x0040 7276 6572 0d0a 3233 302d 0d0a 3233 302d rver..230-..230- 0x0050 4375 Cu <明文数据传输> \===============================================================================/
欢迎光临 黑色海岸线论坛 (http://bbs.thysea.com/)
Powered by Discuz! 7.2