ผู้เขียน:ดิษิต ปัญชาล และไวภาว ครุชนา บิลเลด
สารบัญ:
- บทนำ:
- เป้าหมายหลัก:
- ห่วงโซ่การติดเชื้อ:
- ผลการค้นพบเบื้องต้นเกี่ยวกับแคมเปญ:
- การวิเคราะห์ของ Decoy:
- วิเคราะห์ทางเทคนิค:
- ขั้นตอนที่ 1: การวิเคราะห์ไฟล์ LNK
- ขั้นตอนที่ 2: การวิเคราะห์ข้อมูล HTA/JavaScript
- ขั้นตอนที่ 3: การวิเคราะห์ไฟล์ DLL ของตัวโหลดขั้นตอนที่ 1
- ขั้นตอนที่ 4: การวิเคราะห์ DLL ของตัวโหลดขั้นตอนที่ 2 และเชลล์โค้ด
- ขั้นตอนที่ 5: การวิเคราะห์ XenoRAT
- หลักฐานทางโครงสร้างพื้นฐานและการระบุตัวผู้ก่อภัยคุกคาม
- สรุป: ปฏิบัติการ XENOFISCAL?
- Seqrite ครอบคลุม:
- IOCs:
- MITRE ATT&CK:
บทนำ:
Seqrite ห้องปฏิบัติการได้ติดตามตรวจสอบแคมเปญฟิชชิงแบบเจาะจงเป้าหมายทั่วโลกอย่างต่อเนื่อง และมีประวัติการติดตามกลุ่มแฮกเกอร์ SideCopy APT มาอย่างยาวนาน ซึ่งเป็นกลุ่มภัยคุกคามที่เชื่อมโยงกับปากีสถานและปฏิบัติการภายใต้กลุ่ม Transparent Tribe / APT36 ที่กว้างกว่า จากการติดตามตรวจสอบอย่างต่อเนื่อง เราได้ระบุแคมเปญที่มุ่งเป้าไปที่กระทรวงการคลังของอัฟกานิสถาน โดยมีเทคนิคและวิธีการโจมตีที่ซ้ำซ้อนกับ SideCopy ในระดับความน่าเชื่อถือปานกลางถึงสูง
แคมเปญนี้เริ่มต้นด้วยการส่งสเปียร์ฟิชชิ่ง ซึ่งเป็นไฟล์ ZIP ที่บรรจุไฟล์ LNK ที่เป็นอันตราย โดยมีชื่อไฟล์เป็นภาษาปัชตูที่ถูกสร้างขึ้นอย่างพิถีพิถัน:
د_هو_کارکوونکو_لېست_چې_د_فکري_او_رواني_جګړې_سیمینار_ته_ورپېژندل_شوي_وووو12.pdf.lnk (“รายชื่อพนักงานที่ได้รับการแนะนำให้รู้จักกับสัมมนาสงครามทางปัญญาและจิตวิทยา”)
การเลือกใช้ภาษาปัชโตนั้นเป็นไปโดยเจตนา เนื่องจากเป็นภาษาหลักที่ใช้ในสถาบันราชการของอัฟกานิสถาน และเป็นภาษาหลักของกลุ่มเป้าหมายที่ตั้งใจไว้ นั่นคือเจ้าหน้าที่การเงินระดับจังหวัดที่ปฏิบัติงานใน 34 เขตปกครองของอัฟกานิสถาน การใช้การสัมมนาเรื่องสงครามจิตวิทยาและปัญญาเป็นเหยื่อล่อ แสดงให้เห็นถึงความรู้ความเข้าใจอย่างแม่นยำเกี่ยวกับบริบทการปฏิบัติงานและการบริหารของกลุ่มเป้าหมาย
สิ่งที่ตามมาในรายงานฉบับนี้คือการวิเคราะห์ทางเทคนิคอย่างละเอียดถี่ถ้วนของแคมเปญนี้ ตั้งแต่ห่วงโซ่การดำเนินการของ LNK ไปจนถึงการส่งสัญญาณของอิมแพลนต์ XenoRAT ไปยังโครงสร้างพื้นฐานที่ป้องกันได้อย่างแน่นหนาของยุโรป รวมถึงการวิเคราะห์การเปลี่ยนแปลงโครงสร้างพื้นฐาน การวิเคราะห์เอกสารล่อลวง และการทำแผนที่การระบุแหล่งที่มาเทียบกับพื้นฐาน TTP ของ SideCopy ที่เป็นที่รู้จัก
เป้าหมายหลัก:
- กระทรวงการคลัง รัฐอิสลามแห่งอัฟกานิสถาน
- สำนักงานสรรพากรและการเงินประจำจังหวัด (Mustoufiats)
- เจ้าหน้าที่รัฐที่พูดภาษาปัชโต
- พนักงานของรัฐบาลระดับจังหวัด ไม่ใช่กระทรวงส่วนกลาง
ห่วงโซ่การติดเชื้อ:

ผลการค้นพบเบื้องต้นเกี่ยวกับแคมเปญ:
จากการวิเคราะห์ของเรา เราพบว่าผู้โจมตีเริ่มต้นการโจมตีโดยส่งไฟล์ ZIP ผ่านการโจมตีแบบ Spear Phishing ซึ่งภายในบรรจุไฟล์ LNK ที่เป็นอันตรายซึ่งเขียนด้วยภาษาปัชโต ซึ่งเป็นการเลือกโดยเจตนาที่สะท้อนให้เห็นถึงความคุ้นเคยอย่างลึกซึ้งกับสภาพแวดล้อมเป้าหมาย
เมื่อดำเนินการแล้ว LNK จะใช้ mshta.exe อย่างเงียบๆ เพื่อดึงข้อมูล HTA จากโดเมนการศึกษาของอัฟกานิสถานที่ถูกบุกรุก ซึ่งจะถอดรหัส JavaScript ที่ถูกเข้ารหัสไว้ในหน่วยความจำ สร้างการคงอยู่ถาวรบนรีจิสทรีที่ปลอมแปลงเป็นรายการของ Microsoft Edge และในที่สุดก็จะติดตั้ง XenoRAT 1.8.7 โดยส่งสัญญาณออกไปยังโครงสร้างพื้นฐานการโฮสติ้งในยุโรปที่ปลอดภัยอย่างสมบูรณ์ ซึ่งแยกออกจากเลเยอร์การส่งมอบ เพื่อให้มั่นใจถึงความยืดหยุ่นในระยะยาว
การวิเคราะห์ของ Decoy:
เอกสารล่อเป้าที่ถูกทิ้งระหว่างการประหารชีวิตคือสมุดรายชื่อเจ้าหน้าที่กระทรวงการคลังของอัฟกานิสถานประจำจังหวัดทั้ง 34 จังหวัด ซึ่งระบุรายชื่อผู้อำนวยการฝ่ายการเงิน หัวหน้าฝ่ายรายได้ เจ้าหน้าที่การเงิน และเลขานุการ พร้อมหมายเลขโทรศัพท์มือถือโดยตรง โดยเขียนเป็นภาษาดารีและปัชโตทั้งหมด

ระดับรายละเอียดของโครงสร้างองค์กรบ่งชี้ว่าผู้โจมตีได้ทำการรวบรวมข้อมูลข่าวกรองมาก่อนแล้ว บทบาทของมันในการโจมตีนั้นเรียบง่าย — ในขณะที่เหยื่อกำลังอ่านเอกสารภายในของรัฐบาลที่ดูเหมือนจะเป็นเอกสารทั่วไป มัลแวร์ก็ได้ทำการติดตั้งเสร็จสมบูรณ์โดยเงียบๆ ในเบื้องหลังแล้ว
วิเคราะห์ทางเทคนิค:
ขั้นตอนที่ 1: การวิเคราะห์ไฟล์ LNK
ไฟล์ LNK ทำหน้าที่เป็นพาหะเริ่มต้นของการแพร่เชื้อและตัวกระตุ้นการทำงานภายในห่วงโซ่การโจมตี แม้ว่าจะถูกปลอมแปลงด้วยไอคอน PDF และชื่อไฟล์ที่ทำให้เข้าใจผิดเพื่อให้ดูเหมือนเอกสารที่ถูกต้อง แต่เมื่อตรวจสอบคุณสมบัติของทางลัดแล้วจะพบว่ามันเรียกใช้ยูทิลิตี้ mshta.exe ของ Windows จาก C:\Windows\System32 คำสั่งที่ฝังอยู่ในทางลัดชี้ไปยังทรัพยากร PHP ที่เป็นอันตรายจากระยะไกลซึ่งโฮสต์ผ่าน HTTPS ( hxxp[:]//< abimj.edu.af >/index.php )ทำให้ผู้โจมตีสามารถเรียกใช้เนื้อหาสคริปต์ที่โฮสต์ภายนอกได้โดยตรงในหน่วยความจำโดยไม่ต้องเขียนไฟล์ปฏิบัติการลงดิสก์ โดยการใช้ประโยชน์จาก mshta.exe ซึ่งเป็นไบนารีของ Microsoft ที่ถูกต้องตามกฎหมายซึ่งมักเกี่ยวข้องกับการเรียกใช้แอปพลิเคชัน HTML (HTA)

ผู้โจมตีใช้เทคนิค Living-off-the-Land Binary (LOLBIN) เพื่อหลีกเลี่ยงกลไกการตรวจจับแบบดั้งเดิมและเลี่ยงความสงสัยของผู้ใช้ การใช้เครื่องหมายจุลภาคมากเกินไปในการเข้ารหัส URL ยังบ่งชี้ถึงความพยายามที่จะขัดขวางการวิเคราะห์แบบคงที่และการตรวจจับโดยใช้ลายเซ็นอีกด้วย
ขั้นตอนที่ 2: การวิเคราะห์ข้อมูล HTA/JavaScript
ไฟล์ PHP ที่ถูกดึงมาจากระยะไกลผ่าน mshta.exe นั้นประกอบด้วยโค้ด JavaScript ที่ถูกเข้ารหัสอย่างซับซ้อน ซึ่งออกแบบมาเพื่อเรียกใช้ตรรกะที่เป็นอันตรายภายในบริบทของเอนจิน HTA การตรวจสอบเบื้องต้นพบว่ามีอาร์เรย์สตริงที่เข้ารหัส เช่น _$_f1bf=[“\x55\x33\x6…”] ซึ่งเป็นวิธีการเข้ารหัสที่ใช้กันทั่วไปเพื่อซ่อนชื่อฟังก์ชัน URL คำสั่ง หรือเพย์โหลดรองจากนักวิเคราะห์และเครื่องมือรักษาความปลอดภัย สคริปต์ยังกำหนดข้อความหน้าต่างที่หลอกลวง เช่น “ข้อผิดพลาดไฟล์ของ Windows” เพื่อเลียนแบบพฤติกรรมของระบบที่ถูกต้องและอาจเบี่ยงเบนความสนใจของเหยื่อในระหว่างการดำเนินการ ขั้นตอนนี้ทำหน้าที่เป็นเลเยอร์การดำเนินการและการส่งมอบหลักของแคมเปญ ซึ่ง JavaScript ที่ถูกเข้ารหัสจะถูกถอดรหัสแบบไดนามิกเพื่อดำเนินการต่อไป เช่น การดึงเพย์โหลด การเรียกใช้คำสั่ง การสร้างความคงอยู่ หรือการดึงข้อมูลออก

การวิเคราะห์ JScript ที่ถูกเข้ารหัสลับ
จากการวิเคราะห์ พบว่าไฟล์ .js เป็นมัลแวร์โหลดเดอร์ที่ใช้ JScript ซึ่งมีการเข้ารหัสอย่างซับซ้อนมาก โดยมีจุดประสงค์เพื่อทำงานภายใต้ Windows Script Host (WSH) หรือสภาพแวดล้อม Internet Explorer รุ่นเก่าที่เปิดใช้งานการสนับสนุน ActiveX สคริปต์นี้ประกอบด้วยเทคนิคที่เป็นอันตรายหลายอย่าง รวมถึงการเรียกใช้งานผ่าน ActiveX การถอดรหัสข้อมูลแบบ Base64 ที่กำหนดเอง การดีซีเรียไลซ์ด้วย .NET BinaryFormatterและการเรียกใช้งานข้อมูลในหน่วยความจำ
ขั้นตอนแรกของมัลแวร์เริ่มต้นด้วยอาร์เรย์ JavaScript ขนาดใหญ่ที่ถูกเข้ารหัสลับ โดยทั่วไปจะกำหนดเป็นตัวแปร เช่น _$_f1bf ซึ่งประกอบด้วยส่วนของสตริงที่เข้ารหัสด้วยเลขฐานสิบหกจำนวนมากที่แสดงถึงเพย์โหลดที่ฝังอยู่ ส่วนของสตริงเหล่านี้จะถูกนำมาต่อกันและส่งไปยังฟังก์ชันถอดรหัสแบบกำหนดเอง แทนที่จะใช้ API การถอดรหัส Base64 ดั้งเดิม สคริปต์จะใช้รูทีนการถอดรหัส Base64 ของตัวเองเพื่อซ่อนเพย์โหลดและขัดขวางการวิเคราะห์

ฟังก์ชันที่กำหนดเองจะสร้างชุดอักขระ Base64 มาตรฐาน (A–Z, a–z, 0–9, +, /) ขึ้นมาใหม่แบบไดนามิกโดยใช้ String.fromCharCode จากนั้นประมวลผลข้อมูลที่เข้ารหัสเป็นส่วนๆ ในขณะที่สร้างสตรีมไบต์ดั้งเดิมขึ้นมาใหม่ผ่านชุดการดำเนินการแบบบิตไวส์ การจัดการกระบวนการถอดรหัสด้วยตนเองทำให้มัลแวร์หลีกเลี่ยงตัวบ่งชี้ที่น่าสงสัย เช่น atob() หรือไลบรารีการถอดรหัสทั่วไป ทำให้การตรวจจับแบบคงที่และการวิเคราะห์ตามลายเซ็นทำได้ยากขึ้นอย่างมาก

การประกอบข้อมูลใหม่โดยใช้ .NET COM Objects
ในขั้นตอนที่สอง มัลแวร์จะแปลงเพย์โหลดที่ถอดรหัสแล้วให้เป็นอ็อบเจ็กต์ที่สามารถเรียกใช้งานได้ในหน่วยความจำ โดยใช้ประโยชน์จากคลาส .NET หลายคลาสที่สร้างขึ้นผ่าน ActiveXObject สคริปต์จะสร้างSystem.Text.ASCIIEncodingเพื่อแปลงสตริงที่ถอดรหัสแล้วให้เป็นอาร์เรย์ไบต์ จากนั้นใช้System.Security.Cryptography.FromBase64Transformเพื่อทำการแปลง Base64 เพิ่มเติมกับเพย์โหลด สตรีมไบต์ที่ได้จะถูกเขียนลงในอ็อบเจ็กต์ System.IO.MemoryStream ซึ่งเป็นการสร้างเพย์โหลดที่ถูกแปลงเป็นอนุกรมขึ้นมาใหม่ในหน่วยความจำโดยไม่ต้องแตะต้องดิสก์ วิธีการแบบหลายขั้นตอนนี้มักใช้ในมัลแวร์แบบไร้ไฟล์ เนื่องจากช่วยให้ผู้โจมตีสามารถเตรียมอ็อบเจ็กต์ .NET ที่เป็นอันตรายสำหรับการเรียกใช้งานได้ ในขณะที่ลดหลักฐานทางนิติวิทยาศาสตร์และลดโอกาสในการตรวจจับโดยผลิตภัณฑ์รักษาความปลอดภัยแบบไฟล์ทั่วไป

หลังจากถอดรหัสเพย์โหลดที่ฝังอยู่ สคริปต์จะเข้าสู่ขั้นตอนการทำงานโดยการสร้าง อ็อบเจ็กต์ ActiveX ชื่อ WScript.Shellซึ่งช่วยให้สามารถเข้าถึงการดำเนินการรีจิสทรี ตัวแปรสภาพแวดล้อม และฟังก์ชันระดับระบบอื่นๆ จากนั้นสคริปต์จะตรวจสอบว่า มีการติดตั้ง . NET Framework เวอร์ชันv4.0.30319 หรือไม่ โดยการสอบถามเส้นทางรีจิสทรีHKLM\SOFTWARE\Microsoft\.NETFramework\v4.0.30319หากไม่มีรันไทม์เวอร์ชันใหม่กว่า สคริปต์จะเปลี่ยนไปใช้ .NET v2.0.50727 แทน จากนั้นมัลแวร์จะตั้งค่า ตัวแปรสภาพแวดล้อม COMPLUS_Versionเพื่อบังคับให้กระบวนการโหลดรันไทม์ CLR เวอร์ชันเฉพาะ เพื่อให้มั่นใจได้ว่าเข้ากันได้กับเพย์โหลด DLL .NET ที่ฝังอยู่
ในระหว่างการทำงาน มัลแวร์จะใช้ประโยชน์จากส่วนประกอบการดีซีเรียไลเซชันของ .NET ที่เชื่อถือได้ ซึ่งรวมถึงแกดเจ็ต XAML ของ WPF เช่น ObjectDataProvider และ ResourceDictionary ตลอดจนออบเจ็กต์การซีเรียไลเซชันของ Windows Forms เช่น AxHost และ PropertyBagBinary ส่วนประกอบเหล่านี้ช่วยรักษาความต่อเนื่องของห่วงโซ่แกดเจ็ตการดีซีเรียไลเซชันและกระตุ้นการทำงานในระหว่างการสร้างออบเจ็กต์ขึ้นใหม่
ในที่สุด วัตถุที่เป็นอันตรายซึ่งถูกจัดเก็บไว้ภายในวัตถุ MemoryStream จะถูกประมวลผลผ่าน.NET BinaryFormatter.Deserialize_2()ซึ่งช่วยให้สามารถเรียกใช้ DLL ในหน่วยความจำได้อย่างลับๆ ในขณะที่ลดร่องรอยทางนิติวิทยาศาสตร์ให้น้อยที่สุดและหลีกเลี่ยงกลไกการตรวจจับแบบไฟล์แบบดั้งเดิม
ขั้นตอนที่ 3: การวิเคราะห์ไฟล์ DLL ของตัวโหลดขั้นตอนที่ 1 (ตัวโหลดเริ่มต้น)
นี่คือไฟล์ DLL ตัวโหลดสำหรับ .NET ที่รับผิดชอบในการดำเนินการเพย์โหลดในขั้นตอนถัดไป การคงอยู่ และการจัดเตรียมส่วนประกอบถัดไปของห่วงโซ่การโจมตีในหน่วยความจำ

โปรแกรมจะเรียกใช้ฟังก์ชัน openthefile()ในตอนเริ่มต้นซึ่งมีหน้าที่ดาวน์โหลดและเปิดเอกสาร PDF ปลอมจาก URL hxxp[:]//abimj.edu.af/institute/cloudiyaf/document.pdfฟังก์ชันนี้จะดึงชื่อไฟล์จาก URL ก่อน แล้วบันทึกไฟล์ที่ดาวน์โหลดลงในไดเร็กทอรีชั่วคราวของ Windows โดยใช้ WebClient.DownloadFile() ก่อนเริ่มการดาวน์โหลด มัลแวร์จะเปิดใช้งานการสื่อสาร TLS 1.2 ผ่าน ServicePointManager.SecurityProtocol อย่างชัดเจน เพื่อให้มั่นใจได้ว่าสามารถใช้งานร่วมกับการเชื่อมต่อ HTTPS/TLS ที่ปลอดภัยได้ หลังจากดาวน์โหลดเอกสารเสร็จ มัลแวร์จะหยุดการทำงานชั่วคราวเป็นเวลาห้าวินาที แล้วจึงเปิดไฟล์ PDF ที่ดาวน์โหลดมาผ่านรูทีนการเรียกใช้คำสั่งที่ซ่อนอยู่

ฟังก์ชัน RunProcessWithHiddenCmd() ใช้สำหรับเรียกใช้ไฟล์หรือคำสั่งผ่าน cmd.exe ฟังก์ชันนี้สร้างอาร์กิวเมนต์บรรทัดคำสั่งโดยใช้ /c ซึ่งสั่งให้ cmd.exe เรียกใช้ไฟล์ที่ระบุและปิดโปรแกรมหลังจากนั้น ฟังก์ชันจะเริ่มต้นอินสแตนซ์กระบวนการใหม่ กำหนดให้ cmd.exe เป็นไฟล์ปฏิบัติการที่จะเรียกใช้ และส่งสตริงอาร์กิวเมนต์ที่สร้างขึ้นไปยังกระบวนการ เมื่อเริ่มต้นแล้ว ตัวแปลคำสั่งจะเรียกใช้ไฟล์หรือคำสั่งที่ระบุและปิดโปรแกรมโดยอัตโนมัติหลังจากเสร็จสิ้น

หลังจากเปิดเอกสารล่อลวงแล้ว มัลแวร์จะสร้างไดเร็กทอรีชื่อ USOSshared-1de48789-1285 ภายใต้ C:\Users\Public\ เพื่อจัดเก็บเพย์โหลด HTA ขั้นตอนถัดไป (zuidrt.hta) จากนั้นจะเรียกใช้ ฟังก์ชัน RegWorkExePathFromPublic()ซึ่งมีคำสั่งรีจิสทรีที่เข้ารหัสแบบ Base64 ซึ่งจะถูกถอดรหัสในระหว่างการทำงานโดยใช้ รูทีนการถอดรหัส Base64 BSDSD94()เมื่อถอดรหัสแล้ว คำสั่งจะสร้างรายการใหม่ภายใต้ คีย์รีจิสทรี HKCU\Software\Microsoft\Windows\CurrentVersion\Runโดยมีค่าชื่อ Edgre รายการรีจิสทรีนี้จะดำเนินการดังต่อไปนี้:
cmd /C start C:\Users\Public\USOSshared-1de48789-1285\zuidrt.hta
เพื่อเพิ่มความลับและการคงอยู่ของมัลแวร์ มัลแวร์จะเขียนคำสั่งที่ถอดรหัสแล้วลงในไฟล์แบตช์ชื่อ noway.bat ในไดเร็กทอรีชั่วคราวของผู้ใช้ และเรียกใช้ผ่านกระบวนการที่ซ่อนอยู่ การเรียกใช้ถูกตั้งค่าให้ปิดบังหน้าต่างที่มองเห็นได้ทั้งหมด ป้องกันไม่ให้พร้อมท์คำสั่งใด ๆ ปรากฏขึ้นต่อผู้ใช้ ซึ่งทำให้มั่นใจได้ว่าเพย์โหลด HTA จะถูกเรียกใช้โดยอัตโนมัติเมื่อผู้ใช้เข้าสู่ระบบ รักษาการคงอยู่บนระบบ

ฟังก์ชัน CopyExeToUsersPublic() มีหน้าที่ในการดึงและสร้างเพย์โหลด HTA ขั้นตอนถัดไป (zuidrt.hta) ขึ้นใหม่ในไดเร็กทอรี C:\Users\Public\USOSshared-1de48789-1285\ โดยจะตรวจสอบก่อนว่าไดเร็กทอรีเป้าหมายมีอยู่หรือไม่ และสร้างขึ้นหากไม่มีโดยใช้ Directory.CreateDirectory() จากนั้นจะดาวน์โหลดเพย์โหลดที่เข้ารหัสจาก:
hxxp[:]//abimj.edu.af/institute/cloudiya/

ไฟล์ zuidrt.hta ที่ดาวน์โหลดมาจะถูกจัดเก็บในรูปแบบบีบอัดและเข้ารหัส Base64 เพื่อหลีกเลี่ยงการตรวจจับ มัลแวร์จะทำการคลายการบีบอัดและถอดรหัสข้อมูลในภายหลังเพื่อสร้างไฟล์ HTA สุดท้ายขึ้นมา ซึ่งจะถูกเรียกใช้งานผ่านฟังก์ชัน RunProcessWithHiddenCmd() ซึ่งภายในจะเรียกใช้คำสั่ง cmd.exe /c start C:\Users\Public\USOSshared-1de48789-1285\zuidrt.htaโดยใช้การเชื่อมโยงไฟล์ของ Windows เพื่อเรียกใช้mshta.exe อีกครั้ง สำหรับการเรียกใช้ไฟล์ HTA
การดำเนินการเพย์โหลด HTA (zuidrt.hta)
ไฟล์ zuidrt.hta มีโครงสร้างคล้ายกับเพย์โหลด HTA เริ่มต้น แต่มีส่วนประกอบฝังตัวที่ได้รับการแก้ไขและตรรกะการทำงานที่ได้รับการอัปเดต มันสานต่อห่วงโซ่การโจมตีโดยการใช้รูทีนการเข้ารหัสและการถอดรหัสซ้ำเพื่อปกปิดการทำงานและหลีกเลี่ยงการวิเคราะห์ สคริปต์จะเริ่มต้นเส้นทางการทำงานแบบ ActiveX ใหม่เพื่อรักษาการทำงานภายในสภาพแวดล้อม HTA และสร้างเพย์โหลดแบบอนุกรมที่ฝังตัวไว้ในหน่วยความจำขึ้นใหม่
เช่นเดียวกับขั้นตอน HTA เริ่มต้น เพย์โหลดจะใช้ส่วนประกอบการดีซีเรียไลเซชันของ .NET และเกดเชนเพื่อกระตุ้นการทำงานในหน่วยความจำของ DLL ตัวโหลด Stage-2 ที่ฝังอยู่ ขั้นตอนนี้ทำหน้าที่เป็นเลเยอร์การทำงานรองภายในห่วงโซ่การติดเชื้อ เพื่อให้มั่นใจถึงความต่อเนื่องของเวิร์กโฟลว์การโจมตีและอำนวยความสะดวกในการเปลี่ยนไปสู่ DLL ขั้นตอนถัดไปที่รับผิดชอบในการส่งและดำเนินการเพย์โหลดขั้นสุดท้าย
ขั้นตอนที่ 4: การวิเคราะห์ DLL ของตัวโหลดขั้นตอนที่ 2 และเชลล์โค้ด
หลังจากถอดรหัสขณะรันไทม์แล้ว ลำดับการทำงานจะถูกส่งต่อไปยัง DLL ที่เป็นอันตราย

ไฟล์ DLL นี้เป็นตัวโหลดเชลล์โค้ดที่ใช้ .NET ทำหน้าที่ดึงข้อมูล ถอดรหัส บีบอัด และเรียกใช้เพย์โหลดในขั้นตอนถัดไปทั้งหมดในหน่วยความจำ มัลแวร์ใช้กลไกการจัดเตรียมและการเรียกใช้งานหลายชั้นเพื่อหลีกเลี่ยงกลไกการรักษาความปลอดภัยแบบดั้งเดิมและลดปริมาณไฟล์ที่จัดเก็บในดิสก์
ไฟล์ DLL ทำหน้าที่เป็นตัวโหลดระดับกลางระหว่างขั้นตอน HTA ที่ใช้ JavaScript และเพย์โหลด Xeno RAT สุดท้าย
การตั้งค่าสภาพแวดล้อมและการดึงข้อมูลเพย์โหลด
เมื่อถูกเรียกใช้งาน DLL จะเริ่มต้นสภาพแวดล้อมชั่วคราวที่ออกแบบมาเพื่อจัดเก็บและประมวลผลเพย์โหลดในขั้นตอนถัดไปโดยลดการสงสัยให้น้อยที่สุด มัลแวร์จะถอดรหัสสตริงที่เข้ารหัส Base64 ( ZmlyZWZ4LTFkZTg3ZWVjOC0xMjQx ) โดยใช้ รูทีน BSDSD94() ที่กำหนดเอง ส่งผลให้ได้ชื่อไดเร็กทอรี firefx-1de87eec8-1241 จากนั้นจะสร้างไดเร็กทอรีทำงานภายใต้เส้นทาง Windows ที่สามารถเข้าถึงได้จากภายนอก:
- C:\Users\Public\firefx-1de87eec8-1241

การใช้ C:\Users\Public\ ช่วยให้มัลแวร์หลีกเลี่ยงข้อจำกัดในการเขียนที่เกี่ยวข้องกับสิทธิ์การเข้าถึง ในขณะที่กลมกลืนไปกับกิจกรรมของระบบไฟล์ที่ถูกต้องตามกฎหมาย รูปแบบการตั้งชื่อไดเร็กทอรีเลียนแบบโฟลเดอร์แคชหรือโปรไฟล์ที่สร้างโดยแอปพลิเคชัน ช่วยลดความสงสัยของผู้ใช้และหลีกเลี่ยงการตรวจจับพื้นฐานตาม IOC มัลแวร์ยังกำหนดชื่อไฟล์เพย์โหลดชั่วคราว เช่นayui.vmxxและayhui.vmxxซึ่งถูกปลอมแปลงโดยเจตนาโดยใช้ส่วนขยายที่ไม่เป็นมาตรฐานเพื่อหลีกเลี่ยงการระบุว่าเป็นเนื้อหาที่สามารถเรียกใช้งานได้ในทันที
หลังจากสร้างไดเร็กทอรีสำหรับเตรียมการแล้ว DLL จะเริ่มต้นการสื่อสารขาออกกับโครงสร้างพื้นฐานที่ผู้โจมตีควบคุมเพื่อดึงข้อมูลเพย์โหลดในขั้นตอนต่อไป มัลแวร์นี้มี URL ที่กำหนดไว้ล่วงหน้าหลายรายการ รวมถึง:
- hxxps[:]//abimj[.]edu[.]af/institute/10/
- hxxps[:]//abimj[.]edu[.]af/institute/7/
และเลือกจุดดาวน์โหลดปลายทางแบบไดนามิกโดยอิงตามเวอร์ชันของระบบปฏิบัติการของเหยื่อ ระบบที่ระบุว่าเป็น Windows 7 (เวอร์ชัน 6.1) จะถูกเปลี่ยนเส้นทางไปยังตำแหน่งไฟล์ข้อมูลสำรอง ซึ่งบ่งชี้ถึงการส่งไฟล์ข้อมูลที่คำนึงถึงความเข้ากันได้

มัลแวร์ ใช้เมธอด .NET WebClient.DownloadFile()ร่วมกับโปรโตคอล TLS/TLS1.1/TLS1.2 ที่เปิดใช้งานอย่างชัดเจน เพื่อดาวน์โหลดเพย์โหลดที่เข้ารหัสและจัดเก็บไว้ในเครื่องในชื่อayui.vmxxเนื้อหาที่ดาวน์โหลดมานั้นไม่สามารถเรียกใช้งานได้โดยตรง แต่จะเป็นข้อมูลที่ถูกเข้ารหัสและบีบอัดเพื่อรอการถอดรหัส Base64 และคลายการบีบอัด GZIP ก่อนที่จะเริ่มการเรียกใช้เชลล์โค้ดในหน่วยความจำ
การถอดรหัสเพย์โหลดและการสร้างเชลล์โค้ดขึ้นใหม่
หลังจากดาวน์โหลดเพย์โหลดขั้นที่สองสำเร็จแล้ว DLL จะจัดเก็บข้อมูลที่ดึงมาได้ไว้ในไดเร็กทอรีชั่วคราวในรูปแบบไฟล์ปลอมชื่อ ayui.vmxx แทนที่จะติดตั้งไฟล์ปฏิบัติการแบบพกพา (PE) ลงดิสก์โดยตรง มัลแวร์จะใช้กลไกการเข้ารหัสและการบีบอัดแบบหลายชั้นเพื่อซ่อนเนื้อหาของเพย์โหลดจริงและหลีกเลี่ยงกลไกการตรวจจับแบบคงที่ ไฟล์ดังกล่าวมีข้อมูลที่เข้ารหัสแบบ Base64 และบีบอัดด้วย GZIP ซึ่งดูเหมือนจะไม่สามารถเรียกใช้งานได้เมื่อตรวจสอบอย่างผิวเผิน เทคนิคนี้ช่วยลดความสามารถในการตรวจจับลายเซ็นของผลิตภัณฑ์ป้องกันไวรัสได้อย่างมาก และทำให้การวิเคราะห์ด้วยตนเองซับซ้อนขึ้นโดยป้องกันไม่ให้นักวิเคราะห์ระบุรูปแบบของเพย์โหลดได้ทันที จากนั้นมัลแวร์จะอ่านไฟล์ทั้งหมดลงในหน่วยความจำโดยใช้File.ReadAllBytes()และเริ่มสร้างเพย์โหลดที่ฝังไว้ขึ้นใหม่แบบไดนามิกในระหว่างการทำงาน

กระบวนการสร้างใหม่จะดำเนินการผ่าน ฟังก์ชัน decompressdata() ที่กำหนดเอง ซึ่งทำการถอดรหัสและคลายการบีบอัดหลายครั้งในหน่วยความจำทั้งหมด ขั้นตอนแรกคือการถอดรหัสข้อมูล Base64 จากนั้นดึงส่วนหัวขนาดที่คลายการบีบอัด และใช้ คลาส GZipStream ของ .NETเพื่อกู้คืนบัฟเฟอร์เพย์โหลดดั้งเดิม เมื่อการคลายการบีบอัดเสร็จสมบูรณ์ ข้อมูลที่ได้จะถูกส่งผ่านConvert.FromBase64String() อีกครั้ง เพื่อกู้คืนไบต์เชลล์โค้ดดิบ จากนั้นเพย์โหลดที่สร้างใหม่ทั้งหมดจะถูกเขียนลงในเครื่องเป็นayhui.vmxxซึ่งทำหน้าที่เป็นคอนเทนเนอร์เชลล์โค้ดชั่วคราวก่อนการดำเนินการ ด้วยการรวมการถอดรหัส การบีบอัด และการสร้างเพย์โหลดใหม่ในขณะทำงาน มัลแวร์จึงหลีกเลี่ยงการเปิดเผยเชลล์โค้ดสุดท้ายในรูปแบบข้อความธรรมดาบนดิสก์ จึงสามารถหลีกเลี่ยงกลไกการสแกนไฟล์และการตรวจจับตามเนื้อหาแบบเดิมได้ ในขณะเดียวกันก็เตรียมเพย์โหลดสำหรับการดำเนินการในหน่วยความจำแบบสะท้อนกลับ

การเรียกใช้เชลล์โค้ด:
หลังจากสร้างเพย์โหลดขึ้นใหม่แล้ว DLL จะเปลี่ยนไปสู่ขั้นตอนการทำงานขั้นสุดท้ายโดยทำหน้าที่เป็นตัวโหลดเชลล์โค้ดในหน่วยความจำ แทนที่จะเรียกใช้ไฟล์ปฏิบัติการแบบดั้งเดิมจากดิสก์ มัลแวร์จะจัดสรรหน่วยความจำที่สามารถเรียกใช้งานได้โดยตรงภายในกระบวนการปัจจุบันโดยใช้ Windows API VirtualAlloc() คำขอจัดสรรใช้แฟล็ก MEM_COMMIT ร่วมกับ สิทธิ์การเข้าถึงหน่วยความจำ PAGE_EXECUTE_READWRITE (RWX)ทำให้เกิดพื้นที่หน่วยความจำที่สามารถจัดเก็บและเรียกใช้โค้ดใดๆ ก็ได้ รูปแบบการจัดสรร RWX นี้เป็นตัวบ่งชี้ที่รู้จักกันดีของการเรียกใช้เชลล์โค้ดและการโหลดมัลแวร์แบบสะท้อนกลับ หลังจากจัดสรรหน่วยความจำแล้ว มัลแวร์จะคัดลอกบัฟเฟอร์เชลล์โค้ดที่สร้างขึ้นใหม่ไปยังพื้นที่ที่จัดสรรโดยใช้Marshal.Copy()ซึ่งเป็นการจัดเตรียมเพย์โหลดทั้งหมดภายในหน่วยความจำของกระบวนการโดยไม่ต้องพึ่งพาตัวโหลด Windows PE

เมื่อเชลล์โค้ดถูกแมปเข้าไปในหน่วยความจำที่สามารถเรียกใช้งานได้ มัลแวร์จะถ่ายโอนการทำงานไปยังบัฟเฟอร์ที่ถูกฉีดเข้าไปผ่าน API CreateThread()โดยใช้ที่อยู่ฐานของหน่วยความจำที่จัดสรรไว้เป็นจุดเริ่มต้นของเธรด เทคนิคนี้ช่วยให้เชลล์โค้ดสามารถทำงานได้โดยตรงจากหน่วยความจำ หลีกเลี่ยงการตรวจสอบการทำงานบนดิสก์แบบเดิม และลดหลักฐานทางนิติวิทยาศาสตร์ลงอย่างมาก จากนั้น DLL จะเรียกใช้WaitForSingleObject()ด้วยค่าหมดเวลาแบบไม่จำกัด เพื่อรักษาการซิงโครไนซ์ของเธรดและรับประกันการทำงานของเชลล์โค้ดอย่างต่อเนื่อง วิธีการทำงานนี้สอดคล้องกับเทคนิคการโจมตีของมัลแวร์แบบไร้ไฟล์ในปัจจุบัน ซึ่งเพย์โหลดจะถูกถอดรหัสและเรียกใช้งานแบบไดนามิกในหน่วยความจำเพื่อหลีกเลี่ยงกลไกป้องกันไวรัสแบบใช้ลายเซ็น กลไกควบคุมแอปพลิเคชัน และเทคโนโลยีการสแกนแบบคงที่ จากนั้นเชลล์โค้ดจะทำหน้าที่เป็นตัวโหลดสำหรับเพย์โหลด Xeno RAT ตัวสุดท้าย ทำให้สามารถทำงานได้อย่างต่อเนื่อง การสื่อสารแบบสั่งการและควบคุม และการเข้าถึงระบบที่ถูกบุกรุกจากระยะไกลโดยผู้โจมตี
เชลล์โค้ดทำหน้าที่เป็นตัวโหลดในหน่วยความจำ ซึ่งรับผิดชอบในการเตรียมและเรียกใช้เพย์โหลด Xeno RAT ตัวสุดท้าย

ในระหว่างการทำงาน โปรแกรมจะทำการตรวจสอบความถูกต้องของสภาพแวดล้อม การแก้ไข API แบบไดนามิก และการแก้ไขสิทธิ์การเข้าถึงหน่วยความจำโดยใช้ API เช่นVirtualProtect()และGetProcAddress()ในโปรแกรมโหลด Donut นั้น เชลล์โค้ดจะหลีกเลี่ยงกลไกการรักษาความปลอดภัยโดยการแก้ไขฟังก์ชันต่างๆ เช่นAmsiScanBuffer()เพื่อปิดใช้งานการสแกน AMSI และลดความสามารถในการมองเห็นเนื้อหาที่โหลดแบบไดนามิก
เนื่องจากเพย์โหลดสุดท้ายเป็นแอสเซมบลี .NET ที่ได้รับการจัดการ เชลล์โค้ดจึงเริ่มต้นใช้งาน .NET Common Language Runtime (CLR) โดยการโหลดคอมโพเนนต์ต่างๆ เช่น clr.dll และ mscoree.dll จากนั้นเพย์โหลดที่ฝังอยู่จะถูกถอดรหัสและโหลดโดยตรงจากหน่วยความจำโดยใช้เทคนิคการสะท้อนกลับ เช่นAssembly.Load(byte[])ซึ่งหลีกเลี่ยงการติดตั้งบนดิสก์โดยสิ้นเชิง เมื่อโหลดแล้ว เพย์โหลด Xeno RAT จะทำงานในหน่วยความจำ ทำให้สามารถสื่อสารควบคุมและสั่งการ การคงอยู่ และการเข้าถึงระบบที่ถูกบุกรุกจากระยะไกลได้

ขั้นตอนที่ 5: การวิเคราะห์ XenoRAT
มัลแวร์ตัวสุดท้ายที่พบในห่วงโซ่การติดเชื้อคือXeno RATซึ่งเป็นโทรจันสำหรับเข้าถึงระยะไกล (RAT) แบบโอเพนซอร์สที่เปิดให้ใช้งานได้ทั่วไปบน GitHub และเป็นที่นิยมใช้โดยผู้โจมตีเพื่อการเข้าถึงระยะไกลอย่างต่อเนื่อง การสอดแนม และกิจกรรมหลังการโจมตี

เมื่อเริ่มทำงาน มัลแวร์จะเริ่มต้นช่องทางการสื่อสารควบคุมและสั่งการ (C2) ที่ปลอดภัยโดยใช้ที่อยู่ IP ที่กำหนดไว้ล่วงหน้า (185.235.137.106)และการกำหนดค่าพอร์ต ทำให้สามารถเชื่อมต่อโดยตรงกับโครงสร้างพื้นฐานที่ผู้โจมตีควบคุมได้ เพื่อรักษาการทำงานแบบอินสแตนซ์เดียวและป้องกันการเรียกใช้งานหลายครั้ง มัลแวร์ยังใช้มิวเท็กซ์ ("clouda")เพื่อให้แน่ใจว่ามีเพียงอินสแตนซ์เดียวของไคลเอนต์เท่านั้นที่ทำงานบนระบบที่ติดเชื้อในแต่ละครั้ง ขั้นตอนการเริ่มต้นเหล่านี้ตามมาด้วยตรรกะการคงอยู่และการเชื่อมต่อใหม่อย่างต่อเนื่องเพื่อรักษาการเข้าถึงโฮสต์ที่ถูกบุกรุกในระยะยาว

ต่อไปนี้ เราจะมาดูฟังก์ชันที่น่าสนใจบางส่วนและวิเคราะห์การทำงานของฟังก์ชันเหล่านั้นกัน
ฟังก์ชัน ConnectAndSetupAsyncมีหน้าที่ในการสร้างและเริ่มต้นการเชื่อมต่อควบคุมและสั่งการ (C2) แบบ TCP ระหว่างไคลเอ็นต์และเซิร์ฟเวอร์ระยะไกล โดยจะสร้างอินสแตนซ์ Node ใหม่โดยใช้ SocketHandler ที่กำหนดค่าด้วยซ็อกเก็ตและคีย์การเข้ารหัสที่ให้มา ทำให้สามารถสื่อสารแบบเข้ารหัสผ่านการเชื่อมต่อได้ หลังจากเริ่มต้นแล้ว ฟังก์ชันจะทำการตรวจสอบสิทธิ์แบบอะซิงโครนัสโดยใช้ AuthenticateAsync เพื่อตรวจสอบความถูกต้องของการเชื่อมต่อตามค่าประเภทและ ID ที่ให้มา หากการตรวจสอบสิทธิ์ล้มเหลวหรือเกิดข้อผิดพลาดระหว่างการตั้งค่า ฟังก์ชันจะส่งคืนค่า null ซึ่งบ่งชี้ว่าไม่สามารถสร้างช่องทางการสื่อสาร C2 ได้สำเร็จ มิเช่นนั้น จะส่งคืนออบเจ็กต์ Node ที่เริ่มต้นและตรวจสอบสิทธิ์เรียบร้อยแล้ว พร้อมสำหรับการแลกเปลี่ยนข้อมูลอย่างปลอดภัย

ฟังก์ชัน DllNodeHandlerทำหน้าที่จัดการการโหลดและการเรียกใช้งานโมดูล DLL ภายนอกแบบไดนามิกที่ได้รับผ่านการเชื่อมต่อ Node ระยะไกล โดยจะรับชื่อ DLL จากไคลเอ็นต์ที่เชื่อมต่อก่อน และตรวจสอบว่าแอสเซมบลีนั้นถูกโหลดอยู่ในหน่วยความจำแล้วหรือไม่ หาก DLL หายไป ฟังก์ชันจะร้องขอข้อมูลไบนารีจากฝั่งระยะไกล โหลดแบบไดนามิกโดยใช้Assembly.Loadและจัดเก็บไว้ในพจนานุกรม Assemblies เพื่อนำกลับมาใช้ใหม่ มิฉะนั้น ฟังก์ชันจะแจ้งให้ไคลเอ็นต์ทราบว่า DLL นั้นมีอยู่แล้ว หลังจากโหลดเสร็จ ฟังก์ชันจะสร้างอินสแตนซ์ของคลาสที่ระบุจากแอสเซมบลีโดยใช้ Reflection และเรียกใช้เมธอด Run สาธารณะแบบอะซิงโครนัส โดยส่งการเชื่อมต่อ Node ที่ใช้งานอยู่เป็นอาร์กิวเมนต์

เมธอด SendAsyncจะส่งข้อมูลแบบอะซิงโครนัสผ่านตัวจัดการซ็อกเก็ตและตรวจสอบว่าการส่งสำเร็จหรือไม่ โดยจะตัดการเชื่อมต่อโหนดหากการส่งล้มเหลว ในทำนองเดียวกัน เมธอด ReceiveAsyncจะดึงข้อมูลที่เข้ารหัสและจัดรูปแบบแล้วจากตัวจัดการซ็อกเก็ตที่อยู่เบื้องหลัง และส่งสตรีมไบต์ที่ประมวลผลแล้วกลับไปยังผู้เรียก หากการดำเนินการล้มเหลวหรือส่งค่าว่างกลับมา โหนดจะถูกตัดการเชื่อมต่อโดยอัตโนมัติเพื่อรักษาสถานะการเชื่อมต่อที่ถูกต้อง เมธอดเหล่านี้ร่วมกันให้การสื่อสาร C2 ที่เชื่อถือได้บนพื้นฐาน TCP พร้อมการจัดการการเชื่อมต่อแบบบูรณาการและการล้างข้อมูลอัตโนมัติระหว่างข้อผิดพลาดในการส่ง
นอกจากนี้ ข้อมูลเพย์โหลดจะถูกบีบอัดโดยใช้ API การบีบอัด RTL ดั้งเดิมของ Windows (RtlCompressBuffer) ก่อนการส่ง และคลายการบีบอัดโดยใช้ RtlDecompressBuffer เมื่อรับข้อมูล โดยอิงตามขนาดส่วนหัวดั้งเดิม ซึ่งช่วยเพิ่มประสิทธิภาพการถ่ายโอนในขณะที่รักษาความสมบูรณ์ของข้อมูล ในขณะที่การรักษาความปลอดภัยของข้อมูลจะถูกบังคับใช้โดยใช้การเข้ารหัส AES ซึ่งข้อมูลดิบจะถูกเข้ารหัสด้วยคีย์ร่วมและ IV คงที่ผ่าน CryptoStream เพื่อให้มั่นใจถึงการสื่อสารที่ปลอดภัยระหว่างการส่ง

เมธอดเพิ่มเติมภายในคลาสนี้จัดการการทำงานของเครือข่ายอื่นๆ รวมถึงการตัดการเชื่อมต่อซ็อกเก็ต (Disconnect) การสร้างการเชื่อมต่อย่อยรอง (ConnectSubSockAsync) การตรวจสอบสถานะการเชื่อมต่อที่ใช้งานอยู่ (Connected) และการรักษาความสัมพันธ์ของโหนดลูก (AddSubNode)
ฟังก์ชัน AddToStartupAdminสร้างงานที่กำหนดเวลาไว้ใน Windows ชื่อ“ XenoUpdateManager ”ซึ่งจะเรียกใช้ไฟล์ปฏิบัติการที่ระบุโดยอัตโนมัติทุกครั้งที่ผู้ใช้ล็อกอินเข้าสู่ระบบด้วยสิทธิ์สูงสุดที่มีอยู่ (ผู้ดูแลระบบ) ฟังก์ชันนี้จะสร้างคำจำกัดความของงานในรูปแบบ XML เขียนลงในไฟล์ชั่วคราว และใช้ schtasks.exe เพื่อลงทะเบียนงานใน Windows Task Scheduler หลังจากเรียกใช้คำสั่งแล้ว ฟังก์ชันจะตรวจสอบเอาต์พุตเพื่อพิจารณาว่างานถูกสร้างขึ้นสำเร็จหรือไม่ จากนั้นจึงส่งคืนผลลัพธ์

ฟังก์ชัน AddToStartupNonAdminจะเพิ่มไฟล์ปฏิบัติการลงในการเริ่มต้นระบบของ Windows สำหรับผู้ใช้ปัจจุบัน โดยการเขียนไฟล์นั้นลงใน คีย์รีจิสทรี HKCU\Software\Microsoft\Windows\CurrentVersion\Runเพื่อให้ไฟล์นั้นทำงานโดยอัตโนมัติเมื่อเข้าสู่ระบบโดยไม่ต้องใช้สิทธิ์ผู้ดูแลระบบ และจะส่งคืนค่าว่าการดำเนินการสำเร็จหรือไม่

ฟังก์ชัน GetAntivirusจะดึงข้อมูลโปรแกรมป้องกันไวรัสจากระบบโดยใช้ Windows Management Instrumentation (WMI) โดยการสอบถามคลาส AntivirusProduct ภายใต้ root\SecurityCenter2 ฟังก์ชันนี้จะรวบรวมค่า displayName ที่ได้จากการสอบถาม ซึ่งแสดงถึงผลิตภัณฑ์ป้องกันไวรัสที่ติดตั้งไว้และใช้สำหรับการระบุระบบ

ฟังก์ชัน RemoveStartupจะลบแอปพลิเคชันออกจากการเริ่มต้นระบบของ Windows โดยการลบรายการที่ตรงกันทั้งหมดออกจากทั้งงานที่กำหนดเวลาไว้ (โดยใช้ schtasks.exe) และคีย์รีจิสทรี HKCU\Software\Microsoft\Windows\CurrentVersion\Run โดยจะตรวจสอบสิทธิ์ผู้ดูแลระบบในการลบงานที่กำหนดเวลาไว้ก่อน จากนั้นจะสแกนและลบงานใดๆ ที่ชี้ไปยังเส้นทางไฟล์ปฏิบัติการที่กำหนด สุดท้าย จะลบรายการเริ่มต้นรีจิสทรีที่เกี่ยวข้องสำหรับผู้ใช้ปัจจุบัน

ฟังก์ชัน ถอนการติดตั้งจะลบกลไกการคงอยู่ของแอปพลิเคชัน จากนั้นจึงปิดโปรแกรมโดยอัตโนมัติ โดยจะเรียกใช้ RemoveStartup ก่อนเพื่อลบรายการเริ่มต้นใดๆ (งานที่กำหนดเวลาไว้หรือรีจิสทรี) ที่เกี่ยวข้องกับไฟล์ปฏิบัติการปัจจุบัน

โปรแกรมนี้จะเรียกใช้กระบวนการ cmd.exe ที่ซ่อนอยู่ โดยใช้คำสั่งที่ถอดรหัส Base64 (/C choice /CY /N /DY /T 3 & Del) ซึ่งจะรอสักครู่แล้วลบไฟล์ปฏิบัติการที่กำลังทำงานอยู่จากดิสก์ สุดท้าย ฟังก์ชันนี้จะบังคับปิดกระบวนการปัจจุบัน เพื่อให้แน่ใจว่าแอปพลิเคชันจะปิดตัวลงทันทีหลังจากทำการล้างข้อมูลเสร็จสิ้น
ความสามารถของซีโน-แรท
Xeno RAT เผยให้เห็นข้อมูลเชิงลึกที่สำคัญเกี่ยวกับพฤติกรรมการทำงานและความสามารถหลังการเจาะระบบ จากการวิเคราะห์โค้ด กิจกรรมที่สังเกตได้ และฟังก์ชันการทำงานที่มีอยู่ในโครงการโอเพนซอร์สบน GitHub มัลแวร์นี้แสดงให้เห็นถึงคุณสมบัติที่หลากหลายซึ่งมักเกี่ยวข้องกับโทรจันการเข้าถึงระยะไกลขั้นสูง (RAT)
- ตรวจสอบกิจกรรมของเหยื่อและรวบรวมข้อมูลการสอดแนมของโฮสต์
- สร้างการสื่อสารควบคุมและสั่งการ (C2) ที่เข้ารหัสลับโดยใช้โปรโตคอล TCP
- รองรับการสร้างอุโมงค์เครือข่ายโดยใช้พร็อกซี SOCKS5
- โหลดแอสเซมบลีภายนอกเข้าสู่หน่วยความจำแบบไดนามิกโดยใช้ Assembly.Load
- สามารถสั่งการโดยพลการจากผู้โจมตีจากระยะไกลได้
- มีฟังก์ชันการจัดการไฟล์ ได้แก่ การอัปโหลด การดาวน์โหลด และการลบไฟล์
- ทำการบันทึกการกดแป้นพิมพ์ การจับภาพหน้าจอ การตรวจสอบข้อมูลในคลิปบอร์ด และการเฝ้าระวังผ่านเว็บแคม/ไมโครโฟน
- ส่งข้อมูลสถานะและข้อมูลการเต้นของหัวใจเป็นระยะไปยังเซิร์ฟเวอร์ C2
- ใช้การเข้ารหัสและการบีบอัดข้อมูลเครือข่ายเพื่อขัดขวางการวิเคราะห์
- รักษาความต่อเนื่องโดยใช้ Scheduled Tasks และ Registry Run keys
- สามารถเพิ่มหรือลบตัวเองออกจากตำแหน่งการเริ่มต้นระบบของ Windows ได้
- ดำเนินการอย่างลับๆ เพื่อรักษาการเข้าถึงโดยไม่ได้รับอนุญาตในระยะยาว
- มีฟังก์ชันถอนการติดตั้งและลบข้อมูลอัตโนมัติเพื่อทำความสะอาดหลังการใช้งาน
หลักฐานทางโครงสร้างพื้นฐานและการระบุตัวผู้ก่อภัยคุกคาม:
จากการวิเคราะห์และประวัติการติดตามของเครือข่ายและ TPPs นี้ พร้อมหลักฐานทั้งหมดที่เราพบ เราได้จัดแคมเปญนี้ให้อยู่ในกลุ่ม SideCopy ด้วยระดับความเชื่อมั่นปานกลางถึงสูง ดังที่ได้กล่าวไว้ก่อนหน้านี้ ในระหว่างการวิเคราะห์โครงสร้างพื้นฐาน โดเมนการส่งมอบ abimj[.]edu[.]af ถูกแปลงเป็นที่อยู่ IP สองรายการ คือ 103.132.98.224 และ 103.132.98.226 ซึ่งทั้งสองรายการอยู่ในบล็อก 103.132.98.0/23 ที่เป็นของ AS58469 ซึ่งเป็นกระทรวงการสื่อสารและเทคโนโลยีสารสนเทศของอัฟกานิสถาน

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


เมื่อตรวจสอบเซิร์ฟเวอร์ C2 ของ RAT ที่ 185.235.137.106 เพิ่มเติม พบว่าเป็นโฮสต์ Windows ที่ใช้งาน HTTP, HTTPS และพอร์ต RDP ที่ไม่ใช่มาตรฐาน ซึ่งสอดคล้องกับเครื่อง C2 เฉพาะที่ผู้ดูแลระบบจัดการ

เซิร์ฟเวอร์นี้โฮสต์อยู่บน AS59711 (HZ Hosting Ltd) ผู้ให้บริการที่จดทะเบียนในประเทศบัลแกเรียและมีสำนักงานอยู่ที่แฟรงก์เฟิร์ต ซึ่งเคยมีการบันทึกไว้ในรายงานโครงสร้างพื้นฐานของ SideCopy มาก่อนแล้ว Seqrite.

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

ลำดับการโจมตี — LNK เรียกใช้ mshta.exe เพื่อดึง HTA จากระยะไกลผ่านเอนด์พอยต์ index.php — เป็นรูปแบบการโจมตีเฉพาะของ SideCopy ที่มีการบันทึกไว้อย่างสม่ำเสมอตั้งแต่ปี 2019 และยังคงเป็นหนึ่งในตัวบ่งชี้ที่น่าเชื่อถือที่สุดของกลุ่มนี้ การใช้ XenoRAT โดยเฉพาะยิ่งเสริมความแข็งแกร่งให้กับการระบุแหล่งที่มานี้ เนื่องจาก Seqrite ในเดือนธันวาคม 2024 Labs ยืนยันว่า SideCopy ได้นำ XenoRAT เวอร์ชันที่ปรับแต่งแล้วมาใช้เป็นส่วนหนึ่งของชุดเครื่องมือที่อัปเดตแล้วอย่างเป็นทางการ ซึ่งเป็นไปตามรูปแบบการนำ RAT แบบโอเพนซอร์สมาใช้ที่เคยเห็นมาก่อนกับ AsyncRAT การคงอยู่ในการเข้าถึงผ่านรีจิสทรีโดยใช้คีย์ Run ที่มีชื่อกระบวนการที่สะกดผิดเป็นแอปพลิเคชัน Windows ที่ถูกต้องตามกฎหมายนั้น สอดคล้องกับพฤติกรรมหลังการเจาะระบบของ SideCopy ที่ได้รับการบันทึกไว้เช่นกัน
ในระดับโครงสร้างพื้นฐาน โดเมนสำหรับการส่งมอบข้อมูลได้รับการจดทะเบียนผ่าน AFGNIC และจัดวางไว้บนบล็อก IP เดียวกันกับโครงสร้างพื้นฐานของรัฐบาลอัฟกานิสถานอย่างถูกต้องตามกฎหมาย ซึ่งเป็นเทคนิคการผสมผสานอย่างจงใจที่สอดคล้องกับรูปแบบที่ SideCopy ได้บันทึกไว้ RAT C2 บน HZ Hosting (AS59711) ยังยืนยันเรื่องนี้เพิ่มเติม เนื่องจากผู้ให้บริการรายเดียวกันนี้เคยปรากฏในคลัสเตอร์โครงสร้างพื้นฐานของ SideCopy ก่อนหน้านี้ที่เคยมีการติดตามมาแล้ว Seqriteที่น่าสังเกตคือ ความสอดคล้องกันของชื่อระหว่างเส้นทางการส่งมอบ (cloudiyaf) และชื่อเริ่มต้นที่กำหนดไว้ล่วงหน้าของ RAT (clouda) บ่งชี้ว่ามีผู้ดำเนินการเพียงรายเดียวที่จัดการโครงสร้างพื้นฐานทั้งสองระดับ ซึ่งเชื่อมโยงเลเยอร์การส่งมอบและเลเยอร์หลังการโจมตีเข้ากับผู้กระทำรายเดียวกัน
สรุป: เหตุใดจึงต้องดำเนินปฏิบัติการ XENOFISCAL?
ชื่อนี้ได้มาจากลักษณะเด่นสองประการของแคมเปญนี้โดยตรง นั่นคือ XenoRAT ซึ่งเป็นเครื่องมือเข้าถึงระยะไกลแบบโอเพนซอร์สที่ใช้เป็นเพย์โหลดสุดท้าย และ Fiscal ซึ่งสะท้อนถึงการกำหนดเป้าหมายอย่างแม่นยำไปยังเครือข่ายระดับจังหวัดของกระทรวงการคลังของอัฟกานิสถาน เมื่อรวมกันแล้วจึงเป็นชื่อรหัสเดียวที่สื่อถึงทั้งอาวุธและเหยื่อในคำเดียว การที่ผู้ก่อภัยคุกคามจงใจเลือกใช้เหยื่อล่อที่มีธีมทางการเงินกับกระทรวงการคลัง ควบคู่ไปกับ RAT ที่สามารถสอดแนมได้อย่างเงียบๆ ในระยะยาว ทำให้การจับคู่กันนี้หลีกเลี่ยงไม่ได้ XENOFISCAL ไม่ใช่แค่ชื่อ แต่เป็นการสรุปการปฏิบัติการทั้งหมดในแปดตัวอักษร
Seqrite ครอบคลุม:
- ลิงก์ดาวน์โหลด 50744.GC
- สคริปต์เน็ตโหลดเดอร์ 50745.GC
- โทรจัน.โหลดเดอร์ซีอาร์
- โทรจัน.YakbeexMSIL.ZZ4
- cld.script.trojan.1779477414
IOCs:
| ชื่อไฟล์ | SHA256 |
| รหัสไปรษณีย์ | 194B912C242604D6F9A79369F22338C58A13CE0CC2ED280CE505075808BC2F14 |
| LNK | 3B4194BDFE40D94031A94B30397FFD8A4B09D0A4057668E897B8BDCD1703DD01 |
| ไฟล์ PDF ล่อเป้า | DF9173A28C0B0B878C10A53D35CD7CE6F6ED66D207B6B7C4FF723721F1C027AB |
| ugayt.hta | A63E90EE57A1F213A8FE76EF1A6CFF5AE9ED7EBCEDA258431533825E648C0C67 |
| ไม่มีทาง.แบต | 5833917BD137804F5A021D2CB37ADFE5C4B7B67DBB06D59C3B9C5CF393835E45 |
| zuidrt.hta | 99127C8C67D90E2776BEEB85281F9C68399BF4567B07A6B638D68B760212E88D |
| เวย์บรอด.dll | 8F2D979EF33B2900351C94C7335275A9342C75189E1A901998E90A539E944A1A |
| Aotestpass.dll | 0019212F25EB04BBB33BB194879C095265DB7855D6003BDD777CF0CBB90EB772 |
| ซีโนแรท | 9AE3D785486022AF82EA92E51B26E3F55C1BBA88A7BE2AD9790F4240E8499D14 |
MITRE ATT&CK:
| ชั้นเชิง | ชื่อเทคนิค | รหัสเทคนิค |
| การเข้าถึงเบื้องต้น | การแนบไฟล์แบบสเปียร์ฟิชชิ่ง | T1566.001 |
| การกระทำ | การเรียกใช้พร็อกซีของ Trusted Developer Utilities: mshta | T1218.005 |
| ล่ามคำสั่งและสคริปต์: Windows Command Shell | T1059.003 | |
| ตัวแปลคำสั่งและสคริปต์: JavaScript | T1059.007 | |
| โมดูลที่ใช้ร่วมกัน | T1129 | |
| API ดั้งเดิม | T1106 | |
| การติดตา | คีย์การรันรีจิสทรี / โฟลเดอร์เริ่มต้น | T1547.001 |
| งานที่กำหนดเวลาไว้ | T1053.005 | |
| การเลื่อนระดับสิทธิ์ | งานที่กำหนดเวลาไว้ | |
| การหลบหลีกการป้องกัน | ไฟล์หรือข้อมูลที่ทำให้สับสน | T1053.005 |
| ถอดรหัสซอร์สโค้ดที่สร้างความสับสน/ถอดรหัสไฟล์หรือข้อมูล | T1027 | |
| การจัดเก็บ/การประมวลผลแบบไร้ไฟล์ | T1140 | |
| กำลังโหลดรหัสสะท้อนแสง | T1027.011 | |
| Living off the Land Binaries and Scripts (LOLBAS) | T1620 | |
| ไฟล์และโฟลเดอร์ที่ซ่อนอยู่ | T1218 | |
| การแทรกกระบวนการ / การประมวลผลในหน่วยความจำ | T1564.001 | |
| AMSI บายพาส | T1055 | |
| การลบตัวบ่งชี้บนโฮสต์: การลบไฟล์ | T1562.001 | |
| การค้นพบ | รีจิสทรีแบบสอบถาม | T1070.004 |
| การค้นพบข้อมูลระบบ | T1012 | |
| การค้นพบซอฟต์แวร์ | T1082 | |
| การค้นพบซอฟต์แวร์ความปลอดภัย | T1518 | |
| ชุด | Keylogging | T1518.001 |
| จับภาพหน้าจอ | T1056.001 | |
| ข้อมูลคลิปบอร์ด | T1113 | |
| จับภาพเสียง | T1115 | |
| การจับภาพวิดีโอ | T1123 | |
| ควบคุมและสั่งการ | Application Layer Protocol: โปรโตคอลเว็บ | T1125 |
| โปรโตคอลเลเยอร์ที่ไม่ใช่แอปพลิเคชัน | T1071.001 | |
| ช่องเข้ารหัส | T1095 | |
| พร็อกซี: พร็อกซีภายนอก | T1573 | |
| ความละเอียดแบบไดนามิก | T1090.002 | |
| การพัฒนาทรัพยากร | รับโครงสร้างพื้นฐาน: โดเมน | T1568 |
| โครงสร้างพื้นฐานที่ประนีประนอม | T1583.001 |


