# Offsec OSMR课程以及认证心得分享

大家好，最近几个月以来我在网络安全社区不是很活跃，因为我在学习 Offsec 的 OSMR 课程。这是一门有关 Mac OS 内部原理，以及漏洞利用开发的课程。课程的体量十分庞大，远远超出了我的预期，内容对于我来说也是十分的新鲜，这使得我投入较多的时间。幸运的是，最近我通过了 OSMR 的考试，期间的努力学习得到了回报。

[![image.png](https://winslow1984.com/uploads/images/gallery/2024-12/scaled-1680-/Hgkimage.png)](https://winslow1984.com/uploads/images/gallery/2024-12/Hgkimage.png)

相对于 Offsec 的其他认证，例如 OSCP/OSEP/OSWE，OSMR 较新，认证持有者较少，因此相关的心得与分享也比较少。尤其是中文的 OSMR 心得，我目前尚未遇见，那么，我希望自己的分享能填补上这块空白。接下来，我会分别简要地介绍自己学习的动机，课程基本信息，考试相关，以及个人评价。

### **动机**

我有见证 OSMR 课程的首发，在当时觉得很新奇，但并没有报名和学习的想法。因为在平常的工作中，涉及 Mac 的攻击与利用几乎没有。但我在工作中的一次以 Mac 为主的红队项目让我意识到 Mac 攻击与利用的重要性，以及魅力。

在此之前，我有过 Mac 的使用经历，但对于 Mac 操作系统核心的了解很肤浅，觉得 Mac 在一些地方比较像 Linux，应该有挺多地方可以照搬和融会贯通吧。但在那次 Mac 为主的红队项目中，我的傲慢与无知被颠覆了。项目开始之前，领队发给了我一些公司内部的 Mac 安全的资料连接，介绍了 Mac 的一些安全机制，例如 TCC，沙箱，GateKeeper，SIP 等，以及在 Mac 上的初始访问的方法。光是这些名词我听都没听过，以及浏览了 Mac 上的初始访问方法，让我意识到 Mac 和 Linux 有着很大的不同，我对这个操作系统根本不了解。当时的客户给我们分别邮寄了员工会持有的 Mac 笔记本，以适配 assumed breach 的情景。既然有了设备，那么本地侦察和审计自然是需要做的，我有点手足无措。好在的是，我的领队给我发了一些链接，例如怎么寻找和利用 dylib 劫持。虽然我在其他的阶段有了一些发现，但就 Mac 设备的本地侦察和利用上面，很遗憾我没有帮到什么。

在这个红队项目之后，我决定以后会学习 OSMR。不过那时候我还在追求 OSCE3，因此不在近期的计划中。但如今，我也没什么借口了，在老板和雇主的支持下，我报名了 OSMR 课程。

### **课程基本信息**

OSMR 是一门 300 系列的课程，因此显然具备一定的难度，更多信息，例如课程目录，可以查看 OSMR 官方页面：[https://www.offsec.com/courses/exp-312/](https://www.offsec.com/courses/exp-312/)。

OSMR 是 EXP，即漏洞利用开发的分类。因此，尽管不是必须，掌握一些前置的技能很有帮助，例如 C 系编程语言，AMD64/ARM 汇编，脚本编写，逆向工程，DEBUG。缺乏这些技能的话，学习起来可能会比较痛苦，好在 OSED 为我打下了还不错的基础。关于是否需要持有物理 Mac 设备来学习，这个问题值得讨论一下。恰好在我考试前两天，OSMR 迎来了重大更新。在之前，OSMR 主要是基于 AMD64 架构的，但现在和以后，会逐渐完全迁移到 ARM 架构，而 AMD64 架构的内容被封存了。

[![image.png](https://winslow1984.com/uploads/images/gallery/2024-12/scaled-1680-/U5aimage.png)](https://winslow1984.com/uploads/images/gallery/2024-12/U5aimage.png)

对于这样的重大内容更新，我十分满意，这体现出 OSMR 课程的与时俱进，内容很新。但与此同时，因为架构的转变和基础设施的局限，尽管之前学生可以使用 Offsec 提供的 Mac VM 来练习，但以后需要构建自己本地的 Mac VM 用于学习和练习。因此，这个问题的答案为：**<span style="color: rgb(241, 196, 15);">是的，从现在开始，你需要持有 ARM 的 Mac 设备用于学习。</span>**

[![image.png](https://winslow1984.com/uploads/images/gallery/2024-12/scaled-1680-/U1limage.png)](https://winslow1984.com/uploads/images/gallery/2024-12/U1limage.png)

正如我刚刚所称赞道的，OSMR 的内容十分与时俱进，这很重要，因为 Mac 的系统原理以及安全控制机制更新地比较勤快。自 OSMR 发布以来，教材内容已经得到了数次更新，以下这些内容是自首发以来新增加的章节。

```
The Art of Crafting Shellcodes (Apple Silicon Edition)
GateKeeper Internals 
Bypassing GateKeeper
Injecting Code into Electron Applications archived 
Mach IPC Exploitation
Chaining Exploits on macOS Ventura 
```

如今，OSMR 教材的内容十分庞大，而且这些内容对于大多数人是很新奇的，因此会需要数月的投入时间。教材中所教的内容也比较难，需要花足够的时间来理解掌握，做笔记，以及形成自己的方法。从内容量和难度而言，OSMR 不愧是 300 级别的课程。

课程内容的呈现形式也很棒，有大量真实漏洞的分析，通过逆向工程对 Mac 系统机制的探索，以及在必要时化繁为简告知学生结论。

### **考试**

因为 OSMR 课程的特别之处，OSMR 的考试也显得更加神秘。你可以在 [https://help.offsec.com/hc/en-us/articles/4411099553172-OSMR-Exam-FAQ](https://help.offsec.com/hc/en-us/articles/4411099553172-OSMR-Exam-FAQ) 查看官方关于考试的 QA，以及 [https://help.offsec.com/hc/en-us/articles/4411107766804-EXP-312-Advanced-macOS-Control-Bypasses-OSMR-Exam-Guide](https://help.offsec.com/hc/en-us/articles/4411107766804-EXP-312-Advanced-macOS-Control-Bypasses-OSMR-Exam-Guide) 查看考试指南。在不透露具体细节的情况下，我分享一下 OSMR 考试相关的信息。

##### **考试形式**

正如官方考试指南所写，OSMR 考试一共 4 道题目，分别对应特定的任务，总计 80 分，其中 70 分过关。2 道必写题分别是 30 分，2 道可写题分别 10 分，也就是说想要通过，只能留一道可写题未完成。

此外，2 题 30分 的必写题是前后依赖的关系。考试时间是 47小时 45 分钟 + 24小时写报告。

[![image.png](https://winslow1984.com/uploads/images/gallery/2024-12/scaled-1680-/xWjimage.png)](https://winslow1984.com/uploads/images/gallery/2024-12/xWjimage.png)

##### **考试难度**

想要通过，4 题中仅能留有一道 10 分的可写题，而且 2 题必写题还是依赖关系，听起来是不是很苛刻和困难？但实际上，可能因为一些客观的限制，OSMR 考试并不困难。在我看来，决定考生能否通过的题目只有一题，只要能把这题做出来，就一定能通过。

也正因为如此，我觉得题目出得很巧妙和有趣。Offsec 所选择的软件，不仅具有能考察学习成果的漏洞，而且难度也控制地很合理。不过，别想着能在网络上找到相关的 CVE 或者 Exploit，老老实实地自己逆向发掘吧。

[![image.png](https://winslow1984.com/uploads/images/gallery/2024-12/scaled-1680-/fHIimage.png)](https://winslow1984.com/uploads/images/gallery/2024-12/fHIimage.png)

题目很直接，没有兔子洞和陷阱，考试控制面板会有很详细的指示。有的题目甚至不严格需要 Mac 相关的知识。

##### **备考练习**

不同于 OSCP/OSEP 等其他课程，OSMR 课程除了学习教材时提供的 VM，没有额外的练习 lab。但教材里的一些 exercise 和 extra miles 可以通过在 VM 上安装提供的有漏洞的应用来获得更多练习机会。想要通过考试，extra miles 不是必须的，但对于理解内容和增加熟练度肯定会有帮助。

##### **未来展望**

因为之前提到 OSMR 的教材有了大更新，那么难免地，以后考试可能也会有相应的变化，等待 Offsec 对此的官方通知吧。

##### **个人考试时间线**

这次考试没有刻意留意时间节点。但最终 14 小时左右完成了所有题目以及报告的书写，其中包含了吃饭，休息，和睡觉的时间。因为我一边做题一边记笔记，所以报告没有花很多时间。第一道必做题确实花了我一些时间，但并不是因为难，而是自己写的 EXP 中有一些语言用法上的小错误。



### **与 OSED 对比**

因为 OSMR 和 OSED 都是 EXP 分类，因此经常会有人好奇两者的异同，我简单地做了个对比：

##### **相同之处**

1. 都有运用到 C 系语言编程，脚本编写，汇编代码，DEBUG，逆向工程等技能。
2. 对于理解各自所用的操作系统的机制都有所帮助
3. 对于各自领域的初学者，都有相当的难度。

##### **不同之处**

1. OSED 注重于内存损坏漏洞，OSMR 注重于逻辑漏洞。
2. 逆向方面，OSED 以阅读汇编代码以及 C 伪代码为主，OSMR 以阅读 Objective-C 伪代码为主。

### **个人评价**

最后，分享一下自己对 OSMR 的评价。就 OSMR 内容和品质本身，我很满意，没有任何批评，但还是勉强分别讨论一下优点和不足：

##### **优点**

1. 内容品质高，章节量也很大
2. 内容比较新，而且 Offsec 有持续对其进行更新
3. 市面上极少数专注于 Mac 攻击与利用的课程

##### **不足**

1. 用 VNC 访问 lab 响应很慢，这点可以用 nomachine ([https://www.nomachine.com/](https://www.nomachine.com/)) 来优化。
2. Offsec 提供的配套练习比较有限