拨云见雾 | 记我的「OSCE3」之旅

admin 2022年7月19日20:17:01评论576 views1字数 5438阅读18分7秒阅读模式
    大家好,我是conor,在2022年7月,我取得了大陆第四个OSCE3(Offensive Security Certified Expert)认证,近半年的学习经历固然是艰难的,获取认证也并非终点,希望通过这篇review,温故而知新,也希望各位看后能有些许收获
    我将首先介绍OSCE3是什么,以及其背后的团队-Offensive Security

拨云见雾 | 记我的「OSCE3」之旅


1什么是OSCE3


    OSCE3是2021年由Offensive Security团队推出的安全从业者技能认证,该认证的获取方式非常独特,在同时通过下列三个认证考试之后,将自动获得,因此其名为OSCE3
  • OSEP (Offensive Security Experienced Penetration Tester)

  • OSED (Offensive Security Exploit Developer)

  • OSWE (Offensive Security Web Expert)

  • 三项认证分别考察:红队攻防、Windows二进制(x86)、代码审计

  • 每个单项都需要在48小时的视频监考下完成,并需要在考试结束后24小时内上传全英文报告

  • 通常在报告提交后一周内会收到结果通知的邮件

    在媒@Paul Jerimy的安全认证图表中,将OSCE3列为仅次于GSE的顶级认证之一,足以说明其在世界范围内认可度

拨云见雾 | 记我的「OSCE3」之旅

    另外,强烈建议先通过另一个更为知名的认证-OSCP,以建立更为全面的安全思维(虽然它作为OSEP的前置认证,但并不比OSCE3的任何一个单项容易)。对于OSCE3的每一个单项,稍后我会逐一进行更为详细的介绍


2、OffSec是何方神圣?



    好的认证一定离不开背后的团队支撑,Offensive Security长期默默无闻的为我们安全从业者提供工具支持,我相信对他们的介绍只需罗列出他们的作品:
  • Kali Linux:基于Debian Linux研发,应用最为广泛的渗透测试OS

  • Metasploit :强大的渗透测试框架,简称MSF

  • ExploitDB :业内最全的漏洞POC库之一

  • Google Hacking数据库:信息收集必备之一


3、认证有什么价值?



    安全从业者长期以来的共识是:证书要么是交钱拿证,要么背了就能过,缺乏实战价值,但这个观点可能并不适用于offsec的认证,本人作为资深"小镇做题家",就在OSCP上遭遇失利,甚至一度非常沮丧,几乎可以肯定的说,具备实战能力的人才能顺利通过考试,这也正是其认可度逐年攀升的原因之一
    那么他的价值到底是什么?为什么三个看似无关的方向要拼凑在一起?如果我们切换到攻击者的视角去看一场攻击事件,首先要思考的是:怎么进来?OSCP教会了我们从已知的攻击手法打开这个口子,OSWE让我们具备从目标泄露的源码、甚至目标使用的开源框架中审计漏洞以寻找突破口的基本能力,OSED则让我们能通过逆向和调试分析来精准攻击目标上启用的客户端程序,OSEP更为直接且接近实际攻防场景:通过钓鱼直接入侵目标
    那么进来之后如何提权、横向移动,最终攻陷整个网络,这也许可以从OSCP和OSEP中得到答案,所以本人认为的第一个价值是:获得全面的攻击者视角
    * 当然必须提醒的是,即使我认为这一系列课程设置得已经较为全面,但安全是高对抗、高即时性的行业,我们学到的是思维方式,在技巧层面仅仅是入门,如果通过考试后,不主动去学习并吸收最新的技术,在实战中一定会爆锤!

    另一方面的价值,也许需要根据每个从业者的工作性质出发去思考,以笔者为例,工作的主要方向为SDL体系建设,那么OSWE认证作为多语言的代码审计课程,一定是需要深入研习的,而OSED可以当做微软的血泪史去品读,当看到GS、SafeSEH、SEHOP、DEP、ASLR、CFG等安全机制的陆续发布和被绕过,就能感受到安全左移的重要意义(写到这里想到Fastjson,相信大家深有体会),最后OSEP课程中也能发现一些针对DevOps的攻击,这警示着我们安全不仅要嵌入流程,流程本身的安全也是需要重视的,相信每一位从业者都能在三个课程中得到不同的启示


拨云见雾 | 记我的「OSCE3」之旅


    另外,在官方discord频道,可以和世界上知名的安全研究者们交流,这非常有趣(现在还太菜,不敢说话)


4、OSCE3学习经验



    关于如何报名、考试等流程性内容已经有不少文章介绍,且官网也有比较详细的介绍,这里不再赘述,这里仅提醒一点,需准备好护照,以证明你的英文名身份


OSEP - 检测规避与内网渗透



    将OSEP放在最前面,首先是出于对OSCP的尊重,因为他真实折磨过我,另外我曾在2022年3月参加过OSEP考试,由于拖延症严重,在最后考试期限时我还未学习完整个课程,最终我在48小时的鏖战中仅仅收获了10分,这也是我的OSCE3课程中唯一retake的科目

    在6月通过OSED考试后,我重新开始进行OSEP的备战,首先我将课程划分为以下几个模块:

    1、基于DOC、HTA、LNK等进行钓鱼攻击

    2、绕过防病毒软件的技巧与方法

    3、绕过AMSI、Applocker的方法

    4、Windows / Active Directory的攻击方法

    我认为课程的设计者是一名经验丰富的红队成员,因为AD域渗透和Windows Defender的绕过几乎是密不可分的,我们不仅要会使用工具,还应该具备自己编写工具以绕过检测的能力,比如:PsExec作为横向移动的重要手段,但会在目标上写入文件、创建服务,这是非常容易被发现的,那么通过分析其他相关的Windows API,去编写无需创建服务、无文件的属于自己的PsExec,应对诸如此类的场景,应是红队人员需要具备的素质之一

       虽然我非常认可OSEP课程,但我仍认为有几点不足,如果官方在未来不在这些方面进行升级,我们自己也应该在这些方向进行扩展以应对实战场景:

1、没有常见域内提权漏洞的剖析:历史漏洞一定有其学习的价值,甚至是实战价值,比如:MS14-068(伪造高权限PAC)、zerologon(AES算法使用不当)、AD CS+Petitpotam/printerbug+NTLM relay(证书服务)、noPAC(协议机制设计缺陷)等

2、免杀思路相对陈旧(这方面本人也是菜鸡,说的不对欢迎拍砖):对于特征码免杀,可以大致介绍壳编写的思路,或许更具复用性;课程似乎没有对于杀软对API的hook机制绕过的介绍,但我认为对于学习过OSED课程的人来说,重写ring3 API或者syscall绕过动态检测是值得一提的

3、缺乏对常用工具的实战化介绍:个人认为对Bloodhound、impacket包、PowerUpSQL这些工具的灵活使用是域渗透的必备技能之一,但课程只介绍了域内攻击的原理,对于这些工具如何应用于实战,留给了学员自己去摸索,不能说这样不好,但确实需要花费不少额外时间

4、域内钓鱼场景未进行介绍:比如WPAD劫持、恶意的html链接、UNC连接钓鱼结合NTLM relay+RBCD的攻击手法,这类技术的讨论似乎从未停止

    虽然但是,OSEP课程仍具有很高的学习价值,关于考试难度个人认为高于另外两门,需要反复的练习,另外,OSCP课程学到的知识也不能丢,切记

    

OSED - windows x86 二进制与逆向工程


 
    该课程是个人感觉最有趣的,正如前面所说,这是一部微软的血泪史,从最原始的栈溢出,到绕过一个个新发布的漏洞缓解机制,体现了世界上最好的程序员和黑客之间极致的思想碰撞。我在学习这门课程之前只有一丢丢的汇编基础(在20年学习过B站小甲鱼老师的汇编课程),好在这并不形成课程学习的障碍,在经过2个月的学习后,我预约了考试,并在24小时内达到了及格分数,但我认为自己还有很多需要提升的地方,比如逆向工程、shellcode编写等
    同样的,课程划分为下面几个模块:
    1、汇编基础、windows x86基础、windbg
    2、栈溢出、SEH、egghunter
    3、PE结构与逆向工程、IDA的使用
    4、shellcode的编写
    5、DEP绕过(ROP链的编写)
    6、ASLR绕过
    7、格式化字符串漏洞的利用
    课程没有特别难理解的地方,但需要一步步建立起属于自己的静态+动态调试方法,该在哪些地方设断点,打硬件断点还是软件断点,观察关注栈空间、寄存器、指令等的变化,慢慢你就会找到学习二进制的乐趣
    对于这个课程我想我没有什么建议,但我认为学习完该课程之后可以在这些方面查阅资料,并得到额外的提升:
    1、alphanumeric shellcode的实现原理
    2、学习堆相关(Heap Spraying等),以及内核相关漏洞(UAF等)
    2、了解其他缓解机制,如何绕过(如CFG)
    3、学习x64是怎么样的,SEH等机制有什么不同

    4、学习linux的相关知识

    另外,这里想抛出几个有趣的问题,虽然我心中已经有一些答案,但它也许不那么正确,希望和大家一起交流,如果能得到大佬们的留言就更好了:
    1、SEH机制常规思路会借助PPR指令,这是必须的吗?如果能找到其他指令比如JMP offset的地址,是否也可以?
    2、既然shellcode也是一个二进制串,那么ROP有没有可能分段按顺序拼凑出shellcode来执行,从而避免在内存中写入shellcode?
    3、袁哥曾提出DVE技术(数据虚拟执行),里面有一种很巧妙的取内存地址的方法,和格式化字符串漏洞结合看,是否有得到一些启发?


OSWE - 多语言代码审计



    由于笔者工作性质,以及具有一定的开发经验,OSWE课程的学习是最为顺利的,但由于课程涵盖的语言和漏洞类型很全面,且extramiles的任务是非常耗时的(比如调试java和.net的ysoserial工具),我并不建议大家像我一样囫囵吞枣地学习它

    课程涵盖的语言有:PHP、JAVA、.NET、node.js、python,涉及的漏洞囊括:XSS、SQLi、CSRF、XXE、SSRF、SSTI、原型链污染、反序列化等,可以说几乎覆盖了日常工作中可能接触到的所有通用漏洞类型

    由于该课程已经是发布的第三版,所以后续加入的几个章节难度陡升,且几乎都是Offsec团队自己挖掘的CVE,整个漏洞利用过程更像是在炫技,让我印象最为深刻的有:利用SSRF打穿NAT背后的整个微服务体系;利用XSS获取用户页面websocket连接key并通过它挖掘RCE;通过原型链污染篡改渲染变量造成RCE,虽然看完我还是不会,不得不说看的时候是十分过瘾,值得反复品味

    回到主题,我认为课程本身最大的意义是了解是每个语言的特性,以及为什么某些语言会更容易出现某种类型的漏洞,另外课程教会了我们如何从MVC的设计理念出发,去快速分析应用的运转逻辑,猜测可能存在的漏洞点,而不是逐行逐字的去阅读代码(大佬和时间多的兄弟们另当别论)

    整体来看,个人认为OSWE是非常好的代码审计入门课程,但如果要应用到日常的代码审计工作,还需要学习很多,比如每个语言的开发框架,企业级应用架构,笔者也会在后续从研发基础开始系统性的学习JAVA安全,以更深入理解研发安全体系

    关于课程准备和考试:我的OSWE是从3月OSEP失利后开始的,于4月通过考试(通过时lab还剩余N天),由于每天下班较晚,晚上21点-24点是我备战的"黄金3小时",我将这一个月分为三个阶段:1、研发知识回顾(最好是能用每种语言写一个小功能,就算是hello world都是有点用的,让你读代码的时候会更有底气)2、过一遍教材(跟着看代码,思考他为什么要跟进这些函数,哪些是靠分析,哪些是根据经验)3、完成extramiles的练习(当完成所有章节的学习后,再回头进行更进一步的练习,可以温故而知新,虽然这也许会因为遗忘而变得困难)整个考试过程我在24小时之内拿到满分并提交报告,但也存在不小的运气成分,我的代码审计水准和平时经常交流的朋友们差距还很大,OSWE应该仅作为学习过程的里程碑,安全之路还很长,唯有try harder!


5、写在最后-我的安全之路



    至此我通过3-7月的"黄金3小时",完成了OSCE3的学习和认证(实际上21年短暂备战过一段时间OSEP,但是拖着拖着就拨云见雾 | 记我的「OSCE3」之旅),经过这段很难熬却充实的经历,我也迎来了安全职业生涯的第四年

拨云见雾 | 记我的「OSCE3」之旅

    我认为自己的经历足够有趣,三年前的6月,我于BIT获得材料学硕士学位,在2019年3月于Powder Technology上发表的论文还是这个画风

拨云见雾 | 记我的「OSCE3」之旅

    未曾想到,三年后自己会走上完全不一样的道路,由于当时的科研方向是飞行器热防护,自己也常常调侃到,本质做的都是安全,不算转行拨云见雾 | 记我的「OSCE3」之旅

    写这段故事是因为最近有位很年轻且厉害的新加坡小哥,因为服兵役上大学晚而苦恼,我想告诉他,23岁,是朝气蓬勃的年纪,珍惜时间,前途依旧是一片光明,我始终相信,做自己热爱的事,什么时候开始都不算晚,和各位共勉!


最后附上offsec官网:

https://www.offensive-security.com/

原文始发于微信公众号(精神与时间房子):拨云见雾 | 记我的「OSCE3」之旅

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年7月19日20:17:01
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   拨云见雾 | 记我的「OSCE3」之旅http://cn-sec.com/archives/1186910.html

发表评论

匿名网友 填写信息