Zero day exploit ตอนที่ 2

รูปแบบการโจมตีและเทคนิคที่ใช้ใน Zero Day Exploit

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

  • Code Injection (การฉีดโค้ดร้ายลงในระบบ) – เป็นเทคนิคที่ผู้โจมตี “ฉีด” หรือฝังโค้ดที่เป็นอันตรายเข้าไปในกระบวนการทำงานของโปรแกรมเป้าหมาย โดยอาศัยช่องโหว่ที่โปรแกรมนั้นประมวลผลข้อมูลภายนอกไม่รัดกุม ทำให้ข้อมูลดังกล่าวถูกตีความเป็นคำสั่งให้รันได้​เมื่อโจมตีสำเร็จ ผู้โจมตีจะสามารถสั่งให้ระบบรันโค้ดที่ตนต้องการได้ เช่น ฝัง shellcode (ชุดคำสั่งระดับต่ำที่ให้เครื่องรันโดยตรง) เพื่อให้ระบบเปิดช่องเชื่อมต่อกลับไปยังผู้โจมตีหรือติดตั้งมัลแวร์เพิ่มเติม ตัวอย่างการโจมตีแบบ Code Injection ที่รู้จักกันดีคือ SQL Injection (ฉีดคำสั่ง SQL) และ OS Command Injection ซึ่งแม้ไม่ใช่การโจมตีระดับระบบปฏิบัติการโดยตรง แต่หากช่องโหว่นั้นเป็น Zero-Day (เช่นยังไม่เคยถูกค้นพบ) ก็ถือเป็น Zero-Day Exploit ในบริบทของแอปพลิเคชันนั้น ๆ ได้เช่นกัน
  • Return-Oriented Programming (ROP) – ROP เป็นเทคนิคการโจมตีหน่วยความจำขั้นสูงที่คิดค้นขึ้นเพื่อหลบเลี่ยงมาตรการป้องกันอย่าง DEP/NX (Data Execution Prevention) ที่ป้องกันไม่ให้รันโค้ดบนหน่วยความจำบางส่วน ROP ช่วยให้ผู้โจมตีสามารถรันโค้ดที่ต้องการได้ แม้ในสภาพแวดล้อมที่เปิดใช้การป้องกันดังกล่าว​ วิธีการคือผู้โจมตีจะอาศัยช่องโหว่ (มักเป็นบัฟเฟอร์ล้นบนสแตก) เพื่อควบคุม call stack หรือตัวชี้กลับของโปรแกรม จากนั้นเปลี่ยนทิศทางการทำงานของโปรแกรมให้ไปทำงานตามชุดคำสั่งสั้น ๆ ที่มีอยู่แล้วในหน่วยความจำของโปรแกรมหรือไลบรารี (เรียกว่า “gadgets”) ซึ่งชุดคำสั่งเหล่านี้ลงท้ายด้วยคำสั่ง return ทำให้สามารถเชื่อมต่อกันเป็นลำดับการทำงานต่อเนื่อง เมื่อเชื่อม gadget หลาย ๆ อันต่อกัน ผู้โจมตีจะสร้างชุดคำสั่งที่ทำงานตามต้องการได้ แม้จะไม่สามารถฝังโค้ดใหม่ลงไปตรง ๆ กล่าวได้ว่า ROP ทำให้ผู้โจมตี “ต่อจิ๊กซอว์” คำสั่งที่มีอยู่แล้วให้กลายเป็นเพย์โหลดอันตราย ซึ่งมีประสิทธิภาพในการข้ามผ่านการป้องกันหน่วยความจำอย่าง DEP หรือการเซ็นรับรองโค้ด​
  • Heap Spraying – เป็นเทคนิคสนับสนุนการโจมตี (spraying คือการ “พ่น”) ซึ่งมักใช้ร่วมกับช่องโหว่หน่วยความจำ โดยผู้โจมตีจะพยายามจองหน่วยความจำกอง (heap) จำนวนมากและเติมค่าไบต์ตามต้องการลงไป เพื่อเพิ่มโอกาสให้ข้อมูลเพย์โหลด (เช่น shellcode) ถูกวางอยู่ในตำแหน่งที่คาดเดาได้ในหน่วยความจำของกระบวนการที่ถูกโจมตี​ Heap Spraying ไม่ได้ทำให้เกิดช่องโหว่ขึ้นเอง แต่ช่วยจัดสภาพหน่วยความจำให้เอื้อต่อการใช้ประโยชน์จากช่องโหว่อื่นได้ง่ายขึ้น กล่าวคือในระบบที่มีการป้องกันแบบสุ่มที่อยู่หน่วยความจำ (ASLR) หรือมีความไม่แน่นอนสูง ผู้โจมตีจะใช้การพ่น heap เพื่อสร้าง NOP sled ขนาดใหญ่ (ชุดของคำสั่ง NOP หรือชุดไบต์ที่ทำให้โปรแกรมข้ามไปจนเจอโค้ดจริง) ทำให้การคาดเดาตำแหน่งของโค้ดที่ฉีดลงไปง่ายขึ้นและลดโอกาสที่โปรแกรมจะล่มก่อนโจมตีสำเร็จ​ เทคนิคนี้เคยถูกใช้บ่อยในการโจมตีเว็บเบราว์เซอร์ช่วงปี 2005–2010 โดยเฉพาะในการโจมตี Internet Explorer หลายชุด ซึ่งทำให้แฮ็กเกอร์รุ่นใหม่สามารถสร้างเอ็กซ์พลอยต์ที่ได้ผลโดยดัดแปลงจากโค้ดพ่น heap เดิมเพียงเล็กน้อย​

นอกเหนือจากข้างต้น ยังมีเทคนิคอื่น ๆ ที่ผู้โจมตี Zero-Day ใช้ เช่น JIT Spraying (เจาะจงการพ่นหน่วยความจำใน JIT compiler), Control Flow Hijacking แบบอื่น ๆ (เช่นใช้ Return-less Programming หรือ Jump-Oriented Programming หากสภาพแวดล้อมจำกัด ROP) หรือการใช้ Social Engineering ประกอบ (ในกรณีต้องหลอกให้ผู้ใช้เปิดไฟล์หรือลิงก์ที่มีเพย์โหลด 0-day) เป็นต้น การโจมตีเป้าหมายที่มี Zero-Day อาจเป็นแบบ “zero-click” (ไม่ต้องอาศัยการคลิกของเหยื่อ เช่น ช่องโหว่ใน iMessage ที่ถูกกระตุ้นโดยข้อความที่ได้รับ) หรือ “one-click” (ต้องหลอกให้เหยื่อคลิก เช่น เปิดไฟล์เอกสารที่ฝังเอ็กซ์พลอยต์) ทั้งนี้ขึ้นอยู่กับธรรมชาติของช่องโหว่

หนึ่งในเหตุการณ์ Zero-Day ที่เป็นข่าวใหญ่ต้นปี 2021 คือการโจมตีเซิร์ฟเวอร์อีเมล Microsoft Exchange ผ่านชุดช่องโหว่ที่เรียกรวมกันว่า “ProxyLogon” ผู้โจมตี (เชื่อว่าเป็นกลุ่มแฮกเกอร์จีนชื่อ Hafnium) ใช้ช่องโหว่ที่ยังไม่มีแพตช์ใน Exchange Server เพื่อเจาะระบบขององค์กรทั่วโลกหลายหมื่นแห่ง

รายละเอียดช่องโหว่และการโจมตี: ProxyLogon ประกอบด้วยช่องโหว่หลัก 2 รายการ ได้แก่ CVE-2021-26855 (ช่องโหว่ Server-Side Request Forgery – SSRF) ที่ช่วยให้ผู้โจมตีจากระยะไกลสามารถส่งคำขอเข้าสู่ระบบ Exchange โดยปลอมตัวเป็นผู้ดูแลระบบ (bypass authentication) ได้ และช่องโหว่ CVE-2021-27065 ซึ่งเป็นช่องโหว่ post-auth ที่อนุญาตให้เขียนไฟล์ลงเซิร์ฟเวอร์แบบตามใจชอบ​

เมื่อนำสองช่องโหว่นี้มาใช้ร่วมกัน ผู้โจมตีซึ่งยังไม่ยืนยันตัวตนเลยก็สามารถรันคำสั่งใด ๆ บนเซิร์ฟเวอร์ Exchange ได้ผ่านพอร์ต 443 ที่เปิดไว้ (SSL HTTPS)​

ผลลัพธ์คือการเข้าควบคุมเซิร์ฟเวอร์อีเมล เป้าหมายการโจมตีมักเป็นการติดตั้งเว็บเชลล์ (Web Shell) เพื่อขโมยอีเมลหรือกระจายตัวโจมตีในเครือข่ายต่อไป

ผลกระทบ: ช่องโหว่ ProxyLogon นี้ถูกใช้โจมตีแบบกว้างขวางก่อนที่ Microsoft จะออกแพตช์แก้ไขในเดือนมีนาคม 2021 รายงานจากบริษัทความปลอดภัย ESET ระบุว่าในช่วงมีนาคม 2021 (ช่วงที่ช่องโหว่นี้ยังเป็น 0-day) มีอย่างน้อย 10 กลุ่มแฮ็กเกอร์ ที่ต่างก็ใช้ ProxyLogon ในการโจมตีระบบองค์กรทั่วโลกพร้อม ๆ กัน​

แม้ภายหลัง Microsoft จะรีบปล่อยแพตช์ฉุกเฉิน (out-of-band) มาอุดช่องโหว่ แต่หนึ่งสัปดาห์ถัดมายังพบว่ามีเซิร์ฟเวอร์ Exchange กว่า 46,000 เครื่อง ที่ไม่ได้ติดตั้งแพตช์ จึงยังคงเสี่ยงต่อการถูกเจาะด้วย ProxyLogon​ แสดงให้เห็นถึงความร้ายแรงและแพร่หลายของช่องโหว่นี้

การตอบสนอง: Microsoft ได้ออกชุดอัปเดตแก้ไขด่วนเมื่อวันที่ 2 มีนาคม 2021 พร้อมทั้งแจ้งเตือนให้ผู้ดูแลระบบรีบอัปเดตโดยทันที นอกจากนี้ยังเผยแพร่สคริปต์และเครื่องมือสำหรับตรวจสอบการติดตั้งเว็บเชลล์หรือร่องรอยการบุกรุกบน Exchange (เช่น Microsoft Safety Scanner และสคริปต์ตรวจหา ProxyLogon)​​ เหตุการณ์ ProxyLogon ถือเป็นการปลุกวงการด้านความปลอดภัยว่าเซิร์ฟเวอร์ภายในองค์กรก็อาจตกเป็นเป้า Zero-Day ของกลุ่ม APT ได้ และนำไปสู่การยกระดับมาตรการป้องกัน Exchange รวมถึงการเฝ้าระวังช่องโหว่อื่น ๆ ที่คล้ายกัน (ถัดมาในปีเดียวกันก็มีการค้นพบช่องโหว่ “ProxyShell” และ “ProxyOracle” ใน Exchange เช่นกัน ซึ่งแม้จะไม่ใช่ 0-day แต่ก็อันตรายสูง)

กรณี Apple iOS “FORCEDENTRY” – ช่องโหว่ iMessage Zero-Click (ปี 2021)

อีกตัวอย่างของ Zero-Day ที่โด่งดังในช่วงปี 2021 คือช่องโหว่แบบ Zero-Click บนระบบ Apple iOS ที่ถูกใช้โดยสปายแวร์ Pegasus ของบริษัท NSO Group ช่องโหว่นี้ถูกเรียกชื่อว่า FORCEDENTRY และได้รับรหัส CVE-2021-30860

รายละเอียดช่องโหว่และการโจมตี: FORCEDENTRY เป็นช่องโหว่ในระบบ Apple iMessage ซึ่งเกิดจากจุดบกพร่องในชุดไลบรารีการประมวลผลภาพของ Apple (Image Rendering Library) กล่าวคือ การประมวลผลไฟล์ภาพที่ถูกสร้างขึ้นอย่างมุ่งร้ายสามารถทำให้เกิดการรันโค้ดได้โดยไม่ต้องมีปฏิสัมพันธ์จากผู้ใช้ (zero-click exploit)​ กลุ่มนักวิจัย Citizen Lab ได้ตรวจพบช่องโหว่นี้ขณะวิเคราะห์โทรศัพท์ของนักเคลื่อนไหวซาอุดิอาระเบียรายหนึ่งในต้นปี 2021 และพบว่ามือถือของเขาถูกติดตั้งสปายแวร์ Pegasus ผ่านช่องโหว่ iMessage ดังกล่าว โดยไม่มีการคลิกลิงก์หรือเปิดไฟล์ใด ๆ จากฝั่งเหยื่อเลย​​ เทคนิคที่ผู้โจมตีใช้คือส่งไฟล์แนบรูปภาพ (ลักษณะเป็นไฟล์ GIF แต่แท้จริงฝังโค้ด PDF ชุดพิเศษ) ไปยังอุปกรณ์เป้าหมายผ่าน iMessage เมื่ออุปกรณ์ของเหยื่อได้รับข้อความ ข้อมูลภาพนั้นจะถูกประมวลผลโดยไลบรารี CoreGraphics ของ Apple และช่องโหว่ในไลบรารีนี้จะถูกกระตุ้น ส่งผลให้ผู้โจมตีสามารถรันโค้ดเพื่อเจลเบรกเครื่องและติดตั้ง Pegasus ได้ทันที

ผลกระทบ: ช่องโหว่ FORCEDENTRY มีอิทธิพลกว้างเพราะส่งผลต่ออุปกรณ์ Apple เกือบทุกประเภทที่ยังไม่ได้อัปเดตในช่วงเวลานั้น – ครอบคลุม iPhone ทุกรุ่นก่อน iOS 14.8, Mac ที่ระบบก่อน macOS Big Sur 11.6, และ Apple Watch ก่อน watchOS 7.6.2​ Citizen Lab เชื่อว่าช่องโหว่นี้ถูกใช้โจมตี “อย่างน้อยตั้งแต่เดือนกุมภาพันธ์ 2021” โดยกลุ่มลูกค้าของ NSO Group หลายราย เพื่อสอดแนมเป้าหมายระดับนักกิจกรรม นักข่าว และบุคคลที่น่าสนใจอื่น ๆ ทั่วโลก​​ ความร้ายแรงของมันทำให้ Google Project Zero ออกมาวิเคราะห์เจาะลึกและยกให้ FORCEDENTRY เป็นหนึ่งในเอ็กซ์พลอยต์ที่ซับซ้อนและรุนแรงมาก (“เป็นอาวุธไซเบอร์ที่แทบไม่มีทางป้องกันได้” ตามที่นักวิจัยของ Google กล่าวไว้)

การตอบสนอง: Apple ได้ออกอัปเดตฉุกเฉิน iOS 14.8, macOS 11.6 และชุดอัปเดตสำหรับ watchOS และ Safari ในวันที่ 13 กันยายน 2021 เพื่อแก้ไขช่องโหว่นี้ทันที​

พร้อมทั้งแนะนำให้ผู้ใช้ทุกคนทำการอัปเดตอุปกรณ์โดยด่วน นอกจากนี้ Apple ยังเริ่มพัฒนาฟีเจอร์ด้านความปลอดภัยเพิ่มเติม เช่น BlastDoor sandbox สำหรับ iMessage เพื่อแยกการประมวลผลไฟล์แนบอันตรายไม่ให้กระทบระบบหลัก (แม้ BlastDoor เดิมมีอยู่แล้ว แต่กรณี Pegasus แสดงให้เห็นว่าผู้โจมตีหาวิธีหลบหลีกได้ จึงต้องปรับปรุงเพิ่มเติม) และในปี 2022 Apple ได้ประกาศฟีเจอร์ Lockdown Mode เพื่อให้ผู้ใช้ที่มีความเสี่ยงสูงสามารถเปิดโหมดรักษาความปลอดภัยเข้มงวด ลดฟังก์ชันบางอย่าง (เช่น ปิดการรับไฟล์แนบ iMessage จากคนที่ไม่ได้ติดต่อมาก่อน) เพื่อป้องกัน Zero-Day ในลักษณะคล้ายกัน

กรณี Spyware บน Android – ห่วงโซ่ช่องโหว่ 0-day ของ “Predator” (ปี 2021)

ระบบปฏิบัติการ Android และเบราว์เซอร์ Chrome ก็มีกรณี 0-day โดดเด่นในช่วงไม่กี่ปีที่ผ่านมา หนึ่งในนั้นคือการค้นพบโดยทีม Google Threat Analysis Group (TAG) เกี่ยวกับสปายแวร์เชิงพาณิชย์ชื่อ “Predator” (พัฒนาโดยบริษัท Cytrox) ที่ถูกขายให้รัฐบาลบางประเทศและใช้โจมตีเป้าหมายผ่านสมาร์ทโฟน Android โดยพึ่งพาช่องโหว่ 0-day หลายรายการร่วมกัน

รายละเอียดช่องโหว่และการโจมตี: รายงานของ Google TAG ระบุว่าในปี 2021 สปายแวร์ Predator ถูกใช้ในแคมเปญการโจมตี 3 รูปแบบ โดยมีการใช้ช่องโหว่ซีโร่เดย์ทั้งหมด 5 รายการ อย่างต่อเนื่อง ซึ่งได้แก่ช่องโหว่ใน Google Chrome จำนวน 4 รายการ (CVE-2021-37973, CVE-2021-37976, CVE-2021-38000 และ CVE-2021-38003) และช่องโหว่ในเคอร์เนล Android 1 รายการ (CVE-2021-1048)​ ช่องโหว่เหล่านี้ถูกแพ็กเป็นชุดเอ็กซ์พลอยต์โค้ดโดยบริษัท Cytrox และขายให้กับกลุ่มลูกค้าที่เป็นรัฐ ในประเทศต่าง ๆ เช่น อียิปต์ กรีซ สเปน อินโดนีเซีย เป็นต้น เพื่อนำไปใช้สอดแนมเป้าหมายภายในประเทศเหล่านั้น​ ลำดับการโจมตีที่พบคือ ผู้โจมตีส่งลิงก์เฉพาะทาง (one-time link) ไปให้เหยื่อทางอีเมลหรือข้อความลับ เมื่อเหยื่อคลิกลิงก์ (แคมเปญนี้เป็น one-click) ระบบจะนำเหยื่อไปยังโดเมนของผู้โจมตีซึ่งใช้ช่องโหว่ใน Chrome ทันทีเพื่อรันโค้ดหลบหนีออกจากเบราว์เซอร์ (Chrome sandbox escape) จากนั้นใช้ช่องโหว่ใน Android Kernel (CVE-2021-1048) ซึ่งเป็นบั๊ก Use-After-Free ในไดรเวอร์คอร์ของระบบ เพื่อยกระดับสิทธิขึ้นเป็น root ในเครื่องเหยื่อ ทำให้ติดตั้งตัวแพร่เชื้อ (implant) ลงในเครื่องได้อย่างถาวร​

ช่องโหว่ CVE-2021-38000 ใน Chrome ที่ถูกใช้เป็นหนึ่งในขั้นตอนโจมตีนี้ จัดเป็นช่องโหว่ด้านตรรกะ (logic flaw) ซึ่งช่วยให้สามารถเปิดแอปอื่นผ่าน Intent URL โดยที่ผู้ใช้ไม่ต้องยินยอม ส่งผลให้ Chrome บนเครื่อง Samsung Galaxy สามารถถูกบังคับให้เปิดหน้าเว็บใน Samsung Browser ได้ทันที (ถือเป็นการข้าม context การทำงาน)​

เมื่อผสานกับช่องโหว่อื่น ๆ ข้างต้น ผู้โจมตีจึงสามารถติดตั้งมัลแวร์ ALIEN/PREDATOR ลงในเครื่องเป้าหมาย ซึ่งทำงานอยู่ใน process ที่มีสิทธิ์สูง สามารถดักฟังเสียง บันทึกข้อมูล หรือซ่อนตัวเป็นเวลานาน

ผลกระทบ: กรณีของ Predator ชี้ให้เห็นว่าปัจจุบันมีบริษัทเอกชนจำนวนมาก (Google TAG ระบุว่ากว่า 30 แห่ง) ที่พัฒนาและขายช่องโหว่ซีโร่เดย์หรือสปายแวร์ให้กับรัฐบาลทั่วโลก​

การมีห่วงโซ่ช่องโหว่ยาวถึง 5 รายการเพื่อเจาะอุปกรณ์สมัยใหม่อย่าง Android แสดงถึงระดับความซับซ้อนของภัยคุกคามสมัยใหม่ ซึ่งแต่เดิมเชื่อว่ามีเพียงหน่วยข่าวกรองของประเทศมหาอำนาจเท่านั้นที่ทำได้ แต่ปัจจุบันบริษัทเอกชนก็เสนอขายเทคโนโลยีนี้เป็นการค้า ในปี 2021 ถือเป็นปีที่มีสถิติโจมตีด้วย 0-day สูงที่สุดเป็นประวัติการณ์ โดย Google Project Zero รายงานว่าพบช่องโหว่ 0-day ที่ถูกใช้จริง (in the wild) ถึง 58 รายการ เพิ่มขึ้นเกือบเท่าตัวจากปีก่อนหน้า​

ซึ่งส่วนหนึ่งเป็นผลจากการที่ผู้ผลิตซอฟต์แวร์รายใหญ่เริ่มระบุสถานะ “กำลังถูกโจมตี” ของช่องโหว่ในรายงานแพตช์ ทำให้มีข้อมูลต่อสาธารณะมากขึ้นว่าช่องโหว่ใดเป็น 0-day

การตอบสนอง: Google ได้ทำงานร่วมกับผู้ผลิต (เช่น Samsung ในกรณี Chrome/Android) เพื่ออุดช่องโหว่เหล่านี้ในการอัปเดตความปลอดภัยปลายปี 2021 นอกจากนี้ Google ยังแจ้งเตือนไปยังผู้ใช้ที่ตกเป็นเป้าหมายที่สามารถระบุได้ รวมทั้งเสริมการล่าช่องโหว่ 0-day ภายในผ่านโครงการอย่าง Project Zero และการเพิ่มฟีเจอร์ด้านความปลอดภัย (เช่น เปิดใช้ Control Flow Integrity ใน Android 12 ขึ้นไปสำหรับโมดูลเคอร์เนล เพื่อลดโอกาสโจมตีด้วยเทคนิคหน่วยความจำ)

สวัสดี

Nontawatt.S