พบมัลแวร์ Rootkit ตัวใหม่ ‘Pumakit’ ซ่อนตัวอยู่บนระบบ Linux

พบมัลแวร์ rootkit ตัวใหม่บนระบบ Linux ชื่อ 'Pumakit' ซึ่งใช้เทคนิคการซ่อนตัว และการยกระดับสิทธิ์ขั้นสูงเพื่อปกปิดการมีอยู่ในระบบ

มัลแวร์ดังกล่าวเป็นชุดซอฟต์แวร์หลายส่วน ประกอบไปด้วย Dropper, ไฟล์ปฏิบัติการที่ทำงานในหน่วยความจำ, kernel module rootkit และ shared object (SO) userland rootkit

Pumakit ถูกพบโดย Elastic Security ในไฟล์ไบนารีชื่อ 'cron' ที่ถูกอัปโหลดไว้บน VirusTotal เมื่อวันที่ 4 กันยายน 2024 โดยทางทีมงานได้ระบุว่า ยังไม่ทราบอย่างแน่ชัดว่าใครเป็นผู้ใช้งาน หรือเป้าหมายของมัลแวร์คืออะไร

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

The Pumakit

Pumakit ใช้การโจมตีแบบหลายขั้นตอน โดยเริ่มจาก dropper ที่ชื่อ 'cron' ซึ่งจะดำเนินการดาวน์โหลดเพย์โหลดที่ฝังอยู่ใน ('/memfd:tgt' และ '/memfd:wpn') ทั้งหมดจากหน่วยความจำ

เพย์โหลด '/memfd:wpn' ทำงานใน child process โดยจะดำเนินการตรวจสอบสภาพแวดล้อม และแก้ไข kernel image ก่อนที่จะติดตั้งโมดูล LKM rootkit ('puma.ko') ลงในเคอร์เนลของระบบ

สิ่งที่ฝังอยู่ภายใน LKM rootkit คือ Kitsune SO ('lib64/libs.so') ซึ่งทำหน้าที่เป็น userland rootkit โดยจะแทรกเข้าไปใน process ต่าง ๆ โดยใช้ 'LD_PRELOAD' เพื่อดักจับการเรียกใช้คำสั่งระบบในระดับผู้ใช้งาน (user level)

การยกระดับสิทธิ์อย่างลับ ๆ

Rootkit ทำงานตามเงื่อนไข โดยตรวจสอบลักษณะเคอร์เนล, สถานะ Secure Boot และเงื่อนไขอื่น ๆ ก่อนเริ่มการทำงาน

Elastic ระบุว่า Pumakit ใช้ฟังก์ชัน 'kallsyms_lookup_name()' เพื่อปรับเปลี่ยนการทำงานของระบบ ซึ่งแสดงให้เห็นว่า rootkit ถูกออกแบบมาเพื่อโจมตี Linux kernels เวอร์ชันก่อน 5.7 โดยเฉพาะ เนื่องจากเวอร์ชันที่ใหม่กว่าจะไม่มีฟังก์ชันดังกล่าวอีกต่อไป และไม่สามารถถูกใช้งานโดยโมดูล kernel อื่น ๆ ได้

นักวิจัยของ Elastic Remco Sprooten และ Ruben Groenewoud อธิบายว่า "ความสามารถของ LKM rootkit ในการปรับเปลี่ยนพฤติกรรมของระบบ เริ่มต้นจากการใช้ syscall table และการใช้ kallsyms_lookup_name() เพื่อแก้ไขสัญลักษณ์"

ต่างจาก rootkit เวอร์ชันใหม่ที่มุ่งเป้าไปที่เคอร์เนลเวอร์ชัน 5.7 ขึ้นไป rootkit นี้ไม่ได้ใช้ kprobes ซึ่งแสดงให้เห็นถึงการออกแบบมาสำหรับเคอร์เนลเวอร์ชันเก่าโดยเฉพาะ

Puma ดำเนินการ hook syscalls จำนวน 18 รายการ และฟังก์ชันเคอร์เนลหลายรายการ โดยใช้ 'ftrace' เพื่อยกระดับสิทธิ์, ดำเนินการคำสั่ง และซ่อนกระบวนการทำงานต่าง ๆ

ฟังก์ชันเคอร์เนล 'prepare_creds' และ 'commit_creds' ถูกนำมาใช้เพื่อแก้ไข process credentials โดยให้สิทธิ์ root กับ process ที่กำหนด

Rootkit สามารถซ่อนการมีอยู่ของตัวเองจาก kernel logs, เครื่องมือระบบ และโปรแกรมป้องกันมัลแวร์ รวมถึงสามารถซ่อนไฟล์ในไดเรกทอรี และ objects จาก process lists ได้

หาก hook ถูกขัดจังหวะ rootkit จะทำการตั้งค่าใหม่ทันที เพื่อให้แน่ใจว่าการเปลี่ยนแปลงที่เป็นอันตรายจะไม่ถูกเปลี่ยนกลับ และไม่สามารถยกเลิกการโหลดโมดูลได้

Userland rootkit 'Kitsune SO' สามารถทำงานร่วมกับ Puma ได้อย่างมีประสิทธิภาพ โดยช่วยเพิ่มกลไกการซ่อนตัว และการควบคุม รวมไปถึงการโต้ตอบกับผู้ใช้งาน

มันจะดักจับการเรียกใช้คำสั่งระบบในระดับผู้ใช้งาน (user-level) และปรับเปลี่ยนพฤติกรรมของคำสั่งต่าง ๆ เช่น ls, ps, netstat, top, htop, และ cat เพื่อซ่อนไฟล์, processes และการเชื่อมต่อเครือข่ายที่เกี่ยวข้องกับ rootkit

นอกจากนี้ยังสามารถซ่อนไฟล์ และไดเรกทอรีอื่น ๆ ได้ตามเงื่อนไขที่ผู้ไม่หวังดีกำหนด และทำให้ผู้ใช้งาน และผู้ดูแลระบบไม่สามารถตรวจสอบไฟล์ของมัลแวร์ทั้งหมดได้

Kitsune SO ยังจัดการการเชื่อมต่อทั้งหมดกับ C2 Server โดยการส่งคำสั่งไปยัง LKM rootkit และส่งข้อมูลการตั้งค่าระบบ และข้อมูลระบบกลับไปยังผู้ไม่หวังดี

นอกจาก hashes ไฟล์แล้ว Elastic Security ยังได้เผยแพร่ YARA rule เพื่อช่วยให้ผู้ดูแลระบบ Linux สามารถตรวจจับการโจมตีจาก Pumakit ได้

ที่มา : bleepingcomputer