ผมเพิ่งผ่านการสอบ OSCP โดยได้รับทุนจาก สกมช. เมื่อ 4-5 วันก่อน เลยมาแชร์ประสบการณ์ไว้กันลืม

OSCP Course Overview

คอร์สที่ผมเรียนจะเป็น bootcamp 5 วัน สอนโดยทีมงานบริษัท Secure-D โดยมาพร้อม subscription หลักสูตร PEN-200: Penetration Testing with Kali Linux ที่เป็น Course + Cert Bundle มีเวลาเรียน 90 วันหลังจาก activate และต้องลงทะเบียนสอบภายใน 120 วัน หลังจากคอร์สหมดอายุ

เนื้อหาหลักสูตร PEN-200 มีทั้งหมด 31 โมดูล สอนเรื่องการทดสอบเจาะระบบขั้นพื้นฐาน และมี Challenge Labs ให้เล่น 10 แล็บ ถ้าเรียนครบ 80% (คือเรียนจบทุกโมดูล ยกเว้นที่เกี่ยวกับ AWS) สามารถขอ course completion letter ไปเคลม CPE ได้ 40 CPE

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

OSCP Exam Overview

การสอบ OSCP ต้องจองวันสอบล่วงหน้า (สามารถเลื่อนวันที่จองไว้ได้ 2 ครั้ง) เป็นการสอบแบบมี proctor คอยนั่งดูเราตลอดเวลา มีการยืนยันตัวตนก่อนสอบด้วย national ID card หรือ passport และต้องแชร์หน้าจอของเครื่องที่ใช้สอบ รวมถึงเปิด webcam ตลอดเวลาสอบด้วย

รูปแบบการสอบจะเป็นการทำ network penetration testing พร้อมเขียน report โดยแบ่งออกเป็นสองส่วนใหญ่ๆ คนที่เข้ามาอ่านโพสต์นี้น่าจะรู้อยู่แล้ว คงไม่ต้องอธิบายเยอะ รายละเอียดเต็มๆ ดูได้ใน OSCP Exam Guide

  • Standalone Machine 3 เครื่อง คะแนนรวม 60 คะแนน
  • Active Directory Set 3 เครื่อง คะแนนรวม 40 คะแนน

รวมเป็นคะแนนเต็ม 100 คะแนน และต้องได้คะแนนอย่างน้อย 70/100 ถึงจะสอบผ่าน

ช่วงยืนยันตัวตน แชร์หน้าจอ เปิดกล้อง จะใช้เวลาประมาณ 15 นาที หลังจากนั้นเราจะมีเวลาสอบทั้งหมด 23 ชั่วโมง 45 นาที และมีเวลาให้ทำรายงานอีก 24 ชั่วโมงหลังจากหมดเวลาสอบ รวมแล้วมีเวลาทั้งหมด 48 ชั่วโมง

My Exam Experience

ทีแรกผมจองสอบไว้วันที่ 10 พ.ค. แต่พอประมาณต้นเดือน เม.ย. ก็รู้สึกว่า จองสอบไว้ไกลเกินไปหน่อย กลัวหมดไฟ เลยเลื่อนมาเป็นวันที่ 17 เม.ย. แต่ปรากฏว่าพอใกล้ๆ วันสอบ เพิ่งรู้ตัวว่ายังมีหลายปัจจัยที่ไม่พร้อม สุดท้ายเลยเลื่อนอีกรอบเป็น 22 เม.ย. ใช้โควต้า exam reschedule ครบพอดี 😅

ผมเลือกเวลาเริ่มสอบตอน 10 โมงเช้า กะว่าทำไปซักพักก็ได้พักกินข้าวกลางวันพอดี และถ้านอนตอนกลางคืน ก็น่าจะพอมีช่วงที่ตื่นมาทำต่อได้ก่อนหมดเวลา

แนวทางการสอบของผม จะใช้ Pomodoro Technique แบบที่คิดว่าเหมาะกับตัวเอง คือนั่งสอบ 50 นาที พัก 10 นาที และทุกๆ 4 ชั่วโมง จะพักยาว 30 นาที โดยตั้งใจไว้ว่าถึงแม้ว่าจะกำลังทำอะไรติดพันอยู่ ก็ต้องลุกออกมาพัก เพื่อไม่ให้สมองและร่างกายล้าจนเกินไป (แก่แล้วก็งี้ 😖)

ผมวางแผนการสอบโดยเริ่มจากการโจมตี Active Directory Set ก่อน เพราะเป็น 40 คะแนนที่ควรต้องเคลียร์ให้ได้ ไม่งั้นคะแนนรวมไม่ถึง 70 แน่นอน

Timeline ประสบการณ์การสอบของผมโดยสรุปเป็นดังนี้

DateTimeDescriptionPoints
Apr 22, 202610:00เริ่มสอบ
 11:40ได้ admin access บนเครื่องแรกใน AD Set10
 14:05ได้ admin access บนเครื่องที่สองใน AD Set20
 14:40ได้ admin access บน Domain Controller40
 14:50ได้ initial access บน standalone เครื่องแรก50
 15:15ได้ admin access บน standalone เครื่องแรก60
 19:05ได้ initial access บน standalone เครื่องที่สอง70

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

เท่านั้นแหละ ได้เรื่อง! ผมวางมือจากการเขียนรายงาน มานั่งเจาะระบบเครื่องที่เหลือต่อ… แต่ปรากฏว่าผมใช้เวลาไป 5 ชั่วโมง โดยที่ทำคะแนนเพิ่มไม่ได้เลย (และไม่ได้เว้นช่วงพักตามที่ตั้ง Pomodoro ไว้ด้วย) สุดท้ายเลยยอมแพ้ตอนตีสามกว่าๆ เกือบตีสี่ 😞 บอก proctor ว่าขอไปนอนก่อนนะ เดี๋ยวมาใหม่

ถึงตั้งใจว่าจะไปนอน แต่ก็นอนไม่ค่อยหลับเท่าไหร่ ในใจลึกๆ ก็หวังว่าสมองจะทำหน้าที่ของมัน โดยคิดหา solution ให้ผมระหว่างนอนได้ 🤣

ตื่นมาอีกทีเพราะตั้งนาฬิกาปลุกไว้ตอน 7 โมงเช้า สะลึมสะลือมานั่งทำต่อ ได้ไอเดียการโจมตีระหว่างนอนมาอีก 2-3 แบบ แต่ไม่เวิร์ก… จนกระทั่งประมาณ 1 ชั่วโมงสุดท้ายก่อนหมดเวลา ผมก็ Google ไปเจอทางสว่างแบบงงๆ 😱

DateTimeDescriptionPoints
Apr 23, 202609:10ได้ initial access บน standalone เครื่องที่สาม80
 09:15ได้ admin access บน standalone เครื่องที่สาม90

แน่นอนว่าจังหวะนั้นคือมือไม้สั่น รีบเก็บ screenshot เป็นหลักฐาน แล้วเช็คข้อมูลทุกอย่างอีกรอบ ก่อนบอก proctor ว่าขอจบการสอบ ประมาณ 15 นาทีก่อนหมดเวลา

สรุปว่าใช้เวลาไปเกือบครบโควต้า ได้คะแนนรวม 90/100

หลังจากนั้นก็พักแป๊บนึง แล้วเริ่มเขียนรายงานต่อ กะว่าค่ำๆ น่าจะเสร็จ แต่ปรากฎว่าลากยาวไปจนเกือบเที่ยงคืน และได้ส่งรายงานตอนเที่ยงคืนกว่าๆ ของวันที่ 24 เม.ย. รวมเวลาที่ใช้ทำรายงาน ประมาณ 12 ชั่วโมง

The Result

หลังจากส่งรายงานแล้ว วันต่อมาผมก็นั่ง refresh หน้า portal ของคอร์ส PEN-200 รัวๆ 😆 จนประมาณบ่ายสามโมงกว่าๆ ก็มีอัปเดตว่า congratulations คุณสอบผ่านแล้วนะ ส่วนอีเมลที่แจ้งว่าผ่านแบบเป็นทางการจะมาหลังจากนั้น โดยผมได้เมล confirm ตอนเที่ยงคืนกว่าๆ ของอีกวัน ถ้านับจากตอนส่งรายงาน ก็ประมาณ 24 ชั่วโมงพอดี

หลังจากข้อมูลใน portal อัปเดต เราจะสามารถเข้าไปเคลม badge กับ certificate ได้เลย โดยจะได้ certificate มา 2 ใบ หน้าตาประมาณนี้

OSCP Certificate OSCP Certificate

Lessons Learned

  • Take a lot of breaks ที่ผม breakthrough ได้ส่วนใหญ่จะเกิดหลังจากการพัก
  • Don’t assume anything จุดอ่อนผมคือมักจะคิดไปเองหรือคาดหวังว่า ระบบมันต้องเป็นแบบนั้นแบบนี้สิ โดยไม่ได้เช็คก่อน
  • KISS (Keep It Simple, Stupid) ลองท่าง่ายๆ ก่อนค่อยไปท่า advanced
  • Google is your friend ถ้าหาทางไปไม่ถูก แต่รู้สึกว่ามันต้องทำอะไรกับตรงนี้แหละ ให้ลอง google ดูเยอะๆ เพราะเราไม่ใช่คนแรกที่ค้นพบแนวทางการโจมตีระบบนั้นๆ
  • Enumeration is key ถ้าจะหาช่องทางการโจมตี หรือคิด keyword ที่จะเอาไป google ได้ดี เราต้องเห็นภาพรวมของสิ่งที่เราจะโจมตีให้มากที่สุด

Summary

ผมรู้สึกว่า OSCP Exam เป็น certification ที่ดี สำหรับใช้วัดความรู้และทักษะด้านการทดสอบเจาะระบบเบื้องต้น และมีความน่าเชื่อถือมากกว่า HTB CPTS ในแง่ที่มี proctor คอยเฝ้าดูตลอดระยะเวลาการสอบด้วย

ส่วนในแง่ความคุ้มค่าของคอร์สและค่าสอบ น่าจะขึ้นอยู่กับวัตถุประสงค์ของเราเป็นหลัก ถ้าต้องการ certificate ที่ช่วยให้ผ่าน HR screening หรือในกรณีที่มีคนออกค่าใช้จ่ายในการเรียน + สอบให้ ก็เป็น certificate ที่ควรมีไว้ครับ

ปล. คิดแล้วก็ตลกดี ที่พยายามทรมานตัวเองเพิ่มอีก 7 ขั่วโมง หลังจากได้คะแนนถึงเกณฑ์ผ่านแล้ว แต่อย่างน้อยตอนนี้ก็พูดได้เต็มปากว่า

I Tried Harder® ✌️