Zero-Day Attack คืออะไร ?

เมื่อไม่วันก่อน Apple ออก Hotfix สำหรับอุปกรณ์ที่ทำงานบนระบบปฏิบัติการ iOS และ iPadOS ใน Version 15.0.2 ออกมา เพื่อปิดช่องโหว่ที่พบจากการโจมตี Zero-Day (CVE-2021-30883) ลองเข้าไปอ่านรายละเอียดดูได้ แต่ในวันนี้เราจะไม่ได้มาเล่าว่า รอบนี้โดนยังไง และมีอะไรซวยบ้าง แต่เราจะมาเล่าถึงความหมายของ Zero-Day Attack ว่าจริง ๆ แล้วมันคืออะไร มันมาได้ยังไง และ เราจะป้องกันตัวเราได้อย่างไร

งาน Cyber Security คือแมวไล่จับหนู

via GIPHY

อ่านหัวแล้วอาจจะ งง ว่า เอ๊ะ ทำไมมันเป็นเหมือนแมวไล่จับหนูละ อยากให้นึกภาพว่า จริง ๆ แล้ว พวก Malware ต่าง ๆ หรือการ Hacking ต่าง ๆ ที่เกิดขึ้น บ้างก็ไม่ได้เจาะกลุ่มเป้าหมาย ก็หว่านไปเรื่อย เช่น Ransomware อย่าง Wannacry ที่โดนกันถ้วนหน้า หรืออาจจะเจาะกลุ่มเป้าหมายอย่างเคสที่ Garmin โดนตัวเฉพาะไปเมื่อไม่กี่ปีที่แล้วเอง บ้างก็เพื่อการทดลอง บ้างก็เพื่อความสนุกของคนทำ บ้างก็ต้องการขโมยข้อมูล หรือไม่ก็อาจจะต้องการทำให้ระบบใช้งานไม่ได้ หรือ สูญหายไป มันมีหลายสาเหตุมาก ๆ ที่ทำให้เกิดเรื่องพวกนี้ขึ้นมา

เราจะเห็นว่าในท้องตลาดมี Software รักษาความปลอดภัยในเครื่องของเราเยอะแยะมากมาย เช่น Bitdefender และ Symantec เป็นต้น หรือในระดับองค์กร เขาก็จะมี Solution ด้านความปลอดภัยต่าง ๆ ของเขาอยู่เหมือนกัน โดยหน้าที่ของ Software และ Hardware พวกนี้คือ ป้องกันการเข้าถึงที่ไม่ได้รับอนุญาติให้ทำอะไรกับระบบของเราได้ วันนี้ Solution ที่เราใช้ มันอาจจะกันสิ่งนี้ได้ แต่พอมันกันได้ คนที่คิดการโจมตีต่าง ๆ เขาก็ต้องเปลี่ยนวิธีใหม่ไปเรื่อย ๆ เพื่อหลีกเลี่ยงการตรวจจับของระบบพวกนี้ เช่นการทำ Polymorphic Code เพื่อเปลี่ยนตัวเอง ไม่ได้พวก Solution รักษาความปลอดภัยจับได้ เหมือนกับพวกเปลี่ยนรูปร่างได้อะไรแบบนั้นเลย

เพราะวันนึง การโจมตีนี้ถูกป้องกันได้ การโจมตีแบบใหม่มันก็เกิดขึ้นมา วนไปแบบนี้เรื่อย ๆ เราเลยบอกว่า จริง ๆ แล้วงานพวก Cyber Security เอาจริง ๆ มันก็เหมือนเล่นแมวจับหนูแหละ หนูโดนจับได้ มันก็เปลี่ยนวิธี แมวก็ต้องไปวิ่งไล่จับใหม่อีกวน ๆ เป็นวงเวียนชีวิตไปเรื่ออย ๆ ของมัน เพราะอย่าลืมว่า อาชญากรรม มันก็เกิดขึ้นทุกวัน​ (เหมือนที่เราดูในข่าวทุกวันนี้) ไม่เว้นแม้แต่ในโลกคอมพิวเตอร์ด้วยเช่นกัน

Day -2 : Finding Vulnerability

โปรแกรมมีออกมาทุก ๆ วันทุกเวลาเลยก็ว่าได้ เพราะต้องยอมรับเลยว่า ความต้องการ Software ต่าง ๆ มันเยอะขึ้นเรื่อย ๆ เวลาเราเขียน Software เราต้องยอมรับเลยว่า มันอาจจะมีช่องโหว่อยู่ก็ได้ เอาจริง ๆ จากประสบการณ์สอนให้เรารู้ว่า ไม่ว่าระบบไหนมันก็มีช่องโหว่อยู่ที่ว่า ใครจะเป็นคนหาเจอเท่านั้นแหละ บ้างก็เป็นผู้พัฒนาเองก็ทำ Patch ออกมาแก้ก่อน แต่สำหรับส่วนที่มันหลุดออกมาละ ส่วนที่ยังไม่มีใครรู้ แน่นอนว่า เราไม่ได้อยู่ในโลกนี้คนเดียว มันมีทั้งคนดี และคนเ_ย อยู่ คนดีอย่าง White Hat Hacker เขาก็จะแจ้งให้กับผู้พัฒนา Software ที่ทราบ

ส่วนคนเ_ย หรือ Black Hat ก็จะไม่แจ้ง บ้างก็มีการจ้างให้ทำการเจาะระบบ (ทั้งบนดิน และ ใต้ดิน) อาจจะเป็นระบบของตัวเองเพื่อทำการทดสอบ หรือ คนอื่นที่อาจจะเป็นศัตรูอะไรก็ว่ากันไป หรืออีกเหตุผลง่าย ๆ เลยคือ เงิน

Day -1 : Broker

ซึ่งแน่นอนว่า ช่องโหว่พวกนี้คนที่เป็นคนหาเจอ ก็ไม่น่าจะปล่อยเทไว้ใน Internet ที่เราใช้งานปกติแน่ ๆ ไม่งั้นมันก็มีคนเอาไปส่งให้กับผู้พัฒนา ทำให้เขาก็ไม่ได้เงิน ดังนั้นที่ ๆ ดีที่สุดในการปล่อยพวกนี้คือ Dark Net ซึ่งในนั้น อย่างที่หลาย ๆ คนรู้ว่า มันมีตลาดในการขายทุกอย่างจริง ๆ ตั้งแต่ยาเสพติด ค้ามนุษย์ จนไปถึงสิ่งที่เราคุยกันในวันนี้คือ การขายช่องโหว่ของระบบ นั่นเอง หรือ บางครั้ง ของพวกนี้ ก็ไม่ได้ขายกันง่าย ๆ แต่ใช้การประมูลกันเลยด้วยซ้ำ เราเรียกพวกนี้ว่า Broker ใช่ ๆ เหมือนกับ Broker ขายหุ้นแหละ แต่แค่เปลี่ยนเป็นขายช่องโหว่เท่านั้นเอง แน่นอนว่า มันก็มีคนอยากจะเจาะระบบนั่นนี่ทุกวัน ทำให้คนพวกนี้ ก็จะเข้ามาหาพวกช่องโหว่ที่เข้ากับการโจมตีของตัวเอง แล้วจ่ายเงินเพื่อซื้อช่องโหว่ที่หาเจอเหล่านี้แหละ

Day 0 : Let's the attack begin

พวกช่องโหว่เหล่านี้ มันเป็นช่องโหว่ที่ยังไม่เคยถูกใช้มาก่อน ดังนั้น โอกาสที่จะใช้งานได้คือแทบจะ 100% ไปเลย และเป็นช่องโหว่ที่อาจจะเสียเวลาในการหา หรือ เสียเงินในการซื้อมา ดังนั้น พวกนี้มันไม่ใช่ช่องโหว่ แหกเข้าไปในระบบแล้วจบแน่นอน พวกนี้มักจะใส่สิ่งที่เราเรียกว่า Element of surprise ลงไป เป็นพวก Payload ต่าง ๆ เช่นถ้าอยากจะล้วงข้อมูล อาจจะเอาพวก Trojan Horse เข้าไปเพื่อเปิดทางให้ Payload อื่น ๆ เข้ามา หรือเอา Spyware มาเพื่อดูดข้อมูลเราออกไป ขึ้นกับเหตุผลเลยว่า คนที่ออกแบบการโจมตีเขาต้องการอะไร

หลังจาก การออกแบบ และ ประกอบร่างเสร็จสิ้น มันก็ถึงเวลาที่จะปล่อยการโจมตีแล้ว ใช่แล้ว เหยื่อที่คิดไว้ก็จะติด และ ผู้ที่ปล่อยการโจมตี ก็จะได้สิ่งที่ต้องการไป โดยอาจจะส่งผลกระทบอะไรบางอย่าง เช่นทำให้ข้อมูลสูญหาย หรือมี Traffic แปลก ๆ วิ่งเข้าออกจากระบบ ซึ่งขึ้นกับสิ่งที่เกิดขึ้น และ กึ๊นของ Admin ด้วยว่า เขาจะรู้สึกตัวเมื่อไหร่ว่า โดนเข้าให้แล้ว ถ้าไม่รู้ตัวก็บั้ยบายจ้าาาาา ช่องโหว่นี้ก็ยังไม่มีใคร Spot เจอ ก็ยังใช้งานได้อยู่

Day 1 : Patching

แต่ถ้า Admin ตรวจเจอความผิดปกติ ก็จะทำการแก้ปัญหา และ แจ้งที่ไปที่ผู้พัฒนา Software ว่า มันมีการโจมตีแบบนี้ขึ้น ซึ่งอาจจะต้องส่ง Log ให้กับ ผู้พัฒนา Software เพื่อให้เขาวิเคราะห์ว่ามันเกิดอะไรขึ้นกันแน่ ทำไมระบบถึงโดนโจมตี ระบบ หรือ Solution ที่ Implement ลงไป มันเกิดอะไรขึ้น ทำไมมันถึงป้องกันไม่ได้ หรือเป็นเพราะ User Error ที่กดเพื่อปล่อยให้มันเข้ามากันแน่ จากนั้นผู้พัฒนาก็จะทำการแก้ไข และออกเป็น Patch เพื่อให้ผู้ใช้งานทำการ Update ระบบเพื่อปิดช่องโหว่ตรงนั้น

นอกจากนั้น ข้อมูลการโจมตีพวกนี้ ยังส่งถึงผู้เชี่ยวชาญด้านความปลอดภัยต่าง ๆ เขาก็จะเอามาวิเคราะห์ และ ทำการปรับปรุงฐานข้อมูลในการป้องกัน เพื่อให้ Software รักษาความปลอดภัยทั้งหลายรู้จักการโจมตีทั้งหลาย เหมือนกับที่เราที่เป็นผู้ใช้จะเห็นในพวก Definition Update ต่าง ๆ บน Software รักษาความปลอดภัย

แล้วสรุป Zero-Day Attack คืออะไร ?

ถ้าอ่านมาแล้วอาจจะพอเข้าใจบ้างแล้วว่าพวก Zero-Day Attack คืออะไร ถ้าให้พูดง่าย ๆ มันคือ การโจมตีจากช่องโหว่ที่เราไม่เคยเจอมาก่อน ทำให้การตรวจพบ และการป้องกันเป็นอะไรที่ยากมาก ๆ นั่นส่งผลให้การโจมตีแบบ Zero-Day เป็นเรื่องที่เราว่า มันน่ากลัวสุด ๆ เลยละ เพราะเราไม่รู้ว่ามันจะมาเมื่อไหร่ เราไม่รู้ว่าเราจะหามันได้ยังไง และ เราไม่มีเครื่องมือในการจัดการกับมัน หรือพอเรามีเครื่องมือในการตรวจจับ และ จัดการแล้ว มันก็ไม่ใช่ Zero-Day อีกแล้ว ของใหม่มันก็มาเรื่อย ๆ บอกเลยว่า น่ากลัวสุด ๆ เลยละ

เคสที่ทำให้ช๊อคมาก ๆ คือเรื่องอื้อฉาวที่เกิดขึ้นเมื่อปี 2017 ที่การโจมตีที่ชื่อว่า EternalBlue ที่ NSA ของประเทศยักษ์ใหญ่อย่างสหรัฐอเมริกาเป็นคนเจอขึ้นมา โดยมันพุ่งเป้าไปที่ Windows ผ่าน SMB หรือ Protocol ในการส่งไฟล์ที่ทำให้ผู้ที่ใช้ช่องโหว่นี้สามารถที่จะเอาอะไรเข้าไปรันในเครื่องของเป้าหมายได้หมดเลย โดยที่ช่องโหว่นี้เจอมาไม่ต่ำกว่า 5 ปี นั่นแปลว่าที่ผ่านมาไม่ต่ำกว่า 5 ปีนี้ ช่องโหว่นี้อาจจะถูกใช้เพื่อการทำอะไรบางอย่างมาแล้ว โดยที่ไม่มีใครตรวจพบ และเจออะไรเลย จะเห็นได้ว่า Zero-Day Attack ไม่ได้เกิดขึ้นครั้งเดียวแล้วจะเจอเลย แต่มันอาจจะเนียนจัด ๆ จนหาไม่เจอ ทำให้ช่องโหว่นี้ถูกใช้กี่ครั้งก็ได้ ก่อนที่จะโดนเจอ ลองไปหาอ่านตัวเรื่องละเอียด ๆ ของ EternalBlue ได้ข่าวออกกันทั่วโลก เพิ่มเติมเข้าไปอีก เราจะบอกว่า การโจมตีขนาดใหญ่ ๆ ที่เกิดขึ้นส่วนใหญ่ทั้งหมด เกิดจาก Zero-Day Attack แทบจะทั้งหมด

เราจะป้องกัน Zero-Day Attack ได้อย่างไร ?

ในเมื่อมันจะมาเมื่อไหร่ไม่รู้ เราก็ต้องป้องกันอยู่ตลอดเวลา เราแนะนำ 5 ข้อด้วยกัน ในการป้องกันการโจมตีเหล่านี้ให้ได้มากที่สุด

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

อย่างที่ 2 คือ การให้ และใช้ Privillage เท่าที่จำเป็นเท่านั้น หมายความว่า เราใช้งานเท่าไหร่ เราก็ให้สิทธิ์ในการเข้าถึงเท่านั้น เช่น เราบอกว่า เราใช้งานเครื่องคอมพิวเตอร์ และไม่ได้ลงโปรแกรมอะไร ทางที่ดี คือเราควรที่จะสร้าง User ที่เป็นสิทธิ์การใช้งานทั่ว ๆ ไป ไม่ใช่ใช้งาน User ที่เป็น Admin หรือผู้ดูแลระบบ เหมือนที่เราชอบทำกันนั่นแหละ หรือเราเรียกว่า Least-Privilege Model ที่มันจะช่วยเราป้องกันภัยได้ดีมาก ๆ อันนี้แนะนำให้องค์กร Implement กัน

อย่างที่ 3 คือการ Update Software และระบบของเราให้ใหม่อยู่เสมอ เพราะเมื่อระบบได้รับการ Update Patch เพื่อแก้ช่องโหว่ที่เกิดขึ้นแล้ว ช่องโหว่นั้นก็อาจจะไม่ใช่ช่องโหว่ที่ทำร้ายเราได้อีกต่อไป นั่นเป็นสิ่งที่เราจะบอกกับทุกคนที่ถามว่าเราจะทำยังไงให้เราปลอดภัยเป็น Cyber Security 101 เลยก็ว่าได้

อย่างที่ 4 คือหมั่น Backup ระบบอย่างสม่ำเสมอ เพราะถ้าทำทั้ง 3 วิธีแล้วยังไม่รอด และมันทำให้ระบบของเราพัง หรือใช้งานไม่ได้เลย ถ้าเรายังมีการสำรองข้อมูลไว้ มันก็ทำให้เราสามารถดึงระบบกลับมาได้ โดยที่มีผลกระทบน้อยที่สุดเท่าที่จะเป็นไปได้ แต่เอาเข้าจริงในช่วงเวลาที่โดนเข้าจัง ๆ จริง ๆ เราควรจะต้องมี Protocol และมีการซ้อมทบทวน Protocol นี้อย่างสม่ำเสมอ ทำให้เวลาโดนเข้าจริง ๆ เราจะมีสติมากขึ้น และ จัดการตาม Protocol ที่เตรียมไว้ โอกาสความผิดพลาด ก็จะน้อยลงเป็นอย่างมาก เราเรียกมันว่า Incident Reponse Plan (IRP)

และสุดท้ายคือการ Enforce ระบบป้องกันให้แข็งแกร่งมากขึ้น อาจจะมีการ Implement รักษาความปลอดภัยที่แข็งแรงมากขึ้น มีการใช้ Policy ต่าง ๆ เช่น Account จำเป็นจะต้องมีรหัสผ่าน หรือ อาจจะทำการ Authentication ผ่านระบบส่วนกลาง มีมาตรฐานด้านความปลอดภัยในการเอาข้อมูลเข้าออกจากองค์กรต่าง ๆ รวมไปถึงการอบรมให้พนักงานมี Security Awareness มีความรู้เท่าทันภัยคุกคามอยู่อย่างสม่ำเสมอ

ทั้ง 5 เรื่องที่เราแนะนำไป มันก็จะช่วยเสริมในแง่ของทั้งการ Monitor ระบบ และ การป้องกันภัยคุกคามก่อนที่มันจะเข้ามาถึงได้ รวมไปถึงเมื่อมันเกิดขึ้นแล้ว การ Backup มันก็ช่วยทำให้ Recovery Time ของเราสั้นลงเป็นอย่างมาก

สรุป

Zero-Day Attack เป็นอะไรที่น่ากลัวมาก เพราะเราต้องเผชิญกับ "ความไม่รู้" ไม่รู้ว่ามันเกิดขึ้นเมื่อไหร่ก็ไม่รู้ หรือมันเกิดกับเราไปแล้วรึเปล่าเราก็ไม่รู้ เพราะมันเป็นการโจมตีแบบที่เราไม่ได้ตั้งตัว หรือรู้จักมาก่อน ดังนั้นเมื่อเราใช้งานระบบคอมพิวเตอร์เราก็ต้องมีความรับผิดชอบในการใช้งานด้วย เพราะอำนาจที่ยิ่งใหญ่มากับความรับผิดชอบที่ยิ่งใหญ่ตามไปด้วย

BONUS: Software รักษาความปลอดภัย ทำยังไงถึงป้องกัน Zero-Day Attack ได้

อย่างที่เราบอกว่า Zero-Day Attack มันคือการสู้กับ ความไม่รู้ แล้วถ้าเราไม่รู้แล้วพวกโปรแกรมที่รักษาความปลอดภัยต่าง ๆ ที่เรา Implement กัน มันทำงานยังไง ถึงป้องกันเรื่องพวกนี้ได้

จริง ๆ มีหลายเทคโนโลยี หลายวิธีในการจัดการ กับความไม่รู้เหล่านี้ ในเมื่อเราไม่รู้ว่ามันคืออะไร แต่เราสามารถบอกได้ว่าอะไรที่ปกติ ดังนั้นด่านแรก เราอาจจะตั้งพวก Firewall กับเราตั้ง Rule ที่เราใช้เท่านั้น เพื่อเป็นการป้องกันภัยจากการเข้าถึงภายนอก หรือถ้าเข้ามาจากทางอื่นแล้วมันพยายามส่งข้อมูลเข้าหรือออก ถ้าเราตั้ง Firewall และตั้งค่าไว้ เราก็จะรู้ทันทีว่ามันมีข้อมูล วิ่งเข้า หรือออก ที่ผิดปกติ เช่นอาจจะตั้งปิดทุก Port เข้าออก และเปิดเฉพาะส่วนที่เราใช้งานเท่านั้น หรือแม้กระทั่งการเลือกใช้งานพวก Next-Generation Firewall (NGFW) พวกนี้มันจะเรียนรู้ความปกติ เพื่อหาความผิดปกติได้ลึกซึ้งกว่า Firewall ใน Generation ก่อน ๆ มาก ทำให้เราตรวจจับความผิดปกติได้ง่ายขึ้น และ เร็วขึ้นมาก

ก่อนที่จะรันโปรแกรมต่าง ๆ เราอาจจะตรวจสอบ Signature ของมันว่าเข้ากับภัยคุกคามที่เคยเกิดขึ้นและอยู่ในฐานข้อมูลหรือไม่ นั่นก็คือสิ่งที่ Anti-Virus ปกติทำกัน หรือในระบบระดับ Enterprise มีการ Implement พวก Sandboxing ขึ้นมา กล่าวคือ เมื่อเรารันโปรแกรม มันจะทำงานอยู่ในกรอบที่ระบบตั้งไว้ เหมือนกับ Isolate โปรแกรมนี้ออกจากระบบเลย ทำให้ถ้าโปรแกรมนี้เป็นภัยคุกคามจริง มันก็จะทำอะไรระบบเราไม่ได้ เพราะมันโดนขังอยู่ในกรอบที่เราทำไว้ อีกข้อดีที่การสร้างกรอบขึ้นมา ทำให้เราสามารถที่จะวิเคราะห์การทำงานเพื่อให้เราเดาล่วงหน้าได้เลยว่าน่าจะเป็นภัยคุกคามหรือไม่

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