OSCP备考分享

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环境的思路、其他人的经验等等。

关于报名

  1. 身份认证:通过护照+公司邮箱通过认证并完成报名,注册使用个人gmail邮箱。后面因为公司邮箱收到信息还得转到个人邮箱、外发比较麻烦,在和官方支持沟通后添加个人邮箱(注册账号的gmail)为接收地址。
  2. 支付费用:使用招行带visa支付的信用卡,基本没啥问题。官方也支持paypal支付。
  3. 发票:官方支持开个人或公司抬头的发票,全英文。当时公司提了预算给报销,开了公司抬头发票(不确认国内公司是否认可),可惜后来不给报销(无奈)。
  4. 国内培训:我报名的时候国内没有OSCP的培训,目前看到谷安已经有培训,价格不便宜。如果公司可报销,建议走培训机构,一来发票问题容易解决,二来方便找到伙伴一起学习、交流。
  5. 英文:培训、材料、考试均为英文,我确实也纠结过这个点。目前看英文不是主要的问题(笔者也就六级的哑巴英语水平),只要有点儿基础配合翻译也还好。教材中文字不是很难理解,看多了就习惯了。

其他可以参考知乎上这篇文章关于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前,参考别人的经验做了个简单的计划。

    1. 花20天时间完成教材学习以及章节习题的练习;毕竟有10分的bonus,可能对我来说更保险一点。

    2. 花40天时间进行lab环境靶机练习,争取完成30-40台靶机环境。

    3. 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 评论

留下您的评论.