先说说个人的情况。
首先,我并不能算作严格意义上安全科班出身,属于半路出家做安全。一直以来都是从事甲方安全防护,偏重基于业务侧的应用安全、数据保护、隐私合规。渗透测试于我几乎是盲区一样的存在,仅对web、android的安全测试有些许了解,比如漏洞原理、防护、测试等,利用层面都很少接触。
起初是从之前的同事那里了解到CEH,一个偏重攻击实操的认证,但是考试需要去香港,觉得比较麻烦就放弃了。之后一段时间也没计划学习渗透的知识,随着工作越来越久,逐渐体会到”不知攻,焉知防“的意思。随后考虑OSCP认证,一方面学习渗透、攻击的知识,另一方面也算拓宽个人知识面。
从此,走上了OSCP认证的不归路。
近期终于通过了认证,花时间梳理一下我在准备以及考试的过程,个人记录的同时也分享一点经验给准备OSCP的伙伴。当然,我觉得更多是鼓励,毕竟我考了很多次才通过。
文章的主要内容:
简单介绍官方信息、报名考试、lab环境内容。
官网,OSCP认证是PEN-200课程,其他还有WEB-200,PEN-300等,以及PG play、PG practise。
考试大纲,课程的主要内容,也就是官方教材的目录;报名之前可以看看自己薄弱的环节,有针对性的先练习,毕竟官方课程越来越贵。
官方课程价格说明, 之前可购买一个月,但是2022年是调整了,最少需购买3个月课程(1599刀)。
PEN-200 Onboarding - A Student Introduction Guide to the OSCP, 学习、认证指引;考虑中或者已经报名了,务必认真看看,可以节省很多时间。
学员论坛 ,报名后随邮件发账号、密码。学员可在上面分享、提问,但禁止直接给出答案。学习过程中可以参考,找找lab环境的思路、其他人的经验等等。
tip:除论坛外,可加入官方discord获取帮助,有专人进行解答、指导;同样,不会直接给出lab环境答案,但是可以在线和其他学员、官方支持人员进行交流。相对来说更快捷,唯二的问题时差、英文。
其他可以参考知乎上这篇文章关于OSCP和Offensive Security , 找博主好像可以打折(95折),虽然不很多,但是也够好几个月的pg或者htb订阅费。
购买课程后,培训课程并不立马开始的,中间有一些认证的工作。培训课程的开始时间记得是可以选择,在通过认证后的几天内。课程开始前会邮件发过来必要的信息,主要用到的如下:
Lab 环境拓扑如下,模拟多网段的企业环境。建议读一下guide.
Tip: 官方给了一个 lab 环境的 learning path,由简到难可以参考下,避免遇到太难的靶机打击信心。
考试形式:在线考试,有在线监考。
考试时间:24小时,实际23小时45分钟;监考人员会提前15分钟断开(x点45分的时候);考试过程中可以随时休息,监考会话中知会监考人员即可(不需要等监考人员回复);
监考:全程在线监考,开考前监考人员会进行身份验证(比如护照)、考试环境检查(要求用电脑摄像头环视一周考试环境),并在连接后发送一个脚本运行的结果。
考试中的限制,
得分的要求,如下情况讲不得分。
报告相关
report template,官方report模板;
cherrytree-oscp-template, cherrytrer模板,course里有提到的一个笔记工具cherrytree;
report require, 官方的报告要求;
章节练习和10 lab 报告可获取10分(bonus),不要求记录报告的章节
DOCUMENTATION OF EXERCISES FOR THE FOLLOWING SECTIONS ARE NOT REQUIRED FOR PEN-200:
The Kali Training Site
HTTP Service
dpkg
Reverse Shell Scenario
Recon-ng
Client Fingerprinting
Upgrading a Non-Interactive Shell
Uploading Files with TFTP
Standard Wordlists
Brute Force Wordlists
HTTP htaccess Attack with Medusa
Remote Desktop Protocol Attack with Crowbar
SSH Attack with THC-Hydra
HTTP POST Attack with THC-Hydra
Retrieving Password Hashes
Password Cracking
All Extra Miles exercises
如上为摘取部分相关内容,建议认真阅读官方考试指引 exam guide
vulnhub
hackthebox
tryhackme
pentestit, 没试,不评论;
root me, 没试,不评论;
offensive play ground practice/pg
前前后后搜集很多技术分享,有些认真的看了,有些可能就是一扫而过;这里罗列部分比较推荐以及报名前学习的内容,其余的记录在笔记中(github)不一一说明了。
Hacktricks,强烈推荐;
ippsec.rocks ,强烈推荐;ippsec 所有HTB视频的索引,支持关键字查询查看视频;
ired.team , 挺好的一个红队资源,尤其AD的部分做了环境进行讲解,hacktricks也引用了部分内容;
PayloadAllTheThings, 各种payload,查询好帮手。
oscp cheetsheet,常用的OSCP命令,报名前参考学习过;
total-oscp-guide,比较贴合官方内容,没报名之前参考进行学习;
Dostoevskylabs’s PenTest Notes
OSCP-Prep
Penestration Testing-wiki
Total-OSCP-Guide
Active Directory OSCP Edition , AD 脑图,Designed By Youssef Saeed;
一些工具相关的内容。
badchars工具,bof badchars,可pip安装使用。
crackstation, 在线破解hash
Hashes ,在线破解hash
Reverse Shell generator ,reverse shell 生成
CyberChef , 各种转码、解码、解密工具;
kali-learning-notes,kali的笔记,着重在kali的工具等内容;
个人的情况前文已简单介绍过,接下来从备考、几次失败经历以及个人经验分享我的认证经历。
报名前
此时还没决定是不是要报名认证,一方面考虑是否适合,另一方面也是担心可能难度太大。在纠结犹豫中,断断续续找了些vulnhub的资源学习、练手。整个过程持续好几个月,大概完成了30台靶机,大多数还是参考了网上的walkthrough。不过实话说,这个阶段多少有点儿“三天打鱼,两天晒网”的意思,各种原因也导致没办法保证时间投入。
报名备考
几个月的靶机练习,于我而言确实有点儿打开了新大门的感觉。所以,虽然犹豫,还是咬牙跺脚购买课程报名(60天lab)了。
报名使用的公司邮箱,不过由于在公司接受邮件后转发不方便,和官方支持沟通后添加了个人邮箱接收官方邮件。
在开通lab前,参考别人的经验做了个简单的计划。
花20天时间完成教材学习以及章节习题的练习;毕竟有10分的bonus,可能对我来说更保险一点。
花40天时间进行lab环境靶机练习,争取完成30-40台靶机环境。
lab结束后花1个月时间补充练习,回顾、整理笔记。
然而实际情况是完全高估了个人的水平:教材学习及章节后的练习完成时已经过去40天,尤其章节后的练习花了非常多的时间(主要还是因为基础太差,同时又缺少交流),不过对于基础知识掌握还是很有帮助。剩余1个月的时间,由于没仔细看官方指引,走了不少弯路,最终参考learn path,完成10多台lab靶机。
此时考虑到完成情况不太好,加购了一个月的lab环境。这一个月的时间最终完成proof 38个,拿到dev网络的flag但是没深入内网。练习过程中比较痛苦,完成的靶机中大概半数的基本上磕磕绊绊可以拿到flag,其余的属于recon后毫无思路,依靠学员forum的提示、经验拿到flag。由于lab环境比较贵、时间不算很充裕,靶机练习时不死磕,常规的方法枚举、利用尝试后没有结果时,从论坛获取帮助、提示后继续。
加购的lab环境到期后,计划在回顾一下学习记录后约考。但是考试发生调整,增加AD内容而且占到40分之多。这简直就是晴天霹雳一般,无奈约考延后一个月。利用一个月的时间重点巩固AD的知识。
最后一个月的ad学习主要集中精力在教材中ad以及最后的实战章节,重读教材、回顾lab环境中ad相关靶机。由于lab环境的两个ad的靶机都完成了,网上看到通过学员的分享中提及ad的部分普遍反馈比较简单、教材中的内容完全足够,所以重读教材后,找了些ad的内容学习以后,就约考了。
牛刀小试
约考的时间在2月份,正值过年期间,时间比较充裕。考试是8点开始。
头一天晚上也确实比较激动、紧张,睡得不好。
一大早起来,喝点水洗漱完毕,简单吃了点东西就开始了。
登录监考网站,配合监考员进行认证,看护照、抱着电脑环视考试环境一周、共享屏幕,大概花了半个多小时。
连接,运行环境检查脚本,发送日志给监考员,正式开始考试,此时已经将近9点。
当时抽到了bof的机器,所以首先从这里开始。大概花了1个小时不到拿到local,提权花了2小时没结果,暂时放弃。
时间将近中午,和监考员说了下就去吃饭了。这时候心情是不太好的,一个上午只拿到1个local,进展不算顺利。所以吃了饭没休息就继续了,转战AD。
花了半小时拿到1台AD的local,有shell没有账号密码。之后的5、6个小时没有任何进展,枚举、提权、横向移动,各种试、各种无果。中间喝水、短暂休息大概3、4次。
时间来到晚饭的点,中断考试先吃饭。吃饭的时候都在不停的想哪里搞的不对,哪里遗漏了,根本停不下来。当然,心情也很低落。
晚饭结束后继续,切换目标,开始看另外两台独立的靶机。然后…
最终在17个小时的时候,感觉实在累的有点儿扛不住了,一直也没有新的进展,结束了考试。
考试结束后直接睡了,刚躺下还在不停地回响,没多久就睡了,一直到第二天下午起来。心情自然不会很好,所以报告也懒得整理。
之后的一周时间都在休息,完全不想碰这个,不过时不时还是在回想考试过程中的问题。
轻松之后,收拾心情,总结失败的原因的不足,也看了很多他人的失败经验。
失败的主要原因:
问题点 | 原因 | 调整 |
---|---|---|
AD域 | ad知识非常薄弱,盲点较多,一方面练习也不够;ad枚举、横向移动、提权; | 补充AD知识学习,记录笔记,完成10 ad target练习 |
win提权 | bof host及拿到local的ad host,5-10小时提权无结果;盲点:提权枚举及利用、win kernel exp利用、winpeas结果筛选及甄别; | 完成10左右win target,手工枚举,尽量不参考hint/walkthrough;win提权 note整理; |
笔记记录 | 目前用wiznote,考试中不明原因卡顿不止,切换笔记加载非常慢;另一方面,笔记记录相对杂乱,查询不变;依赖hacktrick在线note,网络原因同样加载非常慢 | 考虑换vscode markdown记录;整理笔记,增加条理性 |
网络问题 | 考试有监考,需开启屏幕共享,感觉比较占网速;尤其查google需要飞机,监考也过飞机流量,导致网速也比较慢;当前使用mbp2016 13寸,平时用感觉还好,没有卡的情况,考试时确实很卡 | 监控session使用firefox,chrome进行google search; |
考试时间安排 | 本来计划一早开考,干一个白天应该差不多,如果进展不顺利晚上继续干;实际上,坐一天非常累,脖子痛、腰酸,到晚上10点左右感觉扛不住了,身心俱疲,直接导致没有继续的想法; | 考虑中午开始,适当安排休息;晚上可以考虑睡一觉,休息好再继续 |
屡败屡战
根据总结的问题,花了两个月时间针对windows提权、ad域的内容巩固、练习。期间主要使用pg、htb资源,完成50台左右的靶机。同时重新梳理了笔记,不断的进行查漏补缺。提前半个月约了第二次考试。
第二次考试下午2点开始,认证过程比较顺利,20分钟完成。
没有bof机器,直接从ad开始。花了2小时拿到1台AD的system,还算顺利。之后的情况急转直下,dump creds、横向移动,各种尝试都失败了。怀着沮丧的心情转战3台独立的机器,然后只拿到1个local。最终无奈放弃。
第三次考试,情况差不多就不细说了。
几次失败之后,一度想放弃了,花了这么多时间、考试结果惨不忍睹,整个人心气儿已经消耗殆尽。好在家人积极鼓励,慢慢收起沮丧、低落、消沉的意志,回顾两次失败的情况,认真记录、分析不足和薄弱环节,继续准备。
因为这次失败以后,并不着急约考,计划准备充分以后再说,所以期间花了4个月的时间继续巩固、练习。
参考TJ_null list 以及 德勒安全 的分享,pg、htb、thm资源都有进行学习,完成大概100台左右的靶机练习。
htb的资源,有不少windows、ad相关的靶机,认真看了ippsec的视频,学到很多的小操作非常用。
thm的资源,认真学完了offensive pentest、ad、windows privesc等内容。
pg的资源,完成了德勒推荐的靶机。
期间还找了网上一个offensive 的ad资源在本地跑,参考ired.team练习ad的技术点。
感觉准备的差不多了,提前10天约了最后一次考试。考前10来天看整理的记录为主,陆陆续续做了几台htb的靶机,轻松为主。
最后一次考试
10点开始,花了半小时认证,总体还是比较顺利。
开始之后,看到ad的机器还有点小忐忑(和之前ad的情况不太一样啊),不过对心态影响不算很大。按自己整理的记录,枚举、利用尝试,最终花了5-6小时拿下ad,进展还算顺利。
此时考试已经过去8小时,休息大概花了1小时,但是因为ad的记录不全所以revert后复现浪费了2、3个小时。确认记录、flag无误后,暂停考试休息一下。大概休息了一小时,期间还下楼溜达一圈,心情倍儿好。
休息好之后,继续考试。这时候的心情自然不用多说,毕竟已经拿到40分,随便搞定一台独立的机器加上bonus就通过了。
然而…对,这里必须得有个转折。
三台独立机器,进展不能说顺利。其中1台完全没有思路,另外两台都找到了漏洞,而且我坚信找的漏洞没错,但是各种利用都没办法获取到shell。之后5、6个小时里,来来回回在三台机之间切换,最终拿到了两个local。但是时间也到了清晨,实在太累了想睡一会儿,和监考说了下就去睡觉了。
睡了一个多小时,起来继续战斗,距离考试结束只有1小时多了。
回过头来看找到漏洞的靶机,突然灵感迸发找了之中一个的关键信息,但是因为时间紧迫还有点儿紧张,好在无惊无险的拿下了。
考试结束,睡觉。
一觉醒来已经到了傍晚,整理报告、打包、上传,这个过程总共花了6个小时。
报告写的比较简单,2个小时就完成了,上传反而花了很久。因为之前没提交过报告,所以花时间看了官方的报告要求、练习报告要求、压缩要求、上传的要求。
上传的时候还出了个小插曲,不清楚什么原因。在本地使用微软的office转pdf、压缩,提交时一直提示格式还是啥错误,不成功。检查文件名、重新转pdf、压缩,试了很多次都一样。后来换了一台Intel的mac重复操作,竟然还是一样的结果。当时已经半夜1、2点了,第二天早上还要上班所以必须要上传提交成功,没办法就来来回回的检查、重新转pdf、打包,最后还是在kali上用libre office转pdf后成功上传。
提交报告后,等了大概3天才去查看邮箱,看到了通过的邮件。终于…(此时心情无法言语)。
关于考试、报名、学习资源前面已经罗列了,这里简单分享一下个人的一些体会、经验,想到哪里写到哪里。
Q:报考对英文的要求高么?
A:前面顺带也提了一笔,这里再简单说下。个人觉得对英文要求不高,只要平时有看英文文档,基本都是没问题的。毕竟这个是技术认证,英文只是工具,老外整的的认证嘛。报告部分也不用担心,官方对非英语作为母语的学员要求还是比较简单,能说明清楚漏洞、能够复现即可。即使英文非常非常一般,大不了多花点时间背单词,配合翻译应该问题不大。
Q:对于甲方做安全的人员来说,认证的意义大么?
A:就我个人而言,意义还是蛮大的,不仅拓宽了知识体系,而且对于之后的工作以及个人对安全行业的认识都有帮助。何况,官方的材料整理的非常好,体系化的介绍了渗透的知识。当然,最终还是得自己考虑,结合自身情况来看。
Q: 关于考试有什么经验分享么?
Q:24小时完成6台机器,时间够么?
A:时间肯定是绰绰有余的,有不少学员满分通过,也有学员不到一半的时间就完成。所以时间肯定够用,关键是没思路了。老外的经验分享,经常提到一句话:You’ll run out of ideas before you run out of time.
Q:考试开始时间怎么选择比较好?
A:看个人情况选择比较好,比如平时练习时间点,什么时间思维活跃,什么时间休息等等。就我个人而言,试过大清早6、7点开始、上午开始、中午开始,还是觉得上午开始比较好。原因有二,1 早上睡个自然醒起来,吃点饭准备准备刚好可以开始;2 假如进展不顺利,到晚上还是睡几个小时,第二天早点起来还可以继续。3 可能进展顺利,一个白天搞定就不用熬夜了。
Q:考试时喝点咖啡、茶、功能饮料有用么?
A:看到过一个老外的分享,也是失败了几次最终通过,他就不建议喝咖啡、功能饮料让自己清醒,效果不好。所以,实在累了就休息,思路清晰最重要。我在考试中,泡点绿茶喝喝感觉挺好,再准备点零食很不错。
Q:报告提交要需要注意什么?
A:首先,认真的看官方的报告指引,说的很清楚、很详细了。其次,仔细检查报告,注意pdf文件名、7z文件名不要搞错,提交后验一下md5。如果因为报告提交失败了,真的比较亏。
Q:练习中没有思路的时候要不要看walkthrough?
A:坦白讲我是看了的,而且我认为每当卡住的时候,无非就是这几个原因:枚举漏了关键信息;利用的时候操作失误或者命令写错了;这个知识点完全不知道。所以,当我在遇到这种情况,排除了前两个原因并重新来过还是失败,就可以考虑看walkthrough是哪里出现了问题,否则死磕半天可能也是浪费时间。这也是我对try harder的理解,仔细的审视已经获取的信息、检查是否有明显的错误或者失误、继续进行枚举寻找突破口。
Q:Kali 虚机要不要时常更新一下呢?
A:官方教材中好像有提及,应该是说没必要做更新,给到的kali完全是够用的。当然也不是不能更新,记得做好快照做好快照做好快照,重要的事情说三遍。我就经历过没及时备份,kali莫名其妙的原因就不能用,之前lab、练习的记录全部丢失。
Q:M1 芯片的Mac备考有问题么?
A:完全没有问题,现有的kali arm版本已经够用,大部分工具都已覆盖。起初也是用Intel,实在本子太老跑起来呼呼响、又慢,换了M1的mac,简单折腾过几个问题,比如kerbrute编译arm、交叉编译等等,后续整理发出来。
暂时就分享这么多,后续有想到其他再补充。
另外,整理记录笔记以及一些tips会陆续传到github,有兴趣可以查阅。
ps: 不能保证笔记全部正确,参考前务必自己试一下。
最后,祝各位备考的同学一次通过。