0x00 前言
先说说个人的情况。
首先,我并不能算作严格意义上安全科班出身,属于半路出家做安全。一直以来都是从事甲方安全防护,偏重基于业务侧的应用安全、数据保护、隐私合规。渗透测试于我几乎是盲区一样的存在,仅对web、android的安全测试有些许了解,比如漏洞原理、防护、测试等,利用层面都很少接触。
起初是从之前的同事那里了解到CEH,一个偏重攻击实操的认证,但是考试需要去香港,觉得比较麻烦就放弃了。之后一段时间也没计划学习渗透的知识,随着工作越来越久,逐渐体会到”不知攻,焉知防“的意思。随后考虑OSCP认证,一方面学习渗透、攻击的知识,另一方面也算拓宽个人知识面。
从此,走上了OSCP认证的不归路。
近期终于通过了认证,花时间梳理一下我在准备以及考试的过程,个人记录的同时也分享一点经验给准备OSCP的伙伴。当然,我觉得更多是鼓励,毕竟我考了很多次才通过。
文章的主要内容:
- 基本信息,记录offensive的信息、链接等,方便查阅;熟悉的伙伴可以直接跳过。
- 学习资源,收集与阅读过的资料
- 备考与考试经历,分享个人备考以及考试的过程、经验。
0x01 基本信息
简单介绍官方信息、报名考试、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环境的思路、其他人的经验等等。
关于报名
- 身份认证:通过护照+公司邮箱通过认证并完成报名,注册使用个人gmail邮箱。后面因为公司邮箱收到信息还得转到个人邮箱、外发比较麻烦,在和官方支持沟通后添加个人邮箱(注册账号的gmail)为接收地址。
- 支付费用:使用招行带visa支付的信用卡,基本没啥问题。官方也支持paypal支付。
- 发票:官方支持开个人或公司抬头的发票,全英文。当时公司提了预算给报销,开了公司抬头发票(不确认国内公司是否认可),可惜后来不给报销(无奈)。
- 国内培训:我报名的时候国内没有OSCP的培训,目前看到谷安已经有培训,价格不便宜。如果公司可报销,建议走培训机构,一来发票问题容易解决,二来方便找到伙伴一起学习、交流。
- 英文:培训、材料、考试均为英文,我确实也纠结过这个点。目前看英文不是主要的问题(笔者也就六级的哑巴英语水平),只要有点儿基础配合翻译也还好。教材中文字不是很难理解,看多了就习惯了。
其他可以参考知乎上这篇文章关于OSCP和Offensive Security , 找博主好像可以打折(95折),虽然不很多,但是也够好几个月的pg或者htb订阅费。
关于lab
购买课程后,培训课程并不立马开始的,中间有一些认证的工作。培训课程的开始时间记得是可以选择,在通过认证后的几天内。课程开始前会邮件发过来必要的信息,主要用到的如下:
- kali vm文件下载地址。https://help.offensive-security.com/hc/en-us/articles/360049796792
- vpn pack、vpn账号密码; vpn guide
- control panel and client地址
- 三台client及其账号密码(windows client、linux client、windows server)
- 官方pdf教材
- 官方视频教程下载地址
- 其他一些支持的信息
Lab 环境拓扑如下,模拟多网段的企业环境。建议读一下guide.
关于考试和报告
-
考试形式:在线考试,有在线监考。
-
考试时间:24小时,实际23小时45分钟;监考人员会提前15分钟断开vpn(x点45分的时候);考试过程中可以随时休息,监考会话中知会监考人员即可(不需要等监考人员回复);
-
监考:全程在线监考,开考前监考人员会进行身份验证(比如护照)、考试环境检查(要求用电脑摄像头环视一周考试环境),并在连接vpn后发送一个脚本运行的结果。
-
考试中的限制,
- 商业工具不允许使用,如Burpsuite Pro,Metasploit Pro;
- 自动化利用工具,如db_autopwn, browser_autopwn,SQLmap,SQLninja等;
- Mass vulnerability scanners (如. Nessus, NeXpose, OpenVAS, Canvas, Core Impact, SAINT, etc.);
- Chatbots,比如近期很火的ChatGPT;
-
得分的要求,如下情况讲不得分。
- 使用受限工具;如sqlmap等自动化利用的工具(拿不准的工具可以google搜索看下)
- 多台机使用Metasploit Auxiliary,Exploit,Post module
- 多来机使用Meterpreter payload
- 无法提供local.txt, proof.txt文件内容,包括control panel、report screencapture
-
报告相关
-
report template,官方report模板;
-
cherrytree-oscp-template, cherrytrer模板,course里有提到的一个笔记工具cherrytree;
-
report require, 官方的报告要求;
-
章节练习和10 lab 报告可获取10分(bonus),不要求记录报告的章节
-
如上为摘取部分相关内容,建议认真阅读官方考试指引 exam guide
0x02 学习资源
练习资源
-
vulnhub
- 免费,需本地运行VM,无windows资源
- TJ_Null OSCP like list列举了很多vulnhub的machine,大部分应该都有walkthrough,用来入门、练手都不错;
-
hackthebox
- 免费有时限,收费不贵(10$/month),支持VPN连接或使用在线kali;
- TJ_Null OSCP like list 推荐了很多htb的machine,list有更新;list中有AD相关的machine;
- htb的资源walkthrough基本都有ippsec的视频,可以学到很多东西;
- htb上有个active 101 的tracks,都是ad相关的machine,用来学习、练习ad的内容很不错;
- htb pro labs中有多台机的环境(涉及ad内容),比如Dante、Offshore、Rastalabs;不过启动费比较贵,一个月得100多刀;
-
tryhackme
- 10$/month,不算太贵;
- Learn path里的学习资源很不错,比如Offensive Pentesting适合入门学习,有讲解、有实操;
- 还有一些专项练习的room,比如Attacktive Directory 、Attacking Kerberos、windows privilege escalation、windows privesc
-
pentestit, 没试,不评论;
-
root me, 没试,不评论;
-
offensive play ground practice/pg
- offensive的资源,免费有时间限制,20刀/month,比htb贵一点, 比较多人推荐的资源。
- 有提示和walkthrough,每天限查看1个walkthrough;
- 网上有部分machine的walkthrough,仅限部分;
- 部分machine是考试退役的机器,而且难度跟贴近实际考试(毕竟是自家的资源嘛);
技术文档
前前后后搜集很多技术分享,有些认真的看了,有些可能就是一扫而过;这里罗列部分比较推荐以及报名前学习的内容,其余的记录在笔记中(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的工具等内容;
大佬经验分享
- OSCP历程 ,OSCP备考指南
- OSCP考试指南
- 2020我拿下了OSCP
- 我是如何拿到OSCP认证的?
- OSCP经验分享
- OSCP渗透测试认证
- OSCP Offensive Security Certified Professional
- Trying harder oscp and me , 比较早的分享(2014年)
- Pen-200/PWK, 作者也是首次失败,里面详细讲了作者的大致情况、考试策略、失败经验等等,值得看。
- How to fail, fail, fail, fail and PASS the OSCP!,作者记录了4次失败最后一次通过的经历,过程经历、考试安排值得看,try harder精神。
- Golden ticket’s share, up主介绍了学习及考试的经验,分享的笔记及PG machines值得推荐。
0x03 我的经历
个人的情况前文已简单介绍过,接下来从备考、几次失败经历以及个人经验分享我的认证经历。
备考之路
-
报名前
此时还没决定是不是要报名认证,一方面考虑是否适合,另一方面也是担心可能难度太大。在纠结犹豫中,断断续续找了些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点开始。头一天晚上也确实比较激动、紧张,睡得不好。
一大早起来,喝点水洗漱完毕,简单吃了点东西就开始了。
登录监考网站,配合监考员进行认证,看护照、抱着电脑环视考试环境一周、共享屏幕,大概花了半个多小时。
连接vpn,运行环境检查脚本,发送日志给监考员,正式开始考试,此时已经将近9点。
当时抽到了bof的机器,所以首先从这里开始。大概花了1个小时不到拿到local,提权花了2小时没结果,暂时放弃。
时间将近中午,和监考员说了下就去吃饭了。这时候心情是不太好的,一个上午只拿到1个local,进展不算顺利。所以吃了饭没休息就继续了,转战AD。
花了半小时拿到1台AD的local,有shell没有账号密码。之后的5、6个小时没有任何进展,枚举、提权、横向移动,各种试、各种无果。中间喝水、短暂休息大概3、4次。
时间来到晚饭的点,中断考试先吃饭。吃饭的时候都在不停的想哪里搞的不对,哪里遗漏了,根本停不下来。当然,心情也很低落。
晚饭结束后继续,切换目标,开始看另外两台独立的靶机。然后…
最终在17个小时的时候,感觉实在累的有点儿扛不住了,一直也没有新的进展,结束了考试。
考试结束后直接睡了,刚躺下还在不停地回响,没多久就睡了,一直到第二天下午起来。心情自然不会很好,所以报告也懒得整理。
之后的一周时间都在休息,完全不想碰这个,不过时不时还是在回想考试过程中的问题。
轻松之后,收拾心情,总结失败的原因的不足,也看了很多他人的失败经验。
失败的主要原因:
- 基础知识感觉掌握了,实践不够,好比一说都会、一练就废。
- AD的掌握完全不够,整体的渗透思路、关键技术点还需要加强。
- 当面临ad不顺利的情况,如果调整崩溃的心态继续战斗。
问题点 | 原因 | 调整 |
---|---|---|
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: 关于考试有什么经验分享么?
- 觉得准备好了提前10-30天约考,避免临近时间再约时没有合适的时间选择。
- 考试毕竟24小时,考前休息好很重要。
- 考试前可以提前登录监考,应该可以开始认真流程。我记得有一次考试提前30分钟登录监考,看到监考人员已经在线,并且发了消息。当时主要是为了验证密码、分享免得后面出问题,没注意,所以并未开始认真。
- 考前认证的时候,手机等电子设备就不要摆到台面了。老外都比较较真(认真),看到了不仅要求你拿到别的地方,而且还要看一下放到哪里了之类。
- 考试时心态放轻松,按照自己学习、记录整理的思路慢慢搞即可,不用在意得失;很多人都不是一次通过。
- 考试时,注意时间管理。不建议盯着一台死磕,到头来浪费了时间,毕竟还是有兔子洞(Rabbit hole)的。
- 假如进展不顺利,这时候就考验心态调整、try harder的能力了。平时练习时还是要关注一下这种情况:一番操作啥也没有,接下来如何根据已有信息分析可能得操作失误、遗漏的点,继续进行枚举、筛选关键信息。
- 考试中累了就注意休息,耗着可能也没用,脑袋清醒了才有思路,结合记录的笔记、想想可能得考察套路。
- 利用失败了,注意认真检查命令、payload、端口是不是写错了,合理利用revert(次数完全沟通)。
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,有兴趣可以查阅。
最后,祝各位备考的同学一次通过。
本文链接:https://my.lmcjl.com/post/7866.html
4 评论