จากที่เคยพูดเรื่อง Application Security Testing ไปแล้ว ทุกๆท่านน่าจะเข้าใจใน SAST และ DAST ไปแล้วว่ามันทำงานอย่างไร และแตกต่างกันอย่างไร ทีนี้เราจะมาว่ากันด้วยเรื่องว่า Vulnerability Assessment และ Penetration Test แตกต่างกันยังไง
Vulnerability Assessment
Vulnerability Assessment (บางครั้งจะเรียกว่า Vulnerability Scan) หรือเรียกสั้นๆว่า VA. นั้น เป็นการใช้เครื่องมือในการทดสอบหาช่องโหว่ของ Service หรือ Application โดยอ้างอิงจาก database ของเครื่องมือที่มี โดยเครื่องมือทำ VA สำหรับหาช่องโหว่ของ Service ของ Server ยกตัวอย่างเช่น Nexpose, Nessus, OpenVAS เป็นต้น และหากต้องการหาช่องโหว่ของ Web Application จะยกตัวอย่างเช่น Acunetix, Net Sparker, OWASP ZAP เป็นต้น
โดยหากเป็นเครื่องมือ VA ที่หาช่องโหว่ของ Service จะทำการประเมินความเสี่ยงที่ตรวจพบ ตามความเสี่ยงที่ปรากฎต่อสาธารณะแล้ว CVE (Common Vulnerabilities and Exposures) และหากเป็นเครื่องมือ VA สำหรับ Web Application มักจะประเมิณความเสี่ยงที่ตรวพบตามลักษณะของช่องโหว่ เช่น SQL Injection, Cross Site Scripting, XML eXternal Entity เป็นต้น หรือบางเครื่องมือก็จะยึดหลักตาม CWE(Common Weakness Enumeration) ซึ่งอย่างที่กล่าวไป จะเห็นว่า VA นั้นเป็นการใช้เครื่องมือหาช่องโหว่ที่เคยประกาศมาแล้วทั้งสิ้น
Penetration Test
Penetration Test หรือเรียกสั้นๆว่า Pentest จะเป็นการทดสอบเจาะระบบแบบเน้นการกระทำแบบ manual อาจมีการใช้เครื่องมือ VA ประกอบด้วยในการทดสอบบ้าง แต่ก็ไม่ใช่ส่วนหลักแต่อย่างใด Pentest เป็นการหาจุดอ่อนของระบบซึ่งไม่เพียงจะหาช่องโหว่ที่เคยประกาศไปแล้วเท่านั้น ยังมีการพยายามหาช่องโหว่ใหม่ๆ (0day) ของ Application ที่เป้าหมายนำมาใช้ หรือช่องโหว่ของการทำงาน (ที่เรียกว่า Business Logic) อีกด้วย เช่น website เปิดให้ทำการลงทะเบียน โดยการลงทะเบียนแต่ละครั้งต้องยืนยันก่อนว่าเป็นคนจริงๆ โดยการรับ One Time Password (OTP) confirm ก่อน ประเด็นมันอยู่ตรงนี้ว่า ถ้าเป็น VA นั้นก็คง scan ไม่เจอว่าเป็นช่องโหว่อะไร แต่พอเป็น Pentest เราจะมองว่า OTP ที่ว่าร้องขอได้กี่ครั้งต่อ 1 เบอร์ใน 1 นาทีหรือว่าช่วงเวลาหนึ่ง หากไม่มี limit นั่นหมายความว่า Attacker อาจจะทำให้บริษัทดังกล่าวเสีย credit SMS ทั้งหมดได้ ด้วยการสร้าง request ขอ OTP แบบนับไม่ถ้วนนั่นเอง ซึ่งส่งให้บริษัทสูญเงินโดยใช่เหตุ เป็นต้น
โดยการทำ Pentest นั้นมีทั้งลักษณะดังต่อไปนี้
- Whitebox เป็นการทดสอบที่ผู้ทดสอบมีข้อมูลทั้งส่วน credential, architecture ,design, functional knowledge และ source code ได้มีการจัดหาให้ทดสอบทั้งหมด. ทดสอบจากภายในองค์กร ครอบคลุมมากที่สุดเมื่อเทียบกับ grey และ blackbox ซึ่งจะทำให้ทราบถึง level ความปลอดภัยทั้งในระดับ network และ application
- Greybox เป็นการทดสอบที่ผู้ทดสอบมีข้อมูลทั้งส่วน credential, architecture ,design, functional knowledge และ source code ได้มีการจัดหาให้ทดสอบทั้งหมด. ครอบคลุมมากกว่า blackbox
- Blackbox เป็นการทดสอบผ่านมุมมองของบุคคลทั่วไปหรือ Hacker ภายนอก เป็นการจำลองการโจมตีจากมุมมองของ Hacker ได้ดีที่สุด
จะเห็นว่าการทดสอบแบบ Pentest นั้นจะเป็นมุมมองของ Hacker มากกว่า VA และเป็นมุมมองที่ต้องอาศัยประสบการณ์และการฝึกฝนอย่างมาก เพื่อให้ได้มุมมองการโจมตีใดๆที่อาจเกิดขึ้นได้กับระบบเป้าหมายนั่นเอง

Manday ของ VA และ Pentest
จากที่กล่าวไปข้างต้นจะเห็นว่า Pentest นั้นต้องอาศัยเวลาในการทำมากกว่า VA เป็นอย่างมาก สืบเนื่องด้วยจำเป็นต้องเรียนรู้ Application หรือ Service ที่ทำการทดสอบนั้นๆว่ามีลักษณะการทำงานอย่างไร จะสามารถใช้ประโยชน์ตรงจุดไหนเพื่อจะเอาเปรียบ (compromise) ระบบเป้าหมายได้บ้าง กลับกัน VA นั้นมักจะใช้เครื่องมือเป็นหลักในการหาช่องโหว่ ดังนั้นมันไม่ต้องคิดอะไรมาก ใช้เครื่องมือทำการ scan แล้วเอาผลมาได้เลย นั่นคือทำไมการประเมิณ manday ของ Pentest นั้นถึงมากกว่า VA (แต่ก็มีนะประเภทบริษัทที่หลอกขาย Pentest ทั้งที่จริงๆแล้วเป็นแค่เอาผล scan VA ไปส่งให้อ่ะ ซึ่งนั่นทำให้ลูกค้าในไทยหลายเจ้าเข้าใจผิด ผมต้องไปไล่อธิบายใหม่ในหลายๆที่เลย เฮ้ออออออ)
สรุป
หวังว่าทุกๆท่านจะเข้าใจถึงความแตกต่างระหว่าง Pentest และ VA เพิ่มมากขึ้นนะครับ แล้วก็เรื่องว่าจะทำอะไรดีระหว่าง Pentest กับ VA ปกติเวลาที่ผมไปหาลูกค้า ผมมักจะโชว์รูปของ Coffeetocode (ภาพด้านล่าง) ให้ดูเสมอก่อนที่จะตัดสินใจเลือกทำ Security Assessment คือให้ตัวเองทราบก่อนว่าจริงๆแล้วตัวเองต้องการทำเพื่อตอบโจทย์อะไร จะได้เลือก service ที่เหมาะสมกับปลายทางที่ลูกค้าต้องการจริงๆครับ
