前言
OSED也称EXP-301(Windows User Mode Exploit Development),这是一门Windows平台漏洞利用的课程,简单来说就是Windows Pwn。
EXP-301的主要内容是Windows下32位的漏洞利用,这也是令很多人为之诟病的地方,但这门课并不是进阶课程,只是一个入门级的课程,所以用32位其实也可以,进阶的课程可以参考Exploit Development,也就是OSEE-EXP-401。
官方建议学习这门课程的前置技能要求为:
- 熟悉调试器
- 熟悉32位漏洞利用的基本概念
- 能够熟练编写Python3代码
- 能够基本阅读和理解C代码
- 能够基本阅读和理解基础的汇编代码
如果暂时没有掌握这些前置要求的话,可以考虑学习一下exp-100,这是一门简单讲解汇编语言,以及Windbg、IDA-Free利用的课程。
注意事项
OSED考试时间同样是48小时,需要提交考试报告。考试总共三题,前面两题各为30分,最后一题40分,拿到60分即可通过。
考试中不允许使用GPT之类的AI辅助工具,而且必须使用IDA-Free和Windbg来完成题目,这一点就让很多人不适应,相比较与IDA-Pro、x32dbg这类工具来讲,规定使用的IDA-Free和Windbg很不方便,但官方解释是为了保证考试过程的相对公平。
考试中所写的利用脚本必须是为python3格式,可以使用Metasploit社区版来辅助生成shellcode,并且可利用的脚本要作为单独的文件与考试报告一同打包为一个压缩包,并不是将脚本放置在报告pdf中。
如果只算通过的话,前面两题做出来就可以通过考试,但是必须要完完整整的做出,并且拿到shell,步骤不算分,但缺少步骤会扣分。
与OSWE一样,OSED考试也不允许将考试文件下载到本地,除非是第三题,考试说明允许下载到本地,但也要求在考试结束时删除文件。
备考
相对于OSEP、OSWE来说,OSED的课程内容相对较少,但浓缩的就是精华,写的少,不代表内容少。
在这期间,也看过不少之前通过OSED的师傅写的记录,一般来说,题目分为3个类型:
- Custome Shellcode,会指定你需要通过哪个函数达成什么效果
- 给Crash PoC的DEP Bypass,这部分是考ROP,重点中的重点
- 对逆向能力要求高的压轴题
最后一题我看记录做出来的师傅不多,但只做前两题也足以通过考试。
距离OSCE3就差最后一门了,也是比较的心急,基本上是OSWE知道结果后的当天晚上就开始准备了,先看了一部分exp-100的内容,大概了解了下汇编语言以及汇编指令,随即就开始看教材。
目标是先保底能做出前两题,如果时间有多,可以尝试做做第三题,所以重点就放在了看前两题的相关章节上。
OSED总共有三个challenge,我一个没做…,哈哈,在看完教材后,我找了很多课外练习题来做。
自定义shellcode:
- CreateProcess执行calc.exe
- WinExec执行calc.exe
- CreateServiceA创建一个服务
- GetUserNameA + MessageboxA 弹出”Hello 用户名”
- GetUserNameW + MessageboxW 弹出”主机名 用户名”
ROP:
- github.com/xct/vulnbins
- exploits/50472 10-Strike Network Inventory Explorer
- exploits/17665 D.R. Software Audio Converter 8.1
- exploits/44522 exploits/47411 Easy File Sharing Web Server 7.2
- exploits/46269 Faleemi Desktop Software 1.8
- exploits/50650 vuplayer 2.49
- exploits/43156 VX Search 10.2.14
其实ROP有很多都下载不到对应版本了,这就只能在去找找其他师傅自己编写的程序练习。
后续的时间只有端午节有假了,如果还要等的话就要等9月10月的中秋国庆了,想着不管咋样,先预约一波端午节的考试。
考试
这绝对是我目前经历过的最难最难最难的OffSec考试。
这次考试将折磨发挥的淋漓尽致,由于我之前并没有任何有关这方面的知识学习,我拿到题目和考试要求后,我坐在那里发呆了半个小时,不断地回忆之前做练习时候的那种状态。
第一题是DEP Bypass,也就是ROP,这一题我没有开始就做,选择先开始第二题,自定义shellcode,这一题我从开考开始计算,十二个小时后我才成功解决,随后休息了一段时间,开始尝试第一题,这一试就出问题了,开头就被卡住,卡了我三四个小时,后面到凌晨的三点多受不了了,和监考说去睡了会,早上七点多又起来继续,这一干直接干到了第二天的早上六七点,期间想放弃的念头不断升起,甚至于我都已经想和监考说结束考试了,但那句话还是在消息框没有发送出去。
早上六七点终于解决了ROP的题目,将脚本完善完善,运行后拿到目标机器的反弹shell,就马不停蹄的将报告也写好,写完之后和监考说了结束考试,提交了报告,立马倒头就睡,一觉睡到晚上六点多。
原本我还以为结果要等第二天,没想到这次效率非常之快,我提交报告差不多是上午的八九点,晚上十一点多的时候就在预约考试页面看到了通过通知,还没有收到邮件。
在第二天的上午,我收到了OSED的通过邮件,以及OSCE3的邮件,有个很神奇的地方就是,OSCE3的邮件来的比OSED的邮件还要快。
结语
这次还是有点勉强了,差一点就挂了,还是因为只差最后一门,有点心急,学习时间不太够。