Try Harder! My OSCP Review and Course/Lab experience

写在开头:本来打算用英文写这篇博客,后来发现很多心理的感觉,只有中文才能说清楚了(苦笑, 所以还是用中文吧。

整整两个月没有发过博客,因为两个月的时间我拿来去准备考证了, 今天把考证的过程总结一下考试的经历:

What

OSCP全称 Offensive Security Certified Professional.整个OSCP包括三大部分,教材&视频+ lab机器网络+考试:

  1. 视频与教材互为补充,主要普及了一些在渗透测试中需要使用的工具,常见的服务,一些基础的linux shell脚本编程等内容;

  2. lab靶机网络主要包含了大概50多台机器,整个网络分为四个部分,public, IT, Dev 和admin;其中public网络有40多台机器以及学生个人机器,lab的目标是要求学员渗透测试网络中所有offsensive security提供的靶机,获取最高权限并取得proof.txt(类似于flag.txt),有一些机器中会存在net-secret.txt文件,这些文件可以用来相应解锁IT, Dev和Admin子网。

  3. 考试时长24小时,参加考试的学员会被提供5台靶机,不同的机器有不同的分值,攻克并提交proof.txt(root/Administrator的证明)以及local.txt(非root用户证明)来获取得分,总得分超过70分,即为通过考试。

我的lab历程

第一次听说OSCP是在一次失败的实习电话面试之后。同学跟我提到说出kali的那个公司有一个证书,你花800刀去听课,然后就给一个证明。当时心里想着这跟花800刀买一个证书有什么区别,就没去在意。

后来上个学期开始做vulnhub和htb上的机器,浏览别人walk through的时候常常能看到类似“为了做这个我甚至翻出我OSCP时的笔记”之类的话,于是才开始着手了解什么是OSCP。

读了相关的博客和官网的介绍之后,没有暑假实习又不愿意回国无所事事三个月的我报名了OSCP课程+90天的lab使用权,因为我感觉作为一个菜鸟,90天的lab可能都不够我用…

6月1号晚上八点我准时收到了Offensive Security提供的教材与视频,以及我lab的vpn.

因为没有什么基础,所以我大概用了一个月的时间来看教材和视频教程,buffer overflow, ssh tunnel和metasploit的部分花费的时间最长。期间我一直没有开始尝试做lab,因为一种可笑的仪式感:"一定要自己都学完了学会了再开始做lab"。

七月初先是跑去纽约找同学待了快两周,后来又去西海岸看实习的女朋友,整个七月几乎都没有接触OSCP内容,倒是vulnhub的内容一直在做,博客也更的算勤快。现在想起来vulnhub的这些机器给了我至少三点好处:

  1. 无形中积累了经验,常见的web应用攻击手段,提权的一些小技巧,多多少少都从vulnhub的机器中学到了。

  2. 从walkthrough中学到了很多,一个漏洞可以通过不同的方法去攻击,一个系统可以用不同的方式提权,浏览别人的walkthrough, 看不懂的地方去查,并且模仿别人的方法来尝试root机器,让我慢慢的总结出了一点属于自己的方法。

  3. 加入社区,reddit上,slack上也认识了一批同样在准备OSCP的人,虽然我研究生专业是信息安全,但是身边的同学大部分都还是以SDE作为求职首选,在这些社区中跟同样目标的人探讨问题,对我自己的帮助提升也非常大。

8月1日我正式开始了lab旅程。开始之后才发现OSCP与vulnhub是有非常大的不同的,vulnhub不仅需要你有一定的基础知识,还要有发散思维的能力,需要想象力。 OSCP的机器则显得更像真实的生产环境,不同版本的windows和linux机器,不同的机器之间有互相的关联需要我去找到。
我按照IP地址递增的顺序来做机器,起初每天做一台,有时候做一台半(root一台+limited shell 一台),碰到过诸如alice, barry之类的low hanging fruit,也遇到过像phoenix, Bob这样因为一点点疏漏导致一直出错的机器。总之一切还算顺利,直到我碰到了4大天王中的第一个pain.

pain的漏洞说来简单,RFI和LFI都有,我起先没有找到RFI,只找到了LFI,但是又不知道该如何在access.log日志不可读的情况下给它植入后门,后来google了很久之后(这里的很久我是说8个小时)才找到可以放置后门的地方。然后顺利拿到了一个limited shell,但是所有考OSCP的人听到的最多的话就是try harder, 我又花了半天时间找到了RFI,之后的提权也大概花了7个小时,才将pain成功root掉。

拿下pain之后我开始加快速度,保持每天做2~3台的速度,期间陆陆续续拿下了四大天王剩下的三台humble, sufferance, gh0st. 并且依次解锁了IT和Dev的子网。

期间不断的总结,不断的记录,慢慢摸索出一些适合自己的方法。

到9月2日我的lab使用权到期,我只剩public两台机器,以及admin子网的机器没有拿下。之后的十来天我开始复习教程,做hard难度的vulnhub机器(之前只做easy和intermediate级别的)。

考试

我是7月19日上午11点开始考试,考试的5台机器分别是10分的windows,两个20分的windows机器,25分的linux机器以及一台25的remote buffer overflow机器。

因为太过紧张,前三个小时我卡在一台20分的windows机器上没有取得任何进展,中午吃饭的时候整个人的心态有点崩溃了,好在下午三点左右终于有了思路,成功拿下第一台机器,之后另一台20分的windows机器花费我接近八个小时的时间,当我拿到40分的时候,已经是凌晨两点了。

之后我迅速拿下那台remote buffer overflow的机器,凌晨三点左右我在malone hall楼下走了一圈休息了一下大脑,整理了一下思路,还剩7个小时,还差5分。

因为考试中metasploit是被限制使次数的,所以我最终决定用metasploit去攻击那台25分的机器,但是花费了两个小时依然没有任何结果。这时候已经凌晨五点,虽然喝了不少咖啡和5 hours energy, 但是整个人的精神状态还是不可避免的开始低迷,大脑转的越来越慢。我甚至有点绝望的想放弃,下次再考,但slack里一个印度朋友说"如果你这次放弃了,之前三个月的痛苦你还要再重来一遍",整整三个月的痛苦继续驱使着我做下去。

终于在凌晨6点的时候拿下了最后一台10分的windows机器,满打满算75分,通过了考试。我在lab的地板上躺了一会儿,休息了一下,然后回家睡觉,下午3点醒来,写了45页的报告,提交。

结果

周二考试,周三提交报告,周五早上五点被邮件提醒惊醒(其实整晚都没有睡好,一直在梦到出成绩的事情),看到开头的we are happy to inform you......我就知道我已经通过了这次考试。整整三个月的旅途在这一刻画上了句号。一块大石头落地后我安心的抱着枕头睡过了Rights in Digital。

最后还是老套路…感谢IRC和slack中的@bladeism, @stacktrac3, @tenxpain, @tochirou提供的帮助与指导,感谢爸妈和女朋友三个月来的敦促理解与帮助

Thank you, and try harder!