สรุปสั้น
บริษัท ESET เผยแพร่รายงานเชิงเทคนิคเรื่อง MatchBoil ดาวน์โหลดเดอร์ภาษา C# ที่กลุ่มจารกรรมไซเบอร์ UAC-0099 ใช้โจมตีองค์กรในยูเครน จากการไล่ดูตัวอย่างที่คอมไพล์ระหว่างเมษายน 2567 ถึงเมษายน 2569 ESET พบว่ากลุ่มนี้ปรับปรุงมัลแวร์อย่างต่อเนื่องทั้งโครงสร้างโค้ด การอำพราง กลไกคงสิทธิ์ และการหลบการวิเคราะห์ จาก downloader ที่ติดต่อ C2 ครั้งเดียวแล้วจบ กลายเป็นตัวที่วนกลับไปถาม C2 ทุก 2 นาทีเพื่อดึง payload ใหม่หรือ payload ที่อัปเดตแล้ว payload หลักที่ส่งลงเครื่องคือ MatchWok แบ็กดอร์ภาษา C# ที่มีเฉพาะ UAC-0099 ใช้
เหยื่อที่ ESET เห็นในระบบตรวจจับของตนอยู่ในยูเครนทั้งหมด โดยกลุ่มเริ่มจากบริษัทขนส่งหลายแห่งช่วงกรกฎาคม-สิงหาคม 2568 ขยายไปยังบริษัทผู้ผลิตในเดือนธันวาคม 2568 และบริษัทภาคพลังงานในเดือนมิถุนายน 2569 ESET ประเมินด้วยความมั่นใจระดับกลางว่ากลุ่มนี้สอดคล้องกับผลประโยชน์ของรัสเซีย และมองว่า UAC-0099 อาจทำหน้าที่เป็นนายหน้าสิทธิ์เข้าถึงเริ่มต้นให้ Sandworm กลุ่มที่โยงกับหน่วยข่าวกรองทหารรัสเซียและอยู่เบื้องหลังการโจมตีเชิงทำลายโครงข่ายไฟฟ้ายูเครนหลายครั้ง ข่าวนี้ต่อจากเคส UAC-0099 ที่เคยรายงาน ทั้งการฉวยกลไกปลั๊กอิน Notepad++ (2026/07/253) และเทคนิค GuardBreaker (2026/09/006)
รายละเอียดข่าว
เว็บไซต์ Dark Reading รายงานเมื่อวันที่ 8 ตุลาคม 2569 อ้างรายงานของ ESET ที่เขียนโดยนาย Fernando Tavella ว่า MatchBoil อยู่ระหว่างการพัฒนามาตั้งแต่อย่างน้อยปี 2567 และดีขึ้นในทุกรุ่น แม้หน้าที่หลักยังเหมือนเดิมคือดาวน์โหลด payload เพิ่มเติม แต่รุ่นล่าสุดมีการอำพรางที่หนักขึ้น มีการตรวจ sandbox และเปลี่ยนกลไกคงสิทธิ์ไปมา ESET ระบุว่า “การตรวจสอบตัวอย่าง MatchBoil ตั้งแต่เมษายน 2567 ถึงเมษายน 2569 พบการปรับแก้หลายจุด ตั้งแต่โครงสร้างระดับโค้ดจนถึงการใช้ตัวอำพราง .NET Reactor ทั้งหมดเกิดขึ้นในเวลาอันสั้น” ซึ่งแสดงว่าผู้ควบคุมให้ความสำคัญกับเครื่องมือนี้ ทั้งเพื่อหลบการตรวจจับและเพื่อใช้เป็นแกนหลักของการโจมตีในอนาคต
ESET ระบุว่า UAC-0099 ปฏิบัติการมาตั้งแต่อย่างน้อยปี 2565 และ CERT-UA รายงานถึงกลุ่มนี้ครั้งแรกในเดือนมิถุนายน 2566 กลุ่มนี้เล็งหน่วยงานรัฐ สถาบันการเงิน และสื่อในยูเครน และยังมีเครื่องมืออีกตัวคือ LonePage ดาวน์โหลดเดอร์ PowerShell ทั้งนี้ Dark Reading ระบุว่ากลุ่มเริ่มปฏิบัติการปี 2566 ซึ่งต่างจากรายงานของ ESET เล็กน้อย ข้อมูลเหยื่อที่ใช้ประเมินมาจากระบบตรวจจับของ ESET เอง ร่วมกับตัวอย่าง 2 ตัวบน VirusTotal ที่ถูกอัปโหลดจากยูเครนในเดือนกุมภาพันธ์ 2569 ESET ไม่ได้ระบุจำนวนองค์กรที่ถูกเจาะ และไม่ได้อธิบายความสามารถของ MatchWok เพิ่มเติมในรายงานนี้
วิธีการโจมตี
ห่วงโซ่การติดเชื้อ
การโจมตีเริ่มจากอีเมล spear-phishing ที่มีลิงก์ไปยังไฟล์บีบอัดซึ่งภายในเป็น VBScript เหยื่อต้องถูกหลอกให้ดาวน์โหลดและรันสคริปต์เอง จากนั้นสคริปต์จะดาวน์โหลดและรัน MatchBoil พร้อมตั้งกลไกคงสิทธิ์ให้ ในรุ่นหลัง VBScript คงสิทธิ์ให้ตัวโหลด C# ที่ทำหน้าที่รัน MatchBoil อีกชั้น เมื่อเริ่มทำงาน MatchBoil เก็บข้อมูลเครื่องผ่าน WMI เช่น CPUID, หมายเลข BIOS, ชื่อผู้ใช้ และ MAC address เพื่อใช้ระบุตัวเหยื่อ ตรวจว่ามีโฟลเดอร์และไฟล์ payload อยู่แล้วหรือไม่ ถ้ามีจะหยุดทำงาน
การสื่อสารกับ C2 ใช้คำขอ HTTPS 3 ครั้ง ครั้งแรกรับค่าตัวเลขที่ต้องส่งกลับใน header ของคำขอที่สอง (ชื่อ Count ในปี 2567 และ Answer ตั้งแต่ปี 2568) ซึ่งอาจใช้เลือก payload หรือยืนยันตัวไคลเอนต์ ครั้งที่สองรับเนื้อหารูปแบบ HTML ที่ซ่อน payload แบบ hex ไว้ แล้วใช้ regex เช่น <script>(.*?)</script> ดึงออกมาถอดรหัสและติดตั้ง ครั้งที่สามรับข้อความไปบันทึกเป็นไฟล์คอนฟิก ข้อมูลเหยื่อส่งใน header SN และ User-Agent เป็นสตริงยาว 25 ตัวอักษร โครงสร้าง C2 ใช้ VPS โดยเฉพาะของ BitLaunch ซ่อนหลัง Cloudflare และใช้ใบรับรอง Let’s Encrypt ที่ไม่ใช้ซ้ำข้ามโดเมน
วิวัฒนาการแต่ละรุ่น
| ช่วงเวลา | การเปลี่ยนแปลงหลัก |
|---|---|
| ปี 2567 | อำพรางชื่อคลาส/เมธอดด้วยอักขระ Unicode ที่พิมพ์ไม่ได้ · เข้ารหัสสตริงด้วย XOR-and-shift · ทำงานครั้งเดียว · payload ที่ %LOCALAPPDATA%\DeviceMonitor · คงสิทธิ์ด้วย Run key DeviceMonitor + scheduled task Updates\CheckTask |
| ก.ค. 2568 | รันแบบ asynchronous Task · header SN เพิ่มหมายเลข BIOS, MAC และรุ่น/ผู้ผลิตเครื่อง · คงสิทธิ์ด้วย Run key อย่างเดียว · รัน payload ผ่าน Win32_Process |
| พ.ย.-ธ.ค. 2568 | เปลี่ยนไปใช้ Eziriz .NET Reactor · แสดงหน้าต่าง “daily planner” ปลอมเมื่อถูกรันเอง · ต้องมีอาร์กิวเมนต์ -auto · mutex Global\PlannerAssistant · เพิ่มการตรวจ sandbox · ติดต่อ C2 ทุก 2 นาที · payload ที่ %LOCALAPPDATA%\MeowCheck\MeowMeowProgramm.exe · scheduled task UpdateCheckers\DailyPlanner ทุก 7 นาที |
| ก.พ. 2569 | บางตัวอย่างเพิ่มอาร์กิวเมนต์ -plans หรือใช้ -renew และแสดงหน้าต่างโปรแกรมค้นข้อความด้วย regex เป็นฉากบังหน้า |
| เม.ย. 2569 | รุ่น DLL ตัวแรกรันผ่านตัวโหลด C# (CERT-UA เรียกว่า MatchBoil.V2) · ตรวจวันติดตั้ง OS ถ้าเก่ากว่าวันที่รันเกิน 10 วันจะหยุด · payload ที่ %LOCALAPPDATA%\SMTPClient\SMTPClientApplication.exe · scheduled task MailClient\Checker |
การหลบ sandbox
รุ่นปลายปี 2568 อ่าน Windows Event Log หา EventID 6013 ซึ่งบันทึกเวลา uptime ของระบบ แล้วแยกค่าด้วย regex ทั้งภาษาอังกฤษและภาษารัสเซีย ถ้าพบอย่างน้อย 3 เหตุการณ์ที่ uptime ตั้งแต่ 7,200 วินาทีขึ้นไป จึงถือว่าเป็นเครื่องจริง นอกจากนี้ยังตรวจ Debugger.IsAttached และหน่วงเวลาก่อนทำงาน ส่วนรุ่นเมษายน 2569 เพิ่มการเทียบวันติดตั้งระบบปฏิบัติการ ซึ่งเป็นการเล็งเครื่องวิเคราะห์มัลแวร์ที่มักถูกติดตั้งใหม่ก่อนรันตัวอย่าง ESET สรุปว่า “ตัวอย่างที่คอมไพล์หรือพบก่อนพฤศจิกายน 2568 ตรงไปตรงมาและวิเคราะห์ง่ายกว่ารุ่นใหม่มาก”
ผลกระทบ
การเปลี่ยนจาก downloader ครั้งเดียวมาเป็นตัวที่วนถาม C2 ทุก 2 นาที ทำให้ผู้โจมตีส่ง payload ใหม่ลงเครื่องเหยื่อได้ตลอดเวลาโดยไม่ต้องเจาะซ้ำ เมื่อประกอบกับข้อสันนิษฐานว่า UAC-0099 อาจส่งต่อสิทธิ์เข้าถึงให้ Sandworm การที่เป้าหมายขยับจากขนส่งและการผลิตมาถึงภาคพลังงานในเดือนมิถุนายน 2569 จึงเป็นสัญญาณที่ต้องจับตา เพราะ Sandworm มีประวัติโจมตีเชิงทำลายต่อโครงข่ายไฟฟ้ายูเครนมาแล้วหลายครั้ง แม้ ESET ยังไม่ได้ระบุว่าพบการโจมตีเชิงทำลายที่สืบเนื่องจากเคสเหล่านี้
ในเชิงการป้องกัน การสลับกลไกคงสิทธิ์ไปมาระหว่าง Run key และ scheduled task รวมถึงการเปลี่ยนชื่อไฟล์และโฟลเดอร์ในทุกรุ่น ทำให้กฎตรวจจับที่ผูกกับชื่อไฟล์เดียวล้าสมัยเร็ว จุดที่คงที่กว่าคือพฤติกรรม เช่น VBScript จากไฟล์บีบอัดในอีเมลที่ดาวน์โหลดไฟล์ปฏิบัติการ .NET และการอ่าน Event ID 6013 จากโปรเซสที่ไม่ใช่เครื่องมือดูแลระบบ
คำแนะนำ
- บล็อกหรือจำกัดการรัน VBScript (
wscript.exe/cscript.exe) บนเครื่องผู้ใช้ทั่วไป และกักไฟล์บีบอัดที่มาจากลิงก์ในอีเมลภายนอก - ตั้งกฎตรวจจับโปรเซสที่ใช้
EventLogReaderคิวรีSystem/EventID=6013และโปรแกรม .NET ที่ไม่มีลายเซ็นซึ่งต้องการอาร์กิวเมนต์อย่าง-auto,-plansหรือ-renew - ไล่ตรวจ scheduled task
Updates\CheckTask,UpdateCheckers\DailyPlanner,MailClient\Checker, Run valueDeviceMonitor, mutexGlobal\PlannerAssistantและโฟลเดอร์%LOCALAPPDATA%\DeviceMonitor,MeowCheck,SMTPClient - เฝ้าดูการเชื่อมต่อ HTTPS เป็นจังหวะทุก 2 นาทีไปยังโดเมนอายุน้อยที่อยู่หลัง Cloudflare หรือ VPS ของ BitLaunch
- องค์กรภาคพลังงานและโครงสร้างพื้นฐานที่มีความเชื่อมโยงกับยูเครน ควรถือว่าการพบ MatchBoil/MatchWok เป็นเหตุระดับสูง และตรวจหาการเคลื่อนที่ไปยังเครือข่าย OT ทันที
Indicators of Compromise (IoCs)
indicator เครือข่าย defang แล้ว (
[.]) ก่อนใช้งานต้องแปลงกลับ
ไฟล์ (SHA-1)
| SHA-1 | ชื่อไฟล์ | คำอธิบาย |
|---|---|---|
B6569B0050B864C4A0D32326954BC2D3852A3958 | PlannerLibrary.dll | MatchBoil DLL ที่เก็บตรรกะ C2 และการคงสิทธิ์ |
A926889BAB31F3C34663D18C05C4E862EF367028 | AnimalUpdater.exe | ดาวน์โหลดเดอร์ MatchBoil |
026F892630D0A4FE854A75984695BA99AF0022C4 | bootloader.exe | ดาวน์โหลดเดอร์ MatchBoil |
F886B615CB9E23EAD2718FF2A61155ACFB04CE9E | PlannerAssistantManager.exe | ดาวน์โหลดเดอร์ MatchBoil |
1E2C4AAC30EDFF86CD9A30BD08B199BCD3D0CCCE | PlannerAssistantManager.exe | ดาวน์โหลดเดอร์ MatchBoil (อาร์กิวเมนต์ -plans) |
C85D28F7D272CE2BBBFB9DAE71D21BF25B8D00FC | RegularExpressionExplorer.exe | ดาวน์โหลดเดอร์ MatchBoil (อาร์กิวเมนต์ -renew) |
6D72B56B86FD5ED9BD188C8C88CFC69476F836E7 | HelpersLibraries.dll | ดาวน์โหลดเดอร์ MatchBoil รุ่น DLL |
050926727CDD74F0B3A8A098E60B76D10FB06B14 | — | รุ่น DLL เม.ย. 2569 (ระบุในเนื้อรายงาน) |
เครือข่าย
| IP | โดเมน | ผู้ให้บริการ | พบครั้งแรก | คำอธิบาย |
|---|---|---|---|---|
| — | virtualdailyplanner[.]pro | — | 2025-11-10 | C2 หลัง Cloudflare |
| — | telemetry-conf[.]com | — | 2025-08-12 | C2 หลัง Cloudflare |
64.95.10[.]223 | flycloud-service[.]com | BL Networks | 2026-03-03 | C2 บน VPS |
64.95.13[.]210 | airarticlegenerate[.]com | BL Networks | 2025-05-07 | C2 บน VPS |
