กลุ่ม Turla ใช้ MSBuild เพื่อทำให้ Tiny BackDoor สามารถหลีกเลี่ยงการตรวจจับ

CRIL พบการโจมตีโดยใช้ไฟล์ .LNK ที่เป็นอันตราย ซึ่งแฝงตัวเป็นไฟล์เอกสาร PDF ที่เมื่อผู้ใช้งานเปิดไฟล์ .LNK มันจะแสดงคำเชิญเข้าร่วมสัมมนาเกี่ยวกับสิทธิมนุษยชน ซึ่งแสดงให้เห็นว่าผู้โจมตีมุ่งเป้าหมายไปที่บุคคลที่มีความสนใจในประเด็นสิทธิมนุษยชน

นอกจากนี้ยังพบไฟล์ในลักษณะคล้ายกัน ซึ่งถูกใช้ในการโจมตีจากแคมเปญนี้ โดยไฟล์ดังกล่าวจะแสดงคำแนะนำซึ่งเป็นเอกสารปลอมที่แอบอ้างมาจากสำนักงานสถิติแห่งชาติของประเทศฟิลิปปินส์ โดยนักวิจัยด้านความปลอดภัยเป็นผู้ค้นพบ และแชร์ข้อมูลนี้บน Twitter

เมื่อเหยื่อเข้าใจผิดว่าเป็นคำเชิญ หรือประกาศจากสำนักงานสถิติแห่งชาติ และเปิดใช้งานไฟล์ หลังจากที่เปิดใช้งาน ไฟล์ดังกล่าวจะดำเนินการติดตั้ง Tiny Backdoor เข้าสู่ระบบโดยผู้ใช้ไม่รู้ตัว โดย back door นี้มีฟังก์ชันในการควบคุมจากระยะไกล ทำให้สามารถรับคำสั่งจาก C2 Server และดำเนินการตามคำสั่งของผู้โจมตีได้

Infection chain

ลำดับของการโจมตีเริ่มต้นด้วยไฟล์ .LNK ที่เป็นอันตรายซึ่งอยู่ภายในไฟล์ ZIP และถูกส่งให้กับผู้ใช้ผ่านทางอีเมลฟิชชิ่ง ซึ่งเมื่อผู้ใช้เรียกใช้งานไฟล์ .LNK จะทริกเกอร์การดำเนินการของสคริปต์ PowerShell ที่ซ่อนอยู่ภายใน สคริปต์ PowerShell จะถูกออกแบบให้ดำเนินการตามลำดับ รวมถึงการอ่านเนื้อหาของไฟล์ .LNK และเขียนลงในไฟล์ 3 ไฟล์ที่แตกต่างกันในตำแหน่ง %temp% ซึ่งประกอบไปด้วยไฟล์ PDF ปลอม, ข้อมูลที่ถูกเข้ารหัส และโปรเจกต์ MSBuild ที่ถูกสร้างขึ้นมาโดยเฉพาะ

นอกจากนี้สคริปต์ PowerShell จะรันโปรเจกต์ MSBuild โดยใช้ "MSBuild.exe" และเปิดเอกสารปลอม โปรเจกต์ MSBuild จะประกอบไปด้วยโค้ดเพื่อถอดรหัสข้อมูลที่ถูกเข้ารหัส ซึ่งจะถูกบันทึกในตำแหน่ง %temp% พร้อมด้วยนามสกุล .log ต่อมาไฟล์ .log นี้ ซึ่งเป็นไฟล์ในโปรเจกต์ MSBuild เช่นกัน จะถูกตั้งเวลาเพื่อทำงานโดยใช้ "MSBuild.exe" ผ่าน Task Scheduler เพื่อดำเนินการติดตั้ง backdoor

Technical Analysis

เมื่อไฟล์ "Official_Invitation_Final_202406.lnk" ปลอมถูกรัน คำสั่ง PowerShell จะถูกเรียกใช้ คำสั่งนี้จะแยกข้อมูลที่ฝังตัวอยู่ภายในไฟล์ LNK โดยการอ่าน offsets ที่ระบุไว้ล่วงหน้า และสร้างไฟล์ 3 ไฟล์ที่แตกต่างกันในตำแหน่ง %temp% ดังนี้

Official_Invitation_Final_202406.pdf
PK81yqIm8o
NqPCpRtWzcn
ไฟล์ที่ชื่อ "Official_Invitation_Final_202406.pdf" ทำหน้าที่เป็นเอกสารปลอม ในขณะที่ "PK81yqIm8o" มีเนื้อหาที่ถูกเข้ารหัส และ "NqPCpRtWzcn" ถูกระบุเป็นโปรเจกต์ MSBuild ภาพด้านล่างแสดงสคริปต์ PowerShell ที่ฝังอยู่ในไฟล์ .LNK


หลังจากที่สร้างทั้ง 3 ไฟล์ในตำแหน่ง %temp% เสร็จแล้ว สคริปต์ PowerShell จะเปิดเอกสารปลอม ซึ่งเป็นจดหมายเชิญสำหรับสัมมนาเรื่อง "สิทธิมนุษยชน: มุมมองระดับโลก" ซึ่งจัดขึ้นโดยองค์กรเอกชนเพื่อสาธารณประโยชน์ (NGO) ภาพด้านล่างแสดงเอกสาร PDF ปลอม

 

ขณะเปิดไฟล์ PDF ปลอม สคริปต์ PowerShell จะทำการรันโปรเจกต์ MSBuild ชื่อ "NqPCpRtWzcn" แบบเงียบ ๆ โดยใช้ “MSBuild.exe”

MSBuild เป็นเครื่องมือสำหรับการพัฒนาแอปพลิเคชัน มีความสำคัญใน environments ที่ไม่ได้ติดตั้ง Visual Studio มันทำงานโดยใช้ไฟล์โปรเจกต์ XML ที่บรรจุข้อมูลการคอมไพล์ของโปรเจกต์ ภายในไฟล์ตัวกำหนดค่าอิลิเมนต์ "UsingTask" จะกำหนด tasks ที่ MSBuild จะคอมไพล์

นอกจากนี้ MSBuild ยังมีความสามารถในการทำ inline task ที่อนุญาตให้ระบุ และคอมไพล์โค้ดโดยใช้ MSBuild ได้ โค้ดนี้สามารถรันในหน่วยความจำระหว่างการสร้างโปรเจกต์ ความสามารถในการรันโค้ดในหน่วยความจำนี้ช่วยให้ผู้โจมตีสามารถใช้ MSBuild ในการโจมตีแบบ fileless ได้ ภาพด้านล่างแสดงไฟล์โปรเจกต์ MSBuild

 


ไฟล์โปรเจกต์ที่เป็นอันตราย จะระบุคลาสใหม่ที่ชื่อ "ClassExample" เป็น inline task ที่ได้รับการตั้งโปรแกรมให้ดำเนินการโดยอัตโนมัติเมื่อสร้างโปรเจกต์ รูปภาพด้านล่างแสดงเนื้อหาของ inline task ที่ถูกตั้งโปรแกรมไว้

inline task ประกอบด้วยฟังก์ชันต่าง ๆ ดังนี้

  1. ดึงข้อมูลที่ถูกเข้ารหัสจากไฟล์ "PK81yqIm8o" โดยใช้ Method File.ReadAllText()
  2. ใช้อัลกอริธึม rijndael เพื่อถอดรหัสข้อมูลที่ถูกดึงมาได้
  3. ข้อมูลที่ถูกถอดรหัสแล้ว จะถูกเขียนลงในไฟล์ใหม่ชื่อ "nJUFcFfUF.log" ภาพด้านล่างแสดงข้อมูลที่ถูกถอดรหัสแล้ว ซึ่งเป็นไฟล์โปรเจกต์ MSBuild อีกหนึ่งไฟล์ที่ใช้ในการรัน inline task ที่เป็นอันตราย
  4. สร้าง scheduled task เพื่อรันไฟล์บันทึกที่สร้างขึ้นใหม่โดยใช้ "MSBuild.exe" ในเบื้องหลังทุก ๆ 20 นาที

Final Payload – Tiny Backdoor

เมื่อ scheduled task ถูกเรียกใช้ จะดำเนินการรันไฟล์โปรเจกต์ MSBuild ที่ถูกถอดรหัส "nJUFcFfUF.log" โดยใช้ MSBuild.exe ซึ่งจะรัน inline task ที่อยู่ภายในไฟล์โปรเจกต์โดยตรงในหน่วยความจำ เมื่อโปรเจกต์ถูกสร้างขึ้น

ฟังก์ชันหลักของ inline task นี้เริ่มต้นด้วยฟังก์ชัน "Execute" ภาพด้านล่างแสดงเนื้อหาของ Method "Execute"

ฟังก์ชัน Execute() มีฟังก์ชันการทำงานคือการสร้างเธรดสองเธรด

เธรดแรกจะตรวจสอบ process ที่กำลังทำงานบนเครื่องของเหยื่ออย่างต่อเนื่องเพื่อหา process หลักที่ชื่อ "MSBuild.exe" และซ่อน process นั้นหากพบ เป็นการพยายามปกปิดการโจมตีจากผู้ใช้ ภาพด้านล่างแสดงโค้ดเพื่อซ่อน MSBuild.exe จากเหยื่อ
ก่อนที่จะสร้างเธรดที่สอง ฟังก์ชัน Execute() จะสร้างตัวระบุ (ID) โดยรวมชื่อโดเมน, ชื่อผู้ใช้ และ ID ของ process ปัจจุบันที่เกิดขึ้นในเครื่องของเหยื่อ ซึ่ง ID นี้ถูกใช้เพื่อระบุเครื่องที่ติดมัลแวร์เพื่อส่งข้อมูล และติดต่อสื่อสารกับ C2 Server

หลังจากสร้าง ID เสร็จแล้ว ฟังก์ชัน Execute() จะเริ่มเธรดที่สองซึ่งมีหน้าที่ดึงข้อมูล และดำเนินคำสั่งจาก C2 Server

C2 Sever ที่ถูกระบุในแคมเปญนี้คือ "ies[.]inquirer[.]com[.]ph" ซึ่งเป็นเว็บไซต์ที่ถูกโจมตี ซึ่งเกี่ยวข้องกับหนังสือพิมพ์ "The Philippine Daily" ภาพด้านล่างแสดงไดเรกทอรีของเว็บไซต์ที่ถูกโจมตีที่ถูกทำให้เป็นพื้นที่จัดเก็บข้อมูลสำหรับผู้โจมตี เพื่อจัดเก็บเพย์โหลด และไฟล์อื่น ๆ
เมื่อใช้ ID ที่สร้างขึ้น เธรดจะเริ่มต้นส่ง HTTP request ไปยัง C2 Server โดยใช้ URL ที่ถูกฮาร์ดโค้ดไว้ภายใน
HTTP request ยังมีข้อมูลเพิ่มเติม เช่น ตัวระบุที่สร้างขึ้นก่อนหน้า และข้อมูลอื่น ๆ ภาพด้านล่างแสดงเธรดที่สร้าง HTTP POST request
เมื่อ HTTP request ถูกสร้างขึ้น เธรดจะส่งคำขอไปยัง C2 Server และตรวจสอบสถานะ หากเป็นสถานะไม่สำเร็จ เธรดจะสิ้นสุดการทำงาน แต่ถ้าเป็นสถานะที่สำเร็จ เธรดจะอ่านเนื้อหาของการตอบกลับที่อยู่ภายใน “[]” และดำเนินการตามคำสั่งที่ได้รับจากผู้โจมตี ภาพด้านล่างแสดงการดำเนินการต่าง ๆ ที่จะถูกดำเนินการตามการตอบสนองที่ได้รับจาก C2 Server

Backdoor จะจัดการการทำงานผ่านการใช้เธรดหลายตัว ซึ่งแต่ละเธรดได้รับการออกแบบมาเพื่อดำเนินการโดยเฉพาะ ดังนี้

  • shell: การดำเนินการนี้ช่วยให้ backdoor สามารถรันคำสั่งบนเครื่องของเหยื่อได้ โดยการสร้าง process ใหม่เพื่อรันคำสั่งที่กำหนดภายใน process

  • sleep: การดำเนินการ “sleep” ช่วยให้ผู้โจมตีสามารถปรับช่วงเวลาหยุดการทำงานของ backdoor ได้แบบไดนามิก หลังจากตั้งเวลาหยุดการทำงานใหม่แล้ว จะมีการส่งข้อความยืนยันกลับไปยัง C2 Server เพื่อแจ้งให้ผู้โจมตีทราบถึงการเปลี่ยนแปลงนี้
  • upload: การดำเนินการนี้ช่วยให้ backdoor สามารถดาวน์โหลดไฟล์จาก C2 Server และบันทึกไฟล์นั้นในเครื่องของเหยื่อได้ รวมถึงการส่ง HTTP request ไปยัง C2 Server โดยใช้ชื่อไฟล์, ตรวจสอบการตอบสนอง, การคลายการบีบอัด (Decompressing) และเขียนไฟล์ แล้วส่งการยืนยันกลับไปยังเซิร์ฟเวอร์

  • download: การดำเนินการนี้ช่วยให้ backdoor สามารถดึงข้อมูลไฟล์จากเครื่องของเหยื่อไปยัง C2 Server รวมถึงการอ่านไฟล์จากระบบ local, การเข้ารหัสไฟล์ Base64, การส่งไฟล์ไปยัง C2 Server และส่งการยืนยันกลับไปยังเซิร์ฟเวอร์

  • cd: Backdoor จะเปลี่ยนไดเรกทอรีปัจจุบันไปยังตำแหน่งที่ผู้โจมตีกำหนด หลังจากนั้นจะส่งข้อความยืนยันการเปลี่ยนแปลงสำเร็จไปยัง C2 Server
  • pwd: Backdoor จะดึงข้อมูลไดเรกทอรีปัจจุบันของเหยื่อ และส่งไปยัง C2 Server
  • ps: Backdoor จะรันสคริปต์ PowerShell แบบ asynchronously, บันทึกเอาต์พุต และส่งกลับไปยัง C2 Server

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

Recommendations

  • จุดเริ่มต้นการโจมตีมาจากอีเมลสแปม ดังนั้นควรใช้ระบบคัดกรองอีเมลที่มีความเข้มงวด เพื่อตรวจจับ และป้องกันการแพร่กระจายของไฟล์แนบที่เป็นอันตราย
  • ควรระมัดระวังไฟล์แนบ หรือลิงก์จากผู้ส่งที่ไม่รู้จัก
  • จำกัดการใช้งาน MSBuild เฉพาะบุคคลที่ได้รับอนุญาต เพื่อลดความเสี่ยงจากการใช้งานโดยผู้ไม่ได้รับอนุญาต
  • พิจารณาปิดการใช้งาน หรือจำกัดการดำเนินการของภาษาสคริปต์ เช่น PowerShell บนเวิร์กสเตชัน และเซิร์ฟเวอร์ของผู้ใช้ หากไม่จำเป็นต่อการใช้งาน
  • ติดตั้งการตรวจสอบระดับเครือข่ายเพื่อตรวจจับกิจกรรมที่ไม่ปกติหรือการถ่ายโอนข้อมูลโดยมัลแวร์ block กิจกรรมที่น่าสงสัยเพื่อป้องกันการเข้าถึงที่อาจเกิดขึ้น

MITRE ATT&CK® Techniques
Indicators of Compromise (IOCs)Yara rule

ที่มา : cyble