简介
在本实验中,你将学习如何自定义目标系统上的 FTP 端口号,然后使用 Hydra 对该自定义端口上的 FTP 服务执行暴力破解攻击。对于需要评估配置了非标准 FTP 端口的系统安全性的渗透测试人员和安全专业人员来说,这是一项非常有价值的技能。
本实验涉及通过修改 vsftpd.conf 文件并重启 FTP 服务,将 LabEx 虚拟机上的 FTP 服务器配置为在非标准端口上监听。接着,你将使用 netstat 命令验证 FTP 服务器是否正在新端口上监听。最后,你将使用带有 -s 选项的 Hydra 来指定自定义端口并执行 FTP 攻击,从而验证 Hydra 是否能够成功连接到配置端口上的 FTP 服务。
在非标准端口上配置 FTP
在此步骤中,我们将把 LabEx 虚拟机上的 FTP 服务器配置为在非标准端口上监听。默认情况下,FTP 使用端口 21。更改 FTP 端口有助于降低针对默认端口的自动化攻击风险。
首先,让我们编辑 FTP 配置文件。我们将使用 LabEx 虚拟机中预装的 nano 编辑器。
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 命令,你可以通过提供 HOST PORT(例如 ftp localhost 2121)来指定非标准端口。然而,Hydra 使用 -s 选项来指定端口。在准备下一步的 Hydra 攻击时,理解这种差异非常重要。
让我们尝试使用 ftp 命令的“主机加端口”格式连接到 FTP 服务器,以验证连接。将 localhost 替换为 LabEx 虚拟机的 IP 地址。如果你是在同一台虚拟机上运行此实验,则可以使用 localhost 或 127.0.0.1。
ftp localhost 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 命令可以使用 HOST PORT 来指定目标端口,而 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 服务正在按预期运行,并且我们可以使用指定的端口访问它。
使用带有主机和端口的 ftp 命令连接到自定义端口上的 FTP 服务器。将 localhost 替换为 LabEx 虚拟机的 IP 地址。如果你是在同一台虚拟机上运行此实验,则可以使用 localhost 或 127.0.0.1。
ftp localhost 2121
系统会提示你输入用户名和密码。使用我们在设置中创建的凭据:
- 用户名:
ftpuser - 密码:
password123
如果连接成功,你将登录到 FTP 服务器。

如果你无法连接,请检查以下内容:
- 确保 FTP 服务仍在运行。你可以像第一步那样使用
netstat -tulnp | grep vsftpd命令进行检查。 - 验证
/etc/vsftpd.conf文件中的 FTP 端口是否仍设置为 2121(或你选择的端口)。 - 确保没有防火墙规则阻止连接到自定义端口。(注意:LabEx 虚拟机环境默认通常没有启用防火墙,但在现实场景中需要注意这一点。)
- 确认你使用了正确的用户名和密码。
连接成功确认了 FTP 服务器正在自定义端口上运行,并且你可以使用 ftp localhost 2121 连接到它。这也验证了 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 命令检查监听端口,并确认 vsftpd 与端口 2121 相关联,验证了 FTP 服务器确实正在新端口上监听。


