IT General
น้องๆ เคยสงสัยไหมว่าทำไมแฮกเกอร์ถึงเจาะระบบเราได้? Penetration Testing หรือ Pentest เนี่ยแหละ คือการจำลองสถานการณ์นั้นจริงๆ แต่เราเป็นคนทำเอง! พูดง่ายๆ คือเรา "แกล้งเป็น" แฮกเกอร์ เพื่อหาช่องโหว่ในระบบของเราก่อนที่คนร้ายตัวจริงจะเจอ
สมัยผมทำร้านเน็ต SiamCafe.net เมื่อ 20 กว่าปีก่อน (โอ้โห...นานมาก) เรื่องความปลอดภัยนี่สำคัญสุดๆ เพราะมีข้อมูลลูกค้า บัญชีต่างๆ ถ้าโดนเจาะทีนี่...หายนะเลย! Pentest เลยเป็นเหมือน "วัคซีน" ที่ช่วยป้องกันเราได้ก่อนจะป่วยหนัก
ทำไมถึงสำคัญ? ก็เพราะมันช่วยให้เราเห็นจุดอ่อนที่ซ่อนอยู่ไง! บางที Firewall เราก็ตั้งค่าผิดพลาด บางที Software ที่ใช้อยู่ก็มีช่องโหว่ที่ยังไม่ได้ Patch Pentest จะช่วยชี้ให้เห็นปัญหาเหล่านี้ เพื่อให้เราแก้ไขได้ทันท่วงที ก่อนที่จะเกิดเรื่อง
ก่อนจะไปลงมือ Pentest จริงๆ เราต้องมีพื้นฐานความรู้กันก่อนนะ ไม่ใช่ว่าอยู่ๆ ก็ไปรัน Tool มั่วๆ ซั่วๆ มันไม่ได้อะไรหรอก แถมอาจจะทำให้ระบบพังอีก
อันนี้สำคัญมากๆ! เราต้องเข้าใจว่า Network ทำงานยังไง IP Address คืออะไร Port คืออะไร Protocol ต่างๆ (TCP, UDP, HTTP, HTTPS) ทำงานยังไง ถ้าไม่เข้าใจตรงนี้ ก็เหมือนกับขับรถไม่เป็นแล้วไปแข่ง F1 อ่ะครับ
ลองนึกภาพตามนะ สมัยก่อนที่ร้านเน็ต ผมต้อง Config Router เองทุกอย่าง ทั้ง Firewall ทั้ง NAT ถ้าไม่เข้าใจ Network นี่จบเห่เลยลูกค้าเล่นเน็ตไม่ได้
ไม่ว่าจะเป็น Windows, Linux หรือ macOS เราก็ต้องเข้าใจการทำงานของมันพอสมควร ต้องรู้ว่า File System เป็นยังไง Permission ทำงานยังไง Process คืออะไร Command Line ใช้งานยังไง
Linux นี่สำคัญมากนะสำหรับการทำ Pentest เพราะ Tool ส่วนใหญ่มักจะรันบน Linux ลองหัดใช้ Kali Linux ดูครับ เป็น Distro ที่ออกแบบมาเพื่อ Pentest โดยเฉพาะ
สุดท้ายแต่ไม่ท้ายสุด เราต้องเข้าใจหลักการพื้นฐานด้าน Security เช่น Authentication, Authorization, Encryption, Vulnerability, Exploit, Attack Vector ถ้าไม่เข้าใจคำพวกนี้ ก็ยากที่จะเข้าใจว่าเรากำลังทำอะไรอยู่
สมัยก่อนผมเคยเจอเคสที่ลูกค้าตั้ง Password ง่ายๆ เช่น "123456" หรือ "password" พอโดน Brute Force เข้าไปนี่...จบเลย! เราต้องสอนให้ลูกค้าตั้ง Password ที่แข็งแรง และเข้าใจเรื่อง Security ด้วย
พอมีพื้นฐานแล้ว ก็ถึงเวลาลงมือทำจริง! แต่ไม่ต้องกลัวนะ มันไม่ได้ยากอย่างที่คิด เริ่มจากเล็กๆ น้อยๆ ก่อน แล้วค่อยๆ พัฒนาไป
ขั้นแรกคือการ "สืบ" หรือ Reconnaissance เราต้องเก็บข้อมูลเกี่ยวกับเป้าหมายให้มากที่สุดเท่าที่จะทำได้ เช่น IP Address, Domain Name, Operating System, Software Version, Email Address, Social Media Account
เราสามารถใช้ Tool ต่างๆ ช่วยในการเก็บข้อมูลได้ เช่น nmap (Network Mapper) สำหรับสแกน Port และ Service, whois สำหรับดูข้อมูล Domain Name, theHarvester สำหรับเก็บ Email Address
nmap -sV 192.168.1.1
คำสั่งนี้จะใช้ nmap เพื่อสแกน Service Version บน IP Address 192.168.1.1
หลังจากได้ข้อมูลมาแล้ว เราก็เอาข้อมูลเหล่านั้นมาใช้ในการ Scan หาช่องโหว่ เราสามารถใช้ Vulnerability Scanner ต่างๆ เช่น Nessus, OpenVAS, Nikto เพื่อ Scan หาช่องโหว่ที่อาจจะเกิดขึ้นได้
Vulnerability Scanner จะทำการตรวจสอบระบบของเรากับฐานข้อมูลช่องโหว่ที่มีอยู่ และรายงานผลออกมา ถ้าเจอช่องโหว่ เราก็ต้องทำการตรวจสอบและแก้ไขต่อไป
nikto -h http://example.com
คำสั่งนี้จะใช้ nikto เพื่อ Scan หาช่องโหว่บน Web Server ที่ http://example.com
ถ้าเราเจอช่องโหว่แล้ว ขั้นตอนต่อไปคือการ "เจาะ" หรือ Exploitation เราจะใช้ Exploit ต่างๆ เพื่อเจาะเข้าไปในระบบ และดูว่าเราสามารถทำอะไรได้บ้าง
Metasploit เป็น Framework ที่นิยมใช้ในการทำ Exploitation มันมี Exploit มากมายให้เราเลือกใช้ และช่วยให้เรา Automate กระบวนการ Exploitation ได้ง่ายขึ้น
อย่าลืมว่าการ Exploitation ต้องทำด้วยความระมัดระวัง และต้องได้รับอนุญาตจากเจ้าของระบบก่อน ไม่งั้นอาจจะโดนฟ้องได้นะ!
นอกจาก Pentest แล้ว ยังมีทางเลือกอื่นๆ ที่ช่วยให้เราประเมินความปลอดภัยของระบบได้ เช่น Vulnerability Assessment, Security Audit และ Bug Bounty Program แต่ละทางเลือกก็มีข้อดีข้อเสียแตกต่างกันไป
| ทางเลือก | ข้อดี | ข้อเสีย |
|---|---|---|
| Penetration Testing | จำลองการโจมตีจริง, หาช่องโหว่ที่ซับซ้อนได้ | ใช้เวลานาน, ต้องใช้ผู้เชี่ยวชาญ |
| Vulnerability Assessment | รวดเร็ว, หาช่องโหว่พื้นฐานได้ง่าย | ไม่จำลองการโจมตีจริง, อาจจะพลาดช่องโหว่ที่ซับซ้อน |
| Security Audit | ตรวจสอบตามมาตรฐาน, ช่วยให้ Compliance | อาจจะไม่เจอช่องโหว่ใหม่ๆ |
| Bug Bounty Program | จ่ายเงินเฉพาะเมื่อเจอ Bug, ได้มุมมองจากภายนอก | ควบคุมผลลัพธ์ได้ยาก, อาจจะมี Bug ซ้ำ |
เลือกทางเลือกไหน ก็ขึ้นอยู่กับความต้องการและงบประมาณของเรา ถ้าต้องการประเมินความปลอดภัยแบบละเอียด ก็เลือก Pentest ถ้าต้องการแค่ Scan หาช่องโหว่พื้นฐาน ก็เลือก Vulnerability Assessment ถ้าต้องการ Compliance ก็เลือก Security Audit ถ้าต้องการมุมมองจากภายนอก ก็เลือก Bug Bounty Program
สุดท้ายนี้ อย่าลืมว่า Security เป็นกระบวนการที่ต้องทำอย่างต่อเนื่อง ไม่ใช่แค่ทำครั้งเดียวแล้วจบ SiamCafe Blog มีบทความอื่นๆ ที่เกี่ยวกับ Security อีกมากมาย ลองเข้าไปอ่านดูกันได้นะ!
สมัยผมทำร้านเน็ต ก็ต้องคอยอัพเดท Security อยู่เสมอ เพราะภัยคุกคามมันเปลี่ยนไปทุกวัน เราต้องเรียนรู้และปรับตัวอยู่ตลอดเวลา
หวังว่าบทความนี้จะเป็นประโยชน์สำหรับน้องๆ ที่สนใจเรื่อง Pentest นะครับ ถ้ามีคำถามอะไร ก็ถามมาได้เลย ยินดีตอบเสมอ
และอย่าลืมแวะไปอ่านบทความอื่นๆ ที่ SiamCafe Blog กันด้วยนะครับ มีเรื่อง IT สนุกๆ อีกเยอะเลย!
น้องๆ ที่อยากลองทำ Penetration Testing (Pen Test) เองเนี่ย สมัยผมทำร้านเน็ต SiamCafe บอกเลยว่า "ใจถึง" อย่างเดียวไม่พอ ต้อง "รอบคอบ" ด้วยนะ
ทำไมถึงบอกแบบนั้น? เพราะ Pen Test มันเหมือนดาบสองคม ถ้าไม่ระวัง แทนที่จะเจอช่องโหว่ อาจจะทำระบบเค้า "พัง" ไปเลยก็ได้! คิดภาพตามนะ เราเข้าไปงัดแงะบ้านเค้า ถ้าพลาดไป แทนที่จะเจอขโมย อาจจะทำบ้านเค้าไฟไหม้ไปด้วยซะงั้น
อย่าเพิ่งรีบร้อน! เหมือนเราจะไปบุกบ้านใครซักคน เราต้องสืบก่อนว่าบ้านนั้นมีใครอยู่บ้าง มีทางเข้าออกกี่ทาง หมาดุไหม? Reconnaissance ก็คือการ "สืบ" นี่แหละ เก็บข้อมูลให้มากที่สุดเท่าที่จะทำได้ เช่น ใช้ nmap สแกนหา port ที่เปิดอยู่, ดูข้อมูล whois ของ domain, หรือแม้แต่ Google Dorking ก็ช่วยได้เยอะ
nmap -A -T4 target.com
เครื่องมือพวกนี้ช่วยลดเวลาเราไปได้เยอะ คิดซะว่ามันเป็น "เครื่องตรวจจับโลหะ" ที่ช่วยหาจุดอ่อนที่น่าสนใจให้เรา แต่! อย่าเชื่อมัน 100% นะ ต้องเอาผลที่ได้มา "วิเคราะห์" ต่อด้วย เพราะบางทีมันก็เจอแค่ "สัญญาณรบกวน" ไม่ใช่ของจริง
สมัยก่อนผมชอบใช้ Nessus ตอนหลังๆ ก็มี OpenVAS ที่เป็น Open Source ให้เล่นฟรีๆ ได้เยอะแยะ
พอเจอช่องโหว่แล้ว อย่าเพิ่งดีใจ! ก่อนจะกด "Exploit" ลองคิดดูก่อนว่าผลที่ตามมาจะเป็นยังไง? จะทำให้ระบบเค้ารวนไหม? ข้อมูลจะรั่วไหลหรือเปล่า? ถ้าไม่แน่ใจ ให้ลองทำใน "สภาพแวดล้อมจำลอง" (Lab) ก่อนเสมอ
จำไว้ว่าเป้าหมายของการ Pen Test คือการ "หา" ช่องโหว่ ไม่ใช่ "ทำลาย" ระบบ
Pen Test ที่ดี ไม่ได้จบแค่ตอน "เจาะ" ระบบได้ แต่ต้องทำ Report ที่ละเอียด ชัดเจน อธิบายว่าเจออะไรบ้าง ทำไมถึงเจาะได้ แล้วจะแก้ไขยังไงได้บ้าง? Report ที่ดี จะช่วยให้เจ้าของระบบ "อุดรูรั่ว" ได้อย่างมีประสิทธิภาพ
คิดซะว่าเราเป็น "หมอ" ที่ต้องวินิจฉัยโรค แล้วเขียนใบสั่งยาให้คนไข้
จริงๆ มันก็คือ "สิ่งเดียวกัน" นั่นแหละ Ethical Hacking คือชื่อที่ฟังดู "ดี" กว่า Pen Test หน่อย เพราะ Pen Test ฟังดูเหมือนเราไป "ทดสอบการเจาะ" ซึ่งอาจจะฟังดูไม่ดีเท่าไหร่ แต่สุดท้ายแล้วจุดประสงค์ก็เหมือนกัน คือการหาช่องโหว่เพื่อปรับปรุงความปลอดภัย
ไม่ต้องถึงขั้นเทพ! แต่ต้อง "อ่าน Code" เป็น เข้าใจหลักการทำงานของโปรแกรม และ Scripting ได้บ้าง (เช่น Python, Bash) เพราะบางทีเราต้องเขียน Script เพื่อ Exploit ช่องโหว่เอง
ไม่ผิด ถ้าได้รับ "อนุญาต" จากเจ้าของระบบ! สำคัญมาก! ถ้าไปแอบเจาะระบบเค้าโดยไม่บอกกล่าวเนี่ย โดนจับได้มีสิทธิ์ติดคุกนะ! เหมือนเราจะเข้าไปตรวจบ้านคนอื่น ถ้าเค้าไม่ให้เข้า เราก็ไม่มีสิทธิ์
มองหา iCafeForex สำหรับข้อมูลเพิ่มเติม
Penetration Testing เป็นศาสตร์ที่ต้องใช้ทั้ง "ความรู้" "ทักษะ" และ "ความรอบคอบ" อย่าใจร้อน อย่าประมาท และที่สำคัญที่สุดคือ "ต้องได้รับอนุญาต" ก่อนเสมอ!
สมัยผมทำร้านเน็ต SiamCafe เจอปัญหาความปลอดภัยมาเยอะแยะ การ Pen Test ช่วยให้เรา "ป้องกัน" ก่อนที่จะ "โดน" จริงๆ
ติดตาม SiamCafe Blog สำหรับบทความอื่นๆ