พบมัลแวร์ใช้ PHP Variables ร่วมกับ Cookie หลบระบบตรวจจับ ฝังตัวลง WordPress
มัลแวร์ การถูกแฮก และ WordPress เรียกได้ว่าเป็นของคู่กันจนหลายคนชินชาพอ ๆ กับการเจอบั๊กบน Windows 11 ซึ่งในครั้งนี้ก็เป็นอีกครั้งที่ปัญหาที่คุ้นเคยได้กลับมาอีกครา
จากรายงานโดยเว็บไซต์ Cyber Security News ได้กล่าวถึงการตรวจพบแคมเปญการแพร่กระจายมัลแวร์ลงบนเว็บไซต์ที่ถูกสร้างขึ้นบน WordPress ด้วยการใช้ฟังก์ชันต่าง ๆ ของ PHP Variables (ตัวแปรในภาษา PHP) และการใช้ไฟล์ Cookies เพื่อทำการตีรวนระบบตรวจจับ (Obfuscation) จนสามารถหลบการถูกตรวจจับจากระบบรักษาความปลอดภัยได้ด้วยการกระจายโค้ดของมัลแวร์ไปตามไฟล์ Cookies ที่ถูกเขียนขึ้นบนภาษา HTTP หลาย ๆ ไฟล์ แล้วนำมาประกอบเป็นฟังก์ชันที่สามารถรันได้ (Executable Functions) บน Runtime ซึ่งเป็นการประกอบแบบพลวัต (Dynamic) ทำให้ระบบตรวจจับแบบคงที่ (Static Analysis) ไม่สามารถตรวจจับได้ เพราะมัลแวร์จะถูกซ่อนในไฟล์ Cookie จนกว่าจะถูกประกอบ และรันขึ้นมา
แหล่งข่าวได้ระบุว่า ตัวพาหะของมัลแวร์นั้นจะเล็งการโจมตีไปยังเว็บแอปพลิเคชัน (Web Application) ที่ถูกสร้างขึ้นมาด้วยภาษา PHP โดยเฉพาะอย่างยิ่งเว็บไซต์บน WordPress ด้วยการยิงคำสั่งเพื่อเปิดประตูหลังของระบบ (Backdoor) ผ่านการใช้ไฟล์ Cookie ที่ถูกสร้างขึ้นมาเพื่อการนี้โดยเฉพาะ โดยการโจมตีแบบนี้จะต่างกับการใช้ไฟล์มัลแวร์ (Payload) แบบดั้งเดิมที่ถูกสร้างขึ้นมาสำเร็จตั้งแต่แรก แต่ในครั้งนี้จะเป็นการกระจายตัวแปรฟังก์ชัน และค่าพารามิเตอร์ ของภาษา PHP กระจายไปตามไฟล์ Cookie ต่าง ๆ ที่จะนำมาประกอบเป็น Payload ในตอนหลังแทน โดยหลังจากที่ได้ทำการฝังมัลแวร์ (Deployed) ลงสู่เว็บไซต์แล้ว ตัวมัลแวร์จะก็รอคอยไฟล์ตั้งค่าที่อยู่บนไฟล์ Cookie อีกไฟล์หนึ่งก่อนที่จะทำการเปิดใช้งานมัลแวร์ ซึ่งมัลแวร์จะขอให้ทางแฮกเกอร์ส่ง Request ที่มีการบรรจุองค์กรประกอบ (Components) เป็นลำดับโดยแม่นยำ เพื่อให้เกิดการประกอบมัลแวร์ขึ้นเป็นมัลแวร์ที่สมบูรณ์ใช้งานได้เต็มร้อย
สำหรับคำอธิบายด้านเทคนิคในการทำงานเชิงลึกนั้น ทางทีมวิจัยจาก Wordfence บริษัทนักพัฒนาปลั๊กอินด้านความปลอดภัยสำหรับใช้งานบนเว็บไซต์ที่ถูกสร้างขึ้นบน WordPress ได้อธิบายว่าการทำงานของมัลแวร์นั้นจะเป็นการรันแบบหลายชั้น (Multi-Stage Execution) อย่างเป็นลูกโซ่ด้วยการใช้งานของฟังก์ชันตัวแปร (Variables) ของ PHP ที่จะทำการรันฟังก์ชันเมื่อค่าตัวแปรที่ฝังอยู่ในไฟล์ตรงกับค่าตัวแปรที่อยู่บนค่าสตริง
โดยทีมวิจัยได้ยกตัวอย่างเช่น สคริปท์มัลแวร์จะทำการทำ superglobal กับค่าสตริง $_COOKIE ให้เป็นตัวแปรแบบ Local และทำการยืนยันความถูกต้องว่ามีไฟล์ Cookie อยู่ 11 ไฟล์ในปัจจุบัน โดยมีไฟล์หนึ่งในนั้นที่มีค่าสตริง “Array11” บรรจุอยู่ หลังจากนั้นมัลแวร์ทำการรวบรวมค่าสตริงต่าง ๆ ที่อยู่ภายในไฟล์ Cookie เพื่อสร้างฟังก์ชันต่าง ๆ ขึ้นมาใหม่ เช่น ประกอบไฟล์ Cookie ที่มีค่าสตริง “base64_” และ “decode” อยู่ เพื่อสร้าง ฟังก์ชัน base64_decode ขึ้นมา
ทีมวิจัยยังได้ทำการเปิดเผยลูกโซ่การรัน (Execution Chain) ขึ้นมาอีกว่า ตัวรูปแบบลูกโซ่นั้นจะมีลักษณะดังนี้
$locale[79] = $locale[79] . $locale[94];
$locale[23] = $locale[79]($locale[23]);
ฟังก์ชัน base64_decode ที่ถูกประกอบขึ้นมาเสร็จเรียบร้อย ก็จะนำไปสู่การถอดรหัสไฟล์ Cookie ที่มีการบรรจุค่าเข้ารหัส “Y3JlYXRlX2Z1bmN0aW9u” เพื่อสร้างค่าสตริง “create_function” ขึ้นมา และมัลแวร์จะนำค่านี้ไปสร้างฟังก์ชัน “create_function” พร้อมค่าพารามิเตอร์ที่เปิดช่องให้แฮกเกอร์ที่ควบคุมมัลแวร์สามารถสร้างโค้ดที่สามารถรันได้ขึ้นมาโดยไม่ได้รับอนุญาตจากเจ้าของระบบ
นอกจากนั้น ทางทีมวิจัยยังพบอีกว่า ในบางรุ่นของมัลแวร์ตัวดังกล่าวยังมีวิธีการหลอกลวงระบบการตรวจจับ (Obfuscation) ด้วยการเปลี่ยนชื่อค่าสตริง เช่น เปลี่ยนค่า “basx649fxcofx” เป็น “base64_decode” ด้วยการเปลี่ยนตัวอักษรจาก ‘x’, ‘f’, และ ‘9’ เป็น ‘e’, ‘d’, และ ‘_’ เป็นต้น