使用 Hydra 攻击 SMB 服务

HydraHydraBeginner
立即练习

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

简介

在本次实验中,你将学习如何使用强大的密码破解工具 Hydra 对 SMB 服务发起攻击。本实验重点展示如何识别并利用 SMB 服务器上的弱凭证。

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL hydra(("Hydra")) -.-> hydra/HydraGroup(["Hydra"]) hydra/HydraGroup -.-> hydra/installation("Installation and Setup") hydra/HydraGroup -.-> hydra/password_creation("Password List Creation") hydra/HydraGroup -.-> hydra/username_creation("Username List Creation") hydra/HydraGroup -.-> hydra/target_ip("Target IP Specification") hydra/HydraGroup -.-> hydra/target_service("Target Service Selection") hydra/HydraGroup -.-> hydra/multiple_targets("Multiple Targets Attack") hydra/HydraGroup -.-> hydra/success_detection("Login Success Detection") hydra/HydraGroup -.-> hydra/troubleshooting("Basic Troubleshooting") subgraph Lab Skills hydra/installation -.-> lab-550761{{"使用 Hydra 攻击 SMB 服务"}} hydra/password_creation -.-> lab-550761{{"使用 Hydra 攻击 SMB 服务"}} hydra/username_creation -.-> lab-550761{{"使用 Hydra 攻击 SMB 服务"}} hydra/target_ip -.-> lab-550761{{"使用 Hydra 攻击 SMB 服务"}} hydra/target_service -.-> lab-550761{{"使用 Hydra 攻击 SMB 服务"}} hydra/multiple_targets -.-> lab-550761{{"使用 Hydra 攻击 SMB 服务"}} hydra/success_detection -.-> lab-550761{{"使用 Hydra 攻击 SMB 服务"}} hydra/troubleshooting -.-> lab-550761{{"使用 Hydra 攻击 SMB 服务"}} end

搭建本地 SMB 服务器

在这一步中,你将使用 Samba 搭建一个本地 SMB(Server Message Block)服务器。SMB 是一种网络文件共享协议,允许计算机上的应用程序访问远程服务器上的文件和资源。Samba 是 SMB 网络协议的免费软件实现。这将为后续步骤中的 Hydra SMB 攻击提供目标。

首先,安装 Samba。在 ~/project 目录下打开终端。

sudo apt update
sudo apt install samba -y

此命令会更新软件包列表,然后安装 Samba 软件包。-y 标志会自动对安装过程中的所有提示回答“yes”。

接下来,配置 Samba。首先备份原始配置文件。

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak

现在,创建一个新的简化配置文件。使用 nano 编辑配置文件。

sudo nano /etc/samba/smb.conf

将以下配置粘贴到 nano 编辑器中。此配置创建了一个名为 share 的共享目录,网络上的所有人都可以访问该目录。

[global]
   workgroup = WORKGROUP
   server string = Samba Server %v
   netbios name = fileserver
   security = user
   map to guest = bad user
   name resolve order = bcast host lmhosts wins

[share]
   path = /home/labex/project/share
   browsable = yes
   writable = yes
   guest ok = yes
   read only = no

Ctrl+X,然后按 Y,再按 Enter 保存文件。

现在,创建共享目录。

mkdir ~/project/share
sudo chmod 777 ~/project/share

这将在 ~/project 目录下创建一个名为 share 的目录,并将其权限设置为 777,这意味着所有人都有读、写和执行权限。注意: 在实际场景中,你需要使用更严格的权限。在本实验环境中,为了简单起见,使用 777 权限。

接下来,添加一个 Samba 用户。此用户将用于对 SMB 服务器进行身份验证。使用系统中已存在的 labex 用户。首先,为 labex 用户设置 Samba 密码。

sudo smbpasswd -a labex

系统会提示你为 labex 用户输入新密码。输入密码并确认。记住这个密码,后续会用到。

最后,重启 Samba 服务以使更改生效。

sudo systemctl restart smbd nmbd

重要提示: systemctl 命令在 Docker 容器环境中可能无法直接使用。如果你遇到错误,可以尝试使用以下命令重启 Samba 服务:

sudo /etc/init.d/smbd restart
sudo /etc/init.d/nmbd restart

现在,本地 SMB 服务器已搭建完成。你已经创建了一个名为 share 的共享目录,并为 labex 用户设置了 Samba 密码。

准备用户/密码列表

在这一步中,你将创建 Hydra 用于执行 SMB 攻击的用户和密码列表。这些列表将包含 Hydra 尝试用于对 SMB 服务器进行身份验证的潜在用户名和密码。

首先,创建用户列表。使用 nano~/project 目录下创建一个名为 users.txt 的文件。

nano ~/project/users.txt

在这个文件中,逐行添加以下用户名:

labex
admin
guest
user

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 服务器。它会尝试每一种用户名和密码的组合,直到找到有效的组合或穷尽所有可能性。

输出会显示正在进行的尝试。如果 Hydra 找到有效的用户名和密码组合,会在输出中显示出来。

重要提示: 本次攻击是在本地 SMB 服务器上进行的,仅用于教育目的。对远程系统进行未经授权的攻击是违法且不道德的行为。

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

检查 SMB 攻击结果

在这一步中,你将分析 Hydra SMB 攻击的输出,以确定是否成功破解了任何凭证。

在上一步运行 Hydra 命令后,仔细查看终端中的输出。Hydra 会显示它找到的任何有效的用户名和密码组合。

如果找到成功的登录信息,输出将类似于以下内容:

[smb] host: 127.0.0.1   login: labex   password: <the_password>

如果 Hydra 成功破解,它将打印出有效的用户名和密码。在我们的示例中,如果 labex 用户的密码在 passwords.txt 文件中,Hydra 就会找到它。

如果 Hydra 没有找到任何有效的凭证,它将显示一条消息,表明它已穷尽所有用户名和密码组合,但未成功。

如果你成功破解了密码,请记录下用户名和密码。然后,你可以使用这些凭证访问第一步中创建的 SMB 共享。

要测试破解的凭证,你可以使用 smbclient 命令。如果尚未安装该命令,请先进行安装:

sudo apt update
sudo apt install smbclient -y

然后,使用以下命令连接到 SMB 共享,将 <the_password> 替换为破解的密码:

smbclient //127.0.0.1/share -U labex -p <the_password>

如果登录成功,你将看到一个 smb:\> 提示符,这表明你已成功连接到 SMB 共享。然后,你可以使用 SMB 命令浏览和操作共享文件。

如果你未能破解密码,可以尝试在 passwords.txt 文件中添加更多常见密码,然后再次运行 Hydra 命令。请记住,暴力破解攻击的效果取决于密码列表的质量和大小。

总结

在本次实验中,你首先使用 Samba 搭建了一个本地 SMB 服务器,为 Hydra SMB 攻击创建了一个目标。这包括安装 Samba 软件包、备份原始配置文件,并创建一个新的简化配置文件,其中定义了一个名为 share 的共享目录,该目录对所有人开放。

配置内容包括设置工作组、服务器字符串、NetBIOS 名称、安全设置,以及定义共享目录的路径、可浏览性、可写性和访客访问权限。为了简化操作,你还创建了共享目录并将其权限设置为 777,但请注意,在实际场景中建议使用更严格的权限。下一步是添加一个 Samba 用户。