Pen Testing คืออะไร? ทำไมต้องทำ Pen Testing?

สวัสดีครับชาว IT กลับมาพบกันอีกครั้งกับ Blog ของ Cloud HM นะครับ สำหรับวันนี้เรามาคุยกันในเรื่องของ Security บ้างครับ ซึ่งทุกคนเองก็ปฏิเสธไม่ได้ใช่ไหมครับว่า Security เป็นเรื่องที่สำคัญที่สุดเป็นอันดับแรกในการวางรากฐานของระบบ โดยการวางระบบ Security ที่ดี จะเป็นผลดีในระยะยาวนั่นเองครับ ซึ่งข้อมูลที่สำคัญในระบบของเราเนี่ย หากสามารถสร้างเม็ดเงินได้ จะต้องมีผู้ไม่ประสงค์ต้องการที่จะวิ่งเข้าหาข้อมูล ในช่วงที่ผ่านมาที่จะโดนกันบ่อย ๆ ก็อย่างเช่น Ransomware หรือแม้กระทั่งโดนยิง Website จากคู่แข่งทางการค้า หรืออื่น ๆ โอเค เราเกริ่นกันค่อนข้างเยอะแล้ว เดี๋ยววันนี้จะมาแนะนำการทำ Penetration Testing หรือที่เรารู้จักกันในชื่อสั้น ๆ ว่า Pen Test กันนะครับ

Pen Test คืออะไร ทำไปเพื่ออะไร?

Penetration Testing หรือเรียกให้สั้นลงว่า Pen Test เป็นการทดสอบในเรื่องของ Security โดยการจำลองเหตุการณ์ว่ามีการโจมตีไปในระบบ โดยจุดประสงค์ของการจำลองการโจมตีก็เพื่อที่จะหาช่องโหว่ หรือจุดอ่อนของระบบป้องกัน


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

ใครเป็นคนทำ Pen Test?

คนที่จะมาทำ Pen Test ได้ จะให้ดีที่สุดควรจะเป็นคนที่ไม่ได้มีข้อมูลของระบบของท่านเลย หรืออาจจะมีข้อมูลเพียงเล็กน้อย เพราะว่าเค้าเหล่านั้น จะสามารถหาจุดบอด หรือช่องโหว่ของระบบจากการออกแบบของ Developer หรือการตั้งค่าของ Infrastructure ได้ ด้วยเหตุผลนี้การจ้าง Contractor ข้างนอกมาดูจะเหมาะสมที่สุด Contractor เหล่านี้จะใช้ความสามารถในการเจาะระบบเปรียบเสมือน Hacker เรียกว่า Ethical Hacker บางคนอาจจะรู้จักในชื่อ White Hacker การที่จะดำเนินการจะเป็นการที่ได้รับอนุญาตจากทางเจ้าของระบบแล้ว เพื่อช่วยเพิ่มประสิทธิภาพในเรื่องของ Security นั่นเองครับ


White Hacker ที่เจาะระบบได้ส่วนใหญ่จะเคยมีประสบการณ์ในการพัฒนา Application หรือ Software แต่ที่ขาดไม่ได้เลยก็คือ Certificate สำหรับการทำ Pen Test หรือบางคนอาจจะเรียนรู้ด้วยตัวเอง และมีบางรายก็เป็น Hacker กลับใจ มาช่วยแก้ไขปัญหาจากช่องโหว่ของระบบ Security ส่วนการที่องค์กรจะเลือกว่าใครจะเป็นคนที่จะดำเนินการในเรื่องของ Pen Test ก็ขึ้นอยู่เป้าหมายขององค์กรว่าจะทำ Pen Test แบบใด ก็ให้เลือกจากผู้ที่เชี่ยวชาญการ Pen Test แบบที่เราต้องการเป็นพิเศษ จะได้แก้ปัญหาได้ตรงจุดครับ

Pen Test มีวิธีการทดสอบแบบใดบ้าง?

External Testing
การทำ Pen Test แบบ External เป็นการทดสอบโจมตีสินทรัพย์ของบริษัทที่สามารถเข้าถึงได้จาก Internet เช่น Web Application, Website ของบริษัท, อีเมล และ DNS จุดประสงค์แน่นอนว่าคือการที่จะขโมยข้อมูลที่มีความสำคัญนั่นเอง

Internal Testing
สำหรับการทดสอบแบบ Internal Test ผู้ที่เจาะระบบจะ Access เข้าไปที่ Application หรือระบบของคุณที่อยู่ข้างหลัง Firewall เพื่อจำลองการโจมตีจากภายใน การทดสอบแบบนี้ไม่ค่อยจำเป็นเท่าไหร่ ส่วนใหญ่ที่จะจำลองการทดสอบกันโดยใช้กรณีที่พนักงานบางรายโดนขโมย Credential ในการเข้าถึงระบบจากการโดน Phishing ครับ

Blind Testing
Blind Test แปลเป็นก็คือ ปิดตาทดสอบ ผู้ที่เจาะระบบจะได้ข้อมูลแค่เพียงชื่อบริษัทของคุณเท่านั้น วิธีทดสอบแบบนี้จะช่วยสามารถตรวจสอบและวัดเรื่องของ Security ที่บริษัทของคุณตั้งค่าไว้ ณ เวลานั้นได้เลย

Double-blind Testing
สำหรับการทำ Double-blind Test จะต่างจาก Blind Test ตรงที่ทีม IT จะไม่รู้เลยว่ามีการทดสอบโจมตีเข้าระบบ แต่การที่จะทำแบบนี้ได้ต้องได้รับการอนุมัติจากบริษัทก่อน ซึ่งก็จะมี Scope แจ้งว่าสามารถดำเนินการได้ถึงขั้นใด

Targeted Testing
สำหรับรูปแบบนี้ ทั้งผู้ทดสอบและคนที่รับผิดชอบเรื่องของ Security จะทำงานร่วมกัน วิธีนี้ช่วยพัฒนาให้ทีม Security สามารถแก้ไขปัญหาแบบ Real-time ได้จากมุมมองของ Hacker ครับ

ขั้นตอนของการทำ Pen Test มีอะไรบ้าง

Threat Model for Security Penetration Testing I ThreatModeler Software

1. Planning and Reconnaissance
ขั้นตอนแรกคือการวางแผนและการสำรวจภาพรวม สิ่งที่ต้องดำเนินการคือ กำหนดขอบเขตของงานและกำหนดเป้าหมายของการทดสอบรวมไปถึงระบุระบบที่จะให้ทดสอบและวิธีการที่จะใช้ทดสอบ โดยอาจจะรวบรวมข้อมูลอย่างเช่น รายละเอียดของ Network, DNS หรือ Mail Server เพื่อให้ผู้ทดสอบเข้าใจว่าเป้าหมายมีลักษณะการทำงานเป็นอย่างไร และสามารถที่เจาะระบบแบบไหนได้บ้าง

2. Scanning
ขั้นตอนถัดมาคือ การที่จะทำความเข้าใจกับเป้าหมายว่า Application จะมีระบบป้องกันแบบใด ส่วนใหญ่จะทดสอบ 2 รูปแบบดังนี้


Static Analysis – เป็นการตรวจสอบ Code ของ Application เพื่อประเมินว่าลักษณะการทำงาน ซึ่งเครื่องมือที่ใช้จะสามารถ Scan Code ได้ภายในครั้งเดียวและดูว่ามีการตอบสนองอย่างไร

Dynamic Analysis – เป็นการตรวจสอบ Code ของ Application ในขณะที่ Application ยังทำงานอยู่ วิธีนี้เป็นที่นิยมมากกว่าในการ Scan เนื่องจากจะสามารถให้ข้อมูลแบบ Real-time ในเรื่องประสิทธิภาพของ Application ได้เลย

3. Gaining Access
สำหรับ Step นี้จะเริ่มทำงานโจมตีแล้ว โดยอาจจะใช้ Cross-site Scripting, SQL Injection และ Backdoors (เข้าผ่านทางช่องโหว่ของ Software) เพื่อปกปิดร่องรอยของการโจมตี หลังจากนั้นผู้ทดสอบจะใช้ประโยชน์จากการเข้าถึงในการขโมยข้อมูล แก้ไขสิทธิ์ หรือ Interrupt ระบบ และอื่น ๆ อีกมากมายที่สามารถจะทำได้

4. Maintaining Access
จุดประสงค์ของขั้นตอนนี้คือ เมื่อเข้าไปในระบบของบริษัทได้แล้วจะต้องสามารถอยู่ในระบบได้ยิ่งนานเท่าไหร่ก็จะยิ่งดี เพื่อที่จะขโมยข้อมูลได้มากขึ้น

5. Analysis
ขั้นตอนสุดท้าย คือการวิเคราะห์ผลลัพธ์ของการทำ Pen Test เพื่อที่จะทำเป็น Report สรุปให้กับบริษัทโดยส่วนใหญ่ที่ทำกันจะมีรายละเอียดดังนี้


ระบบหรือข้อมูลส่วนไหนที่สามารถเจาะได้บ้าง?
มีข้อมูลสำคัญอะไรบ้างที่เข้าถึงได้?
ระยะเวลาที่ผู้ทดสอบอยู่ในระบบได้ โดยที่ทีม Security ตรวจหาไม่เจอ?

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

เครื่องที่นิยมใช้ทำ Pen Test มีอะไรบ้าง?

มีเครื่องมือหลากหลายที่ใช้ในการทำ Pen Test แต่เครื่องมือหลัก ๆ ที่นิยมใช้กันเป็นส่วนใหญ่คือNMap ใช้สำหรับ Scan Port ว่ามี Port ใดเปิดอยู่ และสามารถระบุ Operating Systems, ระบุเส้นทางที่จะโจมตีโดยการหาช่องโหว่ Nessus เป็นเครื่องมือที่ใช้หาช่องโหว่ในด้าน NetworkPass-The-Hash เครื่องมือนี้จะใช้ในการ Hack Password
เป็นอย่างไรกันบ้างครับช สำหรับการทำ Pen Test แน่นอนว่าย่อมส่งผลดีกับระบบของท่านในระยะยาวแน่นอน แต่ก็ควรพึงระวังในเรื่องของ Data Loss, Web Corrupt และ Downtime ในระหว่างทดสอบเผื่อไว้ด้วยนะครับ อาจจะจำลองระบบขึ้นมาอีกชุดหนึ่งเพื่อทดสอบก็ได้เช่นกัน หวังว่าจะเป็นประโยชน์กับชาว IT นะครับผม

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


— Cloud HM