简介
在本次实验中,你将学习如何使用强大的密码破解工具 Hydra 对 SMB 服务发起攻击。本实验重点展示如何识别并利用 SMB 服务器上的弱凭证。
实验首先会使用 Samba 搭建一个本地 SMB 服务器,包括安装必要的软件包、配置 smb.conf
文件以创建共享目录,以及设置适当的权限。然后,你需要准备用于 Hydra 攻击的用户和密码列表。最后,运行 Hydra SMB 攻击并检查结果,查看是否成功破解出任何凭证。
在本次实验中,你将学习如何使用强大的密码破解工具 Hydra 对 SMB 服务发起攻击。本实验重点展示如何识别并利用 SMB 服务器上的弱凭证。
实验首先会使用 Samba 搭建一个本地 SMB 服务器,包括安装必要的软件包、配置 smb.conf
文件以创建共享目录,以及设置适当的权限。然后,你需要准备用于 Hydra 攻击的用户和密码列表。最后,运行 Hydra 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 是一个并行化的登录破解工具,支持对多种协议进行攻击。
在 ~/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 是否成功破解了密码。
在这一步中,你将分析 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 用户。