Coding Gun

Pentest คืออะไร?

Pentest หรือ Penetration Test คือการทดสอบเจาะระบบ โดยผู้ทดสอบจะจำลองวิธีการเจาะระบบของ Hacker ซึ่งการทำ Pentest จะสร้างความเสียหายให้กับระบบได้จริง

Pentest vs Vulnerability Assessment

Vulnerability Assessment หรือ VA Scan คือการ Scan หาช่องโหว่ของระบบ ซึ่งวิธีทดสอบจะมีการนำ Input ที่สามารถแสดงว่าจุดนั้นมีช่องโหว่ออกมาได้ใส่เข้าไป ซึ่งส่วนใหญ่เราจะใช้ Tools ในการ Scan ตัวอย่างของเครื่องมือที่ใช้ทำ Vulnerability Assessment มีดังนี้

เป้าหมายของการทำ Vulnerability Assessment

จุดประสงค์ของการทำ Vulnerability Assessment คือการค้นหาข้อผิดพลาดโดยที่เราจะทำร้ายระบบให้น้อยที่สุด ซึ่งสิ่งที่เราต้องการค้นหามีดังนี้

  1. Open Ports ค้นหา Ports ที่เปิดใช้งานอยู่(ซึ่งอาจไม่จำเป็นต้องใช้) แล้วค้นหาชื่อของ Service และ Version ที่กำลังใช้งานอยู่
  2. Weak Security Setting ค้นหาการกำหนดต่าที่ผิดพลาด(Misconfiguration) ของระบบ เช่น Disable Authentication
  3. Weak Encryption Algorithm ค้นหาการใช้ Algorithm ที่ไม่แข็งแรง เช่น MD5 หรือ SHA1
  4. Weak Passwords ทดลอง Brute force เข่้าไปใช้งานระบบด้วย Default password หรือ Weak passwords(password ที่คาดเดาได้ง่าย)
  5. Unsecured Data ค้นหาสถานที่จัดเก็บข้อมูลที่ไม่ได้มีการเข้ารหัส หรือไม่มี Access Control ที่เหมาะสม
  6. Compromised System ใช้ Vulnerability Scan ค้นหาช่องโหว่

เป้าหมายของการทำ Pentest

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

รูปแบบของ Pentest

การทำ Pentest จะแบ่งออกเป็น 3 รูปแบบดังนี้

Black-box Testing

การทดสอบแบบนี้ Pentester จะไม่มีข้อมูลของระบบเลย หรือมีข้อมูลเกี่ยวกับระบบน้อยมากๆ(ขึ้นอยู่กับข้อตกลงระหว่าง Pentester และผู้ว่าจ้าง) การทำ Pentest ในลักษณะนี้จะเปรียบเสมือนเป็นการโจมตีจากภายนอก ซึ่งการทำ Black-box Tests อาจเรียกอีกอย่างหนึ่งว่า Blind-Tests

นอกจาก Blind Tests ที่ Pentester ไม่มีข้อมูลของบระบบที่จะทดสอบแล้ว ยังมีการทดสอบแบบ Double Blind Tests ที่เจ้าหน้าที่ฝ่าย IT หรือผู้ดูแลระบบก็ไม่รู้ว่ามีการทดสอบ

White-Box Testing

การทดสอบแบบ White-Box นั้น Pentester จะมีข้อมูลหรือรู้ทุกอย่างเกี่ยวกับระบบ ซึ่งส่วนใหญ่จะเป็นการทดสอบภายใน ซึ่ง Pentester จะเข้าถึงข้อมูลได้ทุกอย่างทั้ง Network Diagram, Architecture Diagram หรือแม้กระทั่ง Source Code

การทดสอบแบบ White-box จะเป็นการจำลองการโจมตีจากบุคคลภายใน(Insider Attack) เป็นการทดสอบที่ให้ผลดีสุดเหมาะสำหรับระบบที่ต้องการ Security สูงๆ

Gray-Box Testing

เป็นการทดสอบที่อยู่กึ่งกลางระหว่าง Black-Box และ White-Box ซึ่ง Pentester จะรู้ข้อมูลหลายอย่าง แต่จะไม่ได้เห็นภาพทั้งหมด เช่น Pentester อาจได้ Network Diagram และรู้รายชื่อของ Server รวมทั้งหน้าที่ของ Server แต่ละตัว แต่จะไม่รู้รายละเอียด Configuration ของ Server แต่ละตัว

Pentest Phases

การทำ Pentest เองก็จะต้องมีกระบวนการหรือมี Methodology ในการทำงานไม่ต่างอะไรกับการผลิตซอฟท์แวร์ ซึ่งการทำ Pentest จะแบ่งออกเป็น Phase ต่างๆดังนี้

Reconnaissance

Reconnaissance เป็น Phase เริ่มต้นที่ผู้ทดสอบจะเก็บข้อมูลของ ระบบให้มากที่สุด อาจไปดึงข้อมูลมาจาก Public Data ต่างๆ เช่น Search Engine แหล่งข้อมูลที่เป็น Public Data เหล่านี้เราจะเรียกว่า OSINT(Open-Source Intelligence)

Phase นี้เป็น Phase ที่มีความสำคัญสูงสุด Pentester ควรให้เวลากับ Phase นี้เยอะๆ

เครื่องมือที่ใช้ใน Reconnaissance Phase

เครื่องมือที่เราใช้ใน Reconnaissance Phase มีดังนี้

Scanning

Scanning เป็น Phase ที่นำข้อมูลที่ได้จาก Reconnaissance Phase มาขยายผล ซึ่งจะมีรายละเอียดตามการทำงานในแต่ละ service

เครื่องมือต่างๆที่ใช้ใน Scanning Phase

เครื่องมือต่างๆที่เราใช้ในการ Scan มีดังนี้

Gaining Access(Exploit)

Gaining Access หรือ Exploit เป็น Phase ที่ทำการโจมตีเพื่อเข้าไปทำร้ายระบบ เป็น Phase ที่ต้องใช้ความระมัดระวังในการทำงานมากๆ เพราะในฐานะของ Pentester เราต้องแน่ใจว่าการโจมตีที่เรากำลังทำอยู่นี้อยู่ภายใต้ Scope of Work(SOW) ที่เราได้ตกลงกับผู้ว่าจ้างไว้ก่อนหน้านี้

เครื่องมือที่ใช้ใน Exploit Phase

เครื่องมือที่เราใช้ในการโจมตีมีดังนี้

Maintaining Access(Post-Exploit)

Maintaining Access หรือ Post-Exploit จะเป็น Phase ที่ต้องการลบร่องรอบการโจมตี หรือทำให้เราสามารถกลับเข้าไปในระบบได้เรื่อยๆ เช่น การฝัง backdoor ไว้ คราวหน้าจะได้ส่ง command เข้ามา run ได้

หลังจากที่เราสามารถเข้าถึง Application หรือ Host ที่เราต้องการได้แล้วหลังจากนี้เราอาจย้อนกลับไปที่ Reconnaisance หรือ Scanning Phase ใหม่ แต่จะเปลี่ยน Target ไปเป็น Application หรือ Host อื่นๆภายใน Network นั้นต่อไป ขั้นตอนนี้เรียกว่า Lateral movement

เครื่องมือที่ใช้ใน Post-Exploit Phase

เครื่องมือที่เราใช้หลังจากการโจมตีมีดังนี้

Reporting

Reporting เป็น Phase ที่จะทำการสรุปผล รวบรวมผลที่ได้ออกมาเป็นรายงาน โดยจะแบ่งออกเป็นหัวข้อต่างๆ ดังนี้

Pentest Standards และ Methodology

การทำ Pentest จะต้องกำหนดมาตรฐานหรือวิธีการทำงานเพื่อให้ได้ผลลัพธ์ที่มีคุณภาพมากเพียงพอ ไม่ว่าคุณจะทดสอบกับ Pentester คนไหนก็ตาม ซึ่งตัวอย่างของมาตรฐานและ Best Practices ที่เราควรเข้าไปศึกษาเพิ่มเติมมีดังนี้

  1. Mitre Att&ck จะเป็น Website ที่รวมรวมวิธีการโจมตี และที่มาของ Attack กลุ่มต่างๆ ซึ่งเราสามารถเข้าไปใช้งานได้ฟรี โดยจะแบ่งออกเป็น 3 กลุ่ม ดังนี้
    • Enterprise สำหรับกลุ่มที่ใช้ Technology เหล่านี้ Windows, macOS, Linux, PRE, Azure AD, Office 365, Google Workspace, SaaS, IaaS, Network และ Containers
    • Mobile สำหรับ Android และ iOS
    • ICS(Industrial Control Systems) สำหรับระบบที่ใช้ในควบคุมเครื่องจักรในโรงงาน
  2. OWASP เป็นแหล่งข้อมูลที่ใหญ่ที่สุดสำหรับ Web Application Security ซึ่ง OWASP จะมีเอกสารสำหรับการทำ Pentest ดังนี้
    • Web Application ถ้าต้องการทำ Pentest Web Application เราจะใช้ OWASP Testing Guide
    • Mobile Application ถ้าต้องการทำ Pentest Mobile Application เราจะใช้ OWASP MASTG
    • IoT ถ้าต้องการทำ Pentest อุปกรณ์ IoT เราจะใช้ OWASP ISTG
  3. PTES(The Penetration Testing Execution Standard) เป็นเอกสารที่ระบุขั้นตอนในการทำ Pentest ซึ่งในเอกสารจะแบ่งออกเป็น 7 Sections ดังนี้
    • Pre-engagement Interactions
    • Intelligence Gathering
    • Threat Modeling
    • Vulnerability Analysis
    • Exploitation
    • Post Exploitation
    • Reporting
  4. ISSAF(Information Systems Security Assessment Framework) เป็นเอกสารที่รวบรวมเอาวิธีการ Pentest ทุกๆอย่างไว้ในเอกสารตัวเดียว(มี 1200 กว่าหน้า) ครอบคลุมการทำ Pentest ตั้งแต่เริ่มต้นจนขั้นตอนสุดท้าย

อ่านข้อมูลเพิ่มเติมเกี่ยวกับการทำ Pentest ต่อได้ที่นี่

Phanupong Permpimol
Follow me