#> RESTKHZ _

休止千鹤 | 我依旧是一名平凡的学生

OSCP考试的一些经验教训:我是如何失败的?学到了什么?该怎么准备OSCP?

  休止千鹤  |    29/07/2024

更新:这是2024年8月份的OSCP.此时还有Bonus, 还没有推出OSCP+. 考试内容和难度可能改变。

本文曾经简单总结OSCP Challenge lab中的一些教训。和应试技巧。比较零碎。

今天考了OSCP,挂了。那我更新(更正)一下。我要把我耻辱的失败经历分享出来,挂互联网上。

我相信你们看过很多文章,标题诸如“我几个小时通过了OSCP”
所以我要发一个我如何24小时挂了OSCP

也是一个忠告,千万不要已mock exam衡量你是否能通过考试。你的经验和知识应该完全高于教材。考试可能会用到你平时没用过的工具,遇到教材里从未出现过的场景。

这么说吧,曾经,本文总结的应试技巧部分没有任何作用。考试考下来,甚至都没有出现SQL注入。几乎所有web服务都不是获取立足点的地方。请各位都不要学我,试图当一个做题蛆开始总结套路。

如果你这样,你只会被出题人套路。

那我就把这篇文章标题和内容修改一下,我把我自己钉在耻辱柱上。然后,我来谈谈:

我是如何失败的?考试之前

考前几天做Challenge lab做到过拟合,换句话说就是惯性思维很重。我觉得我写出之前应试技巧的文章就是最好的表现。可以说这种惯性思维可能毁了整个考试。

尽管官方说明OSCP-A,B,C三套lab是mock exam,但是只有结构像。思路和难度不一样。
(下文我会说模拟考试,mock exam,都是指Challenge lab里的这三套题。)

先说说我的mock exam吧。

  • 我的OSCP-A的AD域是去看了提示的,那个时候还在找手感。
  • OSCP-B我已经可以独立在4小时内拿到合格分,带上stand alone那些机器总共12小时全部拿下。而后把OSCP-C留到考试之前。
  • OSCP-C的AD域我已经可以自己2个小时解决了。带上stand alone和bonus。当然stand alone总是有简单的,所以就是AD+一台stand alone+ bonus,达到通过分数。总共可以在3到4个小时之内完成。

这三个mock exams的AD基本上都是一个套路:
第一台机器通过web或者一个明显的有漏洞的服务可以轻松拿下,搜集信息,提权,拿到域用户,接下来喷射或roasting。而后的提权也就教材上的几种套路而已。甚至我都有比教材更快的方法提权。
以上重复几次可轻松拿DC.

简单地说,就是我当时已经觉得顺风顺水了。
当时觉得我6个小时绝对可以通过OSCP。拿下DC,stand alone根本没在怕的。毕竟之前也打过一些HTB和好几年的CTF。经验还是有的。
Stand alone似乎有知识点侧重或者难度梯度。反正我个人感觉难度不同。
我想我三台打两个应该没问题。
所以,考试之前,我是信心满满。

我当时还和朋友聊medium上一个国外老哥说他有CISSP结果怎么还考了三次OSCP。

现在看,我就一傻逼。整个互联网,记住我我是大傻逼

考试过程:

一上来就冲着AD. 遇到了一个有J***sweb服务的AD域。
对着J***s搞了将近四个小时,根据以往经验一通操作,试了无数exp,不断扫描,爆破。

然而毫无结果。

我已经有点慌了,
因为按照套路应该是exp或者注入直接踹开大门。怎么能没有结果呢…

感觉不对,所以申请休息,做了调整。换思路才开始向正确的地方走。

细节要保密就不说了。反正还是枚举,破hash,凭经验猜测,roasting,Bloodhound(然后要找到并利用某个有点冷门的ACL),最后密码喷射。环环相扣。这里一步一步十分顺利,日常有训练。但是难度完全高于教材和mock exam,工具并非像模拟考试中用的一样简单。需要有一定经验积累才能应变。花了大概三个小时。然后拿下域第一台机器的local。(对我没写错,这一通操作只是为了拿了一个local。)

我第8个小时拿下第一个foothold. 然后接下来才开始真正的折磨:提权。

  • whoami /priv几乎没有权限
  • 几乎没有哪边可写
  • winPEAS告诉我,服务,绿的。任务计划,没看到什么可以利用的。
  • 没有找到太多有趣的文件

所以应该不是教材里的经典提权技术。

其实一开始我就一直怀疑和某个(另一个)用户有关,而后再搞j***s系统,但是就卡这里了。现有的用户对于j**s是只读的。我第一反应是读个hash爆破成不?是bcrypt,哈哈,这还破个毛。尽管如此我还是尝试用了一些精选字典,已知密码+rules但是无果。

可能线索在另一个用户身上?但是没弄成。
期间我还尝试了启动项,注册表这类的提权方法。但是OSCP应该不会安排这种。当然结果也没成。

(后补:的确和另一个用户有关。其实直觉思路没问题,但是用到的那个工具是我的知识盲区。我不知道如何在有UAC限制的情况下搞。其实我考试的时候已经找到并且试图去用那个工具了,但是可能熬太久了脑子不好使,当时没用对。参数都写错了,然后就一直以为这条路不通。)

就这样盲目尝试,6个小时以后我撑不住了,脑子里只有机械的重复。天快亮了。所以我和考官说我要去睡觉。我毕竟早上七点起的床,下午才开考的。我已经连续醒了20+小时了。
睡前我有一种溺水的感觉。物理意义上的。我觉得我溺水了。

而后睡了4个小时,闹钟叫醒醒了,但是巨难受。头痛想吐,眼屎糊着手机屏都看不清。所以又补了1小时,好了不少。但是感觉脑子没那么好用了。

我听到脑袋里的声音,感觉败局已定。

这个时候距离考试结束没有多久了。我又试了试AD域,然后打算放弃(其实对于我来说等于放弃考试了)去看看stand alone. 结果又被FTP坑了。匿名登录成功,但是被动模式几乎不通,直接换主动模式, wget,但是下载下来的文件大多数又是损毁的。(后面发现可能是出题人故意的,那些文件本就是损毁的)

反正又纠结了一两个小时(我也不知道我在想什么)。趁着最后三个小时拿了俩Stand alone。有一个stand alone倒是挺简单,另一个有CTF味。

结束前半个小时也不打算做第三台了。虽然破解出了个什么但是还是没拿到local,当时也没思路,时间不够提权,拿不拿也没意义了。

最后十分钟和考官说了一句谢谢,聊聊天,然后结束考试。

报告是不想写了。写了也没有意义。

总结

  1. 惯性思维浪费我了精力最好的4个小时。
  2. 我这应变能力算强还是算弱?我自己只能说不够强。
  3. 时间安排不好,对AD域太执着。放弃AD哪怕给Stand alone多两个小时可能还有救。
  4. windows训练可能还是少了点。或者说有点难度windows题,少了点。

经验和教训

  1. Challenge Lab的mock exam难度和OSCP考试是两回事。
  2. 一定要多打AD靶场,打很多AD域一定要非常熟悉域枚举。
  3. 对于我个人而言要多训练提权。Windows和linux都要练习。但尤其是Windows。因为域可能压在这上面,可以说你对windows的经验决定了你能不能过。而我去年玩HTB打的绝大多数机器都是Linux。
  4. 多种常见web服务和某些No-SQL之类的玩法可能要提前熟悉。
  5. 刚开考的黄金时间可以放在这里,但是不行的话要果断放弃,给stand alone保留时间。

Stand alone

  1. 给stand alone保留12小时(不包含睡眠)。如果你有Bonus而且AD域的确不好搞,应该去尝试去拿下全部stand alone. 因为就算你AD域花了4小时解决了一个提权,但是这不代表你就拿到域控了。而4小时提权确确实实有可能拿到proof有10分。
  2. FTP传输文件慢考虑换模式。文件损毁直接问考官。大概率是故意的,但是还是要问。
  3. 基本就是靠枚举和猜测。有人说落脚点很难找,其实我觉得还好吧…比HTB简单…
  4. 同样,多种常见web服务和某些No-SQL之类的玩法可能要提前熟悉。

训练

  1. 我觉得我应该直接订阅他们的PG(靶场)。TJ Null给出的HTB可以作为补充,但是最后可能还要回归PG。毕竟PG也是他们搞的东西,有人说出的题像。
  2. Reddit上有人质疑TJ Null给的HTB列表是否有用,我只能说谁打了谁知道。HTB和OSCP的确有区别,但是这也的确训练了你的应变能力,还能帮你见识见识一些所谓的常见应用。((咳嗽)暗示应该点到为止)
  3. Challenge lab一定要打, 至少为了Bonus你也要打。但是别把Challenge Lab的经验当回事。Challenge lab还是能帮你找点手感的。不过没有帮助也打得顺利代表你学得不错,但不代表考试能过。(当然现在据说Bonus被移除了)
  4. 训练卡半个小时后,我觉得看一眼答案没问题。但是一定要搞明白为什么这样弄。但是答案不应该提前看。不然不好玩了。

考试和之前的准备

  1. 尽量不要把考试选在你醒来的6个小时以后。
  2. 准备一个USB摄像头。考试前要检查桌子和房间。笔记本双屏+线多可能很麻烦。
  3. 安排睡觉时间。因人而异。
  4. 硬件的话推荐内存至少16G+
  5. 推荐用kali,但是我kali基本只是用来运行CME的。非kali有些工具版本可能会给错误结果而且不报错,误导人。

另外

结束以后去看了Reddit的讨论,我不能得到一个确切的结论。
所以我就总结一下我的猜测吧:

  • AD域考试难度不一致:有人考了几次,发现AD有难有易。
  • 有人打了三个stand alone直接没管AD,过了。
  • 有人说23年9月以后题目变难(没有证据)
  • 有人说j***s是地狱难度AD(感觉不止一个j**s题)(你当我自我安慰吧)。

所以呢?做好准备吧。谁知道你会抽到什么题目呢?不要心存侥幸。
不然的话,看看价格

考试冷静期并不短,也并不长,但是考试。虽然补考和别的很多考试价格差不多。

啊,还有:

硬件上面内存8G我觉得至少,16G不算多。官方有自己的说法,但是如果你要有bloodHound CE那么16G都不算多。
暴力破解hash上面如果破解不出来就真的破解不出来,别想了。
如果有破解,不需要GPU应该也能快速破解。
因为很多密码基本是rockyou前100万里选的(不负责任的一句话,总之就是会很快)。

再说一遍,推荐用kali

接下来我打算做什么?

  1. 我本科还没有毕业,最近我不打算再搞OSCP了。我生活/生存上还有一堆事情积压着要去解决。
  2. 但是我可能在周末会继续搞HTB之类的。
  3. 会搞个PG打打。PG是OSCP官方的,据说更加接近OSCP题目。
  4. 但是,我没钱了。找个工作吧。

买了四瓶啤酒,考完试我睡不着。

考完OSCP我感觉有点沮丧,但是我觉得相比reddit上一些人说的,也强一些。
我的目标就是OSCP。以后是OSCE3。

近期目标:

  1. 活下去
  2. 我要钱
  3. 至少熬过大学。

原文

永远枚举。永远积极试探。广度优先搜索。

  • 有些端口Nmap也不知道是什么。nc连上去,随便发一些字符串,version,help什么的。看回应。说不定是一些有漏洞的冷门服务。
  • 眼瞎,扫描报告里在高端口号上有一个ftp,死活没看见。白费一小时。没思路记得看一眼扫描。
  • linpeas其实已经告诉你了,自己却偏要花时间慢慢摸。
  • exp用不了?简单看一下为什么,有时候直接放弃不是坏事。可能别的地方有路。有时候利用成功没有shell,可能也是刻意这么设计的。出题人就想坑你一下,嘿嘿
  • 目标暴露的pdf里面提到了一款软件,其实靶机有运行。但是自己就是没有去搜索这个软件的exp。
  • 看见域名,记得改hosts。尤其对于一些http服务。如果没有思路,一定记得改。高端口的windows HTTPAPI居然也能藏东西。域名有时候是通往下一步的钥匙。
  • 区分验证方式!!验证有时候是windows本地进行的,有时候是DC进行的,这不一样!!
  • 有时候信任CrackMapExec但是被它坑了不止一次。或许是我不熟悉这个工具吧。

我自己写的小工具AntRecon
为了OSCP专门做的侦查工具,未必优雅,但是能用。
功能:
没有复杂的参数,只针对单个目标,直接加个IP地址就行。
nmap TCP全端口+部分UDP扫描,自动web侦查枚举,自动搜索searchsploit。
缺乏域枚举能力。以后考虑加上。

机器上面会有一些非常刻意设计的进攻路径

  • 比如你拿到了一个普通用户shell,无法提权; 又看到一个只能靶机自己访问的http服务,发现有LFI。虽然很不想相信这点,而且我一开始的确就无视了这些,但是,从LFI到getshell到提权,这真的是一条路。www-data居然可以任意sudo
  • 每次都一知半解的去读id_rsa,但是其实还有id_dsa, id_ecdsa。还有别的很多东西。

你应该用kali:

  • 首先我用的不是kali
  • 曾经解决了一个问题。ssh2john转的hash有问题, hashcat破不出来。因为我这里版本太旧。我一直翻到ssh2john源码才发现这里有坑。但是kali没有这问题。
  • crackmapexec有时候也有奇怪的问题。比如rdp不成功。懒得解决直接用hydra去了。
  • Bloodhound CE吃巨多内存。当然这个和kali无关。
  • 我有试过用Empire。但是感觉就那样。docker下很多功能有问题。上传文件还有大小限制。唯独跑枚举脚本,开个新shell挺舒服。官方没有禁止别的开源,非自动,非商业c2,但是感觉有时候又大材小用了。

转发和穿透:

  • ligolo-ngssh就够用的很开心了。ligolo-ng熟练以后比官方教的那个chisel好用太多了。

通用

  • 有服务,没思路,结果又不对?回去看教材。当然考试遇到这种情况通常迟了。
  • 如果,你在一个思路上遇到问题,在解决的过程中花了半个小时,立即,放弃这个思路!这个思路很可能就不对!
  • 不要假设一定某服务就有某个问题,不要假设某个服务一定有那个exp,不要假设某个linux内核一定能用那个exp!不行?退一步。

AD域的套路和应试

说好听点叫:OSCP方法论
我不能保证一定有效,写这篇文章的时候我还没考试。
这些都是我打Challenge Lab后总结的。

目前都只是猜测,你看着乐一下就好:

目标是windows,有web:

- 因为官方不许用sqlmap所以应该会简单。所以:

  • 看到登录可能就有SQL注入,如果有,并且ASP.NET, 那么大概率就是mssql,而这通常只可能是堆叠+xp_cmdshell走RCE。不太需要担心更复杂的SQLi。一切操作都是教材中的内容。
  • 非常建议把xp_cmdshell开启的命令保存,Burpsuite到时候直接导入跑一遍。
  • 不是SQLi?Fuzzy一下。Fuzzy经常能给你一些惊喜,尤其是你觉得web输入框很可疑但是又不知道哪里有问题的时候。 web看到会远程访问的输入,那就试试Responder。反正AD域中总是很快给你落脚点。

嗯…如果还是没啥东西,就看看别的端口上的服务了。看看能不能下载到什么。web路径爆破再看看?

估计是官方AD域为了不要太难,耗时不要太长,考点设计和路径长度应该有限:

  • 所以大概率可以用xp_cmdshell这些简单方法踹开大门后:

    • 第一步,永远whoami /priv。为了限制耗时,感觉出题人有可能在这里就埋了答案。
    • 留意c:\,进行一定程度的搜索。出题人经常会埋一些有趣的东西在这里。而后:
      • 通过计划任务
      • DLL劫持等手段提权。
      • 但是推荐先WinPEAS看看。
  • DLL劫持官方是要你用工具监控DLL的调用,但是我偷懒直接都是strings然后搜索DLL。

  • 永远记得找密码, 看用户,永远记得搜集信息!到处翻翻!
  • 有时候smb空会话依旧要求验证。手动试一下。工具未必靠谱!!!
更新:

考了,挂了,这个经验没用。

横向移动:

之前记得扫描一下内网机器。当然总共就三台,拿下第一台后下一步是哪一台?可能是DC吗?你觉得呢?我不好说。

  • Rubeus,exe
  • 密码喷射
  • SharpHound,虽然通常不需要,但是不用这个感觉写报告有点麻烦。各种Roasting你都猜出来的?当然别的工具先斩后奏也不是不行。

以上这些都在教材里面。重点复习和操作,锻炼感觉。
然后呢?就没有然后了。开开心心拿Proof吧!

目标是Linux的独立机器

这个就很复杂了,没什么太多应试套路,基本都是出题人在套路你了。

还是那句话,不要错过任何报错信息,不要错过任何端口,未知端口必须nc看一下,敲敲version, help之类的。

任何信息都可能至关重要,很多时候只是一个暗示!但是只要你没当回事这题你连落脚点都拿不到!

实际上可能只需要你searchsploit跑个exp就能拿下,但是你就!是!想!不!到!

提权没啥好说的, 跑linpeas之前,我喜欢sudo -l 看一眼,但是通常,也不会这么简单。

另外,发现一个现象,需要你编译exp的,目标上一般有gcc。linpeas.sh跑完没思路?看看有没有gcc。如果有,可以考虑一下方向:提全可能需要编译的exp。

别的操作系统

不排除这个可能,建议最后有时间弄。
因为可能会花费大量时间和精力在研究我如何操作一个操作系统的事情上。

其它

web等的有编码问题,蚁剑有时候对于命令执行也不能正确转义。需要注意单引号双引号转义。但是蚁剑传输文件贼爽。

会一点linux bash shell脚本编程会爽。

工具可能不好用。crackmapexec的某些功能可能不好用。比如RDP。
RDP喷射用Hydra
有些工具RDP也会误报,比如这个帐号所有机器全都能登录。为什么呢?因为不兼容域。域会说,你密码对了,但是你没有权限RDP这台机器。结果有些工具只听到前半句了。

Powershell-Empire我用了最新版,时间长了发现在考试场景中很鸡肋:SharpHound版本不兼容。几个自带的工具貌似也用不到。UI操作点点点很麻烦。信息搜集?上一个winPEAS比他全。域?上SharpHound。roasting?上Rubeus。转发?它用chisel. 我用ligolo。我一开始就想让它帮我处理文件上传下载的问题,但是文件传输大小又有限制。


Views:

 Comments


xianling88:

加油啊!!!

 Reply


zkw:

域控除了Tj Null给的几个还有推荐的吗

 Reply


YSN:

谢谢师傅分享,加油!下次肯定没问题的!

 Reply