OSCE3之路 - OSED | EXP301

OSED是我在在2022年1月拿到的,同时也是我OSCE3所需的最后一个证书,其名称为301,而不是300,这是因为EXP301-OSED专注于Windows环境下的二进制安全开发与利用。

本文同时提供以下语言的翻译: English.

对于一些更加基础的信息,如报名问题、网络问题,请参阅OSCP篇

OffSec的所有认证都没有前置要求,如果不想考OSCP直接考OSED,完全是可以的

基本信息

有关EXP301-OSED证书的官方最新信息位于这里:https://www.offensive-security.com/exp301-osed/

报名方式和费用

对于个人用户,目前Offensive Security(后称OffSec)提供了2种购买方式

  • Packages

  • Subscriptions - 订阅制

####Packages

  • 课程 + 60天Lab + 1次OSED考试 1299美元
  • 课程 + 90天Lab + 1次OSED考试 1499美元
  • 重考费:249美元
  • 30天Lab延长:359美元
  • 60天Lab延长:599美元
  • 90天Lab延长:799美元

Subscriptions

Learn One套餐(2499美元): EXP301-OSEP课程 + 2次OSED考试机会 + PEN210-OSWP课程 + 1次OSWP考试机会 + 365天Lab + PEN100课程 + KLCP课程 + 1次KLCP考试机会 + PG Practice会员

Learn Unlimited套餐(5499美元): OffSec所有课程 + 365天Lab + 无限次考试机会(受冷静期约束) + PG Practice会员

个人建议

可以发现300系列的套餐没有30天套餐,建议学习时间比较充沛的可以选择60天Lab,如果平时事情比较忙,可以考虑90天的Lab,由于我空闲时间比较充足,我的OSEP和OSED都是选择的60天套餐以节约时间,由于我的主要学习方向是Web安全,因此OSWE则是选择了更便宜的30天套餐(此套餐已经退役,并且大概率不会再出)

如何报名参加OffSec的认证与课程请阅读PEN200-OSCP篇

300系列横向比较

OSED是300系列中最新的认证,相较于PEN系列注重于黑盒,OSWE注重Web白盒,OSED专注在二进制安全,也就是常说的PWN和逆向,很多人认为OSED的考试是最难的,但是我认为OSWE在思维难度考查上才是最难的,而OSED大家认为比较难可能是因为目前以二进制为主攻方向的同学占比比较少,虽然我主攻方向也是Web方向,OSWE也是我最轻松拿下的证书。OSED的难点在于对计算机底层需要有比较好的基础才能比较顺利地学习,否则很多地方可能都会一知半解

如何预习

根据官方的PREREQUISITES,需要如下能力

  • 熟悉调试器(官方写的是ImmunityDBG, OllyDBG,其实课程和考试都不用……一定要熟练使用WinDbg)
  • 熟悉32位的基本exploit理论
  • 熟悉Python3脚本的编写
  • 基本能够阅读C语言代码
  • 能够理解32位汇编代码

EXP301-OSED只考察Windows的32位环境也就是x86架构下的Exploit,这也是其被批评的一个点,因为现在大部分都是x64架构的计算机了,但是其实x86_64也就是x86架构的升级版,我认为通过学习x86来掌握基本的二进制研究能力也是一个比较好的选择,直接从x64入手的话学习曲线会过于崎岖

对于汇编语言的基础学习,我的建议使用最知名的《汇编语言》(王爽著),这本书非常厚,但不需要完全学完

除此之外,最好对《操作系统》这门基础课程比较熟悉,否则很多概念就一知半解了

为了熟悉32位的基本二进制exploit,可以选择CTF的PWN方向作为入门选择,也可以选择ROP Emporium这个网站提供的练习题进行练习,由于这个网站只提供了题目文件,没有虚拟练习环境,可以自己使用虚拟机搭建虚拟练习环境,这里我推荐我自己制作的一个小工具来搭建练习环境,其使用文档在我的博客上:DIPD-文档 - 4xpl0r3r’s blog,关于使用问题也可以在文章下面留言

ROP Emporium每道题支持4种练习架构,x86x86_64ARMv5MIPS,如果只是准备EXP301-OSED的话只需要练习x86架构即可,如果想要感受下x86和现代的x86_64的差别,也可以练习x86_64,如果后续想要进军IoT二进制安全,可以研究下ARM和MIPS,但是就需要自己搭建QEMU异构虚拟机来实验了

关于课程

课程中的几个重要资源如下

  • 教材 PDF版本和视频版本,建议阅读PDF,效率更高,看不懂的地方看视频操作即可
  • Lab 提供了最贴近考试的各种靶机环境,由于EXP301的教材以实例讲解,Lab中也提供了教材的配套靶机,除此之外还有几个供学生练习的Challenge,Challenge的详情在教材中会介绍,都和教材教的内容类似
  • 300系列的学生靶机为每个学生独享,与OSCP的所有学生共享不同
  • 学生论坛 里面提供了各种Lab机器的提示以及讨论,并且在官方管理员的控制下不会有答案泄漏
  • 官方Discord频道 相比论坛为学生们提供了更便捷的实时讨论,学生注册后,在https://portal.offensive-security.com/中可以获取到邀请链接

EXP301-OSED课程的学习方式和WEB300-OSWE比较相似,我的学习方法就是边看PDF边练习,把教材里的实例都练习完之后,基本就掌握得差不多了,期间通过反复实践,总结思考出自己的方法论

对于WEB300-OSWE和EXP301-OSED,我都强烈建议边学习边总结思维导图,这对于巩固学习以及在考试中思考攻击路径都极有帮助

我在学习中总结出EXP301-OSED的核心内容就是:以栈溢出为核心,研究DEP和ASLR的绕过,同时学习ShellCode的开发和逆向工程。在考试中也是这些内容为核心,因此在学习之前可以有一个大概的脉络

还有一些小细节需要注意,OSED考试允许使用IDA但是不能使用IDA Pro,只能使用IDA免费版,这意味着只能使用IDA来进行反汇编而不能使用IDA的F5大法,要注意。调试也只能使用WinDbg进行调试

关于考试

官方的考试指引:OSED Exam Guide – Offensive Security Support Portal (offensive-security.com)

300系列的考试时长均为48小时

相比于教材和Lab基本都是使用真实案例做例子,考试则全部使用OffSec自行开发的题目

考试由三个独立的Assignment(任务)组成,分数分别为40分、30分、30分,通过考试的分数为60分,因此完成其中的2个任务即可通过考试

考试的3个任务会考察到大纲中的所有话题,包含了逆向工程、开发exploit绕过mitigation(也就是DEP和ASLR)以及开发自制的shellcode(使用汇编语言开发)

考试的思维难度不大,但是我认为如果对汇编语言不熟悉的同学,做起来会很吃力,因为需要阅读的代码量还是不小的,大部分题目都比较直接,比较需要创造力的部分我认为就是构建ROP链以及利用逆向工程找到可以利用的漏洞这两部分。

我个人感觉每个任务基本上没有部分得分这样的选项,完全完成任务就得到这个任务的所有分数,否则就一分都没有

有些题目会提供一个模板Exp,需要进一步去完善,有些题目则没有Exp,需要通过逆向工程来寻找漏洞

有几个坑点一定要注意

  • 逆向工程工具必须使用IDA Freeware,不能使用IDA Pro或者Ghidra
  • 最终的Exploit必须使用Python3编写,不能使用其它语言也不能使用Python2
  • 不像其它的OffSec认证最终只需要上传报告不需要上传代码,OSED需要上传每一个任务的最终代码

写在最后

如果你想要了解的信息文章中没有提到,欢迎发邮件给我一起交流,也欢迎加个好友,通过邮件发送联系方式给我即可

4xpl0r3r@gmail.com

image-20220127223819917-4591435

作者

4xpl0r3r

发布于

2022-02-15

更新于

2022-02-15

许可协议

评论