關於取得OSCP的一切

資安系列第三章

Posted by Peter on February 15, 2024

OSCP 這張證照在我的理解上,對於找工作或是投資個人技能的幫助都十分巨大,秉持著這個心態在懵懵懂懂的時候報名、考試,經歷過不少難關,但總算是拿到證照。也就想要把這趟不太輕鬆的旅程記錄下來跟各位做一個分享。

而這篇文章會盡量包含關於 OSCP 的一切,從怎麼開始 OSCP,到 LAB、考試等等我會盡量從我自己的角度出發去做詮釋,坊間對於這個證照也有諸多介紹,可能會有不少重疊的地方,就請多多海涵。

OSCP 是什麼?

OSCP 全名為 OffSec Certified Professional ,是由 Offensive Security 這家公司所推出的證照,也有個別名是: PEN-200: Penetration Testing with Kali Linux,是一張關於滲透測試 (Penetration Testing) 的證照,這張證照全方位地涵蓋到滲透測試的所有部分,包含作業系統、web、運用既存的漏洞等等,這張證照也常常被人稱作為「入門」級別的魔王證照,意思是雖然這張證照的考取難度不低,但這些知識僅僅能夠讓人踏入資安的圈子,並不是一張考取就會是資安大佬的證照。這張證照僅僅關於滲透測試,沒有包含到繞過防毒等等的紅隊操作,如果已經是對滲透測試十分熟悉,想要往紅隊技能前進學習的朋友,這張證照可能就不是非常適合。

證照定位

特別想提出這張路線圖,這是由 Paul Jerimy 製作的資安證照路線圖,很清楚地說明了 OSCP 在證照海裡面的定位,我們可以看到 OSCP 位於右邊的中間,且其定位於 Penetration Testing 與 Exploitation 的部分,這張圖另外一點不錯的是,可以看到其他路線的證照有什麼,我相信剛碰資安的人們都不會只想要一股腦地往滲透去走,去看看各種不一樣的方向也是一件好事。

不過這個定位跟分級我覺得還是參考性質居多,我自己這樣在看證照的分類的話,坊間比較不會把紅隊證照跟滲透測試證照這樣混雜在一起,但要說它們不屬於同一個種類好像也不全然,如果真的要了解的話,還是要一張一張去把他們點開來看才知道裡面有包含了什麼,其中雖然有包含像是 eJPT -> OSCP -> OSEP 這種相對明確的路徑,但裡面也涵蓋了像是 CRTO 這種完全紅隊的證照。

Security Certification Roadmap

source: https://pauljerimy.com/security-certification-roadmap/

價格與方案

比較特別的是,這張證照不只是一場考試,而是必須連他的課程一起購買,比較常見的方案是購買90天的課程加考試的組合包,總共要 1649 美元 (51,714.29 新臺幣),當然也可以選一整年 2599 的方案,其中可以考兩次試加上有一整年的 lab 存取時間,相對於 90 天的有餘裕很多,我個人是選擇了 1649 的方案,那時候時間比較多,如果我現在的話可能就會偏好花一整年的時間來讀。

image-20240207143153521

image source: https://www.offsec.com/pricing/individual/

恆逸?工研院?怎麼那麼貴?

image-20240207143849792

如上圖 google 結果,除了 Offsec 官網所出的 OSCP 之外,坊間也有很多專門為了 OSCP 出的課程,裡面看起來是會有老師一步一腳印的帶過所有課程,至於值不值得我想見仁見智,畢竟英文也是一道不小的門檻,OSCP 也並不是一張完全沒有資安底子的人就有辦法看懂的證照。

但,我想大家要考慮的比較首選應該會是價格與時間吧,這類型的課程動輒就要十二三萬元,這都足夠買 Learn One 還有剩了,而且上課的話就必須要配合上課的時間,我覺得如果有那個時間跟金錢的話,自己讀可能會比較省一點,也比較能自己掌握進度,不是特別推薦。

資安專業證照

我們數發部的資通安全署有一系列的資安專業證照清單,OSCP也算在裡面唷!

網站在這裡:資安專業證照清單-資安法規專區|資通安全署 Administration for Cyber Security, moda

OSCP 前置條件

OSCP 是沒有任何證照、年資上的前置條件的,不需要有個三五年的工作經驗才能拿到證照,但對於技術的門檻上,我想來聊聊這點。

  1. 英文:英文是整個 OSCP 裡面唯一會使用到的語言,從 Kali Linux 到所有學習素材,全部都沒有英文以外的翻譯,裡面除了一些專業術語之外,用到的英文其實相對簡單,沒有太多生澀的單字或語法,應該是相對容易的。
  2. 基本的滲透知識:如同課程名稱所說,這堂課叫做 PEN-200,前面還有 100,後面還有 300。100 所涵蓋到的內容是強烈建議一定要先學會的,可以看 PEN-100 的課綱來大概判斷需要學什麼,也可以把 TryHackMe 的 The Begginer Path 上完其實我覺得就有一定的程度。

PEN-100 所涵蓋到的內容

  1. 時間:如果是報名 90 天的班的話,時間上其實需要拿捏一下,尤其像我們非母語者要先花一點時間看英文,還要花時間去做練習,如果平常很忙碌的話,我覺得可以參考一下報名一年的,Offsec 也有出一個練習時程規劃建議,那個也可以參考看看,分別有 12 週與 24 週的。

準備 OSCP

前面有好幾篇文章有提到,像是 OSCP 課程心得 part1 – Challenge lab開始前的紀錄,跟在寫這篇的當下還沒寫好的關於準備的心得,這邊簡述一下大概要怎麼準備,大部分都是上面文章就有的內容。

  1. TryHackMe: The Beginner’s Path 不是很完美,但足以入門
  2. ippsec OSCP playlist: 一開始會有點難,不會的時候照著影片操作邊做邊學
  3. TJNull’s List: 這個我覺得上課前後都可以看,但上課前我比較建議看 HackTheBox 的。

在 OSCP 之前,我只有上過上面兩個內容,我覺得有點不夠,這些是我覺得要我再重考一次的話我會考慮上的:

  • PEN-100: OSCP 的前置課程,包含很多 OSCP 內會用到的內容
  • eJPT: 入門級滲透測試證照,應該可以鞏固到先前的知識,以便更好地進入 OSCP。

購買 OSCP

簡單帶過 OSCP 之後,來聊聊我當初是怎麼買的好了。像上面提到的,我沒有購買坊間所出的證照班,而是直接在官網購買,我購買的日期是 2023 年的 4 月,當時花費的金額是 1599 美元,也就是 48820 新台幣,我直接在官網刷卡。

刷卡刷完之後他就會寄信來要你安排時間,理論上是可以安排 42 天以內的日期的,但我那時候遇到一個問題是我卡刷下去後因為護照過期,無法進行身分驗證,也就無法安排日期,被系統強制安排了一個很近的。這點是在注意事項裡面沒有講到的。我那時候跟客服溝通之後他們雖然還是沒有幫我改日期,但在我成功驗證護照之後有幫我多加了幾天的 lab 的期限,我覺得整體跟 Offsec 客服的溝通都還蠻順利的,整體體驗很好。

如果有要考 OSCP 的朋友們別跟我犯一樣的錯了,先把護照辦好再來報名考試。辦護照可以去旅行社省事很多

課程

課程本體是一大本的 PDF 檔案,但我們不需要讀這 PDF,因為 OSCP 有提供網頁版本的課本及習題 (exercises) ,網頁版本就是把 PDF 切成一小塊一小塊分成一小個一小個的章節,我覺得蠻好閱讀的,裡面的習題也做得很不錯。

課程我覺得有一個比較特別的點是除了滲透測試的知識之外,裡面講到很多關於學習的心法跟實務上面的情境,這些蠻特別的,課程本體不像是在教你怎麼面對考試,而是教你怎麼樣成為一位合格的滲透測試人員,這點很有趣,讓課程的深度跟廣度加了很多,但比較難免的就是有很多跟考試無關的東西。

我這邊會建議在上課程的時候就開始整理自己的筆記,我上完課程的感想是覺得內容有點分散,如果在上課的時候就照著滲透測試的筆記把一項一項整理好應該會對之後的 lab 以及考試有很大的幫助。上課的內容比較像是依照各個大主題去做分類,但考試比較不一樣的是會根據作業系統、階段來去分應該做什麼事情,很多時候同一個階段在課本會散在各個章節,這邊是我覺得可以自己嘗試做整合的部分。

LAB (Challenges)

Lab 就是在課程跟練習之外還有額外的六台靶機,分別是三個 Active Directory 的環境,與其他三個 OSCP 考試類型的靶機,我這邊比較建議的是先把一些知識確實吸收之後再來打靶機,雖然會說做中學學中做,不過我還是覺得沒有一定的知識基礎就開始 lab 會感到很挫折,但 lab 的難度整體不高,我覺得課程如果確確實實地上完的話應該不會感到特別難受。

這邊我想講的是一個關於 Offsec 所推崇的觀念,Try Harder,沒錯,就是惡名昭彰的這句話,我覺得確實要抱持著這個心態去做不管是 lab 還是靶機的練習,學盡你所能學的,做盡所有 Enumeration,在走投無路的時候再多看幾個東西,多試幾個事情,想辦法把只要覺得好像有點問題的東西丟到 Google 中,總會找到出口的。為什麼我會這樣講,因為我自己的腦波超弱,我常常覺得打不過就看答案,然後覺得自己很笨,確實,看完答案之後能學到一點東西,但很多時候 (大概 80%) 的情況都是再努力一點就可以靠一己之力找到答案。除了關於滲透測試的技術力之外,擁有一個想辦法找到答案的好心態也是 OSCP 很重要的一環,而我在第一次考試沒過之後才意識到了這點。

時間控管當然很重要,但我覺得學著去花更多時間面對挫折,是更有價值的事情。

TJNull’s List

NetSecFocus Trophy Room

這個環節是我特別想要點出來的,我相信也有很多人都有提到,這是一個靶機的清單,意思是上面的靶機包含了很多 OSCP 相關的內容,我覺得… 是真的,TJNull’s List 大致上可以分為三個部分, HackTheBox, Proving Grounds Practice/Play, Vulnlab,我想花點時間講各個的差異。

Proving Grounds Practice/Play: 這個是 Offsec 自己家出的滲透測試練習平台,上面會提供各式各樣的靶機練習,這個平台被比較多人講說是「比較像」OSCP,但根據我自己玩下來的結果是,這個平台比起技術層面,在解題的思路上倒是跟 OSCP 比較像,PG 系列的靶機通常都比較直覺,漏洞就是漏洞,不太會需要仔細找,但是破解漏洞可能就會需要一些技法,可以嘗試著從找到的入口去逐步做搜尋慢慢突入,儘管難度一樣不低,但是相對比較直覺的。

HackTheBox: 這個是 HackTheBox 他們家自己出的練習平台,跟 PG 系列比起來就相對需要點洞察力。特色是他們家常常會把漏洞藏得很深,需要花很多小心思或是小巧思去找,不太直覺,但熟悉之後也相對沒那麼難。HackTheBox 的很大的一個好處是,他有專門的影片 walkthrough,也就是 ippsec 會單獨拍影片解釋他是怎麼拿到靶機的最高權限,這個影片對於學習非常非常有幫助,但要小心不要本末倒置了,自己的練習還是很重要,一味地抄作業不管是影片還是文字都不會對學習有好幫助。

VulnHub: 數量不太多,這些是從 PG Play 上退休下來的,沒有服務 (不用錢),但是需要自己架,整體來說想玩就玩。自己架靶機也是一個關於架設測試環境很重要的一環,我自己就有 windows 的 vm 以及 Active Directory 的 vm 來讓我自己去鼓搗一些有的沒有的東西。

在這個清單上面的練習時間會很多,不亞於在 OSCP 訓練平台上面的時間,我有一些心法想要分享,主要是上面提到的再努力一點,這個項目在這個階段其實有點難,因為他除了會出現你知道的問題,也會出現你不知道的問題,但是到了這個階段,我建議我們要有知道自己卡在哪裡的能力,意思是,在 OSCP 的學習階段我們會花很多時間在 Enumeration,這個時候不一定能完全知道我們要找的問題是什麼,但是到了 TJNull’s List 的時候,我會建議開始培養找到問題的能力,這時候除了能夠知道問題在哪裡之外,在自己遇到不會的問題的時候也不至於太灰心。

再者,我建議大家要自己對每一個練習完的靶機寫屬於自己的 write-up,在初期的階段,可能會覺得很多 write-up 沒什麼用,畢竟都是看人家的 walkthrough 後才成功打到的,但我覺得依然要寫下來的原因有二,未來的筆記需求,以及對自己的過程有一個重新梳理。

我們在看 ippsec 的 video walkthrough 的時候,常常會發現他都會記得他在哪個靶機遇過什麼樣的問題,把它記錄下來的話隨時都可以往回翻找到要找的東西,自己記憶也會比較深刻。透過這樣的筆記過程,也可以清楚地知道自己在過程中有什麼可以改善的地方,甚至是優化自己的整個流程,可以讓自己愈來愈好。

Exam

考試分為兩個階段,24 小時的上機考與 24 小時的交報告,我想先簡單敘述一下考試,再來從我兩次考試的經驗中總結一下可以注意的地方跟我的個人感想。

報名

關於報名,規定是要在 Lab 結束後的 120 日內完成考試,時間上面是建議早點安排,不然晚點的話很容易只剩下一些不是很友善的時間。我那時候以為是一年,結果報了一個很糟糕的時間。報名方法還蠻簡單的,在 Training Platform 的同一個平台上就可以了。如果補考的話一樣是同一個平台,但是要花費額外的 250$。

考試過程

考試過程相對簡單,首先要先設定螢幕擷取,然後執行一些設定以便監考人員能夠知道你的電腦狀態,考試過程是全程禁用其他電子產品的,如果有其他事項要處理的話必須遠離你的電腦,到其他環境去做使用。考試為期 24 個小時,如果要上廁所或休息只要簡單地在出去跟回來的時候講一聲就好,不用等到監考人員回應再離開。建議熟讀那一份考試規章,裡面寫得很詳細。我覺得特別要補充的是如果你用雙螢幕的話,那個螢幕投影軟體有點慢,要先等他跑出來選螢幕的選項,選完第一個後,這邊成功了但是只有一個螢幕,如果要投影雙螢幕的話,要把數量改成 2,之後再開始重新選第一個,選完之後等一陣子會有第二個選單,到時候再選第二個。

報告

報告比較重要的大概是你的 POC 有沒有做好筆記,以及截圖有沒有包含完整路徑與 IP 位址,其他就照上面就好了,比較重要的是報告怎麼寫,有的人是用 word,而我是用 noraj/OSCP-Exam-Report-Template-Markdown: :orange_book: Markdown Templates for Offensive Security OSCP, OSWE, OSCE, OSEE, OSWP exam report (github.com) 這個轉換器搭配 typora 去做,我覺得很好用,但在 Windows 上面設定需要一點功夫,但是其實也不太難,摸一下應該就會了。

word 最主要的問題還是排版太麻煩,用 Mackdown Template 可以省很多排版跟 syntax highlighting 的問題,Windows 上也能用,如果不太會設定也可以來敲我。

結果

交完報告之後就是等結果,我的情況是週四考試,週五寫報告,週六凌晨交完報告,周日傍晚結果就出來了,效率非常好。

考試心得

我第一次考試是在 12/8,而第二次考試是在 2/1,相隔了約兩個月。

第一次

蠻詳細的心路歷程寫在這邊,這篇是一月初寫的,也就是我剛好交完期末報告,準備開始準備第二次考試前寫給自己的一個回顧,裡面我覺得大部分經歷過的錯誤都讓我成長很多,最重要的地方是我開始培養寫 walkthrough/write-up 的習慣,這個習慣幫助我非常大。

如果說要給一個建議的話,我會建議好好的把 TJNull’s List 好好的過一遍,在每個靶機都寫一份自己的 write up。我考第一次的時候沒有練習到 HackTheBox 的部分,我到第二次開始練習的時候才發現自己少學了很多很多東西。

第二次

第二次的考試對我來說難度已經不高了,更多的是對於自己的期許與壓力,儘管這樣講,我在打完 AD 與其中一個靶機之後就沒有辦法繼續進行,儘管我心裡是很想要往更高分去走,但我在第一次考試之後的壓力與第二次拿到及格分之後的放鬆讓我遲遲沒辦法再把分數往前推進一步。拿到滿分確實不是一件很容易的事情。

由於經歷過第一次考試的關係,很多關於監考的緊張感、要怎麼休息等等的流程都已經相當熟悉,知道要怎麼好好面對靶機是最大的改變。儘管大家會說考試沒過沒有關係,下一次會更好,但實際上沒有那麼容易接受,我在考完第二次考試的等待成績環節十分緊張,連呼吸都不能好好呼吸,收到成績後還有點不敢置信。

我會建議如果你完全沒考過資安證照,甚至像我一樣是一個資安小白的話,我不太建議直接一劈頭就考這張證照,坊間還有很多其他的像是 eJPT 等等都可以幫助先鞏固知識,直接考 OSCP 我覺得壓力會有點太大了。

總結

寫得其實不是很多,比起考試的內容,更多都是關於我自己對於 OSCP 考試的想法跟一些小建議,如果有同樣想考 OSCP 的朋友們歡迎私訊粉專我應該都會看得到。

OSCP 不是一張容易的證照,需要相當多的耐心與練習,像上面講的,如果是完全入門的話我覺得蠻容易就把自己搞得壓力太大,越級打怪不是常常都能如此容易的。 Reddit 上面有很多神人心得文說資安小白一去報名馬上就考到,倒不是說不可能,而是真的需要很多時間、精力、練習才能達成這樣的目標。當然,如果你已經有其他證照或者是有滲透經驗的話,我相信 OSCP 對你來說應該就不會是很難的證照了。

這篇文章大概就到這邊了,後續會有其他文章分別關於從零開始的資安、以及 OSCP 之後的方向,如CRTO、CEPT、 AIS3 等等。有興趣的朋友們歡迎持續交流,共同努力。


感謝閱讀,本文同步發表於FB粉絲專頁 PP學習筆記