OSCP 从开始到结束

Posted on March 27, 2024 (Last modified on June 19, 2024) • 5 min read • 2,340 words
Share via
 
 
 
 
 
 

OSCP 的一些学习思考

OSCP 从开始到结束
Photo by Arget on Unsplash

初衷  

2023年末在修复完现网 ingress-nginx 漏洞的时候,突然想着怎么从攻击者的角度去审视一些业务本身漏洞,并以此优化业务的网络服务暴露问题,同时规避漏洞带来的一些安全风险。公司内有 cisp 相关的安全培训,仔细查阅到相关考试内容就果断放弃了。后续在查询更具有说服力的认证的过程中,看到了 oscp 相关的内容,便开始了学习之旅。

oscp 具体是啥,简单理解就是颇有难度的国际认可的网络渗透相关的实操考试。

OSCE3之路 - OSCP | PEN200 - 4xpl0r3r’s blog

OSCP 考试心得

起初完全不知道怎么根据自己的实际情况,做学习规划,只能去找各种攻略。印象里找的很辛苦,终于找到了一篇救命的大纲。The Journey to Try Harder: TJnull’s Preparation Guide for PEN-200 PWK/OSCP 2.0 | NetSec Focus 工作日外花了大概一周的时间,去阅读和查询相关的术语和资料,这篇大纲攻略写的非常棒,几个月后,依然是心中的 NO1。看到很多人问,学习 oscp 是不是英语要很好才行,这个其实我不知道怎么回答。只知道 oscp 需要大量的内容案例输入和靶/真机实践,这些案例几乎都是英文,真/靶机全是英文。

过程  

后面根据自己的实际情况,开始在 TryHackMe 上实践。首选他的另外一个原因,国内可以很方便的通过一些渠道,得到价格比较低的付费订阅。能给后续的其他昂贵的靶机测试,争取足够的知识积累缓冲时间。虽然国行 visa 可以很方便的支付其余靶机资源站点,但是看到价格,我立马就犹豫了。只了解一些网络的安全知识,实际攻防背后是怎么操作的,完全没有具体的概念。历史的外部经验输入都是影视剧的黑客桥段,比如几秒破解 FBI 库,《 Mr.Robot 》中疯疯癫癫的 Eliot 还稍微正常一点。对于很多基础概念是缺乏常识的,当然钓鱼软件,sql注入还是知道一些的。在安全方面,还是小白。到底要具备多深厚的网络/系统/编程知识,才能正式开始靶机练习。经过后面一些实践发现,想太多是多余的。动手先做,慢慢的就明白了。

由于缺少必要的背景知识,先在 TryHackMe 上学了一些付费课程,看了红蓝队/观察手/僚机等等相关的基础知识,看了一些 APT 的案例。并有意识的实践做了一些靶机任务。实践的过程中,要想掌握这些东西,远比自己想象的要花更多的时间精力,也充满挑战。记得好多年前学习 CCNA 的时候,也是很迷糊,但不得不说很多知识需要很多依赖铺垫。他的官方的文档写的很棒,看的也很"享受"。不知道是不是看的太细,还发现了官网文档的一些语法错误。学习一个任务模块,刚开始会花很长的时间,陷入查找单词和术语查询上。虽然大部分术语,官方做了很好的解释,想着理解的更深刻一点,还是额外查询做了一些功课。在此要感谢 chatgpt 和 devv.ai 两个"小伙伴", 在自学的过程中帮了很多忙。他们不会烦,也很有耐心,随时随地的都可以咨询他们,24 小时 on-call。

渐渐的理解了,为什么一些大佬很感谢家人的理解和支持。如果下班后,没有他们的理解和支持,想额外学习相关的安全知识,简直不要奢望。有时候,会怀念刚毕业一个人的时光,那个时候想做什么,都没有那么多的阻拦。在练习了一些靶机试验后,心里很感激,感谢家人的忍让和理解。

靶机小例  

来举一个小例子吧, web-shell 的问题。

通过 kali 的 gobuster 字典分析获取到网站的 api,在通过 api 上传本地的提权脚本。点击脚本任务下发,本地 nc 打开端口转发,获取登录当前应用的后台 shell,在通过应用本身攻破宿主机拿到 root 权限。

详情可以参考如下的分析和实践过程。

RootMe by ReddyyZ | hambyhacks.github.io
RootMe by N00b_H@ck3r

web-shell 的靶机小测试,刚开始完全不知道从何下手。查了很多资料,nmap/nc 扫描分析靶机的端口和应用版本。最后放弃了,看了习题答案。好在很多练习题都是由易到难得,给你做了很多铺垫,使用他们得产品,能感受到 TryHackMe 的产品经理和团队在背后所付出的努力。他们也知道,不能让你起步就太沮丧,先给点容易得,太困难就把你吓跑了。web-shell 是众多攻击手段中,最常见简单的一种,道阻且长,感谢他循循渐进的内容随时保护我的信心。

网络安全

体会  

通过这种练习,发现平时晦涩难懂的机器语言恰好是突破的匕首。很多几乎没怎么见过的知识点小细节,正是突破的关键。面对这些 trick, 经常会有种没见过世面的恍惚。他们对自己的帮助很大,会想到更多的影响因子。生活里不管是技术还是别的方面,面临抉择时,正是需要很多有用的上下文做判断支撑。早期一些错误的技术设计决策,让你跑断腿的事情,也可以在事发前,直接给出充分有力的分析报告。在后续的工作中,莫名会习惯性的从当前视角脱离出来,从整体的技术架构上去反思,系统的安全风险和维护的可持续性。潜移默化的,就变成了职业病,就像警察看见任何人,已经在脑海里进行侧写了。这种思维习惯,在很多事情处理上颇有益处,不知道在工作上算不算好事,只能继续时刻提醒自己的有限和不完整,仍然要时刻保持警惕。

现实世界中不少环境都可以通过 web-shell 的方式获取到远端服务器的 root 权限,比如点击危险的钓鱼不安全网址链接,本地的 win/mac 就会沦陷。或者访问不知名网站,对方要求输入验证码,实则背后在对你的浏览器注入提权获取相关的 cookies,渗透完全防不胜防。有时候甚至隐隐的感觉,你不用懂 APT,也不用懂很多安全知识,只要会用脚本,就可以做很多攻击任务了。作为漏洞修补方,自己感觉还挺辛苦的,好多漏洞的修复过程,很花时间也很挣扎,deadline 以小时为单位。

后记  

出于职业和生活的规划,暂时没有考取 oscp 的打算。春节期间停摆了一个月,后续又重新开始投入。最大的感受就是好多感兴趣的东西,一旦琢磨上手起来,需要超预期的时间精力投入。在这点上,有时候还挺佩服 tk 教主和 livid 的。学习 oscp 的过程有痛苦和挣扎,回头看还是挺"快乐"的。多学点 trick, 让工作变得更"舒服"一点。

在本文最后抛出一个小问题,ssh 到 A 服务器上传一个包给 B 服务器,除了 scp、ftp、http、rsync 外,你还知道有哪些快速方便的方法?


Comments

Follow me

I'm involved in Kubernetes coding and share developer memes.