Security
น้องๆ เคยได้ยินคำว่า "Zero-Day Exploit" กันมั้ย? มันคือช่องโหว่ในซอฟต์แวร์หรือฮาร์ดแวร์ที่เรายังไม่รู้ตัวเลยว่ามีอยู่! คิดภาพตามนะ เหมือนบ้านเรามีประตูหลังที่ไม่ได้ล็อค แล้วโจรก็เข้ามาขโมยของโดยที่เราไม่รู้เรื่องเลยนั่นแหละ
สมัยผมทำร้านเน็ต SiamCafe เนี่ย เจอบ่อยมาก พวกโปรแกรมเถื่อน เกม crack ทั้งหลายแหล่ มันชอบมีช่องโหว่พวกนี้แฝงมาด้วยทั้งนั้นแหละ ต้องคอยระวังอัพเดทแพทช์อยู่ตลอดเวลา
Zero-Day หมายถึง "วันที่ศูนย์" คือวันที่ผู้พัฒนาซอฟต์แวร์เพิ่งจะรู้ถึงช่องโหว่นั้นเป็นวันแรก ยังไม่มีแพทช์ออกมาแก้ไข ช่องโหว่นี้จึงเป็นเหมือน "ของใหม่" ที่แฮกเกอร์สามารถใช้โจมตีระบบของเราได้ทันที
Exploit ก็คือวิธีการหรือโค้ดที่แฮกเกอร์ใช้เพื่อเจาะเข้าไปในระบบผ่านช่องโหว่นั่นแหละ คิดง่ายๆ มันคือ "กุญแจผี" ที่ใช้ไขเข้าไปในบ้านที่เราไม่ได้ล็อคประตูหลังไว้
ดังนั้น Zero-Day Exploit ก็คือการที่แฮกเกอร์ใช้ช่องโหว่ที่ยังไม่มีใครรู้ (หรือเพิ่งรู้) ในการโจมตีระบบของเราก่อนที่เราจะมีโอกาสป้องกันตัวเองนั่นเอง น่ากลัวใช่มั้ยล่ะ?
เพราะมันอันตรายมากๆ ไงล่ะ! ลองคิดดูนะ ถ้าแฮกเกอร์รู้ช่องโหว่ในโปรแกรมที่เราใช้ทำงานทุกวัน เช่น โปรแกรมบัญชี หรือโปรแกรมจัดการฐานข้อมูลลูกค้า เขาก็สามารถเข้ามาขโมยข้อมูลสำคัญของเราไปได้หมดเลย หรืออาจจะร้ายแรงกว่านั้น เช่น เข้ามาควบคุมระบบทั้งหมดของเราก็ได้
สมัยก่อนตอนทำร้านเกม ผมเคยเจอเคสลูกค้าคนนึงโดน Zero-Day Exploit เล่นงาน เครื่องคอมพิวเตอร์กลายเป็น zombie ส่ง spam mail ไปทั่วเลย เดือดร้อนกันไปหมด
ที่สำคัญคือ Zero-Day Exploit นั้นตรวจจับได้ยากมาก เพราะมันเป็นช่องโหว่ใหม่ที่ระบบป้องกันของเรายังไม่รู้จัก ทำให้เราต้องพึ่งพาการป้องกันแบบเชิงรุก (proactive defense) มากกว่าการป้องกันแบบตั้งรับ (reactive defense)
ช่องโหว่ Zero-Day เกิดขึ้นได้จากหลายสาเหตุครับพี่น้อง อาจจะมาจากการเขียนโค้ดที่ผิดพลาด (bug) หรือมาจากการออกแบบระบบที่ไม่รัดกุม (design flaw) หรือแม้แต่เกิดจากความผิดพลาดของมนุษย์ (human error) เองก็ได้
ตัวอย่างเช่น:
Code snippet ตัวอย่าง SQL Injection (อย่าเอาไปใช้ในทางที่ผิดนะ!):
-- สมมติว่าเรามีช่องกรอก username ในเว็บไซต์
-- แฮกเกอร์อาจจะกรอกแบบนี้:
' OR '1'='1
-- ซึ่งจะทำให้เงื่อนไขใน SQL กลายเป็นจริงเสมอ
-- และทำให้แฮกเกอร์สามารถ login เข้าสู่ระบบได้โดยไม่ต้องรู้ username และ password ที่ถูกต้อง
การโจมตีด้วย Zero-Day Exploit มักจะมีขั้นตอนดังนี้:
| คุณสมบัติ | Zero-Day Exploit | ช่องโหว่ทั่วไป |
|---|---|---|
| การเปิดเผย | ยังไม่เป็นที่รู้จัก (หรือเพิ่งเป็นที่รู้จัก) | เป็นที่รู้จัก และมีแพทช์แก้ไขแล้ว |
| ความเสี่ยง | สูงมาก เพราะยังไม่มีแพทช์ป้องกัน | ปานกลางถึงต่ำ หากมีการติดตั้งแพทช์ |
| การตรวจจับ | ยากมาก เพราะระบบป้องกันยังไม่รู้จัก | ง่าย เพราะระบบป้องกันรู้จักแล้ว |
| การป้องกัน | ต้องพึ่งพาการป้องกันเชิงรุก (proactive defense) | สามารถใช้แพทช์และการป้องกันแบบตั้งรับ (reactive defense) ได้ |
ถึงแม้ว่า Zero-Day Exploit จะอันตรายและตรวจจับได้ยาก แต่ก็ไม่ได้หมายความว่าเราจะป้องกันไม่ได้เลยนะ สมัยผมทำร้านเน็ตเนี่ย ผมใช้วิธีเหล่านี้:
ข้อนี้สำคัญมากๆ เพราะผู้พัฒนาซอฟต์แวร์มักจะออกแพทช์เพื่อแก้ไขช่องโหว่อยู่เสมอ การอัพเดทซอฟต์แวร์และระบบปฏิบัติการให้เป็นเวอร์ชั่นล่าสุดอยู่เสมอ จะช่วยลดความเสี่ยงในการถูกโจมตีด้วย Zero-Day Exploit ได้
ผมจะตั้ง auto-update ไว้เลย พวก Windows Update อะไรพวกนี้ ปล่อยให้มันจัดการตัวเองไป
ซอฟต์แวร์ป้องกันไวรัสและมัลแวร์สามารถช่วยตรวจจับและป้องกัน Exploit ได้ในระดับหนึ่ง ถึงแม้ว่าจะไม่สามารถป้องกัน Zero-Day Exploit ได้ทั้งหมด แต่ก็ยังดีกว่าไม่มีอะไรเลย
สมัยก่อนผมใช้ Norton AntiVirus บ้าง McAfee บ้าง สลับๆ กันไป แต่ที่สำคัญคือต้องอัพเดทฐานข้อมูลไวรัสให้เป็นปัจจุบันเสมอ
อย่าเปิดไฟล์หรือเข้าเว็บไซต์ที่ไม่น่าเชื่อถือ เพราะอาจจะมี Exploit แฝงอยู่ก็ได้ หากไม่แน่ใจ อย่าเสี่ยง!
ผมจะสอนลูกค้าในร้านเสมอว่า อย่าคลิกลิงก์แปลกๆ ในอีเมล หรือใน Facebook ถ้าไม่รู้จักคนส่ง อย่าโหลดโปรแกรมจากเว็บที่ไม่น่าเชื่อถือ
ระบบป้องกันแบบเชิงรุกจะพยายามตรวจจับพฤติกรรมที่น่าสงสัยในระบบของเรา เช่น การเข้าถึงไฟล์ที่ไม่ได้รับอนุญาต หรือการทำงานของโปรแกรมที่ผิดปกติ หากพบพฤติกรรมที่น่าสงสัย ระบบจะทำการบล็อกหรือแจ้งเตือนทันที
สมัยนี้มีพวก Endpoint Detection and Response (EDR) ที่ช่วยได้เยอะ แต่สมัยผมยังไม่มี ต้องใช้พวก Intrusion Detection System (IDS) แทน
อ่านบทความอื่นๆ เกี่ยวกับ Security ได้ที่ SiamCafe Blog นะครับ!
ดูวิดีโอเพิ่มเติมเกี่ยวกับZero Day Exploit คืออะไร:
Zero-Day Exploit เป็นช่องโหว่ที่แฮกเกอร์ใช้ในการโจมตี ส่วนไวรัสคอมพิวเตอร์เป็นโปรแกรมที่ถูกสร้างขึ้นมาเพื่อแพร่กระจายและทำลายระบบ ดังนั้น Zero-Day Exploit เป็นเหมือน "เครื่องมือ" ที่แฮกเกอร์ใช้ ส่วนไวรัสคอมพิวเตอร์เป็นเหมือน "อาวุธ" ที่แฮกเกอร์ใช้
การตรวจจับ Zero-Day Exploit นั้นยากมาก แต่สัญญาณที่อาจจะบ่งบอกว่าเราโดนโจมตีแล้ว ได้แก่:
ถ้าเจออาการเหล่านี้ ควรรีบตรวจสอบระบบทันที!
เพราะว่าผู้พัฒนาซอฟต์แวร์เพิ่งจะรู้ถึงช่องโหว่นั้นเป็นวันแรก (Day Zero) ยังไม่มีเวลาที่จะออกแพทช์แก้ไข ดังนั้นแฮกเกอร์จึงมี "โอกาส" ในการโจมตีระบบของเราโดยที่เราไม่มีทางป้องกันได้
หวังว่าบทความนี้จะเป็นประโยชน์กับน้องๆ นะครับ อย่าลืมติดตาม SiamCafe Blog เพื่ออ่านบทความดีๆ เกี่ยวกับ IT และ Security กันต่อไป!
# ตัวอย่าง command ดู log ใน Linux
tail -f /var/log/auth.log