Introduction
สำหรับท่านผู้อ่านที่ยังไม่รู้ว่า OSCP (Offensive Security Certified Professional) คืออะไรจะขออธิบายให้ฟังเบื้องต้นแบบคร่าว ๆ ก่อนแล้วกันนะครับ โดยเจ้า OSCP คือ Certificate ของค่าย Offensive Security ซึ่งคนในสายงาน Cyber Security ค่อนข้างให้ค่ากับ Certificate ของค่ายนี้มากเลยที่ โดยที่ตัว OSCP นี้ถ้าเข้าไปดูในเว็บไซต์ของ Offensive Security จะมีชื่อว่า PEN-200 หรือ Penetration Testing with Kali Linux (PWK) โดยจะมีราคาเริ่มต้นอยู่ที่ $1499 ซึ่งจะได้ Lab เพื่อฝึกซ้อมก่อนสอบเป็นระยะเวลา 3 เดือน ซึ่งน่าจะเพียงพอต่อการสอบแล้ว
โดยการสอบ OSCP นี้จะเป็นแบบ Hand-on หรือ แบบลงมือ Hack จริง ๆ นั้นเอง โดยจะมีให้เราทำทั้งหมด 6 เครื่อง โดยมีเครื่องที่เป็น AD Set 3 เครื่องเป็น Client 2 เครื่อง เป็น Domain Controller 1 เครื่อง และเครื่อง Independent 3 เครื่อง เงื่อนไขในการผ่านการสอบก็คือ ต้องทำให้ได้ 70 คะแนน เป็นอย่างน้อย โดยเครื่อง Independent นั้น จะมีคะแนนเป็นเครื่องละ 20 คะแนน รวม 3 เครื่องก็จะได้ 60 คะแนน โดยจะแบ่งเป็น 10 คะแนนสำหรับ Local Flag สำหรับ Shell ในสิทธิ User ของเครื่องนั้น ๆ และ 10 คะแนนสำหรับ Proof Flag สำหรับสิทธิ Administrator/root ในเครื่องนั้น ๆ และ AD Set มีคะแนนอยู่ที่ 40 คะแนน แต่…..สำหรับ AD Set นั้นจะต้องทำให้ได้ Domain Admin เท่านั้นถึงจะได้ 40 คะแนน ก็คือถ้าได้ Administrator แค่ Client 1 เครื่องก็จะเท่ากับว่าไม่ได้คะแนนเลย เพราะฉะนั้นก็จะเท่ากับว่าเป็นการบังคับอ้อม ๆ ที่เราจะต้องทำให้ได้ Administrator ทั้ง 3 เครื่องนั้นเองเพื่อให้ผ่าน หรือเป็นแบบที่สองคือทำเป็น Lab Report เพื่อให้ได้คะแนน Bonus 10 คะแนนก็จะไม่ต้องทำ AD Set ได้ แต่ว่าใน Lab Report นั้นก็ต้องมีเครื่อง Lab ที่มี AD Set อยู่ในนั้นด้วย
อ่ออ…มีอีก 1 เรื่องก็คือในการสอบแบบเก่านั้นจะมีข้อ Buffer Overflow 1 เครื่อง ซึ่งจะเหมือนข้อฟรีเลย 1 ข้อในเวอร์ชั่นนี้ก็ยังมีอยู่แต่จะมีโอกาสที่จะสุ่มไม่เจอได้อยู่ด้วย และเมื่อทำเสร็จจะไม่ได้สิทธิ Administrator เลย จำเป็นต้อง Privilege Escalation หรือการยกสิทธิก่อนเพื่อทำให้ได้เต็ม 20 คะแนนในเครื่องนั้น
Course Syllabus
โดยตัวเนื้อหาของคอร์สนี้ค่อนข้างเยอะ ตัวผู้เขียนอาจจะอธิบายคร่าว ๆ เท่านั้นนะครับ
- Penetration Testing: What You Should Know — เป็นเรื่องที่ควรรู้สำหรับการทำ Pentest เบื้องต้น
- Command Line Fun — การใช้งาน Command Line เบื้องต้น
- Passive Information Gathering — การทำ Information Gathering แบบ Passive เช่น การใช้ Google Hacking เป็นต้น
- Active Information Gathering — การทำ Information Gathering แบบ Active เช่นการทำ Port Scanning เป็นต้น
- Vulnerability Scanning — การใช้งาน Vulnerability Assessment Tools
- Web Application Attacks — การ Attack Web Application เช่นการทำ Cross-site Scripting และ SQL Injection
- Introduction to Buffer Overflows — ทำความรู้จักกับ Buffer Overflows เบื้องต้น
- Windows Buffer Overflows — การทำ Buffer Overflows บน Windows
- Linux Buffer Overflows — การทำ Buffer Overflows บน Linux
- Client-Side Attacks — การโจมตีในฝั่ง Client เช่นการโจมตีผ่าน Microsoft Office
- Locating Public Exploits — การหา Public Exploits เพื่อมาใช้โจมตีระบบ
- Fixing Exploits — การแก้ไข Exploit เพื่อให้ใช้งานกับระบบเป้าหมาย
- Antivirus Evasion — การหลบเลี่ยง Antivirus
- Privilege Escalation — การยกสิทธิเพื่อให้ได้สิทธิที่สูงขึ้น
- Port Redirection and Tunneling — เป็นการทำ Pivoting และ Tunneling
- Active Directory Attacks — การโจมตี Active Directory เบื้องต้น
- The Metasploit Framework — การใช้งาน Metasploit
Preparation
สำหรับการเตรียมตัวการสอบนั้น ผมจะเน้นไปที่การทำ Lab หลาย ๆ ตัวเพื่อสร้างความเคยชินในการโจมตีระบบต่าง ๆ โดยใช้เวลาเตรียมตัวประมาณ 2–3 เดือนเนื่องจากงานค่อนข้างเยอะทำให้ไม่สามารถเทเวลามาทำ Lab ได้เยอะ ๆ เลยอาศัยใช้ระยะเวลาในการเตรียมตัวสอบมากขึ้นแทน โดยตัว Lab ที่ผมใช้เพื่อเตรียมตัวนั้นมีค่อนข้างหลายตัวเลย โดยจะมี Lab ที่ได้มากับ PWK ระยะเวลา 1 เดือน, Try Hack Me, Virtual Hacking Labs และ Hack The Box โดยแต่ละตัวจะมีรายละเอียดประมาณนี้…
PWK Lab
Lab ของ PWK นี้จะมีการแบ่งเป็น Zone เอาไว้ โดยที่เราจะต้อง VPN เข้าไปเพื่อทำการเข้าถึงตัว Lab และตัว Lab จะมี Proof.txt เพื่อนำไป Submit ในหน้า Panel ของ PWK Lab โดยที่ตัว Lab มีทั้งเครื่องที่เป็น Independent และ Active Directory Set ให้เราได้ลองฝีมือ และหากทำไปแล้วมีการเก็บผล Lab ที่เราทำ และทำ Lab Report จะสามารถได้รับคะแนนโบนัส 10 คะแนน แต่ว่าใน Lab Report นั้นจำเป็นต้องมี AD Set อยู่ด้วย โดยจะเป็น AD Set 4 เครื่อง และ Independent 6 เครื่องก็จะได้รับคะแนนโบนัสไป
Tryhackme
ในส่วนของ Try Hack Me นี้ ผมค่อนข้างชอบเนื่องจากตัว Lab จะมีการแบ่งเป็น Room ซึ่งทำให้เราสามารถ Focus ในส่วนที่เราต้องจะทำเป็นส่วน ๆ ได้ อย่างเช่น อยากทำแนว AD ก็จะมี Room สำหรับศึกษาตัว AD โดยเฉพาะ แถมยังมี Learning Path ให้เราสามารถค่อย ๆ ศึกษาตั้งแต่ Beginner ไปได้เลย
Virtual Hacking Labs
สำหรับ Virtual Hacking Lab ผมคิดว่าเหมาะกับคนที่กำลังเตรียมสอบ OSCP มาก ๆ เนื่องจากตัว Lab มีความใกล้เคียงข้อสอบมากทีเดียว หากใครทำ Lab ของ PWK Lab แล้วยังไม่หนำใจก็สามารถมาจัดตัวนี้ต่อได้เลย ตัวนี้ผมยกให้เป็นตัวที่ใกล้เคียงข้อสอบ OSCP มาก ๆ เลยจริง ๆ โดยตัว Lab จะมีระดับตั้งแต่ Beginner, Advanced จนไปถึง Advanced+ เลย
Hackthebox
ตัว Hack The Box นี่ผมค่อนข้างรู้สึกว่ามันจะไปออกแนว ๆ CTF มากกว่าเลยอาจจะไม่ค่อยได้ทำเยอะเท่าไหร่แต่ หากใครสนใจสามารถเข้าไปลองทำได้โดยมี คนทำไว้ว่ามีเครื่องไหนบ้างที่ใกล้เคียงกับ OSCP ตามลิงค์นี้ได้เลยครับ https://docs.google.com/spreadsheets/d/1dwSMIAPIam0PuRBkCiDI88pU3yzrqqHkDtBngUHNCw8/edit#gid=1839402159
และต่อมาคือเรื่องการเตรียม Tools หรือหา Cheat Sheet เพื่อให้สะดวกต่อการสอบมากขึ้น โดยก็ทำการค้นหาผ่าน Google และรวบรวม Cheat Sheet ของคนอื่น ๆ แล้วรวบรวมมาเป็นของตัวเอง โดยจะมีประมาณนี้
https://github.com/SecWiki/windows-kernel-exploits
https://anhtai.me/pentesting-cheatsheet/
https://github.com/six2dez/OSCP-Human-Guide
https://github.com/ajdumanhug/oscp-practice
https://liodeus.github.io/2020/09/18/OSCP-personal-cheatsheet.html
https://github.com/akenofu/OSCP-Cheat-Sheet
https://www.noobsec.net/oscp-cheatsheet/
https://github.com/oncybersec/oscp-enumeration-cheat-sheet
https://casvancooten.com/posts/2020/05/oscp-cheat-sheet-and-command-reference/
https://blog.adithyanak.com/oscp-preparation-guide/resources/cheatsheets
Practice
ในขั้นตอนการเตรียมตัวสำหรับสอบนั้นผมได้เล่น PWK Lab ไปไม่มากเนื่องจากไม่ค่อยมีเวลาว่างมากเท่าไหร่ แล้วผมซื้อ Lab แบบแค่ 1 เดือนเท่านั้น เลยไม่ค่อยจะได้เล่นเท่าไหร่จึงต้องไปอาศัย Lab ตัวอื่น ๆ บ้างตามข้างต้น โดยผมได้ใช้เวลาเล่นเจ้าตัว Virtual Hacking Labs ไปเยอะที่สุด ส่วนตัว Hackthebox นั้นได้ทำไปเพียงไม่กี่เครื่อง และในส่วนของ Tryhackme ส่วนผมจะเล่นใน Room เพื่อฝึกใช้งาน Tools ต่าง ๆ แบบเฉพาะเจาะจง ซึ่งผมคิดว่ามีประโยชน์มากโดยตัวที่ผมแนะนำจะมีประมาณนี้ครับ
สำหรับ Buffer Overflow
- Brainpan 1 [https://tryhackme.com/room/brainpan]
- Buffer Overflow Prep [https://tryhackme.com/room/bufferoverflowprep]
สำหรับ Active Directory
- Attacktive Directory [https://tryhackme.com/room/attacktivedirectory]
- Attacking Kerberos [https://tryhackme.com/room/attackingkerberos]
- Post-Exploitatiton Basics [https://tryhackme.com/room/postexploit]
- Active Directory Basics [https://tryhackme.com/room/activedirectorybasics]
สำหรับ Pivoting
- Wreath [https://tryhackme.com/room/wreath]
สำหรับทดสอบ Skill รวม ๆ
- Holo [https://tryhackme.com/room/hololive]
- Throwback [https://tryhackme.com/network/throwback] **ตัวนี้ต้องเสียเงินเพิ่มเพื่อเปิด Lab
Exam Time
ในช่วงสอบนั้นผมเริ่มต้นสอบตอน 10 โมงเช้า แต่จำเป็นต้องเข้าไปที่ Panel ของ Proctor ก่อนเวลาเริ่ม 15 นาที โดย Proctor จะมีการขอเปิดกล้อง และขอดูบริเวณรอบห้องที่เราสอบ รวมถึงมีการตรวจเช็คบัตรประชาชนด้วยเพื่อยืนยันตัวตนของเรา จากนั้นก็จะมีเมล์ส่งมาโดยจะมีไฟล์ VPN พร้อมบอกว่าเรามี IP Address อะไรบ้างที่ให้เราทำ โดยของผมจะแบ่งเป็น AD Set 3 เครื่อง Buffer Overflow 1 เครื่อง และ Independent อีก 2 เครื่อง โดยในขั้นตอนแรกผมทำการ Autorecon ทุกเครื่องก่อนเพื่อทำการ Enumerate แต่ละเครื่อง และระหว่างรอ Autorecon ผมก็ไปทำข้อ Buffer Overflow ก่อนจากนั้น เมื่อได้ Script สำหรับโจมตีเครื่องเป้าหมาย ผมก็ไปเช็คดูแล้วพบว่าในส่วนของ AD Set ทำการ Enumerate เสร็จแล้ว ผมก็เลย Focus กับการทำ AD Set ก่อนเนื่องจากจำเป็นต้องผ่าน AD Set ให้ได้ Domain Admins รวม ๆ แล้วใช้เวลาไปประมาณ 6–7 ชม. ได้ถึงจะได้ Domain Admins จากนั้นก็กลับไปที่ข้อ Buffer Overflow และทำการใช้ Script ที่ทำเสร็จแล้วโจมตีเครื่องเป้าหมายก็จะได้ User Shell มาจากนั้นก็ทำการ Enumerate ต่อเพื่อทำการยกสิทธิให้กลายเป็น Administrator จากนั้นก็มา Focus อีกสองเครื่องที่เหลือซึ่งจะเป็น Linux โดยเมื่อ Exploit ไปจะได้สิทธิเป็น User ก่อน และต้องยกสิทธิให้กลายเป็น root และหา Proof.txt ได้สำเร็จตอนเวลาเหลืออีกประมาณ 6 ชม. พอดี โดยก็มีเวลาไปนอนพักบ้างตามความขี้เกียจอยู่บ้างเหมือนกัน
Report
ในขั้นการทำรีพอร์ตนั้นไม่ได้มีอะไรมาก ผมใช้ Template ของ Offensive Security เลย ซึ่งสามารถดาวน์โหลดได้ตามลิงค์นี้ [https://www.offensive-security.com/pwk-online/PWKv1-REPORT.doc] และเราก็นำรูปผลที่ Capture มาแปะใน Report และเขียนบรรยายวิธีการทำก็เป็นอันเสร็จสิ้นจากนั้นก็ทำการอัปโหลดไฟล์ PDF รีพอร์ตเราไปได้เลยจากนั้นก็รอผลซึ่งเขาจะแจ้งว่าจะทราบผลภายใน 10 วัน แต่ผมได้รับผลภายในวันเดียวเลยซึ่งไวมาก ๆ
Conclusion & Recommendation
โดยสำหรับการสอบ OSCP นั้น ผมแนะนำว่าในเวลาสอบให้เราไปพักบ้างอาจจะนอนเล่นเกมหรือดูอะไรเรื่อยเปื่อยเนื่องจากบางทีเราทำไปแล้วติดก็จะติดอยู่อย่างนั้นคิดไม่ออกสักที จนสุดท้ายก็เสียเวลาเปล่าการที่เราออกมาพักอาจจะทำให้เราคิดอะไรออกด้วยก็ได้ และสำหรับการเตรียมตัวสอบอย่าลืมเรื่อง AD และการทำ Pivot เด็ดขาด เนื่องจากจำเป็นต้องใช้แน่ ๆ เพื่อที่จะผ่านการสอบ OSCP แต่ผมก็คิดว่าตัวข้อสอบ ณ ตอนนี้มันไม่ได้ยากมากอาจจะเพราะเพิ่งเริ่มมีการเปลี่ยนรูปแบบในการสอบเลยทำให้ข้อสอบนั้นง่ายอยู่ โดยตัวข้อสอบก็ค่อนข้างทั่วไปสามารถหา Public Exploit มาโจมตีได้ โดยอาจจะแก้ไขอะไรนิดหน่อย แต่ในอนาคตก็ไม่แน่ที่จะยากขึ้นครับ โดยสรุปแล้วเงื่อนไขการผ่านมีหลัก ๆ มีสองวิธี คือ 1. ทำ AD Set + ได้ Proof.txt 1 เครื่อง local.txt 1 เครื่องเป็นอย่างน้อย 2. ทำ Independent 3 เครื่องให้ได้ Proof.txt และทำ Lab Report เพื่อ Bonus 10 คะแนนก็จะได้ 70 คะแนนพอดี แต่สำหรับผมยังไงก็มองว่าเราต้องทำ AD Set ให้ได้ก่อน เพราะฉะนั้นเตรียมตัวให้พร้อมทำ Lab ให้เยอะหาว่าเราขาดอะไร และไปเสริมก่อนสอบ จะผ่านมันไปได้แน่นอนครับ…