OSCP (PEN-200) 之心路歷程

Ken Yang
17 min readJun 16, 2023

--

拖了好久才寫出來的心得文,在去年年中取得 LPT master 後,原定計畫是去年年底來考 OSCP 的,殊不知從社畜滾回學校當學生後,發現時間變得沒有這麼充裕,一直拖到去年 12 月中才跟 Kevin 大神一起把課程刷下去。而在今年 3 月 15 日,OffSec 宣布 PEN-200 課程改版為 2023,趁著 Bonus Points 過渡期的這一個月,就順手預約考試了。

介紹

OSCP (Offensive Security Certified Professional) 是 Offensive Security 推出的滲透測試證照之一,課程代號是 PEN-200 (PWK),為其基礎滲透測試課程。目前如果要註冊 PEN-200 課程,只有 90 天與一年 (Learn One、Learn Unlimited)的方案。物價上漲,曾經的一個月方案及便宜價格已經回不去了。

OSCP price
https://www.offsec.com/courses/pen-200/

接著,關於改版的部分,從下方圖片可以看到,在 PEN-200(2023) 中,Web、PE、AD 等章節的內容變多了,而原先 PEN-200(2022) 有些章節挪到了 100 系列課程中,BOF 三個章節也直接從 PEN-200 消失,考試更是直接從有可能會出現 BOF 的題目,變成不會出現。

整體上,我覺得課程難度是有提升的,而且 Exercises 題目跟 Labs 機器都增加不少,尤其是在 Challenge Labs 的部分,新增類似 OSCP 考試的三組Challenge,他們分別由六台機器組成,包含三台 AD 機器與三台獨立機器,並且 AD 環境是需要 Pivoting,才能橫向到下一台機器,甚至是 Domain Controller。

PEN-200 (PWK): Updated for 2023
https://www.offsec.com/offsec/pen-200-2023/

而要獲得 Bonus Points 的話,需要完成 “每個 Module ” 80% 的 Exercises 內容 + 提交至少 30 個 proof.txt 的 hash,但在 7/1 前,PEN-200(2022) 仍然可以使用,之後就要完成 2023 版本的練習才有獲得加分的資格。另外,因為改版的關係,官方在 3/15 ~ 4/18 給出一段過渡期,這在之間參加考試,只需要提交 Labs 的 30 個 proof.txt,就可以達成加分條件。

考試結構

從下圖可以看到考試機器的分數結構,三台獨立機器分別各佔 20 分 (低權限10 分 + 提權 10 分),AD 環境共佔 40 分。

OSCP Exam Structure
OSCP Exam Structure

如果可以,一律建議拿到 Bonus Points,可以大大增加通過機率,如果是非常有自信的大神就另當別論了。考試滿分為 100 分,通過分數標準為 70 分,如果沒有拿到 Bonus Points 的話,通過門檻分為以下兩種:

  1. 完成 AD 機器 + 3 個 local.txt
  2. 完成 AD 機器 + 1 個 proof.txt + 1 個 local.txt

AD 三台機器的成績為 40 分,只有 0 分跟 40 分的差別,就算成功打下兩台AD 機器,沒有拿到 Domain Controller 的 proof.txt 也是0分,所以勢必要打下 Domain Controller 才有機會通過考試。那如果有拿到 Bonus Points 的話,就會有三種組合的通過方式:

  1. 完成 AD 機器 + 2 個 local.txt + bonus points
  2. 完成 AD 機器 + 1 個 proof.txt + bonus points
  3. 拿到三台獨立機器的 proof.txt + bonus points

假如 AD 沒有成功打下來,這時候有 Bonus Points 的 10 分,至少還有機會把 3 台獨立機器解出來,進而通過考試。

準備

報名完課程後,需要提交有效護照電子檔 (使用 PGP 加密),完成身分驗證就接著開始 PEN-200 學習之旅。我沒有特別到 Hack The Box、Try Hack Me、Vulnhub、Proving grounds 等平台找靶機練習,官方教材跟 Labs 是足以負擔考試難度,但更多的練習對考試來說絕對是有幫助的。

我在準備上大致分為三個階段,前兩階段是準備 2022 的內容,最後的時間則是在改版後,透過 2023 的教材來做準備。

1. 12月中 - 1月中

首先大概花了三週多完成整體 80% 以上的課程內容,原本是預計把 Bash Scripting、BOF 和 Metasploit 的部分放到最後來解,沒想到 3/15 改版後,新版直接把 BOF 的章節拿掉,考試機器的部分也不會出現,於是 BOF 那三個章節我就沒有特別去解題目了。

關於課程的部分,我是先快速看過線上教材,然後解 Exercises 題目,接著觀看影片搭配下載下來的 PDF,釐清搞懂每一個步驟跟指令,最後重新嘗試沒解出來的題目。我在解題的時候,有些會卡住解不出來,但在觀看影片及PDF 的時候,發現蠻多手法都寫在教材裡,再次利用教材的手法嘗試解題就成功了。另外,官方的 論壇Discord 都是很好的學習討論資源,遇到真的解不出來的題目,除了回去多看看教材,也可以上去提問或尋找解法。

2. 1月中 - 3月底

感覺課程看得差不多後,開始慢慢接觸 Labs,一開始毫無頭緒,不知道從哪台機器下手,我是先參考官方提供的 Learning Path 作為解題順序。我大概花了兩個月的時間,提交了 50+ 台機器的 proof.txt,在這兩個月的時間裡,也陸續把沒解完的 Exercises 解掉。

這裡不得不說,有伴一起讀書,真的是效率加倍,我跟 Kevin 大神每週會固定約個時間同步進度,一方面是督促讀書進度,另一方面是互相討論彼此的攻擊手法,交換思路。Labs 有很多種解法,多學習其他解題方式也是不錯的。

3. 3月底 - 4月中

在 3/15 OffSec 公告 PEN-200 改版資訊後,我在 3/29 取得 PEN-200(2023) 的訪問權限。我先花了一個晚上把 AD 的 3 個章節讀完,並解掉其 Exercises 內容。接著在清明連假的時間裡,陸續完成一些跟考試比較相關的章節,學習新的手法,雖然在考試中都沒用到就是了。另外,Exercises 題目是變多了,但也多了不少問答題,要順利把每個章節完成 80% 以上的題目其實不難。

另外,我有特別預留考試前一週的時間,用來解新版 Labs 模擬 OSCP 考試的 Challenge (OSCP-A、OSCP-B、OSCP-C)。除了可以練習在 Windows 機器做跳板外,也可以測試自己能不能在 24 小時內解完這 6 台機器。然後這三組Labs 的機器,不管是 Windows (Server) 還是 Linux 的作業系統版本都蠻新的,Kernel 版本也不例外,這部分跟我考試遇到的機器還蠻像的,可以拿來當作參考。而其他新版的 Labs,我就沒有特別花時間去解它了。

考試

官方是說考試本身不會因為這些更新而直接發生變化,在新版 PEN-200 中的任何新內容至少在發布六個月後才會在考試中出現。另外,由於 BOF 不再是PEN-200 課程裡的內容,所以也從考試機器中移除了。因為改版的關係,OffSec 在 3/15 ~ 4/18 這段期間,給出一段過渡期,只需要提交 Labs 的 30 個proof.txt,就可以達成加分條件。

我在公布改版資訊後的三天 (3/18) 到平台預約時間,預約的時間是 4/14 下午兩點。至於為什麼會選擇這天呢,我原本是打算在清明連假做最後準備的衝刺,而從連假完到 4/18 這段期間,不是整天的時段都被預約完了,就是只剩下早上或晚上開始的時段,按照我的作息,希望可以睡到中午開始考試,看來看去也沒什麼選擇,就直接選定 4/14 了。

考試就如同大家所知道的,有 23 小時 45 分鐘的時間來完成考試,並且考試結束後有24小時的時間完成報告並上傳。考試前15分鐘需要登入監考平台,時間還沒到會進不去。全程都在聊天室跟監考官對話,用不到麥克風,監考官有什麼需求,都會在聊天室告訴你。

流程大致上跟下方連結一樣,考試時是可以使用多個螢幕,這部分比 EC-Council 還人性太多了,而且休息時間是可以暫停關閉鏡頭,要繼續考試的時候,重新分享螢幕和開啟鏡頭就可以了。

我考試的時候在 Kali 上開了 4 個 Workspace (AD三台用同一個),防止開太多 terminal 視窗而搞混目標機器。而在算了一下考試機器配分後,我沒有自信能把三台獨立機器都解出來,AD 三台機器畢竟占了 40 分,也就是說,只要能解完 AD,就離拿到證照不遠了,所以我優先選擇 AD 機器,再來解獨立機器。

首先我花了一個小時就拿到 Domain Admin,順利在 Domain Controller 拿到 flag 把 AD Set 解完。再來花半小時拿到第一台獨立機器的 user 權限。到目前為止,花了一個半小時,就拿到一半的分數了。開局還算蠻順利的,沒想到真正的挑戰才正要開始,我怎麼試就是找不到第一台獨立機器的提權方法,另外兩台獨立機器也找不到入口點,打得非常崩潰。不得不說,適時的休息還是很重要,前面有說過,考試是可以暫停鏡頭的 (需要監考人員同意)。由於前一天只睡了大概5個小時,解題時真的太累了,不僅在兔子洞卡了很久,還一直打哈欠。我在晚上吃飯洗澡後,有休息小睡了一下,這時候我是有關閉鏡頭的。

躺在床上睡了一覺後,感覺腦袋有比較清楚,我開始尋找不同的已知漏洞與提權方式,雖然接著順利拿到了第二台機器的 user 權限,但我一樣卡在提權的部分,試了好幾個小時,突然想到為什麼我不換個腳本試試看呢,於是我回去打已經試過的已知漏洞,但是找了不同的腳本去嘗試,結果跟我預想的一樣,成功拿到高權限帳號。最後看一看分數來到了 80 分,剩下一台獨立機器沒有頭緒也懶得解了,感覺通宵都不一定打得出來,確認該有的截圖都有後,就在凌晨三點結束考試,總時間花費 13 個小時,包含休息時間 5 小時左右。

報告

官方有提供 報告範本 可以拿來修改使用,Youtube 上有不少教學影片,Github 上也有不少範本,如果喜歡 Markdown 格式,推薦用下方連結,可以省下不少時間。

考試報告格式為 PDF,檔案名稱必須為 “OSCP-OS-XXXXX-Exam-Report.pdf”,OS-XXXXX 為自己的 OSID。上傳報告的時候需要把 PDF 存檔為 .7z 文件,檔案名稱會變成 “OSCP-OS-XXXXX-Exam-Report.7z”,而且在壓縮的時候不能使用密碼加密。

接著到 Upload Exam Report 上傳檔案,上傳後頁面會顯示該檔案的 MD5 hash,如果跟本機檔案一樣的話,就可以提交檔案。另外檔案大小需要在200MB 以內,超過大小限制會無法上傳。

我在考試的時候就順便截圖丟到 word 上了,想說應該很快可以寫完,結果我寫了六個多小時,我是寫報告菜雞QQ,一直怕我寫得不夠完整或缺少東西,一直刪刪減減,還爬文去找漏洞的描述,最終寫了 38 頁,拖到 4/16 早上才寫完報告並上傳。而在 4/21 晚上,終於收到來自 OffSec 的通知,心裡的大石頭也終於放下了。

OSCP Certification Exam Results
OSCP Certification Exam Results

總結

整體來說,我覺得考試難易度比 Labs 還簡單,基本上攻擊手法都有出現在教材跟 Labs 裡,不是打已知漏洞就是常見的攻擊、提權途徑。最難的部分還是在尋找入口點,很容易在 rabbit hole 鬼打牆。如果可以的話,建議拿到Bouns 的 10 分,假如 AD 真的打不出來,至少還有機會把 3 台獨立機器解出來通過考試。而 AD 的部分,難易度我覺得比 OSCP-ABC 的 AD 機器還容易,Labs 機器有打出來的話,其實不用太擔心考試難度,而且 Labs 還可以練習在 AD 環境做跳板,當考試遇到 Pivoting 的時候,就不用擔心不知道怎麼辦。

我沒有每天都去看教材解 Labs,遇到期末考或者過年放假的時候,我自己也跟著放假。而原本我以為自己會考個兩次才考過,Labs 可能解不出來需要購買延長時間之類的,所以當初在年底特價的時候,直接買了 Learn One 的方案,結果用了兩個月我就覺得在浪費錢,三個月的時間絕對綽綽有餘。

考到 OSCP 對我來說,也算是完成一個小小的里程碑,曾經的我,連 CEH 都覺得遙不可及,至於會不會往 PEN-300 邁進,我也不知道。但至少 OSCP 是永久的,不會過期,也不需要繳交保護費。唯一的小小遺憾大概就是沒有實體證照 + 神奇魔法小卡了。

致謝

在這裡,要特別感謝三位大神,首先是一起刷課程一起解題的 Kevin 大神,不僅是我在大學實習時,一路帶領我接觸資安領域的前輩,更是從 LPT master & CPENT 一路走來的戰友。再來是我的研究所室友 Jerry 大神,教會我一些噁心的攻擊及提權手法,總是可以把我解不出來的機器,趁我去洗澡或休息耍費的時間,偷偷把它打穿。最後是在 CCoE 時,一直推坑我去考 OSCP 的 Billy 大神,從報名到預約考試一路給予協助,還時不時解答我的疑惑,幫忙釐清觀念。

附上比利大神的OSCP心得文

按照慣例來曬個證照~

OSCP (Offensive Security Certified Professional)
OSCP (Offensive Security Certified Professional)

資源

最後附上一些好用的資源,對解題多少有點幫助。

Windows 提權:

WinPEAS

Windows Exploit Suggester (WES-NG)

Windows Exploit Suggester - python3

PowerSploit

LOLBAS

THM — Windows PrivEsc

Linux 提權:

LinPEAS

Linux Exploit Suggester

GTFOBins

Reverse Shell:

Reverse Shell Generator

用MSFVenom 生成payload

SQL注入:

pentestmonkey - SQL Injection Cheat Sheet (不知道 SQLi 怎麼打,看 Cheat Sheet 就對了)

--

--