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

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

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

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

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

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