TL;DR

ถ้าจะอ่านสาระล้วนๆ ข้ามไปที่ CPTS Exam Tips & Resources เลยก็ได้ครับ 🤣

Preface

ผมเพิ่งผ่านการสอบ Certified Penetration Testing Specialist ของ Hack The Box (HTB CPTS) เป็นประสบการณ์สอบ certification ที่ให้ความรู้สึกหลากหลาย ทั้งท้าทาย เครียด สนุก สิ้นหวัง ตื่นเต้น ปล่อยวาง ฯลฯ เลยขอรีวิวเก็บไว้หน่อย

CPTS Course Overview

เงื่อนไขของการสอบ CPTS คือต้องเรียน Penetration Tester Job Role Path ให้ครบ 100% โดยเนื้อหามีทั้งหมด 28 modules ผมใช้เวลาเรียนช่วงกลางคืนหลังเลิกงาน รวมทั้งช่วงวันหยุดต่างๆ เริ่มตั้งแต่ต้นเดือน มิ.ย. 67 และเรียนจบตอนต้นเดือน ธ.ค. 67 ใช้เวลารวมๆ ประมาณ 6 เดือน

เนื้อหาของคอร์สโดยรวมดีมากๆ ถึงไม่ได้อยากสอบ CPTS ก็แนะนำให้เรียนถ้าสนใจเรื่อง penetration testing ครับ เทียบกับคอร์ส PEN-200 ของ OffSec แล้ว คอร์สของ HTB สอนละเอียดกว่า เนื้อหาลึกกว่า และมีตัวอย่างให้ดูเยอะกว่า

ภาพรวมของคอร์สจะสอนการทำ network penetration testing ทั้งกระบวนการ ตั้งแต่การทำ enumeration, web attack, application/service/API attack, privilege escalation, pivoting, Active Directory attack รวมไปถึงวิธีการเขียน penetration testing report แบบ professional

และปิดท้ายคอร์สด้วย walkthrough การทดสอบเจาะระบบในองค์กรตั้งแต่ server ข้างนอกไปจนยึดครอง Active Directory ที่อยู่บนเครือข่ายภายในขององค์กร (Attacking Enterprise Network: AEN) เหมือนเป็นการทบทวนความรู้และทักษะที่เรียนมาทั้งหมด เพื่อเตรียมความพร้อมในการสอบ certification

CPTS Exam Overview

การสอบจะใช้ voucher 1 ใบ เมื่อสอบเสร็จต้องส่ง report ให้ทีมงาน HTB ตรวจสอบและให้ feedback หากสอบไม่ผ่านมีสิทธิ์ retake ได้ฟรี 1 ครั้ง แต่ถ้าไม่ได้ส่ง report ก็จะเสียสิทธิ์ retake ไปเลย

เราสามารถเริ่มสอบเมื่อไรก็ได้ ไม่ต้องจองเวลา และไม่มี proctor เมื่อกดปุ่มเริ่มสอบแล้วจะมีนาฬิกานับถอยหลังให้ 10 วัน เราต้องหา flag ให้ได้อย่างน้อย 12 จาก 14 flag และต้องส่ง report ที่มีเนื้อหาตาม template ที่ HTB กำหนด

รูปแบบการสอบจะเป็นการทำ network penetration testing พร้อมเขียน report ให้กับบริษัทที่จ้างเรา โดยเริ่มจาก server ที่อยู่บน external network แล้วพยายาม pivot ต่อเข้าไปใน internal network โดยเป้าหมายหลักคือการ compromise Active Directory ให้ได้

My Exam Experience

ผมเริ่มสอบเช้าวันที่ 26 ธ.ค. 67 และส่ง report ตอนเช้าวันสุดท้าย (5 ม.ค. 68) ก่อนหมดเวลาประมาณ 5 นาที ประสบการณ์ในการสอบขอสรุปสั้นๆ ว่า “เกือบหลับ… แต่กลับมาได้” 😅

คือระหว่างสอบมีช่วงที่ไม่รู้จะไปทางไหน และไม่มี progress ใดๆ เลย ประมาณ 4 วัน จนถอดใจแล้วมานั่งเขียน report แบบชิลๆ กะว่ารอ retake เลยละกัน แต่ทำ report เสร็จมีเวลาเหลือ เลยไปลองเล่นดูอีกรอบ ปรากฏว่าหาทางไปต่อได้เฉย

พอไปต่อได้ก็เริ่มรู้สึกสนุกกับการสอบ และคิดว่าเข้าใจแนวคิดของ HTB ที่ออกแบบ environment ในการสอบนี้มากขึ้น แต่ด้วยความที่เวลาหายไป 4 วัน การสอบในวันที่เหลือก็เลยค่อนข้างกังวลและเครียดพอสมควร (มีคืนนึงถึงกับนอนไม่หลับ) แต่ก็ปลอบใจตัวเองว่าคงทันแหละน่า 555+ 😭

ผมทำคะแนนได้ถึงเกณฑ์ขั้นต่ำที่จะสอบผ่านตอนเหลือเวลาสอบอีกประมาณ 18 ชั่วโมง หลังจากนั้นก็นั่งทำ report โดยกะว่าดึกๆ น่าจะเสร็จและมีเวลาอ่านทวนอีกรอบก่อนส่งตอนเช้าวันสุดท้าย…

แต่สิ่งที่เกิดขึ้นคือผมนั่งทำ report แบบโต้รุ่งยันเช้าก็ยังไม่เสร็จ 😫 ใส่ข้อมูลในรายงานได้ไม่ครบทุกหัวข้อตามที่ report template กำหนดไว้ แถมมีเรื่องตื่นเต้นคือผมแปะโค้ดเพื่อทำ formatting ไปหลายสิบหน้า แล้วมันมีส่วนหนึ่งที่ error ทำให้เวลาสั่ง render PDF แล้วสร้างไฟล์ report ไม่สำเร็จ และมันเกิดขึ้นในช่วง 15 นาทีสุดท้ายก่อนหมดเวลา 😱

นั่งทะเลาะกับตัวเองอยู่พักนึงว่าจะพยายามแก้ error หรือจะเอา report ที่เคย render ไว้ก่อนหน้านี้ส่งไปเลย (เนื้อหาจะหายไปเยอะ) แต่ก็คิดว่าไหนๆ มาถึงขนาดนี้แล้วก็พยายามให้ถึงที่สุดละกัน จะได้ไม่มีอะไรค้างคาใจ หลังจากตั้งสติได้ ก็มาไล่ตัดโค้ดออกทีละส่วนจนเจอส่วนที่ทำให้ error ก็เลยแก้ไขแล้ว gen PDF ส่งได้ทันแบบฉิวเฉียด 😵

ถ้าให้ประเมินผลงานตัวเองก็คิดว่า ความรู้และทักษะของผมน่าจะยังไม่พร้อมกับการสอบ CPTS ซักเท่าไร 😑 ผมใช้เวลา 10 วันเต็ม วันละเฉลี่ย 16 ชั่วโมงในการสอบครั้งนี้ และตัว report เองก็สามารถทำให้ดีกว่านี้ได้… คิดว่าถ้ามีความพร้อมมากกว่านี้น่าจะใช้เวลาในการทดสอบเจาะระบบไม่เกิน 8 วัน ส่วนที่เหลืออีก 2 วันเอาไว้ทำ report อย่างเดียว

The Wait

หลังจากสอบเสร็จก็บอกทุกคนที่ถาม ว่าน่าจะสอบไม่ผ่าน รอ retake เพราะผมรู้สึกว่าทำ report ได้ไม่ดีเท่าที่ตั้งใจไว้ และตามที่ได้ยินมาคือ examiner จะอ่านรายงานค่อนข้างละเอียด และมีหลายคนบอกว่าสอบไม่ผ่านเพราะคุณภาพ report ไม่ถึงเกณฑ์ที่ HTB กำหนด

การพิจารณา report ของทีมงาน HTB มี SLA อยู่ที่ 20 วันทำการ ผมส่งไปวันที่ 5 ม.ค. ดังนั้นก็อาจจะต้องรอจนถึงวันที่ 31 ม.ค. ถึงจะรู้ผล ระหว่างนี้ก็พยายามพักผ่อน ไม่คิดอะไรมาก แต่ก็นั่ง refresh หน้า Exam ใน HTB Academy วันละหลายรอบ 555+

ช่วงที่รอก็สิงอยู่ใน Discord ห้อง CPTS ของ HTB นั่งอ่านประสบการณ์คนอื่นว่าเป็นยังไงบ้าง มีคนนึงบอกว่าถ้าตกเพราะ report จะได้ feedback กลับมาเร็วมาก ของเค้าแค่ 6-7 วันทำการ ก็ได้ผลสอบแล้วว่าไม่ผ่าน เลยเริ่มรู้สึกใจชื้นขึ้นมาหน่อยว่า เออสงสัย examiner อ่านแล้วยังไม่รู้สึกว่าควรให้ตก เลยต้องใช้เวลาพิจารณานาน 😝

The Result

ผมได้เมลแจ้งผลการสอบในวันที่ 28 ม.ค. ตอนประมาณตีสาม รวมระยะเวลาที่รอหลังจาก submit report ก็ประมาณ 17 วันทำการ พอเปิดเมลมาเห็นคำว่า You are a certified hacker! แล้วน้ำตาจะไหล รู้สึกโล่งใจมากที่ไม่ต้องสอบและทำรายงานใหม่อีกรอบ 😆

พอคลิกลิงก์ที่อยู่ในอีเมล ก็จะเข้าไปที่หน้า Exams ใน HTB Academy และมีลิงก์ให้กดเพื่อดาวน์โหลด certificate ได้ออกมาหน้าตาประมาณนี้

Hack The Box CPTS Certificate

CPTS Exam Tips & Resources

ขอแบ่งเป็นสองส่วน คือ การเตรียมตัวสอบ และระหว่างการสอบ

Before the Exam

  • Take good notes แนะนำให้จดโน้ตระหว่างเรียน ส่วนตัวผมจดโน๊ตไม่ค่อยดีเท่าไหร่ คือจดบ้างไม่จดบ้าง สุดท้ายพอจะใช้สิ่งที่ไม่ได้จดไว้ก็ต้องย้อนกลับไปเปิดหาจาก module ใน HTB Academy
  • Learn Ligolo-ng เป็นเครื่องมือสำหรับทำ pivoting ที่ทำให้ชีวิตง่ายขึ้นมากๆ ลองใช้ตอนแรกๆ อาจจะรู้สึกยุ่งยาก แต่ถ้าเข้าใจคอนเซปต์การทำงานของมันแล้วจะพบว่าใช้งานสะดวกกว่า SOCKS proxy ใดๆ
  • Learn SysReptor เป็นเครื่องมือทำ penetration testing report ที่ช่วยให้ทำ report ที่มีหน้าตา professional ได้แบบง่ายๆ ช่วยลดความผิดพลาดในการเขียน report ได้มาก และมี template สำหรับการสอบ certification ของ HTB ทั้งหมดให้ใช้ด้วย
  • Watch Unofficial CPTS Prep by IppSec รวม box ที่ต้องใช้สกิลใกล้เคียงกับสิ่งที่ต้องใช้ในการสอบ CPTS ถ้าไม่ชอบดูวิดีโอ แนะนำให้อ่านบล็อกของ 0xdf แล้ว filter ตามชื่อ box ใน playlist ของ IppSec
  • Learn Trigger-Based Reporting Methodology เป็นคำแนะนำในการเขียน penetration testing report ที่อ่านเข้าใจง่าย และนำไปใช้ได้จริง
  • Join HTB Discord จะมี channel สำหรับคนเตรียมตัวสอบ CPTS ไว้ให้ซักถามหรืออ่านประสบการณ์/แนวทาง/คำแนะนำของคนอื่นๆ
  • Do AEN Blind ก็คือให้ลองทำ module Attacking Enterprise Network แบบไม่ต้องอ่าน walkthrough หรือดูคำถามที่ชี้แนะแนวทาง ประมาณว่าจำลองเป็นการสอบ mini CPTS ดูว่าตัวเองสามารถไปได้ไกลแค่ไหน ถ้าสามารถ compromise Active Directory ได้ก็น่าจะพร้อมสำหรับการสอบ CPTS ของจริง (ผมเพิ่งมารู้คำแนะนำนี้หลังจากเรียน AEN จบไปเรียบร้อยแล้ว ถถถ)

During the Exam

  • Go With the Flow สิ่งหนึ่งที่ผมรู้สึกหลังจากสอบมาได้ประมาณครึ่งทางคือ ถ้าเราทำตาม pentesting methodology ที่ได้เรียนมา ตัว environment ในการสอบ (ที่ผมรู้สึกว่ามันเหมือนเกมหน่อยๆ) จะพาเราไปถึง challenge ถัดไปโดยอัตโนมัติ
  • Don’t Assume Anything ข้อนี้เป็นจุดอ่อนของผม ที่ทำให้ติดแหง็กอยู่ถึง 4 วัน การไม่นึกเอาเองก็คือ ถึงเราจะคิดว่ามันไม่น่าใช่ ก็ควรจะลองทดสอบดูเพื่อยืนยันว่ามันไม่ใช่จริงๆ
  • Don’t Fight the Exam ข้อนี้ก็คล้ายๆ ข้อข้างบน ในช่วงแรกๆ ผม approach การสอบโดย “คาดหวังว่า” มันน่าจะเป็นแบบนั้นแบบนี้ ช่องโหว่มันต้องอยู่ตรงนี้แน่ๆ จนกลายเป็นขุด rabbit hole ให้ตัวเองโดยไม่รู้ตัว
  • Do Report on the Fly ถ้าทำตาม trigger-based reporting methodology จะช่วยลดภาระตอน revise report ก่อนส่งได้เยอะ
  • Take a Break ถ้าติดอยู่นานๆ ลองหยุดพักแล้วไปทำอย่างอื่นแทน อาจจะช่วยให้มีพลังที่จะกลับมา focus หรืออาจจะนึกแนวทางอย่างอื่นออก
  • The Examiners are Not Looking for a “Perfect” Report ไม่ได้หมายความว่าไม่ต้องตั้งใจทำ report เพียงแต่ไม่ต้องกังวลมากถ้าแน่ใจว่าเราได้พยายามเต็มที่แล้ว ผมตีความว่าการที่ report ของผมได้รับการประเมินว่า “ผ่าน” ก็คือถ้าเขียนรายงานได้ในระดับ “Good Enough” ก็น่าจะเพียงพอ (ผมให้คะแนน report ตัวเองอยู่ที่ 70–75 จากคะแนนเต็ม 100)

Summary

สรุปว่าเป็นประสบการณ์สอบ certification ที่ดีมากๆ และได้เรียนรู้เรื่องต่างๆ เพิ่มระหว่างการสอบด้วย ทั้งในเรื่องเทคนิคการโจมตี เทคโนโลยีต่างๆ รวมไปถึงได้พัฒนา mindset ของตัวเอง แค่ไม่ถอดใจแล้วนั่งสอบต่อเนื่องได้ถึง 10 วัน ก็รู้สึกขอบคุณและภูมิใจในตัวเองมากๆ แล้ว

อีกสิ่งที่ขาดไม่ได้คือการสนับสนุนจากคนรอบข้าง โชคดีที่ผมมีภรรยาที่เข้าใจ คอยช่วยเหลือและเป็นกำลังใจในการสอบให้ตลอดเวลา 🥰

ปล. สำหรับผม CPTS นี่ยากกว่าการสอบ CISSP ไปหลายเบอร์ แต่ถ้าได้สอบ practical exam แบบนี้บ่อยๆ ต่อไปอาจจะชินก็ได้ 555+