สรุปสั้น

บริษัท Flashpoint เผยแพร่งานวิจัยเกี่ยวกับเทคนิคหลบเลี่ยงระบบ endpoint detection and response (EDR) ที่เพิ่งถูกค้นพบชื่อ process parameter poisoning ซึ่งอาศัยการซ่อนเพย์โหลดมุ่งร้ายไว้ในโครงสร้างเริ่มต้นของโปรเซส (process initialization structures) โดยตรง แทนที่จะเรียก Windows API ชุดที่เครื่องมือความปลอดภัยและผู้ก่อภัยมักใช้ตรวจจับหรือทำ process injection เช่น VirtualAllocEx(), WriteProcessMemory() และ MapViewOfFile2() เทคนิคนี้ถูกอธิบายครั้งแรกเมื่อเดือนกรกฎาคมโดยนักวิจัย นาย Max Hirschberger และ นาย Ogulcan Ugur ซึ่งทดสอบกับ EDR ชั้นนำสี่รายและพบว่า code injection สำเร็จทุกครั้งโดยไม่มีการแจ้งเตือน

สิ่งที่ทำให้งานของ Flashpoint น่ากังวลคือ เมื่อนำเทคนิคพื้นฐานมารวมกับ DLL unhooking และการใช้นโยบายบล็อก DLL ที่ไม่ใช่ของ Microsoft นักวิเคราะห์ไม่พบทั้งการบล็อกจากส่วน XDR และการแจ้งเตือนบนแพลตฟอร์มเลย แม้ Flashpoint จะยังไม่พบหลักฐานการนำเทคนิคนี้ไปใช้ในมัลแวร์จริง แต่ก็ระบุว่าไม่มีอะไรขวางผู้ก่อภัยไม่ให้นำไปใช้ และคาดว่าน่าจะจำกัดอยู่ในกลุ่ม red team เฉพาะทางหรือผู้ก่อภัยระดับสูง บริษัทแนะนำให้ผู้ป้องกันหันมาเฝ้าระวังสิ่งที่โปรเซสทำจริงมากกว่าการพึ่งพา API call ที่ผูกกับ process injection แบบเดิม

รายละเอียดข่าว

เว็บไซต์ Dark Reading รายงานเมื่อวันที่ 23 กันยายน 2569 ว่าบริษัท Flashpoint ได้ตีพิมพ์งานวิจัยที่พิสูจน์ว่าเทคนิค process parameter poisoning ตรวจจับได้ยากขึ้นอย่างมีนัยเมื่อนำมาผสมกับวิธีหลบเลี่ยงอื่น หลักการของเทคนิคนี้คือ ผู้โจมตีที่สามารถรันโค้ดบนเครื่อง Windows อยู่แล้วจะสร้าง “sacrificial process” ขึ้นมา แล้วฉวยใช้พารามิเตอร์เริ่มต้น (startup parameters) ที่ Windows ถ่ายโอนเข้าสู่โปรเซสใหม่โดยอัตโนมัติ เพื่อซ่อนเพย์โหลดไว้ ทั้งหมดนี้ทำได้โดยไม่ต้องใช้การจองและเขียนหน่วยความจำที่ผลิตภัณฑ์ EDR เฝ้าจับตาในการทำ process injection

นักวิจัยของ Flashpoint สร้างและทดสอบการติดตั้งเทคนิคนี้เองด้วยภาษา Rust เพื่อประเมินว่ามันหลบกลไกตรวจจับได้อย่างไร โดยเริ่มจากทดสอบเทคนิคพื้นฐานผ่าน proof-of-concept (POC) ภาษา Rust กับแพลตฟอร์ม EDR โอเพนซอร์สที่ใช้กันแพร่หลายซึ่งมีส่วนประกอบ extended detection and response (XDR) พบว่าตัว EDR ไม่สร้างการแจ้งเตือนใด ๆ จากการรัน binary แต่ส่วน XDR ยังบล็อกกิจกรรมของเพย์โหลดขั้นที่สองได้ อย่างไรก็ตามเมื่อทีมงานนำเทคนิคพื้นฐานมารวมกับ DLL unhooking ซึ่งช่วยคืนค่าฟังก์ชันไลบรารีของ Windows ที่ถูกซอฟต์แวร์ความปลอดภัยดัดแปลง ประกอบกับการใช้นโยบายบล็อก DLL ที่ไม่ใช่ของ Microsoft เพื่อกันไม่ให้ส่วนเฝ้าระวังของ EDR บางตัวโหลดได้ ผลคือไม่พบทั้งการบล็อกและการแจ้งเตือนใด ๆ อีกเลย นาย Paul Daubman นักวิเคราะห์อาวุโสของ Flashpoint ระบุกับ Dark Reading ว่ายังไม่พบหลักฐานการใช้เทคนิคนี้ในตัวอย่างมัลแวร์สาธารณะ แต่ “ก็ไม่มีอะไรขวางผู้ก่อภัยไม่ให้นำไปใช้จริง”

วิธีการโจมตี

จุดแข็งของ process parameter poisoning อยู่ที่การไม่แตะ API ชุดคลาสสิกที่ใช้ inject โค้ด ทำให้กลไกตรวจจับที่ผูกกับ VirtualAllocEx(), WriteProcessMemory() หรือ MapViewOfFile2() มองไม่เห็น เมื่อรวมเข้ากับ DLL unhooking ที่ลบ hook ของ EDR ในโหมดผู้ใช้ (user-mode) ออกจากฟังก์ชันไลบรารี และนโยบายบล็อก DLL ที่ไม่ใช่ของ Microsoft ที่กันส่วนเฝ้าระวังของบุคคลที่สามไม่ให้ทำงาน ก็ทำให้เกิด “stack” ของการหลบเลี่ยงที่ปิดตาเครื่องมือความปลอดภัยได้เกือบสมบูรณ์ Flashpoint ระบุแนวทางตรวจจับสี่ข้อสำหรับผู้ป้องกัน ได้แก่ ตรวจพารามิเตอร์ของโปรเซสว่ามีข้อมูลผิดปกติหรือไม่ เฝ้าระวังการ hijack การทำงานของ thread ตรวจจับโค้ดที่รันจากตำแหน่งหน่วยความจำที่ผิดปกติ และเฝ้าระวังการเปลี่ยนสิทธิ์หน่วยความจำให้กลายเป็น executable

ผลกระทบ

งานวิจัยนี้ตอกย้ำว่าแนวป้องกันที่พึ่งพาการเฝ้าดู API call เพียงชุดเดียวกำลังล้าสมัย เพราะผู้โจมตีสามารถบรรลุ process injection ได้โดยไม่แตะ API เหล่านั้นเลย การที่ POC ถูกเขียนด้วย Rust ยังสะท้อนแนวโน้มที่ผู้ก่อภัยหันไปใช้ภาษาที่คอมไพล์แล้วตรวจจับยากขึ้น ทีม SOC และผู้ดูแล endpoint ที่วางใจว่าเปิด EDR แล้วปลอดภัยจึงมีความเสี่ยงที่จะมองข้ามการบุกรุก โดยเฉพาะเมื่อเผชิญกับ red team หรือผู้ก่อภัยระดับสูงที่นำเทคนิคผสมนี้มาใช้ อย่างไรก็ตาม Flashpoint ประเมินว่าเทคนิคนี้จะยังไม่ถูกใช้แพร่หลายนอกวงกลุ่มเฉพาะทาง เช่นเดียวกับ process parameter spoofing ที่เป็นที่รู้จักดีแต่ก็ยังพบในตัวอย่างมัลแวร์ไม่บ่อยนัก

คำแนะนำ

ผู้ดูแลระบบและทีม SOC ควรปรับกลยุทธ์การตรวจจับจากการเฝ้าดู API call มาเป็นการเฝ้าระวังพฤติกรรมที่โปรเซสทำจริง ตามที่ Flashpoint แนะนำสี่ข้อ คือ ตรวจพารามิเตอร์ของโปรเซสหาข้อมูลผิดปกติ เฝ้าระวังการ hijack thread ตรวจจับโค้ดที่รันจากตำแหน่งหน่วยความจำที่ไม่ควรเป็น executable และจับการเปลี่ยนสิทธิ์หน่วยความจำเป็น executable ควรเปิดใช้และตรวจสอบว่าฟีเจอร์ป้องกัน DLL unhooking และ tamper protection ของ EDR ทำงานอยู่จริง ประเมินว่านโยบายบล็อก DLL ของบุคคลที่สามส่งผลต่อการทำงานของ agent ความปลอดภัยหรือไม่ และเสริมชั้น detection ที่ทำงานในเคอร์เนล (kernel-mode) หรือระดับ XDR เพื่อไม่ให้การหลบเลี่ยงในโหมดผู้ใช้เพียงอย่างเดียวปิดตาการมองเห็นได้ทั้งหมด

แหล่งอ้างอิง