OSEE Review - 大二暑假那年的精采故事
EXP-401 - Advanced Windows Exploitation / 高等 Windows 漏洞利用
前情提要
關於 EXP-401 - Advanced Windows Exploitation / OSEE
EXP-401 - Advanced Windows Exploitation 是 OffSec 所定位為最高位階的漏洞利用開發課程,而 OSEE 則是完成這門課程後經過 72 小時艱難考試所取得的認證。
在 Paul Jerimy 整理的證照地圖中,可以清楚看到 OSEE 被列在所有證照的最頂端,被公認為全球最難取得的資訊安全證照之一,也因此具有極高的含金量。
Paul Jerimy Security Certification Roadmap
EXP-401 涵蓋現代 Windows 系統中 User-Mode 與 Kernel-Mode 的高階漏洞利用技術,包括:
- 繞過現代 User-Mode 的防禦緩解措施,例如 DEP、ASLR、CFG、ACG、CET
- 繞過現代 Kernel-Mode 的防禦緩解措施,例如 kASLR、NX、SMEP、SMAP、kCFG、HVCI
- Advanced Heap Manipulations 以取得 Code Execution 和 Guest-To-Host 以及 Sandbox 的 Escape
- 突破 WDEG 的防禦和建立 Version Independent 來武器化 Exploit
- 64 bit Windows Kernel Reverse Engineering 和漏洞挖掘
這門課是 OffSec 唯一的 400 級課程,在 Course Code System 中對應到 Expert-Level 難度。其實光是看課綱這些描述大概就能想像課程的難度了。
想當然所需的前備知識也不能少,以我自己體感而言如果要順利的進行課程一定要具備以下的能力
- 基礎的 IDA 能力就可以了,整場沒用到 Decompile 功能,甚至用 Free 版也行
- 熟練使用 WinDbg 來進行 User-Mode 和 Kernel-Mode 的 Debug
- 熟練的 shellcoding 技術和 ROP 能力,如果沒有的話連第一天都撐不過去
- x86/64 架構的各種特性,例如 Calling Convention、Pagging 機制、Register 相關特性等
- 熟練的 C / C++ 程式語言編寫能力,這裡的熟練是指底層的記憶體控制部分
- 熟悉常見 Win32 API 的各種功能以及怎麼 call,特別是用 Pwn 的方式 call
- 熟悉 Windows Binary Exploitation 技巧,最好要懂常見的漏洞原理和相對應的利用方式
其中我覺得最重要的是 WinDbg 的熟悉度,在課堂上老師的講解常常以高抽象層面來表示,我們是在已經理解 WinDbg 的情況下對一個架構進行 Debugging,指令是一閃即逝不會有任何反應時間,通常都是理解概念後直接對下面的結構快速檢查,如果 WinDbg 看不懂的話從第一天的早上就會跟不上了。
先說,這門課程絕對不適合初學者,就算今天 OSED 滿分過關到了 EXP-401 中也是會被虐的體無完膚,尤其是在 Kernel-Mode 的部分,最好在課程開始之前就摸過以下的東西。
HEVD 在 Windows Kernel Exploitation 的部分會對建立基礎有很大的幫助,如果跟上最新 Windows Kernel 打法的趨勢的話並應用在 HEVD 上,甚至能多少超前一點 EXP-401 的某些部分。
Connor McGarr 的 Blog 對於 User-Mode 的 Exploitation 非常有幫助,如果想先準備 User-Mode Exploitation 的話可以搭配 Windows x64 Architecture 一起看,主要是對於從 Windows x86 轉過來的人很有幫助,對於 OSED 銜接來說最好先完整看過一遍這些東西。
但除開這些,我認為課程本身的資訊豐富度其實已經夠詳盡了,具備了上面的基礎知識以後其實照著課程材料內的資訊或是 Reference 通常都能做出來,不過若自己的技術底子夠好也可以先嘗試拿課程大綱中的產品去搜尋 1-Day 並自己先嘗試復現,如果在課堂前的準備越充足就越能跟上這門節奏非常緊湊的課程。
基本上整體課程先是從 Ring 3 大家比較熟悉的角度來進行講解,接著再慢慢將專注力轉移到 Ring 0 中最神秘的 Windows Kernel 部分進行非常困難的核心利用,不過這門課給我的的感覺主要是專注在 Windows 環境中的 Advanced Exploit Development,比較不像是從一個龐大的未知結構上發現漏洞。
- 套一句講師的話 :
- “這堂課隨便一個小節都能耗上你一個禮拜的時間來研究,我們並不會過度專注在撞牆的部分上。”
以 Exploit Development 這點來說我覺得 EXP-401 做的非常頂級,由於現代 Windows 系統有非常多的防禦緩解措施,課程中會帶著學員一步一步了解每一個防禦的實作和現代可行的繞過技術等,並且在此之上也會專注於 Exploit 的穩定度。
一般環境下通常只專注於漏洞的利用可行性和能否成功,而 EXP-401 十分注重 Exploit 在面對不同環境下的生存能力,例如在不同的版本下依然能穩定運作的 Exploit,聽起來這在 Binary Exploitation 領域非常黑魔法對吧,每一個 offset 都是經過精密計算得出的重要部件,但 EXP-401 無視了這一點。
甚至包括了在 Exploit 結束後是否能讓程式運作完美恢復到原來的情況,在所有的情況下學員被要求在 Exploit 執行結束後必須要讓程式能穩定的運行,不接受今天執行完 Exploit 後讓原本攻擊的程式出現崩潰等現象。
所以與其說 EXP-401 是漏洞挖掘的課程,我認為 EXP-401 實際上更貼近於教導你如何進行高等的 Exploit Development,在不同環境下都能生存且隱蔽不被發現的 Exploit 實作,認真說其實有點 APT 的味道。
有趣的調查
調查了一下,截至 2024/6/21 世界上共有 135 位 OSEE 持有者,而且這是從 OSEE 發行以來的持有量,稍微用 Wayback Machine 調查了一下,似乎最早發行 OSEE 的日期在 2009 年的 7 月左右,如果直接算下來的話平均每年只有 9 個 OSEE 被認證,可見這張認證的難度以及稀有度真的非常極端的高。
但這麼想感覺蠻不合理的,畢竟一個班有 10+ 個左右的人的話 (我們班 7 個人好像是偏少的情況),一個月一場 AWE Training 一年也至少有 120 個人能考試,如果那麼多人參加課程的話通過數為什麼會那麼少,抱持這個疑問我繼續在官方 Discord Server 中到處遊走,直到我找到了 OffSec Staff 在 Discord general 的留言。
原來參加考試的人數少於整體參加課程的 3/10,說起來那時在 Live Training 還聽到老師說考試甚至只有 10 % 左右的通過率,以現在平均一個月 1.2 班的速度來說其實應該算合理…?
以平均數來推算的話就當作 2025 年一開始總共有 140 位 OSEE 持有者存在,但今年我們台灣第一批挑戰 OSEE 的人全過了 ! 我們總共 7 個人,幾乎快包辦了一整年的量,加上在 Discord 中 OSEE-masters 頻道中出現的 9 個人外,截至 2025/8/11 粗估今年總共有 16 個人取得 OSEE 認證,我們這團硬生生直接拉高了今年的世界平均數大概 77.78%,所以現在整個地球上大概只有 156 人持有 OSEE,特別有趣。
神奇的旅程
故事的起點
大概是 2023 9 月多,在照常整理 gmail 的時候突然看到了一封很不一樣的信件,寄件的 Domain 來自 OffSec,點開來一看 Cathy 和我提起了在 2024 8 月多時會有 Advanced Windows Exploitation 的課程,那時第一個想法是,哦 ! 台灣居然會開 EXP-401,事情變得有趣起來了 :)
其實從很久以前,大概是高中第一次接觸到 OffSec 時就有所耳聞這個課程,那時對這個課程第一個印象是非常高專業度,也非常高難度的一門課程,整體的設計也剛好打在我審美的好球帶上。
要說不心動是絕對不可能的,記得以前看到時價錢大概是 3000 還是 4000 美金,如果捏一點的話或許能上。
後來也有聽說 DEVCORE 和 OffSec 在台北開了 4 門 Live Training 的課程,分別是 EXP-401、PEN-200、WEB-200、SOC-200,聽說 training 方式是直接請 OffSec 的學院講師來進行教學,感覺就非常酷。
就這樣時間放著放著來到了 DEVCORE 餐敘的時間,這件事突然再次被提起了,對耶 EXP-401 在 8 月的時候有開,手刀上了 DEVCORE 的 Training 官網查了一下,嗯 ! 這個價格還是算了 !
2025 EXP-401 價格 (當時價格好像也差不多是 40 幾萬 💀)
沒錯,最困難的點還是回到了價錢上,畢竟我那時還是剛繳完學費的超窮大一仔,一個是好不容易在台灣參加 EXP-401 的機會,另一個是自己慘到哭出來的存款,總之因為這件事我思考了很久。
但後來認真想了想,錯過這次機會不知道下次還有沒有類似的,以往都要去 BlackHat 參加,這次特別辦在國內,而且舉辦課程的主辦方跟這次來台灣的 OffSec 的人也都是還是認識的人,考慮到出國的花費和機票錢,加上住宿費餐旅費那些,說不定在台灣還更便宜一點,另外一想,我家到北科頂多 20 分鐘多一點,我能住家 ?
而且其實這一直以來確實是我的夢想證照,如果達成的話也是完成一個人生目標。
嗯 ! 咬著牙還是刷了吧 !
望著接下來要吃土過日子的存款跟報名成功的信,突然覺得還好我住家,不然在外面真的會餓死 💀
在上課三天前收到了行前通知信,裡面包含了行程資訊、最低硬體要求、課前建議具備知識等,其中課前閱讀總共有 20 個連結,裡面每一個連結都包含著巨量的知識,bro 你早 20 天發我都不一定讀的完了 💀
因為全部讀完絕對不可能,所以先挑幾個不太熟悉的部分拿著上面的關鍵字先搜尋一下,Google 找到第一篇 Slide 點進去直接開讀,原本想說直接查到中文版本的 Slide 也太特別,讀著讀著發現簡報內全都是繁體中文,而且往下滑著滑著感覺簡報風格似曾相似..? 突然有種預感,滑到第一頁看這個簡報是誰做的。
上面寫著 AngelBoy 這個大字,bro 我的同學居然是教材本身💀
Day 1 - Shellcoding & VMware Workstation Internals
時間很快來到了課程開始的日期,到了今天才知道我的同學有誰,看了一下簽到表清一色全都是 DEVCORE Research Team 的人,唯二不是 Research Team 的只有我和 @Lays
,同學極端的優秀讓我一開始就備感壓力💀
總之
EXP-401 Login
我是第一個進教室的,一進去後看到兩個講師友善的跟我打招呼,小聊了一下後看到桌上躺著一份超厚的課本,拿起來馬上就能感受到這本字典的重量,翻了兩下後發現內容真的非常非常的豐富,每個章節的技術都有詳細的解釋內容,如果有打過 Windows 的人都知道 Windows 有非常多複雜的結構體,在這部分書裡面也有詳細的把每個結構體的關係畫成方便理解的圖,對新手來說或許蠻友善的。
但看了一段時間後發現不對,我們真的有時間把這些東西全部做完ㄇ
- 我 :
- 我們真的要在五天內把這些東西全部做完ㄇ
- Nasro :
- 通常做不到,但我們希望可以 :)
(抖)
在開始上課的時候講師們開始了自我介紹,在我的班級中老師是 Nasro 和 Vixx,兩位講師都是經驗非常豐富的專家,Nasro 和 Vixx 很常在課程中拋出一些有趣的問題來引導學員思考,有時碰到一些預料外的提問也會在現場直接驗證,真的可以體會出身經百戰的感覺。
有趣的是在課程的一開始 Nasro 看所有人全都到齊了,第一句話說的是
“Who is Angelboy”、”Nice research huh XD”
XD
講師在課程的一開始和我們介紹了這門課大概的進行過程,以及我們接下來五天將會面臨到什麼樣的挑戰,順便給我們看了 AWE WTF Level,網路上應該很常看到這張圖,就體感而言他說的沒錯💀
在所有的介紹完成後老師祝福我們 :
- Nasro :
- “希望接下來的時間大家都可以獲得足夠的睡眠 ;)”
? 不是 等一下 你什麼意思
題外話,原本想著既然都住家了那應該還能睡滿 8 小時吧,但接下來幾天平均睡眠時間大概是 5 小時左右💀
早上上課的時候老師先把上課的所有資料用 USB 傳給學員,接著我們就開始了一些基礎知識的講解,例如 x64 shellcode 和 DEP Bypass 的部分,其實這段時間應該是幫助 EXP-401 學員快速進入狀況的時間,讓大家先體會一下上課的節奏和熟悉老師講話的速度等,但我必須說老師真的講的非常好,不管是講話的速度還是英文的理解難易度等,我覺得非常適合能閱讀基本原文 Document 的人來聽課。
上午的基礎知識部分結束後 Nasro 講了關於現場 WiFi 的小彩蛋
- Nasro :
- 你們知道為什麼 WiFi 的密碼長這個樣子嗎 ?
- Nasro :
- 因為 Reverse Engineering (笑
好說實話其實蠻好笑的w
下午我們進入了 VMware Workstation 的一些內部運作機制還有漏洞的觸發 & 利用方式,到了今天快結束的時候講師出了一份 Bonus,說是如果有人 ROP 能疊滿做到某個特定功能就能獲得一個 Challenge Coin,不過第一天因為環境初見殺 + 超級麻煩 debug 的問題讓大家都不能好好疊 ROP 拿到 challenge coin 之後,Orange 說了一句 “三個 MSRC Top 100 疊不出一個 ROP” 後來被當成梗說了整整五天XDDD
結束後真的覺得一個螢幕好難做事,剛好 @terrynini
也這麼覺得,不然 bro 你去三創買第二個螢幕來。
之後老師留下了一個小挑戰,只要有人做到的話就可以拿到一個神秘小禮物,第一天就在一片平靜下結束了,就體感而言第一天比較沒有壓力,需要複習和預習的內容也還在可控範圍內,甚至能順順的把小挑戰做完。
Day 2 - VMware Workstation Escape & Microsoft Edge Internals
早上,又是個美麗的一天,家裡的床讓精神完全恢復了,可以在參加 EXP-401 的同時睡家裡真的好讚,嘻嘻
搭捷運到忠孝新生後買了一杯咖啡就往北科走,整個像是來度假的一樣 chill。
上課前和老師對了答案,確認通過了小挑戰,所以拿到一個酷酷的 EXP-401 貼紙。
準備開始上課的時候發現 @terrynini
真的帶了第二個螢幕過來💀
第二天早上我們接續昨天的進度,繞過了大部分的 Mitigation 後成功在 VMware Workstation 上彈出一個 meterpreter session,從這邊開始才真正體會到課程的節奏越來越緊湊。
到目前看起來一切都非常的順利呢! 但微軟加入了非常多的 Mitigation 在 Windows 上,強者我同學在老師和我們探討怎麼利用剛剛疊的 ROP 來繞過一個非常棘手的限制的時候直接來了一個新繞過思路的靈魂拷問。
但 OffSec 的人好像也沒有想過這件事,當下全場突然安靜下來開始思考這件事的可行性。
- 此時 Vixx :
- “If you can do that, I’ll given you a challenge coin !”
但後來我不知道有沒有成功 XD
下午的部分我們進入了 Microsoft Edge,講解了大部分的內部運作流程,嘗試了幾次以後成功做到了 Arbitrary Read Write Primitive,從這邊開始真的會需要大量的實作才能幫助自己完全了解課程內的知識,此時老師出了全場第一個 Extra Miles 當作回家作業,如果有人做出來的話就能拿到 Challenge Coin。
因為我感覺這個 Challenge Coin 好像是我可以做完的,所以花了晚上一點睡眠時間把 Extra Mile 搓了一半。
Day 3 - Microsoft Edge Browser Pwn & Sandbox Escape
今天的課程全都集中在 Edge 上,我們從頭快速梳理了利用鏈,並應用了多種不同的技術來繞過 Mitigation,下午則是聚焦在 Sandbox 的實作,相關的運作結構,以及怎麼利用一些特性來 Escape Sandbox,到這邊認知負載已經要炸開了。
最後我們談了一點關於 Windows Kernel 的知識,因為之前摸過 Windows Kernel 所以已經有一點基礎了,所以這邊倒是還行,不過最後出了一個 Kernel 的 Extra Miles。
原本想著應該還行,打開一看發現一個 Extra Miles 寫滿了整整兩張 A4 紙,bro 我先 pass 我要睡覺。
但昨天的 Extra Mile 感覺搓一半好像有戲,所以多花了一點時間搓出來了,但 Extra Mile 的代價就是會因為睡眠不足掉頭髮💀
不過話說,每天的下午茶都非常不錯,附上一個我特別喜歡的一盒。
Day 4 - Windows Kernel Internals & Windows Kernel Exploitation
一早爬起來和 Nasro 對了答案,順利拿到 Challenge Coin,EXP-401 的硬幣真的好帥。
不過今天有點特別的是 OffSec 在針對學生進行採訪,我那時剛好是被採訪的對象,所以到了樓上的神祕小房間跟 OffSec 的 waytan 小聊一下,採訪結束後拿到了 Kali 的 Challenge Coin,而且我的編號還是超特別的 699
Kali Challenge Coin & EXP-401 Challenge Coin
從今天開始我們從 Ring 3 切換到 Ring 0 來探討 Windows 最神秘的 Kernel 部分,上午我們學習了大量的 Windows Kernel 相關的基礎知識,包括很多 Kernel 獨有的機制之類的,下午的部分則是專注在 Mitigation 相關的實作和突破技術的講解,並且我們成功利用了一個 Kernel Driver 來成功取得 System。
美好的一天就這樣結束了,經過了一整天的高強度利用後是時候該對自己好一點,於是約了 @StevenMeow
和同樣在 Live Training 的 @MuMu
去吃牛排。
Day 5 - Usermode Callback & Kernel Mitigation Bypasses
終於活到了最後一天,
沒錯 ! Microsoft 安全團隊針對 Windows Kernel 實作了非常多種 Mitigation,對於一般使用者來說這非常立意良善,但對於身處於 2025 現代利用環境的駭客來說根本就是一場惡夢。
除了要穩定的觸發漏洞以外還要根據每個 Mitigation 進行花式繞過,想當初我還沒出生的 19XX 年代還能在 Stack 上執行 shellcode,現在除了 Stack 不可執行還加入了更多的 Mitigation 💀
最後一天我們要做的事情是繞過所有 Mitigation 並且成功利用一些 Windows Kernel 的特性來取得 Windows Kernel 的 EoP,但隨著時間慢慢快到尾聲,大家不知道為什麼越打越嗨,最後的幾個章節都站起來看著 WinDbg 和 IDA 在畫面上飛來飛去,一直到課程的結束。
總之,這五天下來真的學到了非常多的東西,我沒想到自己在這門極其緊張刺激的課程中能夠生存的那麼久,認知負載直接大炸開,等回去讀完每個材料才發現原來當初有那麼多細節沒搞懂,但真的是非常充實和充滿挑戰的一門課。
關於考試
考試準備
如果說面對強敵必須全力以赴,那麼完美的武器就必須事先備妥。
因為 OffSec 考試最多可以使用 4 個螢幕,所以我用了兩個 32:9 的螢幕 + 兩個 16:9 的螢幕來考試,對於考試體驗來說有兩個 32:9 的螢幕真的 非常非常方便,如果要查資料的話可以把資料放在上面的螢幕一次排開,要寫 Exploit 的話可以放在左邊的螢幕,中間的螢幕就用來做 Debugging 和 Reverse Engineering,右邊單純放監考畫面就好了,當然中間的那台筆電在考試時絕對不能放,只是平常我都放在前面,畢竟觸控螢幕真的很好用XD
硬體設備齊全了,接下來是一些小補給品,雖然說 EXP-401 是一個 72 小時的考試,但對於大學生來說三天不睡拚期末什麼的根本是再正常不過的事情,所以我提前準備好了我的期末周 Setup : “四罐魔爪”
還有 EXP-401 的課本和一些筆記,加上 Challenge Coin 來當作我的護身符XD
一切準備就緒後就能開始了,過度準備了好幾個月的我配上最慣用的設備,期待能很好的面對這次的挑戰。
考試安排
時間大概是 3 月底時, OffSec 突然更新了 EXP-401,其中包含新的課程大綱,這個消息一出來馬上炸開,因為沒有人知道考試會不會跟著一起改,加上 EXP-401 是以實體課本來進行教學,如果課程改版的話沒有更新到最新知識的人絕對沒辦法考試,所以最近被約了非常多的 OSEE 考試,我也趕快先約了一個時間,其實我原本 5 月初要考,但 4 月底的時候心態突然炸了,所以小延了一段時間才排考試。
因為太多人約,剩下的考試的時間都比較尷尬一點,唯一一個在 7 月的時間大概是在凌晨 2 點左右,雖然凌晨考試真的超級坐牢,不過看起來這是唯一的時間也只能訂了。
嗯 ! 一切就緒,和平常一樣的精神美國人作息應該沒什麼問題 ! 於是就這樣放著放著
正當我想著除了考試時間麻煩一點以外應該沒什麼問題時,突然想到 7 月中的時候好像有全國技能競賽要比
不會吧不會吧,我 7/14 AM 2:00 要考 OSEE,但比賽時間是 7/16 開始,OSEE 要考 72 H + 24 H 的話 一定會撞
沒錯,差點忘記全國技能競賽的時間,把這個事件加到行程表上的時候發現撞好撞滿,我考試的第三和第四天剛好會撞到全國技能競賽的第一天和第二天,此時是 2025/07/10,剩下的時間只有 8/4 跟 8/15,但我真的不想再拖下去了,所以只能想辦法在比國手選拔賽的同時一邊考 OSEE 💀
就這樣放著放著到考試前兩天,不能改時間了,硬逼自己變成超人。
考試情況
關於考試的具體注意事項可以查看 OSEE Exam Guide,裡面包含了所有你需要知道的事情。
參加過 OffSec 考試的人都知道這邊不能說很多,但我可以把我的體感過程寫出來。
EXP-401 的考試有別於以往,是唯一一個允許使用 LLM 的考試,不管你要用 chatGPT、Copilot、Gemini 什麼的都沒差,畢竟我覺得考試是 AI 根本解不出來的東西。另外一點是 OSEE 的考試似乎也沒限制只能使用 IDA Free 之類的工具限制,也就是說在規則允許下或許能在考試中使用 Ghidra 或是 IDA Pro,但因為我沒有 IDA Pro 所以用的是 IDA Free 來進行考試,不過就結果而言有沒有用到 Pro 看起來都沒有關係。
先講講監考體驗好了,一開始的流程都差不多,驗身分、看房間、跑 script 測試電腦設備等,但 EXP-401 的監考感覺特別奇怪,以訊息來說好了,以往的監考官在我傳訊息說要休息或是其它問題後都會秒回,但這次的監考官有點不太理人的感覺,說要休息隔了一兩個小時才回,搞得我好像暈船仔一樣 🤡
但應該也能理解,畢竟 EXP-401 的考試真的蠻少的,或許 EXP-401 本身就是獨立於其他的課程,加上自身的獨特性可能會讓監考流程稍微在體制外一點(?)
不過除了這件事以外沒什麼大問題,反而讓我有種輕鬆的感覺,畢竟誰都不喜歡有人 72 小時盯著自己對吧。
Day 1 - Exam D-Day
現在時間 2025/07/14 AM 01:45:00,考試前灌了一瓶魔爪,現在是我剛起床兩小時,非常好精神,精神非常好。
在經過慣例的身分驗證後就可以開始考試了,我的考試從 AM 02:00 開始
考試總共有兩個挑戰
- User-Mode Exploitation
- Kernel-Mode Exploitation
我挑了比較熟悉 Kernel 先開始看,看著看著感覺其實不難,有一個階段非常好解決,一下就能看出這個部分該怎麼處理,於是看著題目直接開始寫 PoC,大概花了 1 小時多就過了一個小崁了
但解決第一部分後卡在一個奇怪的點,在不斷嘗試好幾次以後發現完全沒有路可以走,但或許還有其他路線能觀察,在經過更細緻的調查和分析後找到了第二條路,馬上就拿到了 25 Point。
2025/07/14 08:02:XX - Kernel-Mode Half Solved / 25 Point
因為通過了一個大坑,剩下的其實不怎麼難,後面花了 10 分鐘改改 PoC 後丟到目標上就成功完成挑戰了。
2025/07/14 08:14:11 - Kernel-Mode Solved / 50 Point
截至目前大概花了 6 個小時多解決了 Kernel 的部分,獲得了 50 Point。剛開場馬上拿了一半的分數給我蠻大的信心,因為另一個真的看起來蠻複雜的,一眼看下去會有種我真的打得出來嗎的這種感覺,但至少我還有極度充足的時間可以來慢慢分析,畢竟現在還剩下大約 66 小時的時間能用,跟剛開場沒差多少。
看著看著感覺有點卡死,試了幾種不同的利用組合但不能實現,感覺沒什麼頭緒,是時候該休息一下了,接著跑去買了午餐一邊看著喬伊的影片一邊吃我的雙層四盎司牛肉堡。
吃完午餐以後直接躺床睡一個大的,但只睡了三個小時就突然想到一個可能沒注意到的地方直接驚醒。起來馬上灌了一罐魔爪後繼續看題目,發現早上不小心算錯一個數字,讓後續的利用過程整個垮掉,還額外浪費時間看了其他不會用到的東西,修正以後完成了一個階段性的突破,感覺突然有機會能解決這個任務了。
重新試著串上早上想的一條利用鏈,經過幾次實驗後發現可行度蠻高的,也可以繞過一些很麻煩的條件,後面慢慢完善這條利用鏈以後成功在經過 23 小時的折磨後取得了另一個大突破,獲得了總共 75 Point。
2025/07/15 01:08:XX - User-Mode Half Solved / 75 Point
Day 2 - Exam Day & Report Day
原本想說剛解決了一個超大的坑,要睡覺一下,但躺在椅子上閉眼睛完全睡不著,頭腦裡想的全是後續可能的利用鏈串法,想著想著感覺有一條路能走,所以就爬起來繼續打了。
仔細看了一下,後面的部分其實可能會比想像的還簡單,簡單嘗試戳了幾個不同的方向後發現一些有趣的特性,根據這個特性構建一個 PoC 後嘗試用這條思路打打看,發現可以運作,成功取得一個突破性進展。
而且這次可行性感覺特別高,所以又花了 10 分鐘改改 PoC,感覺很穩可以一次過就直接往目標機器上扁了下去,等了幾秒後成功完成第二個挑戰拿下了 OSEE 考試的滿分。
2025/07/15 06:12:47 - User-Mode Solved / 100 Point
拿下滿分後直接跑去睡覺,倒下去後昏迷了三個小時又爬起來了,馬上灌了一罐魔爪後開始後續的報告工作。
我後面做的事情主要有以下 :
- 從最一開始把所有的利用過程梳理一次
- 將利用鏈分成不同的障礙突破階段
- 每突破一個障礙就做為一個章節解釋
- 將所有利用的運作機制盡可能描述清楚
- 根據每個利用階段來截圖
總之後續就在不斷的截圖和撰寫報告中度過了。
Day 3 - Report Day / 國手選拔賽 Day 0
接著時間來到了 2025/07/16,沒錯 ! 今天是選手報到日 ! 我要中途跑去南港展覽館報到以後再趕快回家考試,而且不能離開太久不然我報告會寫不完 ! 從昨天的下午兩點起床以後到現在還沒睡,跟考官說我要大休息以後洗個澡吃個不知道該算早餐還是晚餐的一餐準備出門,原本想說現在還不想睡應該還算有精神吧,但在照鏡子的時候才發現我的臉跟台科期末周時一模一樣,超好笑。
因為朋友也剛好要去比全國技能競賽的平面設計職種,所以他媽媽順便載我過去,謝謝阿姨QQ。
報到的時候還看到 @TwinkleStar
跟 @nella
,有點好笑,但當時的情況大概像這樣 :
- 我 :
- 等等人還要在嗎,我要跑了
- 星星 :
- 為啥
- 我 :
- 因為我現在在考 OSEE
- 星星 :
- 看的出來
笑死,我在外面一定看起來跟死人一樣,嚇得我再趕快灌一罐魔爪。
但至少報到成功,不會被取消資格了 !
報到完回家馬上快速洗個澡,外面的天氣是人躺在馬路上就能五分熟的熱度,我直接一整個融化。
原本想說之後都應該沒事了,繼續專心寫報告兩個小時,出來休息的時候突然看到隊友傳訊息過來
不是吧還要檢查設備,好吧也只能去了,還好我家離會場很近,只要 20 分鐘就能到,不然真的會裂開。
總之 OSEE 考試第三天我的行程大概長這樣,有夠刺激。
接下來的時間就是盡可能把圖片截到最完整最無可挑剔,把一些很難解釋的部分結構化的用圖片表示各個關係,就這樣一直到了 Day 4
Day 4 - Report Day / 國手選拔賽 Day 1
到了 2025/07/17 AM 1:45:00 監考時間結束,接下來就是痛苦的精緻報告時間,但不要忘記我這天早上 8:00 要去比國手選拔賽,所以我必須留兩個小時來讓我睡覺,不然我一定會死在南港展覽館。
所以我寫報告大概到了快 AM 5:10 的時候就一定要睡了,把報告先關起來後兩天沒睡的我往後一躺直接昏迷。
AM 7:20 聽起來是個要準備上早八的時間,對於正常大學生來說簡直是地獄,尤其是前一天幾乎沒睡的那種,但更痛苦的是只睡兩小時就被鬧鐘強制開機的我。
我們可以來整理一下現在的情況 :
- 有一個嚴重過勞的大學生
- 三天大概只睡 6 小時
- 三天內灌了 4 罐魔爪
- 有一個期末考在 40 分鐘後開始
- 期末考要從早上 8:00 考到下午 4:00
- 有一個超大的期末報告在 18 小時後截止
嗯 ? 聽起來好像平均台科期末周,那沒事了。
總之,撐著半崩潰的精神把早上的數位鑑識解了一半,趁著中午休息時間趕快跑到沒人的地方寫報告,下午解了一半的安全強化後撐不住了昏迷在比賽會場,感謝 @tyc4d
hold 完剩下的部分,有可靠的隊友真好🫵😭
等結束後馬上用搶公館捷運站 Ubike 的速度衝回家,繼續無止境的寫寫寫,從回家那一刻到報告截止前 20 分鐘手都沒停過,畢竟聽 @angelboy
說有人報告因為不夠詳細被當,所以在交完所有 FLAG 後花了大概三個整天的時間來非常嚴謹的把整個報告寫的非常詳細。
包括每張圖都有用框框標示每個 memory address 的意義和指向,structure 每一個 member 也被定義的明明白白,exploit chain 的整個過程也被完美的解釋清楚,保證報告絕對不會被挑任何毛病,但這樣聽起來感覺很沒實感對吧,整個嚴謹度大概是報告寫了 182 頁 2.2 萬個字,我根本是小說家。
寫到一半的時候遇到了突發狀況,我好像因為這四天精神過度緊繃 + 嚴重稀缺的睡眠,所以眼睛開始糊了。
撐著像中了 Minecraft 噁心的 Debuff 寫了兩個小時後,又遇到另一個突發狀況。
我只要點 explorer 的圖示馬上就會跳出 System call failled,如果用 Win + R
來執行 explorer.exe 的話也會 System call failed,不是 bro 我完全沒打你,你在叫啥 ?
此時大概是 12:00 左右,距離我的報告截止時間還剩 1 小時 45 分鐘,如果我的系統炸開我會完全無法交我的考試報告上去,我覺得如果重開機的話一定會讓系統整個死去,所以只能先咬著牙繼續寫下去。
手從來沒停過,一路寫到剩 20 分鐘,做完最後一頁以後馬上把檔案存成 PDF 並詳細檢查每一頁有沒有完整,確認沒問題後按照 OSEE Exam Guide 規範的格式把檔案打包好丟到 OffSec 的上傳平台結束這一回合。
現在時間 2025/7/18 AM 1:36:XX,距離 Deadline 還剩 9 分鐘,那個感覺就像是
考試結果
提交報告後就是極度漫長的等待流程,以往 OffSec 的認證結果絕對不會超過 3 天,但我等了大約快 10 天還沒有收到結果,而且 Discord 的 EXP-401 頻道中也有三個人同樣在等待結果。
在查看了幾篇 Blog 後發現 EXP-401 的考試報告似乎只有 EXP-401 的講師能審閱,和 OffSec 的認證委員會是分開的,加上他們本身就很忙碌,所以等待的時間久是正常的💀
在經過很長一段的等待時間後終於收到了通過的信,那時我人在 AIS3 當助教,收到信的開心藏都藏不住被別人發現,笑死。但還是想偷偷壓著等 AIS3 結束以後再發一篇大的 Blog 文,嘻嘻
成為 OSEE 的感想其實很複雜,一個是嚴重的冒名頂替症候群,另一個是很難相信自己成為了世界少數的 OSEE 持有者,以往一直把取得最頂尖的認證當成自己的夢想,但一旦達成了卻有這種複雜的想法,好奇怪XD
總之,我完成了一直以來想達成的人生目標之一了,或許這不會是終點,但這一定是一個階段的完美結束。
Offensive Security Exploitation Expert - OSEE
結語
真的只能說這次考試的過程太刺激了,不寫成 Blog 絕對不行。
因為我之前高中的時候買了 Learn Unlimited Subscription,所以我參加過幾乎所有的 OffSec 課程,但我能保證 EXP-401 是我參加過最不一樣的 OffSec 課程,不管是難度、節奏、考試真的都非常的獨特。
尤其是課程難度的部分,我覺得和 300 級的差別已經到非常的巨大,說實話照之前 200 跨到 300 的經驗感覺其實就只是一個門檻而已,但摸到 EXP-401 當下真的有嚇到,如果 200 到 300 是從小學到國中,那 300 到 400 就是國中直接跳到碩士,難度差距的鴻溝真的非常的巨大。
因為我現在手上剛好有 Learn Enterprise Subscription,毫不誇張的說,讀完 EXP-401 再回去看 EXP-301 後第一個感覺就是,這些東西放到 EXP-401 中應該只能撐 30 頁再多一點點,基本上 EXP-401 完全就是建立在 EXP-301 完全通讀的基礎上進行的,就像是 PEN-300 是在 PEN-200 完全理解的情況下延伸一樣。
對於如果有想更了解現代 Windows 包括核心層面的高級攻擊手法,或者是對於追求自己技術有極高熱忱的人,我非常推薦 EXP-401 這門課程,我想絕對能帶給你預期外非常多的收穫,這是我上過最好的課程了。
話說後來那個國手選拔賽誤打誤撞打進了前三名,能進二階選拔了,一邊考 OSEE 一邊比賽根本是折磨。
上課感想
以往參加 OffSec 的課程都是線上進行,這次能在線下 Try Harder 是一種截然不同的體驗。課堂上幾乎都是在社群上已經見過面的朋友,整體氛圍更像是一場社群聚會。尤其是在台灣這樣獨特的環境 XD。有趣的是,聽說我們是唯一一組能完全跟上全部進度的班級。
以前學東西都看網頁或是 PDF,但 EXP-401 最特別的是只有實體原文書能看,讀到一半時回頭往前看自己翻開的頁數,讓我覺得實體書能感受到自己到底走了多遠,看起來特別有 “喔 ! 我終於到了這裡” 的感覺,也可以很直接地感受到知識的重量。
在這次的 EXP-401 Live Training 中我們七人是台灣第一批進行培訓的先行者們,人數也是所有班級裡面人數最少的一班,下課出去時算了下其他班似乎都 15+ 人,PEN-200 OSCP 那班甚至好像快到了 30 人? 但我們 EXP-401 的人數就僅僅只有七位,並且除了大神 Lays 外都是 DEVCORE 的強者們,原本想說在這樣的班級上課壓力想必非常大,但其實實際上課的時候都超嗨,比較沒有想像中的冷壓空氣XD
我很幸運能參加到這場辦在台灣的 Live Training,對學生來說飛去國外只是參加一次課程的話真的不是一件容易的事情,看了很多人的 Blog 的一開頭都是 “今天搭飛機到了 XXX, 去 XXX 旅遊或是去飯店 check in, 準備迎接接下來幾天的折磨”, 但我的情況是 “哇我能睡我家耶 ! 甚至比我去台科的時間還短”,非常的神奇,但也因為這樣我這幾天的睡眠品質都非常的好,沒有因為國外旅行的原因需要調整時差,或者是需要負擔額外的費用,甚至我能在家吃到家人煮的晚餐,總體而言非常適合懶得出國和預算有限的人參加。
並且這五天下來真的學到了非常多的東西,我沒想到自己在這門極其緊張刺激的課程中能夠生存的那麼久,也能深刻意識到自己和目前世界上最先進研究的距離究竟有多遙遠,不管是從利用的思維到追求完美 full chain exploit 的部分,這門課給我的收穫真的很多。
最後我也嘗試了把所有的洞串起來,從 VMware 中的 Edge Browser Pwn,接著 Escape VMware Workstation 時順便做了 Process Hollowing,再利用 Host 的 Windows Kernel 來進行 EoP 取得 SYSTEM 權限的 meterpreter shell。
當最後我的 multi handler 出現了 “meterpreter session 1 open !” 的文字時,有一種難以言喻的心情從我的心裡冒了出來,是一種無法形容的充實感,也是一種無法描述的興奮。
3 年前我第一次在 Stack 上執行 shellcode 取得一個 Reverse Shell 時我一定無法想像 3 年以後我只需要在 VM 中的 Microsoft Edge 瀏覽一個網頁,就能一路進行 Browser Pwn、VMware Guest-To-Host Escape, Windows Kernel Exploitation 穩定獲取一個 meterpreter shell,真心的說這不僅是一路走來的成長,也是經過無數夜晚的奮鬥所換取而來的寶貴經驗。
就算這些只能算是一種漏洞復現的過程,但在了解所有原理,逆向了 Windows Kernel、Edge、VMware 並從編寫專屬於自己的 exploit 所獲取的 meterpreter shell 時, 這種感覺是無與倫比的。
但如果只是這樣的話有點太簡單了,所以我從頭重新架了一個全新的環境,或許我們可以 Try Harder 一點,把 Windows Defender 全開,再像個 APT 一樣燃燒十幾個 CVE 一路突破到 Host。
如果有人問,學完 EXP-401 以後可以幹嘛,那大概就像下面這樣吧。
雖說畫面上有很多東西在飛來飛去,一看就知道有人打進來了,但為了觀賞性還是保留了下來 嘻嘻
考試心得
原本想著 OSEE 的考試是非常艱難的一趟旅程,但實際考起來難度大概只有課本難度的 50% ~ 60% 左右,如果把課程材料都讀熟再去考其實會感覺一切都在掌握中。
最後總共花了 28 小時拿到 100 滿分,讓我蠻意外的,認真覺得我以為會花至少兩天的時間才能到及格線,或許我正在不斷地進步中,仔細想想和一年前的我相比我真的成長了許多,有慢慢的開始認知到自己正在往前進步中,但最尷尬的是不知道現在到底走到了哪裡,或許我正處於達克效應的頂峰但我自己不知道。
但其實回頭看一下考試,真的可以感覺到是有難度的題型,而且每個部分都設計的很精妙,我覺得 OSEE 客觀來看絕對沒有像心得裡說的那麼簡單,他不是一個輕易就能通過的考試,而是一個給努力準備過的人的禮物。
其實在考完以後,能感受到這場考試只是在驗證你是否具有教材內有詳細講過具體知識的能力,OffSec 的教材很喜歡在可以延伸出去的地方做 Reference 讓你自己去讀,而這部分是 OSEE 考試中不會考到的內容,我認為在把所有 Reference 讀完並且在這之上實踐過以上的知識才真正算是對的起 OSEE 所謂 “頂級證照” 的 title。
EXP-401 或許能幫助一個想要成為 Researcher 的人靠近世界頂尖的研究,但是要能超越 OSEE 的能力,像 NiNi 在 Blog 中有提到的 “沒有任何證照可以直接證明一個人研究的品質。真正的能力,需要透過累積實績、發表成果來證明”。
每次考完 OffSec 的證照後都有一種感想,這個認證可以帶給一個人前進的方向,但到達終點後永遠會發現這只是起點而已,而在繼續往前延伸的那條路上走下去才是踏入了沒人探索過,也是最深淵的那塊地帶。
總之,這門課要說的東西實在太多了,感謝這五天一起奮鬥的戰友們在痛苦的時光內不斷突破 OffSec 所設下的邊界,也謝謝 DEVCORE 和 OffSec 提供那麼好的學習環境和資源,期待有一天能觸摸到頂尖研究的天際線。
EXP-401 / Advanced Windows Exploitation - Completed
如果有想準備 EXP-401 的人,希望看到這邊對你有所幫助。
引用 33 號遠征隊 Gustave 所說的 :
For those who come after.
Gustave , Clair Obscur: Expedition 33
附上一首讀 EXP-401 時很常聽的音樂