介绍
在本次实验中,你将学习如何在目标系统上自定义 FTP 端口号,然后使用 Hydra 对该自定义端口上的 FTP 服务进行暴力攻击。对于需要评估配置了非标准 FTP 端口的系统安全性的渗透测试人员和安全专业人员来说,这是一项非常有用的技能。
本实验包括通过修改 vsftpd.conf 文件并重启 FTP 服务,将 LabEx 虚拟机上的 FTP 服务器配置为监听非标准端口。然后,你将使用 netstat 命令验证 FTP 服务器是否正在新端口上监听。最后,你将使用 Hydra 并结合 -s 选项指定自定义端口,执行 FTP 攻击,验证 Hydra 是否能够成功连接到配置端口上的 FTP 服务。
在非标准端口上配置 FTP
在这一步中,我们将把 LabEx 虚拟机上的 FTP 服务器配置为监听非标准端口。默认情况下,FTP 使用 21 端口。更改 FTP 端口有助于降低针对默认端口的自动化攻击风险。
首先,让我们编辑 FTP 配置文件。我们将使用 nano 编辑器,它已预先安装在 LabEx 虚拟机上。
sudo nano /etc/vsftpd.conf
此命令会在 nano 编辑器中打开 vsftpd.conf 文件。
在文件中添加以下行:
listen_port=2121

如果 listen_port 行不存在,请将其添加到文件中。将其添加到文件顶部附近是个不错的做法。
进行更改后,按 Ctrl+X 保存文件,然后按 Y 确认,再按 Enter 以相同的文件名保存。
接下来,我们需要重启 FTP 服务以使更改生效。
sudo service vsftpd restart
此命令会重启 FTP 服务。你应该会看到一条输出信息,表明服务已重启。
最后,让我们验证 FTP 服务器现在是否正在新端口上监听。我们可以使用 netstat 命令来检查监听端口。
sudo netstat -tulnp | grep vsftpd
此命令会显示所有 TCP、UDP、监听和进程信息,然后过滤输出,只显示包含 "vsftpd" 的行。你应该会看到一行信息,表明 vsftpd 正在端口 2121(或你选择的端口)上监听。
示例输出:
tcp6 0 0 :::2121 :::* LISTEN 1027/vsftpd

如果你在输出中看到新的端口号,这意味着 FTP 服务器现在正在新端口上监听。
使用 -s 选项指定端口
在这一步中,你将学习在使用 ftp 命令时如何指定非标准端口。这一点至关重要,因为在上一步中,我们已将 FTP 服务器的监听端口从默认的 21 端口更改为自定义端口(例如 2121)。现在,当连接到服务器时,你需要告知 ftp 客户端使用哪个端口。
ftp 命令提供了 -p 选项来指定端口号。然而,Hydra 使用 -s 选项来指定端口。在为下一步的 Hydra 攻击做准备时,理解这一差异非常重要。
让我们尝试使用带有 -p 选项的 ftp 命令连接到 FTP 服务器,以验证连接是否正常。将 localhost 替换为 LabEx 虚拟机的 IP 地址。如果你在同一台虚拟机上进行此实验,可以使用 localhost 或 127.0.0.1。
ftp localhost -p 2121
系统会提示你输入用户名和密码。按 Ctrl+C 退出。
现在,让我们模拟 Hydra 如何指定端口。虽然我们还不会实际使用 Hydra,但这一步对于理解语法很重要。Hydra 使用 -s 选项来指定端口。
Hydra 指定端口的语法与标准的 ftp 命令不同。Hydra 使用 -s 后跟端口号。例如,如果我们使用 Hydra 攻击 2121 端口上的 FTP 服务,我们会在 Hydra 命令中包含 -s 2121。
为了演示这一点,让我们创建一个虚拟的 Hydra 命令。我们不会执行它,但它将展示正确的语法。
hydra -l ftpuser -P ~/project/password.txt localhost ftp -s 2121

这里的关键是 -s 2121 部分。这告诉 Hydra 连接到 2121 端口上的 FTP 服务。
总之,标准的 ftp 命令使用 -p 来指定端口,而 Hydra 使用 -s。理解这一差异对于下一步使用 Hydra 执行 FTP 攻击至关重要。
在自定义端口上执行 FTP 攻击
在这一步中,我们将使用 Hydra 对在第一步中配置的非标准端口上运行的 FTP 服务进行暴力攻击。我们将使用在设置阶段创建的密码列表。
现在,你可以启动 Hydra 攻击了。将 localhost 替换为 LabEx 虚拟机的 IP 地址。如果你在同一台虚拟机上进行此实验,可以使用 localhost 或 127.0.0.1。
hydra -l ftpuser -P ~/project/password.txt localhost ftp -s 2121 -vV
让我们来拆解一下这个命令:
hydra:用于执行 Hydra 工具的命令。-l ftpuser:指定要攻击的用户名。-P ~/project/password.txt:指定在设置阶段创建的密码列表文件的路径。localhost:指定目标 IP 地址。请将localhost替换为实际的 IP 地址。ftp:指定要攻击的服务(在这种情况下是 FTP)。-s 2121:指定端口号。这一点至关重要,因为我们在第一步中将 FTP 端口更改为了 2121。-vV:启用详细模式,该模式会实时显示登录尝试信息。
执行该命令后,Hydra 将开始从 ~/project/password.txt 文件中尝试不同的密码,对指定端口上的 FTP 服务进行攻击。
如果 Hydra 找到了正确的密码,它将显示成功登录的信息。例如:
[ATTACKER] attacking ftp://localhost:2121/
[2121][ftp] host: localhost login: ftpuser password: password123
如果 Hydra 没有找到正确的密码,它将尝试列表中的所有密码,然后在不显示成功登录信息的情况下退出。
重要安全提示:本实验仅用于教育目的。未经明确许可,请勿使用 Hydra 攻击系统。未经授权访问计算机系统是违法且不道德的行为。
验证连接到正确的端口
在这最后一步中,你将验证在尝试使用 Hydra 攻击后,是否仍能连接到自定义端口上的 FTP 服务器。这将确认 FTP 服务是否按预期运行,以及你是否可以使用指定的端口访问它。
使用带有 -p 选项的 ftp 命令连接到自定义端口上的 FTP 服务器。将 localhost 替换为 LabEx 虚拟机的 IP 地址。如果你在同一台虚拟机上进行此实验,可以使用 localhost 或 127.0.0.1。
ftp -p 2121 localhost
系统会提示你输入用户名和密码。使用在设置阶段创建的凭据:
- 用户名:
ftpuser - 密码:
password123
如果连接成功,你将登录到 FTP 服务器。

如果你无法连接,请仔细检查以下内容:
- 确保 FTP 服务仍在运行。你可以使用
netstat -tulnp | grep vsftpd命令进行检查,就像我们在第一步中所做的那样。 - 验证
/etc/vsftpd.conf文件中的 FTP 端口是否仍设置为 2121(或你选择的端口)。 - 确保没有防火墙规则阻止连接到自定义端口。(注意:LabEx 虚拟机环境通常默认不启用防火墙,但在实际场景中,记住这一点很重要。)
- 确认你使用的是正确的用户名和密码。
成功连接则确认 FTP 服务器正在自定义端口上运行,并且你可以使用带有 -p 选项的 ftp 命令连接到它。这也验证了即使 Hydra 攻击未成功,也不会中断 FTP 服务。
至此,本实验结束。你已成功在非标准端口上配置了 FTP,学习了如何使用 Hydra 的 -s 选项指定端口,执行了基本的 Hydra 攻击,并验证了是否能连接到正确的端口。
总结
在本实验中,你将 LabEx 虚拟机上的 FTP 服务器配置为监听非标准端口,具体是端口 2121,而非默认的端口 21。这需要使用 nano 编辑 /etc/vsftpd.conf 文件,以修改或添加 listen_port 指令,然后使用 sudo service vsftpd restart 重启 FTP 服务。
最后,你使用 netstat -tulnp | grep vsftpd 命令检查监听端口,验证 FTP 服务器确实在新端口上监听,并确认 vsftpd 与端口 2121 关联。


