自学渗透测试第28天(协议补漏与FTP抓包)

10.3 协议补漏与FTP抓包(第28天)

核心目标
  1. 掌握FTP/SMTP/Telnet协议细节:理解其工作模式、命令-响应模型及认证过程。

  2. 熟练使用Wireshark进行协议分析:能够捕获、过滤、分析特定协议的数据包,并提取关键信息。

  3. 深刻理解明文协议的安全风险:通过抓包实战,直观认识凭证在网络中明文传输的危险性。

模块一:明文协议深度解析
1.1 FTP协议详解
  • 两种模式

    • 主动模式:客户端打开一个随机端口N连接服务器的21端口(命令端口),然后告诉服务器自己的N+1端口,服务器主动从20端口连接客户端的N+1端口进行数据传输。问题:客户端防火墙可能阻止服务器主动连接。

    • 被动模式:客户端连接服务器的21端口后,服务器打开一个随机高端口P,并告知客户端,客户端再主动连接服务器的P端口进行数据传输。现代网络常用。

  • 关键命令与响应

  • USER username:指定用户名。

  • PASS password:指定密码。

  • LIST:列出目录内容。

  • RETR filename:下载文件。

  • STOR filename:上传文件。

  • 331:需要密码。

  • 230:登录成功。

  • 150:文件状态正常,准备打开数据连接。

1.2 SMTP协议与Telnet
  • SMTP:用于发送邮件。

    复制代码
    HELO client.example.com
    MAIL FROM:<sender@example.com>
    RCPT TO:<recipient@target.com>
    DATA
    Subject: Test
    This is a test email.
    .
    QUIT
  • Telnet:远程登录协议,所有交互明文传输。

模块二:Wireshark抓包实战
2.1 环境搭建与捕获
  1. 搭建FTP服务器 :在Kali或另一台Linux机器上安装并启动vsftpd

    复制代码
    sudo apt install vsftpd
    sudo systemctl start vsftpd
    # 创建一个测试用户
    sudo useradd -m testftp
    sudo passwd testftp
  2. 启动Wireshark :选择正确的网卡(如eth0)开始捕获。

  3. 设置显示过滤器 :在捕获前或后,使用过滤器 ftp || ftp-data聚焦FTP流量。

2.2 捕获与分析FTP会话
  1. 发起FTP连接 :从客户端使用ftp命令或FileZilla连接服务器。

    复制代码
    ftp 服务器IP
    # 输入用户名 testftp,密码
    ls
    quit
  2. 分析捕获的数据包

    • TCP三次握手:找到FTP服务器21端口的SYN, SYN-ACK, ACK包。

    • FTP命令流:追踪TCP流(右键 -> Follow -> TCP Stream)。你将清晰看到:

      复制代码
      220 (vsFTPd 3.0.3)
      USER testftp
      331 Please specify the password.
      PASS your_plaintext_password_here
      230 Login successful.
      ...
    • 数据连接:观察建立数据连接(端口20或随机高端口)的过程和传输的文件列表。

2.3 提取敏感信息
  • 在Wireshark中,使用 编辑 -> 查找分组,搜索字符串"PASS",可以直接定位到包含密码的数据包。

  • 使用 文件 -> 导出对象 -> FTP,可以尝试提取通过FTP传输的文件。

模块三:安全风险与防御
3.1 明文协议的风险
  • 凭证窃取:攻击者通过中间人攻击或监听网络流量,可直接获取用户名和密码。

  • 数据泄露:传输的文件内容可被直接读取。

  • 命令注入:在某些不安全的实现中,可能通过特制命令进行注入。

3.2 安全替代方案
  • FTP -> SFTP/FTPS

    • SFTP:基于SSH协议,使用加密通道。

    • FTPS:FTP over SSL/TLS,对控制通道和数据通道进行加密。

  • Telnet -> SSH:使用SSH进行加密的远程管理。

  • SMTP -> SMTPS/STARTTLS:使用SSL/TLS加密邮件传输。

模块四:当日达标实战任务
4.1 协议分析挑战
  1. 搭建并抓包:按照模块二指导,搭建FTP环境,完成一次完整的FTP登录和文件列表操作,并使用Wireshark捕获全过程。

  2. 分析报告:从捕获的数据包中,回答以下问题:

  • 本次FTP会话使用的是主动模式还是被动模式?你是如何判断的?

  • 找到并记录下登录使用的用户名和密码。

  • 找到数据连接建立的整个过程(端口号变化)。

  • 将包含"LIST"命令和其响应的TCP流内容截图保存。

4.2 模拟攻击与防御思考
  1. 风险演示:假设你是一个攻击者,在同一个局域网内。请描述你如何利用ARP欺骗(第19天内容)结合本课的抓包技术,窃取目标主机的FTP登录凭证。写出简要的攻击步骤。

  2. 防御方案:作为管理员,你需要确保公司内部的文件传输安全。请给出将明文FTP服务迁移到加密方案的具体步骤建议(包括服务端配置和客户端连接方式)。

4.3 扩展协议分析
  1. SMTP抓包 :使用telnetswaks工具手动连接一个公共的SMTP服务器(如smtp.gmail.com:587,需要TLS,可先尝试本地搭建的postfix),发送一封测试邮件,并用Wireshark捕获流量。观察在未使用STARTTLS的情况下,邮件内容是否明文传输。
模块五:常见问题与解决方案
5.1 抓不到FTP流量
  • 检查网卡:确保Wireshark捕获的是正确的、有流量的网络接口。

  • 检查过滤器:确认没有设置过于严格的捕获过滤器。开始时可以不设过滤器,捕获所有流量再分析。

  • 本地回路流量 :如果FTP客户端和服务器在同一台机器(localhost),流量可能走lo环回接口,需要捕获该接口。

5.2 看不懂数据包内容
  • 使用追踪流:右键点击相关数据包,选择"追踪流 -> TCP流",这是分析应用层协议最直观的方式。

  • 学习协议RFC:对于复杂协议,查阅官方RFC文档是终极解决方案。

5.3 现代服务默认加密
  • 问题:很多现代FTP/SMTP服务器默认强制使用加密(FTPS/SMTPS),导致抓包看不到明文。

  • 解决 :为了学习,可以在本地搭建旧版本或明确配置为允许明文传输的服务(仅限实验环境)。在实际测试中,遇到加密协议是正常且应该鼓励的。


明日预告 :第29天将进行Linux SUID/SGID基础实验,这是Linux本地提权中最常见、最经典的路径之一。我们将通过手动查找、分析和利用配置错误的SUID文件,来深入理解Linux权限模型的安全隐患。

相关推荐
JiaWen技术圈1 小时前
nftables 添加规则时支持的匹配条件与语句全解
linux·服务器
其实防守也摸鱼1 小时前
《SQL注入进阶实验:基于sqli-Labs的报错注入(Error-Based Injection)实战解析》
网络·数据库·sql·安全·网络安全·sql注入·报错注入
V我五十买鸡腿1 小时前
网安基础 Windows 和 Linux 那些常用命令
linux·运维·windows
玖疯子1 小时前
IT疑难杂症诊疗室:系统性故障排查指南
开发语言·php
日取其半万世不竭2 小时前
用云服务器部署 Hexo 博客,Nginx 托管静态页面全流程
运维·服务器·nginx
handler012 小时前
进程状态流转的本质:Linux 内核队列与底层数据结构解密
linux·运维·c语言·数据结构·c++·笔记·学习
大方子2 小时前
【好靶场】垂直越权任意添加用户
网络安全·好靶场
F_D_Z2 小时前
【解决办法】Claude报错Unable to connect to Anthropic services无法连接Anthropic
linux·服务器·claude·anthropic
xjxijd2 小时前
无风扇 AI 服务器成主流:英伟达 NVL72 系统引领静音算力革命
大数据·服务器·人工智能