EC-Council CPENT v1 滲透測試認證 – 內容及心得分享

近日成功取得EC-Council CPENT的認證,來介紹一下這張去年才出現的新滲透測試認證CPENT,以及分享我的心得與想法。全文分成以下段落:

CPENT介紹

CPENT的全名為Certified Penetration Testing Professional,見明知其義,毫無疑問就是一張滲透測試的認證。考試是上機實戰考試,注重實務技巧,適合任何對於滲透測試有興趣的資安技術人員。上機考的成績是 70% 合格,除了得分 70% 可以取得CPENT認證以外,如果是高於 90% 則同時可以取得LPT Master認證,有機會可以一箭雙鵰。

以EC-Council自己之前VAPT路線圖來看,CPENT位於CEH與LPT之間,其實就是取代了先前ECSA的位置。不過這篇還是跟我之間ECSA的心得文一樣,要老生常談說一下,CEH並不是針對於滲透測試的課程與認證,一般比較滲透測試的認證,是不會拿CEH來討論的。

EC-Counci VAPT Track

CPENT詳細課程章節會在下面內容提到。課程以及考試主題不外乎就是針對滲透測試,不過其實官方公告的涵蓋範圍是滿廣的。在EC-Council的官方網站上,可以看到有段CPENT的介紹:

https://www.eccouncil.org/programs/certified-penetration-testing-professional-cpent/

在網頁中間可以看到 CPENT… No other Pen Test Course like it!

或是拉到網頁下面可以看到 What Makes The Certified Penetration Testing Professional (CPENT) Unique?

這一段洋洋灑灑的列出了12個項目,其實這12個項目就是考試的範圍了,要通過考試所需的知識及技術都包含在這12個項目之中。考完試之後,自己回頭看這12個項目,的確是如此,考試範圍沒有超出這些,同時也是必須要掌握這每一個項目才行,但不同項目的難易度或技術需求有差異就是了。

  • Advanced Windows attack
  • Attacking IOT systems
  • Writing exploits: Advanced binaries exploitation
  • Bypassing a filtered network
  • Penetrating OT network
  • Access hidden networks with pivoting
  • Double pivoting
  • Privilege escalation
  • Attack automation with script
  • Bypassing advanced defensive mechanisms
  • Build your armory: Weaponize your Exploits
  • Write professional report
CPENT Domain

(圖片來源: https://www.uuu.com.tw/Public/content/Edm/201228_CPENT.htm)

不過實際上考試並不是以12個項目分區(也不可能這樣區分),實際的考試會分成五大區域。分別是Active Directory、Binary/IOT、CTF、OT、Pivoting and Double Pivoting。五個區域的會涵蓋上述的12個項目範圍。稍微要特別強調的,是五個區域,不是五台機器(Machine),也不是五個網段。

如果你是長期在玩Hack the Box (以下皆簡稱HTB)的玩家,可能會很習慣每次的滲透是針對一台Machine進行攻擊,入侵取得最高權限。不過在CPENT中,稍微要轉換一下思路,在CPENT中其實就是給你一個內網環境,裡面有許多的Network和Machine,要自己去進行Host Discovery(主機發現),而你的目的也不是要把所有的機器都給打下來,取得root/administrator權限。是否需要攻陷機器,或者僅是蒐集資訊,都要看題目來決定。(也有的機器或許本身就是沒辦法攻陷)

考試五個區域分數是平均分配的,因為70%成績可以取得CPENT,所以你就算不擅長一個區域,或講誇張一點,你完全放棄某一塊區域,也是有機會通過CPENT的。不過當然是建議你不要放棄任何一個領域,我覺得每一個區域在考試題目難度都不算真的很困難,而且多學些東西也是好事情。

另外提一下,我這篇文章分享比較是偏向CPENT課程內容以及考試心得,並沒有針對於技術上需要的技能與知識分享。譬如需要準備什麼工具,熟悉哪些語法跟技巧。主要原因是,如果想考CPENT,我目前是一律推薦報名恆逸的課程,那考試所需要的技能跟知識,課堂中都會教到。如果不報名恆逸直接從EC-Council進行報名考試(應該可以吧?),一來是我覺得沒有上課或有人指導,要通過有點難度;二來是課程中可以學到的內容很豐富。

CEPNT 課程

CPENT Course

(圖片來源: https://www.uuu.com.tw/Public/content/Edm/201228_CPENT.htm)

這邊來提一下課程內容,我上的是恆逸的CPENT課程,講師是Vincent唐任威老師。課程內容涵蓋滲透測試介紹,內網外滲透流程、方法論以及技術實作,類型包含AD攻擊手法、IoT分析、Binary分析跟Buffer Overflow利用、OT封包分析、Web攻擊,其實就是考試的範圍啦~若要對應到章節的話,是上圖的01、05、06、10、11、13、14、還有附錄1(AD)。這次我第二次上Vincent老師的課,我覺得老師上課的方式很好,很有梗,偶爾略顯激動,但這種教學形式對於記憶很有幫助XD

因為考試是實際上機考試,所以課堂會有很多地方是老師會先教學及示範一次,再讓大家自己練習操作。也因為是實際上機考試,整個課程在技術上會提及到更多關於技術”細節”的地方,這些細節如果今天考試是單純看書考選擇題的形式,應該大部分會被略過吧,例如使用工具時關於Dependency的Debug、不同的網路跳板(Pivoting)方法及特性、Windows AD的金銀票券攻擊實作。

有一段內容我覺得滿經典與重要,是提到關於Host Discovery及Port Scan的細節,主要使用工具是大家常聽到的Nmap。在Network Penetration Testing當中,我自己認為能夠瞭解熟悉Nmap與掃描的原理是很重要的,很多時候其實Nmap掃完,你大概就會知道有那些可以嘗試的滲透方法。也不是說Nmap無可取代,而是它就是這麼好用與強大,沒甚麼不去學或是不使用的道理。而為什麼我會覺得Nmap這段很重要,其實也是自己吃過了虧。不知道大家有沒有遇過Nmap做Host Discovery,明明主機是活著的,但你卻沒辦法發現它;有沒有遇過一台主機你掃下去,卻顯示1-65535全部Port都是開著的,但實際上根本沒服務;還有掃1-65535 Port,它就是顯示開了一千多個Port,而且每次掃都會是不同的隨機的一千多個Port;還有明明在內網,光是掃預設1000個Port,就花了超過八個小時?很不巧,以上都是我自己遇到過的事情,如果連Host Discovery及Port Scan的原理都不能夠了解,不知道怎麼Debug,那遑論要進行下一步的找到漏洞進行利用。

課程中多數的內容,我認為具有基礎的網路、Linux技能,以及資安知識,學習上應該不會太困難。而且實體授課,有問題都可以直接問。至於上完課到考試要花費多久的時間準備,這個就因人而異不好說了。課程當中我覺得比較難的大概就是Binary Exploitation的地方(當然也是我自己本身就對這塊比較不熟)。

自己對於Buffer Overflow的了解,大概就是先前想準備OSCP,有看了網路上推薦的BOF教學,然後打打TryHackMe(THM)平台上的BOF練習題目,這樣的內容都沒甚麼問題,熟悉流程與簡單的原理。OSCP跟CPENT都有BOF的題目,我自己的想法是CPENT的BOF題目,稍微比OSCP深一點點。不過有個很妙的就是,兩個路線還是稍有不同。我覺得打Binary BOF這一段,我先分成兩種人,一種是熟悉精通BOF的,一種是像我這樣為了考認證才準備而且還沒有很熟悉的XD。如果你已經精通,我認為兩者對你差異不大。而對我這種來說,兩者無法融會貫通隨時切換。其實我原本準備OSCP BOF那一段算是滿有自信了,至少在THM上面解了10題都算順利。但終究就是個腳本小子,光是從Immunity Debugger改成使用GDB,腦袋就卡了一下。原本只會把shellcode寫到ESP,要多學ROP,腦袋開始打結,但是滿有趣的啦。然後BOF這一段其實觀念上比考試實作難就是了。

CPENT的原廠教材部分,會有一本厚厚的書,有電子教材,有線上的iLab以及Practice RangeiLab其實是從ECSA那時候就有的東西,不過之前ECSA時我沒有去玩iLab,所以無法比較差異。iLab使用的時候環境是全線上的,攻擊機器與目標環境都在線上。內容算是滿豐富,但有幾個點挺特別的就是了。首先你即使認真做完iLab,也不一定能通過CPENT就是了,裡面有幾個章節跟考試內容類似或接近,但也有些與考試關聯性低落,準備老師上課說的與教的內容更實際。然後iLab提到的工具有一些稍微偏舊,現在應該比較少人使用;有一些內容感覺有點繞路做事情,其實不用這麼大費周章的解,不知道幹嘛搞到這麼辛苦。但整體來說,iLab提供了很不錯的環境,你可以在上面做很多練習與測試,上課時老師教學的練習也都是在iLab操作。

另外就是Practice Range,算是模擬考的體驗環境(?),EC-Council原廠是怎麼看待這個Practice Range我是不太清楚。但照老師說法,就是考試前啟用,然後用自己的機器,VPN連線進去了解一下考試時的環境跟感覺是怎樣,不要太認真去解上面的題目。實際啟用Practice Range連上去練習的時候,會發現是真的不少問題…像是題目跟答案有問題,或是機器有問題等等。這點我自己覺得是EC-Council要好好重視跟改善的點之一。

CPENT vs ECSA

CPENT其實就是ECSA的改版,可以算是ECSA的接班人。課綱內容大概上有7~8成與ECSA相同,最大的改變是考試模式的更改,由原本的選擇題變成實際上機考試,並且是自己準備攻擊機(會提這點是因為跟CEH Practical模式不同)。

以課程章節來看,除了下列四個章節變動外,其餘章節標題沒有更動,內容與投影片只有少數的變化。

原本ECSA當中的資料庫滲透章節

  • Database Penetration Testing Methodology(資料庫滲透測試方法)被移除了

CPENT新增了IOT、OT、Binary的章節

  • IoT Penetration Testing (物聯網滲透測試)
  • OT/SCADA Penetration Testing (工控滲透測試)
  • Binary Analysis and Exploitation (二進制程式分析與攻擊)

雖然CPENT及ECSA教材大致相同,但由於考試模式的變更,上課的方向及內容是會與ECSA大相逕庭。我自己剛好上過絕版的ECSA,所以滿了解的,其實很慶幸有上過ECSA課程,畢竟由於改版後是上機考試,為了要讓學生可以通過認證,一定會把大部分重點放在考試範圍內。我覺得這必然是無法避免的,相信多數學生也會希望是這樣的模式。ECSA當時其實提到稍微多一些在業界滲透測試實務的注意事項,雖然比較無關技術實作,但仍然重要。然後ECSA會提到的範圍是比較廣泛的,像是社交工程、Wireless、OSINT等等,而CPENT會著墨在許多技術實作的地方,尤其針對與考試範圍相關的內容,與考試範圍比較無關的例如Wireless部分,就也不會提到。但不管是哪個,課程內容都是很豐富扎實。

CPENT vs OSCP

CPENT考試,其實調性跟OSCP差蠻多。老師上課也經常會提到。但兩者都是針對滲透測試的實戰認證,我想會被拿來比較是無可厚非的。

何謂調性差很多呢?這點真的是難以解釋XD 我覺得是一種從外行的角度來看,是差不多的東西,可是如果是該領域的人,身在其中的人,會覺得是有點不同的東西。像是排球或是沙灘排球,我可能覺得,阿不就是排球;或是網球單打與雙打,可能覺得單打強的人去打雙打,雙打一定就會很強,其實也不一定是這麼回事。說來就是好像是同一個類型領域的東西沒錯,但的確會感到差異的那種。也許實際接觸可能才會體會差異。畢竟也看了網路上不少OSCP心得文,單純論技術難度深度,我想是OSCP一定是比較難。但如果說到比較難準備,難考,如果沒到恆逸上課的話,我想滿可能是CPENT的,但那個不是技術的難,而是範圍太大難以準備,沒有方向,光是一個OT的準備,你OT領域這麼廣,是要準備多久。以目前時間點來說,網路上分享也寥寥可數,不像是OSCP有大量心得文跟經驗文。但我覺得,有具備基礎技術能力的人,有好好上課跟練習的話,上完課要取得CPENT應該算是十拿有個八九穩(但運氣也是成分之一就是了,任何考試都是帶有運氣的)。

雖然不能這樣比,但硬要說難度的話,我的猜測難易度會是:

自學考CPENT > 報考OSCP > 上課考CPENT

但我實際更想表達的是,因為不同認證其實考試命題方式與類型,彼此就會存在著不同的差異性,即使都是滲透測試這個領域,這個差異的是足以讓你無法直接性的拿來做比較或是做高低之分。它們之間的關係不會是,誰比較難,我考過了哪個,所以我另一個一定可以過。但兩者所需要的知識與技術是有許多的交集。

錯誤觀念
(X)我考過OSCP了,那我一定可以考過CPENT
(X)我考過CPENT了,那我一定可以考過OSCP

正確觀念
(O)我通過了OSCP,而準備OSCP過程中的內容對於考CPENT是有幫助的,接著考CPENT會更容易
(O)我通過了CPENT,而準備CPENT過程中的內容對於考OSCP是有幫助的,接著考OSCP會更容易

CPNET還有兩點與OSCP不同,這兩點在認證的宣傳上都算是很經典的特色,對有些人來說應該是關鍵的關注點。第一是CPENT可以使用任何的工具,而OSCP則是禁用Metasploit(可以用一次)、Nessus、sqlmap、Burp Suite Professional等等。我相信對不少人來說,這可能會是在意的點。趁這個機會其實我想聊聊關於這件事情,提一下我的觀點。

其實之前聽人提到OSCP,或是介紹給別人聽,還是看討論或介紹,都會提到這件事情,不能用Metasploit不能用自動化掃描工具之類的。這對於剛進入資安領域的我,或是現在跟其他新手提及時,都是覺得好像很「嚴格」,很「困難」的條件。但實際上,當你開始學習滲透測試,有了一些不管是實務或是靶機的經驗,你會發覺這個條件的並沒有這麼大的影響,它的宣傳效果其實遠大於實際上的影響。我這次的CPENT的考試,也沒有用到任何商業掃描工具,也只用了一次Metasploit(但也不是必要,就懶得上網抓exploit)。我相信對於多數通過CPENT及OSCP的人來說,應該也認同,就算考試允許你用Nessus去弱點掃描,你也不會真的拿Nessus來用啦,單純就是浪費時間而已。在平常玩HTB或THM的平台時,也不太會用弱點掃描工具去找網路或網頁的漏洞。當然,OSCP這個限制,也不是沒有意義的,只是沒有大家想像的那麼可怕。

第二點是CPENT考試可以選擇一次24小時,或是兩次12小時。這對於考試通過的難易度我認為或是有直接關聯性的,影響還不小XD。兩次的時間分配,中間有時間可以重新整理思緒及分析準備,其實滿大程度降低通過測驗的困難性。而對於有些人來說,可能因為身體或家庭因素(還是其他因素?),沒辦法一次就考24小時的人,CPENT也成了一個選擇。

CPENT 考試及心得

我是報名今年三月的CPENT課程,個人背景是有滲透測試經驗的。但其實從去年年底開始,就不是專職做滲透測試了,雖然一直都有在做資安,大多數工作內容也是與技術相關。但就沒有像過去那樣整天打PT,其實手感難免還是有些生疏。所以我從今年二月份開始,有訂閱了一下TryHackMe(THM)平台,想說體驗看看順便練練手感,也有複習跟打個幾台HTB的靶機。CPENT課程正式開始後,大致上就是練習與複習上課所提到的內容。課程一直到5月底結束。5月底剛好又有一期CPENT課程,我有報名重聽,但實際上我只聽了Binary(BOF)的部分。準備的時間大概是從2月到4月,還有考試前的幾天。5月份因為個人因素放飛一陣子。總共準備時間我想是3個月左右吧。

考試是選擇兩次12小時,分別於6/9及6/15考試,報告則是於6/15當天上傳。6/9第一次考試,花費了8個小時。近8小時的時間完成95%的內容,最後只剩一個Double Pivoting的題目,當時搞錯方向,掉進Rabbit hole。當下知道眼中只看到一條路,但又確定這條路是不通的,決定先End Exam。6/15第二次考試,就輕鬆解決了原本遺留的題目,接著確認一下題目有沒有填錯,該截圖整理進報告的內容是否齊全,大概花費1個小時就結束了,結束第二次的Exam。分數在你送出答案的當下就會顯示出來,然後記得要在考試結束的七天內提交滲透測試報告。很幸運的在CPENT Exam中拿到了滿分🎉🎉🎉,同時也取得LPT Master認證。

考試過程說來都還算是滿順利,只是官方原本預定可以考試的時段只有中午下午,如果要提早成早上,要寄信過去更改考試時間,不能從官方系統預約。不過我自己發信都是一天內有得到回覆,然後交談過程也都順利。還有一點不習慣的就是考試規定不能使用雙螢幕。

接著提幾個,我個人認為EC-Council CPENT原廠的問題點或是可以改善的地方:

1.首先要提的,絕對是太多的暴力破解,我相信如果是平常有做滲透或是打靶機的,一定也會深有同感。如果是要測試使用ssh、web、smb、rdp的暴力破解,其實可以各出一題就很足夠。但整體來說暴力破解題型太多。

2.AD是考試五大區域之一,可是卻被列在附錄,這點滿奇怪。

3.這個算是優缺並列的改善建議,我覺得CPENT有OT跟IOT類型,是非常棒的特點。但有點可惜在深度跟技術鑑別度上沒有很好的發揮。但這個老實說也不好拿捏,畢竟這兩塊都是可以很深的。

4.這也是個小建議,就是提權可以多有一些變化。但我必須說,我自己是傾向不要太複雜的就好。其實玩過THM、HTB、vulnhub不少題目的經驗,覺得有些提權真的太花式了。畢竟我認為認證應該是看是否具備滲透測試能力,不是要考倒你。

整體上,我是推薦CPENT課程跟考試。課程不用多說,Vincent上課收穫滿滿,絕對是可以鍛鍊自己的技術,增長知識。而考試,畢竟實務上機的認證很難得,我其實很推廣,不管是CPENT,到OSCP(或該機構其他認證),還有Portswigger的Burp認證,針對AD的Certified Red Team Professional (CRTP),還是其他eCPPTv2、PNPT(目前在台灣比較冷門)。關於推廣實際上機考試,我的想法是用嘴巴做PT很容易,但真的上機情況可能就不同(有機會可能另外發篇文或影片講)。今天給你一台Linux攻擊機跟Windows弱點機器,跟你說存在3389 RDP弱密碼漏洞,問你要怎麼打?如果選擇題就直接選「利用暴力破解取得密碼,然後RDP連線過去」,答案的確就是這樣,正確無誤。但實際上給你上機去打一次,你知道要怎麼做暴力破解嗎跟Linux RDP連線嗎?要用現成工具還是自己寫Script?你找到了工具,你會使用嗎?你找到了hydra可以暴力破解,用xfreerdp可以連線,實際使用時如果兩個工具的Dependency衝突怎麼辦?如果密碼裡面包含特殊字元,要怎麼用xfreerdp連線?上機順利的時候有時真的很順利,但不順利的時候,就會一堆狀況要排除,光是準備好攻擊機,其實就是一個基本的考驗。所以這個答案「利用暴力破解取得密碼,然後RDP連線過去」,我覺得對非技術人員,或者可能不是做滲透的人員,知道這樣的思路是很足夠。但對於想入門滲透或是紅隊的,你必須能夠把思路進行實作,這個是要在實務上機的情況下才能展現的能力。CPENT是一個對於技術來說,具有基本鑑別度的滲透測試認證。但若要深究其滲透技巧上的難易度或複雜度,並沒有真的讓人感到非常困難或是複雜。

不同認證都會有不同的領域類型,即使是同樣歸類於滲透測試的認證也是,我自己其實覺得CPENT分成五個領域,是還滿不錯的方式。除了跟其他滲透測試認證有做出區隔,平均分配五個領域出題與計分也是很平衡的方式。

題外話,要不要考認證,或需不需要考認證,也是看自己想法或是公司需求,我身邊也是有高手沒有拿甚麼資安認證的。然後認證這麼多,口袋錢錢也沒這麼多,可以自己想想要怎麼選擇適合的或想要的課程及認證。

總結一下,CPENT它是一張具有滲透測試技術入門鑑別度的認證,要學習滲透測試的人,上恆逸的CEPNT的課程,可以學習到不少實用的內容。考取的難度部分,對於有技術基礎的人,上完整門課程,如果都有專心聽課以及練習的話,我相信是都可以順利通過的。那對於如果已經本身是做滲透測試經驗豐富的人員,或是已經長期打HTB題目(能夠自己輕鬆解題的),比較想要尋求「挑戰」的人,有可能會比較不適合,畢竟考試題目難度沒有太多困難及刁鑽的部分。

最後曬個分數跟認證,CPENT & LPT Master 🙂

Certified Penetration Testing Professional v1
Licensed Penetration Tester (Master)

This Post Has 4 Comments

  1. hi

    謝謝分享

    1. hackercat

      謝謝支持!

  2. CHI

    冒昧請教,下星期也要去上VINCENT的CPENT,對於資安新手來說課程會很難理解嗎

    1. hackercat

      新手的範圍也是挺廣的XDDD
      但如同我文章內提到的,如果原本已有資安知識,有一些網路跟Linux的經驗,
      課程吸收上應該問題不會太大。至於如何應對考試,課程中講師也會分享很多技巧。

      萬一課程內容真的對你來說從頭到尾都「很難」理解,我覺得可能是您有些越級打怪XD
      我記得考試時間應該是可以延滿久,可以回頭再花時間補充其他知識與技術,等基礎扎實再看CPENT內容準備考試。

發佈留言