ImageVerifierCode 换一换
你正在下载:

FTP.docx

[预览]
格式:DOCX , 页数:71 ,大小:271.34KB ,
资源ID:7118592      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7118592.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(FTP.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

FTP.docx

1、FTP FTP 协议分析协议分析 2008/01/02 10:40|鬼仔|技术文章|占个座先 作者:Priscilla Oppenheimer(CCNP、CCDP)翻译:dragoncsc 修补:freedemon 0.1.02.02.1 FTP Port 模式 Port模式的 FTP 步骤如下:1、客户端发送一个 TCP SYN(TCP 同步)包给服务器段众所周知的 FTP 控制端口 21,客户端使用暂时的端口作为它的源端口;2、服务器端发送 SYN ACK(同步确认)包给客户端,源端口为 21,目的端口为客户端上使用的暂时端口;3、客户端发送一个 ACK(确认)包;客户端使用这个连接来发送

2、 FTP 命令,服务器端使用这个连接来发送 FTP 应答;4、当用户请求一个列表(List)请求或者发起一个要求发送或者接受文件的请求,客户端软件使用 PORT 命令,这个命令包含了一个暂时的端口,客户端希望服务器在打开一个数据连接时候使用这个暂时端口;PORT 命令也包含了一个 IP 地址,这个 IP 地址通常是客户自己的 IP 地址,而且 FTP 也支持第三方(third-party)模式,第三方模式是客户端告诉服务器端打开与另台主机的连接;5、服务器端发送一个 SYN包给客户端的暂时端口,源端口为 20,暂时端口为客户端在 PORT 命令中发送给服务器端的暂时端口号;6、客户端以源端口为

3、暂时端口,目的端口为 20 发送一个 SYN ACK 包;7、服务器端发送一个 ACK包;8、发送数据的主机以这个连接来发送数据,数据以 TCP 段(注:segment,第 4层的 PDU)形式发送(一些命令,如 STOR 表示客户端要发送数据,RETR 表示服务器段发送数据),这些 TCP 段都需要对方进行 ACK 确认(注:因为 TCP 协议是一个面向连接的协议)9、当数据传输完成以后,发送数据的主机以一个 FIN命令来结束数据连接,这个FIN命令需要另一台主机以 ACK确认,另一台主机也发送一个 FIN 命令,这个 FIN命令同样需要发送数据的主机以 ACK确认;10、客户端能在控制连接

4、上发送更多的命令,这可以打开和关闭另外的数据连接;有时候客户端结束后,客户端以 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|(控制操作:用户列目录或传输文件)|Port,IP,Port yyyy|Port xxxx-Port 21|Port Seccussful|Port x

5、xxx Port 21|(TCP:20 连接初始化,数据端口)|SYN|Port yyyy Port 20|ACK|Port yyyy-Port 20|(数据操作:数据传输)|Data+ACK|Port yyyy Port 20|.|.|.|=/FTP Port模式会给网络管理人员在许多方面带来很多问题,首先,在 PORT 命令消息中的 IP 地址和端口号的编码不是直白地显示。另外,应用层的协议命令理论上不应该包含网络地址信息(注:IP 地址),因为这打破了协议层的原则并且可能导致协同性和安全性方面的问题。下图是 WildPackets EtherPeek协议分析仪解码了 PORT 命令的地址

6、参数,地址参数后是端口号,见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:0 xAA36|Source IP Address:192.16

7、8.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)|.

8、0(No FIN)|Window:65150|Checksum:0 x832A|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):0 xF4C04A4F|=/下图验证了服务器端的确从端口 20打开到端口 1663的 TCP 连接:/=|TCP-Transport Control Protocol|Source Port:20 ftp-data|Destination Por

9、t: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:0 x8A4C|Urgent Pointer:0|No TCP Options|TCP Options|Options Type:2 Maxinum Segment Size|Length:4|MSS:14

10、60|FCS-Frame Check Sequence|FCS(Calculated):0 x5A1BD023|=/当使用 FTP 时候,网络中的防火墙必须要声明相应的端口,防火墙必须要跟踪FTP 对话然后检查 PORT 命令,防火墙必须要参与从服务器端到客户端在 PORT 命令中指定的端口连接的建立过程。如果网络中使用了 NAT(注:网络地址翻译),那么NAT的网关同样也需要声明相应的端口,网关需要把在 PORT 命令中指定的 IP 地址翻译成分配给客户的地址,然后重新计算 TCP 的 Checksum;如果网关没有正确地执行这个操作,FTP 就失败了。黑客可能会利用 FTP 支持第三方特性

11、这一特点,在 PORT 命令中设置 IP 地址和端口号参数来指定一台目标主机的地址和端口号(有时候称这种攻击为 FTP 反弹攻击),例如黑客可以让一台 FTP 服务器不断地从它的源端口 20发送 TCPSYN 包给一系列目的端口,让 FTP 服务器看起来正在进行端口扫描,目的主机不知道攻击来自黑客的主机,看起来攻击象是来自 FTP 服务器。一些常用的 FTP 应用在 PORT 命令中设置地址为 0.0.0.0,这样做的意图是让 FTP 服务器只需要与打开控制连接的相同客户进行数据连接,设置地址为 0.0.0.0可能会让防火墙不知所措。例如,CISCOPIX IOS 6.0以上版本的 PIX(注

12、:CISCO 硬件防火墙设备,6.0 以上版本为其修正了相关的 FTP 协议)要求数据连接的 IP 地址与已经存在的控制连接的 IP 地址必须相同。这样做的原因是防止黑客用 PORT 命令来攻击别的机器,虽然一些 FTP 应用设置 IP 地址为 0.0.0.0不是有意图的攻击,但在 PIX修正协议环境下的确引起了一些问题,同时对其他不允许第三方模式和避免 FTP 反弹攻击的防火墙来说,这也会引起相同的问题。2.2 FTP Passive模式 下面的列表描述了 Passive模式的 FTP 的步骤,步骤 1 到 3和 Port模式 FTP 相同,步骤 9到 11 同样与 Port 模式 FTP

13、最后三步相同。1、客户端发送一个 TCP SYN(TCP 同步)包给服务器段众所周知的 FTP 控制端口 21,客户端使用暂时的端口作为它的源端口;2、服务器端发送 SYN ACK(同步确认)包给客户端,源端口为 21,目的端口为客户端上使用的暂时端口;3、客户端发送一个 ACK(确认)包;客户端使用这个连接来发送 FTP 命令,服务器端使用这个连接来发送 FTP 应答;4、当用户请求一个列表(List)或者发送或接收文件时候,客户端软件发送 PASV 命令给服务器端表明客户端希望进入 Passive模式;5、服务器端进行应答,应答包括服务器的 IP 地址和一个暂时的端口,这个暂时的端口是客户

14、端在打开数据传输连接时应该使用的端口;6、客户端发送一个 SYN包,源端口为客户端自己选择的一个暂时端口,目的端口为服务器在 PASV 应答命令中指定的暂时端口号;7、服务器端发送 SYN ACK 包给客户端,目的端口为客户端自己选择的暂时端口,源端口为 PASV 应答中指定的暂时端口号;8、客户端发送一个 ACK包;9、发送数据的主机以这个连接来发送数据,数据以 TCP 段(注:segment,第 4层的 PDU)形式发送(一些命令,如 STOR 表示客户端要发送数据,RETR 表示服务器段发送数据),这些 TCP 段都需要对方进行 ACK 确认;10、当数据传输完成以后,发送数据的主机以一

15、个 FIN命令来结束数据连接,这个 FIN命令需要另一台主机以 ACK确认,另一台主机也发送一个 FIN命令,这个 FIN命令同样需要发送数据的主机以 ACK确认;11、客户端能在控制连接上发送更多的命令,这可以打开和关闭另外的数据连接;有时候客户端结束后,客户端以 FIN命令来关闭一个控制连接,服务器端以 ACK包来确认客户端的 FIN,服务器同样也发送它的 FIN,客户端用 ACK来确认。下图图示了 Passive 模式 FTP 的开始几个步骤:/=|ftp Client ftp Server|(TCP:21 连接初始化,控制端口)|SYN|Port xxxx-Port 21 TCP|SY

16、N+ACK|Port xxxx Port 21|(PASV操作:被动连接数据端口初始化)|PASV|Port xxxx-Port 21|PASV OK,IP,Port yyyy|Port xxxx Port yyyy|SYN+ACK|Port zzzz Port yyyy|(数据操作:数据传输)|List,Retr or Stor|Port xxxx-Port 21|Data+ACK|Port zzzz Port yyyy|.|.|.|=/一个 PASV 请求要求服务器在服务器选择的一个新的端口上接受数据连接,PASV命令没有任何参数,服务器端的回应只是一行显示服务器 IP 地址和服务器接受连

17、接的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.

18、Ack|.1.Push|.0.(No Reset)|.0.(No SYN)|.0(No FIN)|Window:8760|Checksum:0 x3EAB|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):0 xBED4346D|=/当收到 PASV 命令的回应后,客户端打开一个 TCP 连接,源端口为一个暂时的端口,目的端口为 服务器提供的暂时端口。下图显示了

19、客户端的 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:0 x1A

20、57|Urgent Pointer:0|No TCP Options|TCP Options|Options Type:2 Maxinum Segment Size|Length:4|MSS:1460|FCS-Frame Check Sequence|FCS(Calculated):0 x5A1BD023|=/大多数人认为在防火墙网络环境中 Passive模式比 Port模式的问题小,但我们注意到在 Passive模式下,客户端打开一个暂时的目的端口连接,一些防火墙或者 CISCO设备的访问列表(ACL)可能会阻止这种连接,同样服务器的回应也是从一个暂时的端口到一个暂时的端口,防火墙或者 CI

21、SCO 的访问列表也会阻止这种连接。在 CISCO 路由器上你可以用访问列表关键字established来避免第二个问题,established关键字告诉路由器允许带 ACK字端的包通过,服务器端的 SYN ACK包带有 ACK 字端。在新版本 PIX IOS 中也可以通过 fixit 关键字建立针对 ftp 协议的深层状态检测过滤,其他大多数状态检测防火墙例如 LinuxNetfilters 也支持 ftp 协议的状态检测,进行准确的 PASV动态端口过滤。2.3 用户名和口令的明文传输 FTP 另一个声名狼藉的问题是它以明文方式发送用户名和口令,也就是不加密地发送。任何人只要在网络中合适的

22、位置放置一个协议分析仪就可以看到用户名和口令;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 6553

23、5 (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)0 x0000 4500 009a d570 4000 8006 a3

24、98 c0a8 0003 E.p.0 x0010 c0a8 0001 0015 0913 e981 0628 7a0c 4c1e.(z.L.0 x0020 5018 ffff cd50 0000 3232 302d 5468 6973 P.P.220-This 0 x0030 2073 6572 7665 7220 6973 2066 6f72 2070.server.is.for.p 0 x0040 7269 7661 7465 2075 7365 206f 6e6c 790d rivate.use.only.0 x0050 0a32.2 21:55:37.016115 IP 192.168

25、.0.1.2323 192.168.0.3.21:.ack 115 win 65421(DF)0 x0000 4500 0028 b8d0 4000 8006 c0aa c0a8 0001 E.(.0 x0010 c0a8 0003 0913 0015 7a0c 4c1e e981 069a.z.L.0 x0020 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)0 x0000 4500 004f d586 4000 8006 a

26、3cd c0a8 0003 E.O.0 x0010 c0a8 0001 0015 0913 e981 069a 7a0c 4c1e.z.L.0 x0020 5018 ffff 074f 0000 3232 3020 506c 6561 P.O.220.Plea 0 x0030 7365 2065 6e74 6572 2079 6f75 7220 6c6f se.enter.your.lo 0 x0040 6769 6e20 6e61 6d65 206e 6f77 2e0d 0a gin.name.now.21:55:37.022282 IP 192.168.0.1.2323 192.168.0

27、.3.21:P 1:12(11)ack 154 win 65382(DF)0 x0000 4500 0033 b8d2 4000 8006 c09d c0a8 0001 E.3.0 x0010 c0a8 0003 0913 0015 7a0c 4c1e e981 06c1.z.L.0 x0020 5018 ff66 c4eb 0000 5553 4552 2065 6c6c P.f.USER.ell 0 x0030 790d 0a y.21:55:37.059430 IP 192.168.0.3.21 192.168.0.1.2323:P 154:188(34)ack 12 win 65524

28、(DF)0 x0000 4500 004a d58b 4000 8006 a3cd c0a8 0003 E.J.0 x0010 c0a8 0001 0015 0913 e981 06c1 7a0c 4c29.z.L)0 x0020 5018 fff4 b343 0000 3333 3120 5061 7373 P.C.331.Pass 0 x0030 776f 7264 2072 6571 7569 7265 6420 666f word.required.fo 0 x0040 7220 656c 6c79 202e 0d0a r.elly.21:55:37.060301 IP 192.168

29、.0.1.2323 192.168.0.3.21:P 12:27(15)ack 188 win 65348(DF)0 x0000 4500 0037 b8db 4000 8006 c090 c0a8 0001 E.7.0 x0010 c0a8 0003 0913 0015 7a0c 4c29 e981 06e3.z.L).0 x0020 5018 ff44 e479 0000 5041 5353 2038 3838 P.D.y.PASS.888 0 x0030 3838 3838 380d 0a 88888.21:55:37.243954 IP 192.168.0.3.21 192.168.0

30、.1.2323:.ack 27 win 65509(DF)0 x0000 4500 0028 d59d 4000 8006 a3dd c0a8 0003 E.(.0 x0010 c0a8 0001 0015 0913 e981 06e3 7a0c 4c38.z.L8 0 x0020 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)0 x0000 4500 05dc d5a4 4000 8006

31、9e22 c0a8 0003 E.0 x0010 c0a8 0001 0015 0913 e981 06e3 7a0c 4c38.z.L8 0 x0020 5010 ffe5 0300 0000 3233 302d 5765 6c63 P.230-Welc 0 x0030 6f6d 6520 746f 2076 6920 4654 5020 7365 ome.to.vi.FTP.se 0 x0040 7276 6572 0d0a 3233 302d 0d0a 3233 302d rver.230-.230-0 x0050 4375 Cu =/3.03.1 SSL/TLS 简介 先说一下 SSL

32、/TLS 协议,SSL(Secure Socket Layer)最早是 netscape 公司设计的用于 HTTP 协议加密的安全传输协议,SSL工作于 TCP 协议的传输层(TCP 层)和应用程序之间。作为一个中间层,应用程序只要采用SSL提供的一套 SSL套接字 API来替换标准的 Socket 套接字,就可以把程序转换为SSL化的安全网络程序,在传输过程中将由 SSL协议实现数据机密性和完整性的保证。SSL协议的当前版本为 3.0,当 SSL取得大规模成功后,IETF(www.ietf.org)将 SSL作了标准化,规范为 RFC2246,并将其称为 TLS(TransportLayer

33、Security)。从技术上讲,TLS1.0 与 SSL3.0 的差别非常微小,SSL由于其历史应用的原因在当前的商业应用程序之中使用得更多一些。TLS 协议,RFC 2246:http:/www.ietf.org/rfc/rfc2246.txt 3.2 数据机密性和完整性 前面多次提到了数据的机密性和完整性两个方面,在此略微解释一下。数据的机密性确保数据信息机密可靠,不会被没有权限的对象所访问和浏览到,基本的机密性保护手段就是数据加密;而数据的完整性则是指数据在传输和存储过程中将保证数据的唯一和完整,不会被恶意篡改着所修改,保证数据完整性的基本手段主要有数字签名。这里就牵扯到数据加密领域的两类算法,加密算法和散列算法。加密算法从数学原理上看可以分为对称加密和非对称加密,从数据处理方法上可以分为流加密和分组加密,本文重点不在此,不再赘述,只举例几种常用的加密算法:DES,3DES,AES,

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1