คงไม่มีใครรอให้ระบบถูกแฮกก่อน

แล้วค่อยย้อนกลับมาหาช่องโหว่ในภายหลัง

เมื่อเราถูกแฮกความเสียหายที่ตามมาไม่ใช่เเค่ชื่อเสียงที่เสียหาย หรือข้อมูลที่รั่วไหล เเต่เรายังอาจต้องเสียทรัยพากรสำคัญ ไม่ว่าจะเป็น เงิน คน หรือเวลา เพื่อหาสาเหตุและแก้ไขปัญหา

แม้ว่าเราสามารถปิดช่องโหว่ที่แฮกเกอร์ใช้ในการแฮกได้สำเร็จในภายหลัง แต่เราจะมั่นใจได้ยังไงว่าช่องโหว่ที่เราปิดไปนั้นคือ ช่องโหว่เดียวที่มีอยู่?

การทำ Pentest ช่วยให้เรารู้ว่า ถ้าแฮกเกอร์พยายามแฮกระบบของเรา “ตอนนี้” เขาจะเจออะไร สร้างความเสียหายได้เเค่ไหน สิ่งที่ได้จากการทดสอบไม่ใช่แค่การค้นหาช่องโหว่เท่านั้น แต่ยังรวมถึงประเด็นความเสี่ยงอื่น ๆ ที่อาจกลายเป็นช่องทางให้แฮกเกอร์ใช้ในแฮกระบบได้ในอนาคต

  1. Penetration Testing คืออะไร?
  2. Pentester คือใคร?
  3. ประเภทการทำ Penetration Testing
  4. ขั้นตอนการทำ Penetration Testing
  5. Penetration Testing vs. Vulnerability Assessment
  6. ทำ Pentest เกิดอะไรขึ้นบ้าง?
  7. สรุป

Penetration Testing คืออะไร?

Pentest ถูกย่อมาจากคำว่า “Penetration Testing”

Penetration Testing คือการจำลองการโจมตีระบบคอมพิวเตอร์เพื่อค้นหาช่องโหว่ โดยได้รับการอนุญาต

Pentester คือใคร?

Pentester ถูกย่อมาจากคำว่า “Penetration Tester”

Pentester คือผู้ทดสอบระบบความปลอดภัยด้วยการจำลองการโจมตี โดยใช้เทคนิคเดียวกับที่แฮกเกอร์มักใช้จริง แต่จะดำเนินการอย่างมีขั้นตอน และอยู่ภายใต้มาตรฐานสากล เช่น OWASP Top 10 หรือ OWASP Testing Guide สำหรับการทดสอบเว็บแอปพลิเคชัน

สิ่งสำคัญคือ Pentester จะทำการทดสอบ เฉพาะในขอบเขต (Target/Scope) ที่ได้รับอนุญาตจากเจ้าของระบบเท่านั้น และต้องระมัดระวังไม่ให้การทดสอบก่อให้เกิดความเสียหาย เช่น

  • การส่งคำขอ (Request) มากเกินไปจนระบบล่ม
  • การเปลี่ยนรหัสผ่านผู้ใช้ทั้งระบบ
  • การพยายามเข้าสู่ระบบจนทำให้ User ถูก Lock ทั้งระบบ

ประเภทการทำ Penetration Testing

Black Box Testing

  • ผู้ทดสอบไม่มีข้อมูลอะไรเลยเกี่ยวกับระบบ จำลองเป็นแฮกเกอร์ภายนอกที่เริ่มต้นจาก 0
  • เหมาะกับระบบที่เข้าถึงได้ผ่านอินเทอร์เน็ต (Internet Facing)

White Box Testing

  • ผู้ทดสอบมีข้อมูลทั้งหมด เช่น source code, credential และ infrastructure เป็นต้น
  • เหมาะกับระบบสำคัญขององค์กร

Gray Box Testing

  • ผู้ทดสอบมีข้อมูลบางส่วน เช่น Credential ที่ใช้เข้าสู่ระบบ, คู่มือการใช้งานระบบ ข้อมูลสิทธิ์ต่างๆในระบบ
  • เหมาะกับระบบทั้งภายในและภายนอกที่มีการกำหนดให้สิทธิ์กับ User ใน Role ต่างๆ

ขั้นตอนการทำ Penetration Testing

Penetration Testing Execution Standard (PTES) มีการวางขั้นตอนการทดสอบไว้ทั้งหมด 7 ขั้นตอน ดังนี้

  1. Pre-engagement Interactions
    • พูดคุยตกลงรายละเอียดก่อนเริ่มการทดสอบ เช่น
      • การทำข้อตกลง (NDA, Contract, Rules of Engagement)
      • กำหนดประเภทของระบบ เช่น Web, Network หรือ Mobile Application เป็นต้น
      • กำหนดขอบเขตของระบบที่ต้องทดสอบ เช่น IP Address/URL, Network range เป็นต้น
      • กำหนดวันเวลาเริ่มและสิ้นสุดการทดสอบ
      • กำหนดรูปแบบการทดสอบ เช่น Black Box, Grey Box และ White Box
      • แจ้งข้อควรระวัง เช่น ห้ามทำให้ระบบล่ม, ห้ามใช้ Automated Tools และห้ามลบหรือแก้ไขข้อมูลในระบบ เป็นต้น
      • แจ้งจุดที่ต้องการให้ทดสอบเป็นพิเศษ เช่น ฟังก์ชันโอนเงิน-ถอนเงิน, ฟังก์ชันแลกของรางวัล หรือฟังก์ชันที่เก็บข้อมูลสำคัญ เป็นต้น
  2. Intelligence Gathering
    • เก็บรวบรวมข้อมูล (Reconnaissance) ของระบบเป้าหมาย ทั้งแบบ Passive และ Active
      • Passive Reconnaissance คือการรวบรวมข้อมูลโดยไม่โต้ตอบโดยตรงกับระบบเป้าหมาย เช่น WHOIS, DNS และ Google Dorking
      • Active Reconnaissance คือการรวบรวมข้อมูลโดยโต้ตอบโดยตรงกับระบบเป้าหมาย เช่น Port Scanning, Banner Grabbing และ Service Enumeration
  3. Threat Modeling
    • วิเคราะห์ระบบเป้าหมายเพื่อหาความเสี่ยงและจุดอ่อนที่อาจถูกโจมตี โดยพิจารณาว่า
      • อะไรคือสิ่งที่ต้องปกป้อง (assets)
      • ใครคือผู้โจมตี (threat actors)
      • ช่องทางในการโจมตี (attack vectors)
      • วิธีป้องกัน (mitigations)
  4. Vulnerability Analysis
    • หาช่องโหว่ด้วยวิธี Manual และใช้ Automated Tools
  5. Exploitation
    • ใช้ช่องโหว่ที่พบเพื่อเข้าถึงระบบ และประเมินความเสี่ยง
  6. Post-Exploitation
    • สำรวจและขยายผลการโจมตี ตัวอย่างเช่น
      • การยกระดับสิทธิ์
      • ใช้เครื่องที่ยึดได้ไปโจมตีเครื่องอื่นในเครือข่าย
      • การขโมยข้อมูลออกจากระบบ เป็นต้น
  7. Reporting
    • จัดทำรายงานที่สรุปช่องโหว่ที่พบ พร้อมแนวทางการแก้ไข

Penetration Testing vs. Vulnerability Assessment

VA (Vulnerability Assessment)

คือการค้นหาช่องโหว่โดยใช้ Automated Tools ตรวจสอบช่องโหว่ที่สามารถระบุได้โดยไม่ต้องจำลองการโจมตีจริง เช่น ตรวจสอบว่า Web Server ที่ใช้งานอยู่เป็นเวอร์ชันที่มีช่องโหว่หรือไม่

Pentest (Penetration Testing)

คือการทดสอบเชิงลึกโดยการ จำลองการโจมตีจริง เพื่อดูว่าช่องโหว่ที่พบสามารถถูกโจมตีได้จริงหรือไม่ และผลกระทบจะรุนแรงแค่ไหน

โดยสรุปเเล้ว

VA เปรียบเสมือน การตรวจสุขภาพประจำปี

→ ตรวจหาสัญญาณความผิดปกติทั่วร่างกาย

Pentest เปรียบเสมือน การวินิจฉัยเชิงลึกโดยแพทย์เฉพาะทาง

→ วิเคราะห์ว่าป่วยเป็นโรคอะไร และรุนแรงแค่ไหน

ทำ Pentest เกิดอะไรขึ้นบ้าง?

ตัวอย่างสิ่งที่ผู้ทดสอบทำเบื้องต้น

(Penetration Testing Scenario)

  • ตรวจสอบพอร์ตและบริการที่เปิดใช้งาน (เช่น HTTP, HTTPS, SSH)
  • ตรวจสอบการเปิดเผยเวอร์ชันของระบบหรือบริการ (เช่น ประเภทและเวอร์ชันของ Web Server)
  • ค้นหาโฟลเดอร์หรือไฟล์ที่ซ่อนอยู่ผ่านการทำ Fuzzing
  • ตรวจสอบเทคโนโลยีที่ใช้งานในระบบ (เช่น CMS, ไลบรารี JavaScript, Framework ฝั่ง Backend)
  • ทดสอบระบบยืนยันตัวตนและการจัดการ Session ว่ามีจุดอ่อนหรือไม่
  • ประเมินการควบคุมสิทธิ์ในการเข้าถึง (เช่น การข้าม Role, IDOR, การยกระดับสิทธิ์)
  • ตรวจสอบช่องโหว่ด้าน Input Validation และ Injection (เช่น SQL Injection, XSS)
  • ทดสอบการอัปโหลดไฟล์ และช่องโหว่ Path Traversal
  • ตรวจหาการรั่วไหลของข้อมูลสำคัญ (เช่น Token, Credentials, ข้อความ Error ที่เปิดเผยมากเกินไป)
  • ตรวจสอบการตั้งค่าความปลอดภัยที่ผิดพลาด (เช่น HTTP Headers, Debug Mode, รหัสผ่านเริ่มต้น)

สรุป

  • การทำ Pentest ช่วยให้เราสามารถ ค้นพบช่องโหว่และแก้ไขได้ก่อน ที่แฮกเกอร์จะใช้โจมตี
  • ควรทำ Penetration Testing กับระบบที่สำคัญ เป็นประจำทุกปี และทุกครั้งที่มีการ อัปเดตระบบครั้งใหญ่ เช่น การเพิ่มฟีเจอร์, เปลี่ยนโครงสร้าง, ย้ายโฮสต์ ฯลฯ

Leave a comment