สารบัญ:
- บทนำ
- ห่วงโซ่การติดเชื้อ
- แผนผังกระบวนการ
- แคมเปญที่ 1:
– ความพากเพียร
– ไฟล์แบตช์
– สคริปต์ PowerShell
– โหลดเดอร์
– เอ็กซ์เวิร์ม/เรมคอส - แคมเปญ 2
- สรุป
- ไอโอซี
- การตรวจจับ
- การโจมตีแบบไมเตอร์ TTP
บทนำ:
แคมเปญภัยคุกคามล่าสุดเผยให้เห็นถึงการพัฒนาการใช้ตัวโหลดแบบ BAT เพื่อส่งโทรจันการเข้าถึงระยะไกล ซึ่งรวมถึง XWorm และ Remcos แคมเปญเหล่านี้มักเริ่มต้นด้วยไฟล์ ZIP ซึ่งโดยทั่วไปจะโฮสต์บนแพลตฟอร์มที่ดูน่าเชื่อถือ เช่น ImgKit และได้รับการออกแบบให้ปรากฏเป็นเนื้อหาที่ถูกต้องตามกฎหมายเพื่อดึงดูดให้ผู้ใช้โต้ตอบด้วย
เมื่อแตกไฟล์แล้ว ไฟล์ ZIP จะประกอบด้วยสคริปต์ BAT ที่ถูกปกปิดไว้อย่างมิดชิด ซึ่งทำหน้าที่เป็นขั้นตอนเริ่มต้นของห่วงโซ่การติดเชื้อ ไฟล์ BAT เหล่านี้ใช้เทคนิคขั้นสูงเพื่อหลีกเลี่ยงการตรวจจับแบบคงที่ และมีหน้าที่ในการรันโปรแกรมโหลดที่ใช้ PowerShell ซึ่งจะแทรกเพย์โหลด RAT ลงในหน่วยความจำโดยตรง วิธีการนี้ช่วยให้สามารถรันแบบไร้ไฟล์ได้ ซึ่งเป็นแนวโน้มที่กำลังเติบโตในมัลแวร์ยุคใหม่ที่ต้องการเลี่ยงการป้องกันปลายทาง
พัฒนาการที่โดดเด่นในแคมเปญนี้คือการใช้ไฟล์ SVG เพื่อเผยแพร่สคริปต์ BAT ที่เป็นอันตราย ไฟล์ SVG เหล่านี้มี JavaScript ฝังอยู่ ซึ่งจะทริกเกอร์ลำดับการดำเนินการเมื่อแสดงผลในสภาพแวดล้อมที่มีช่องโหว่หรือฝังอยู่ในหน้าฟิชชิ่ง เทคนิคนี้เน้นย้ำถึงการเปลี่ยนแปลงไปสู่การใช้รูปแบบไฟล์ที่ไม่ใช่แบบดั้งเดิมสำหรับการส่งมัลแวร์ โดยใช้ประโยชน์จากความสามารถของสคริปต์เพื่อหลีกเลี่ยงการตรวจจับ
ห่วงโซ่การติดเชื้อ:

ต้นไม้กระบวนการ:

แคมเปญที่ 1:
ระหว่างการวิเคราะห์แคมเปญที่ 1 เราได้ระบุสคริปต์ BAT หลายตัวที่เกี่ยวข้องกับแคมเปญ ซึ่งบ่งชี้ถึงภัยคุกคามที่กำลังพัฒนา สคริปต์เหล่านี้บางส่วนอยู่ในระหว่างการพัฒนาอย่างต่อเนื่อง โดยมีโค้ดบางส่วนหรือโค้ดที่อยู่ในขั้นตอนการทดสอบ ขณะที่สคริปต์อื่นๆ ทำงานได้อย่างสมบูรณ์และสามารถดำเนินการโจมตีได้ครบทุกขั้นตอน รวมถึงการดาวน์โหลดเพย์โหลดและการดำเนินการ
รูปภาพด้านล่างนี้แสดงไฟล์ BAT สองไฟล์:
- วิธีที่ 1: ส่งโดยตรงเป็นไฟล์แนบผ่าน EML (ไฟล์อีเมล)
- วิธีที่ 2: ดาวน์โหลดผ่าน URL ที่โฮสต์บนแพลตฟอร์ม ImageKit
การเปลี่ยนแปลงในวิธีการส่งมอบนี้ชี้ให้เห็นว่าผู้ก่อภัยคุกคามกำลังทดลองใช้วิธีการที่แตกต่างกันเพื่อปรับปรุงอัตราความสำเร็จของการติดเชื้อและหลบเลี่ยงกลไกการตรวจจับ

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

ไฟล์ BATCH:
รูปด้านล่างแสดงสคริปต์ BAT ในรูปแบบที่ปกปิดไว้ร่วมกับเวอร์ชันที่ถอดการปกปิดออกแล้ว

สคริปต์ PowerShell:
ด้านล่างนี้คือภาพแสดงหน้าต่างกระบวนการของ PowerShell และอาร์กิวเมนต์บรรทัดคำสั่งที่ใช้ระหว่างการดำเนินการ ซึ่งให้ข้อมูลเชิงลึกว่ามัลแวร์ใช้ประโยชน์จาก PowerShell เพื่อส่งมอบเพย์โหลดในหน่วยความจำได้อย่างไร เราจะวิเคราะห์สคริปต์ PowerShell อย่างละเอียดในส่วนต่อไปนี้เพื่อทำความเข้าใจบทบาทของสคริปต์ในการปรับใช้ XWorm


คำสั่ง PowerShell นี้จะรันสคริปต์โดยการถอดรหัสสตริงที่เข้ารหัส Base64 และดำเนินการในหน่วยความจำ โดยใช้คำสั่ง -nop เพื่อหลีกเลี่ยงการโหลดโปรไฟล์ผู้ใช้ ใช้คำสั่ง -w hidden เพื่อซ่อนหน้าต่าง และ iex (Invoke-Expression) เพื่อรันเนื้อหาที่ถอดรหัสแล้ว
สคริปต์ถอดรหัส:

เราแบ่งสคริปต์ที่ถอดรหัสแล้วออกเป็นสองส่วน ในส่วนแรกของสคริปต์ PowerShell นั้น ออกแบบมาเพื่อค้นหาและเรียกใช้โค้ดที่ถูกเข้ารหัสซึ่งฝังอยู่ในไฟล์แบตช์ (aoc.bat) ที่อยู่ในไดเร็กทอรีโปรไฟล์ของผู้ใช้ปัจจุบัน ขั้นแรก มันจะดึงชื่อผู้ใช้จากตัวแปรสภาพแวดล้อมเพื่อสร้างเส้นทางแบบเต็มไปยังaoc.batจากนั้นมันจะอ่านทุกบรรทัดโดยใช้การเข้ารหัส UTF-8 และวนซ้ำผ่านแต่ละบรรทัด โดยเฉพาะอย่างยิ่งจะมองหาบรรทัดที่ขึ้นต้นด้วยคำนำหน้าความคิดเห็นสามตัว (:::) ตามด้วยสตริงที่เข้ารหัส Base64 เมื่อพบบรรทัดดังกล่าว มันจะพยายามถอดรหัสสตริง Base64 เป็นอาร์เรย์ไบต์ จากนั้นแปลงเป็นสตริง Unicode ที่กำหนดให้กับตัวแปร $ttzhae สตริงที่ถอดรหัสแล้ว ($ttzhae) นี้มีสคริปต์ PowerShell เพิ่มเติมอีกชั้นหนึ่ง ซึ่งจะถูกเรียกใช้ในหน่วยความจำโดยใช้ Invoke-Expression วิธีนี้ทำให้ผู้โจมตีสามารถฝังและเรียกใช้ตรรกะ PowerShell ที่เป็นอันตรายที่ซับซ้อนหรือหลายขั้นตอนได้อย่างลับๆ ภายในข้อความแสดงความคิดเห็นในไฟล์แบตช์ที่ดูเหมือนไม่มีพิษภัย ทำให้สามารถเรียกใช้งานได้อย่างเงียบๆ และไม่ต้องสร้างไฟล์

สคริปต์นี้จะปิดใช้งานกลไกความปลอดภัยหลักสองอย่างของ Windows ได้แก่ AMSI (Antimalware Scan Interface) และ ETW (Event Tracing for Windows) เพื่อหลีกเลี่ยงการตรวจจับ มันใช้การสะท้อน (reflection) ของ .NET และการสร้างตัวแทนแบบไดนามิก (dynamic delegate creation) เพื่อแก้ไขฟังก์ชันพื้นฐาน เช่น GetProcAddress, GetModuleHandle, VirtualProtect และ AmsiInitialize โดยใช้ฟังก์ชันเหล่านี้ มันจะค้นหาและแก้ไขฟังก์ชัน AmsiScanBuffer ในหน่วยความจำด้วยคำสั่ง (mov eax, 0; ret) ซึ่งเป็นการหลีกเลี่ยงการสแกนของ AMSI อย่างมีประสิทธิภาพ ในทำนองเดียวกัน มันจะปิดใช้งานการติดตามเหตุการณ์ (event tracing) โดยการเขียนทับส่วนเริ่มต้นของ EtwEventWrite ด้วยคำสั่ง return การแก้ไขในหน่วยความจำเหล่านี้ทำให้กิจกรรม PowerShell ที่เป็นอันตรายสามารถทำงานได้อย่างเงียบๆ โดยไม่ถูกบันทึกหรือสแกนโดยระบบ endpoint protection โซลูชั่น

ในส่วนที่สองของสคริปต์ PowerShell สคริปต์จะดึงชื่อผู้ใช้ปัจจุบันจากตัวแปรสภาพแวดล้อมและสร้างพาธไปยังไฟล์ชื่อaoc.batที่อยู่ในไดเร็กทอรีโปรไฟล์ของผู้ใช้ จากนั้นจะดำเนินการเรียกใช้เพย์โหลดที่ฝังอยู่เป็นแอสเซมบลี .NET ที่เข้ารหัสและบีบอัดซึ่งซ่อนอยู่ภายในไฟล์แบตช์นี้ สคริปต์จะค้นหาบรรทัดความคิดเห็นที่ขึ้นต้นด้วย :: ซึ่งมีสตริงเพย์โหลดที่เข้ารหัส Base64 สตริงนี้จะถูกแบ่งออกเป็นสองส่วนโดยใช้เครื่องหมายแบ็กสแลช (\) เป็นตัวคั่น แต่ละส่วนจะผ่านการถอดรหัส Base64 การถอดรหัส AES โดยใช้คีย์และ IV ที่กำหนดไว้ล่วงหน้า (ในโหมด CBC พร้อมการเติม PKCS7) ตามด้วยการบีบอัด GZIP ดังแสดงในรูปประกอบ ผลลัพธ์ที่ได้คือแอสเซมบลี .NET สองตัวแยกกัน ซึ่งทั้งสองตัวจะถูกโหลดและเรียกใช้โดยตรงในหน่วยความจำ แอสเซมบลีตัวแรกจะถูกเรียกใช้โดยไม่มีอาร์กิวเมนต์ใด ๆ ในขณะที่แอสเซมบลีตัวที่สองจะถูกเรียกใช้โดยส่ง '%*' เป็นอินพุตบรรทัดคำสั่งจำลอง

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

รถตักดิน
ตัวโหลดถูกออกแบบมาเพื่อหลบเลี่ยงการตรวจจับ ปิดการบันทึกเหตุการณ์ และรันเพย์โหลดแบบฝังตัวโดยตรงในหน่วยความจำ ทำได้โดยการถอดรหัสและรันไฟล์ปฏิบัติการ .NET ผ่าน Assembly.Load หรือรันเชลล์โค้ดที่ถอดรหัสแล้วโดยใช้ VirtualProtect และตัวแทน



ความสามารถของโหลดเดอร์:
- หลบเลี่ยงการตรวจจับ

- ปิดใช้งานการบันทึกเหตุการณ์

- แยกและดำเนินการโหลดที่ฝังไว้
ที่นี่ เราได้ระบุตัวโหลดหลายตัวที่ใช้เทคนิคการประมวลผลในหน่วยความจำเพื่อหลีกเลี่ยงการตรวจจับและคงสถานะไว้อย่างแนบเนียน ตัวโหลดบางตัวมีไฟล์ปฏิบัติการ .NET ที่เข้ารหัส ซึ่งจะถูกถอดรหัสขณะรันไทม์และประมวลผลโดยตรงจากหน่วยความจำโดยใช้ Assembly.Load ตามด้วย .EntryPoint เรียกใช้งานเพื่อให้ตัวโหลดสามารถรันโค้ดที่ได้รับการจัดการได้โดยไม่ต้องเขียนไฟล์ปฏิบัติการลงในดิสก์
ในทางตรงกันข้าม ตัวแปรอื่นๆ มีเชลล์โค้ดที่เข้ารหัสแทนที่จะเป็นไบนารี ตัวแปรเหล่านี้จะถอดรหัสเชลล์โค้ด แก้ไขการป้องกันหน่วยความจำโดยใช้ VirtualProtect เพื่อให้สามารถดำเนินการได้ จากนั้นจึงดำเนินการโดยใช้ตัวแทนที่สร้างขึ้นผ่าน Marshal.GetDelegateForFunctionPointer ดังแสดงในรูปด้านล่าง

- การติดตา

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

นอกจาก XWorm แล้ว มัลแวร์หลายตัวในแคมเปญเดียวกันยังใช้Remcosซึ่งเป็นโทรจันสำหรับเข้าถึงระยะไกล (RAT) ที่เป็นที่รู้จักกันอย่างแพร่หลายในเชิงพาณิชย์ โดยมีคุณสมบัติหลากหลาย เช่น การเข้าถึงเดสก์ท็อปจากระยะไกล การบันทึกการกดแป้นพิมพ์ การเรียกใช้คำสั่ง การจัดการไฟล์ การจับภาพหน้าจอ และการขโมยข้อมูล
แคมเปญที่ 2:
แคมเปญที่ 2 นำเสนอการเปลี่ยนแปลงที่สำคัญในการนำเสนอมัลแวร์โดยใช้ประโยชน์จากไฟล์ SVG (Scalable Vector Graphics) ที่ฝังด้วย JavaScript ซึ่งส่วนใหญ่ใช้ในการโจมตีแบบฟิชชิง ไฟล์ SVG ที่เป็นอันตรายเหล่านี้ถูกสร้างขึ้นมาให้ดูเหมือนไฟล์ภาพที่ถูกต้องตามกฎหมาย และอาจถูกแสดงผลในสภาพแวดล้อมซอฟต์แวร์ที่มีช่องโหว่ (เช่น โปรแกรมดูภาพหรือโปรแกรมรับส่งอีเมลที่ล้าสมัย) หรือฝังอยู่ในหน้าเว็บฟิชชิงที่ออกแบบมาเพื่อล่อลวงผู้ใช้ที่ไม่ทันระวัง ปัจจุบัน JavaScript ที่ฝังอยู่ในไฟล์ SVG ทำหน้าที่เป็นกลไกทริกเกอร์ โดยเริ่มต้นการดาวน์โหลดไฟล์ ZIP โดยอัตโนมัติเมื่อเปิดหรือดูตัวอย่างไฟล์ SVG
ไฟล์ ZIP ที่ดาวน์โหลดมานี้ประกอบด้วยสคริปต์ BAT ที่ถูกปกปิดไว้ ซึ่งทำหน้าที่เป็นเวกเตอร์การเข้าถึงเริ่มต้นของมัลแวร์ เมื่อสคริปต์ BAT ถูกเรียกใช้งานด้วยตนเองโดยผู้ใช้หรือผ่านกลยุทธ์ทางวิศวกรรมสังคม สคริปต์จะเริ่มต้นห่วงโซ่การติดเชื้อหลายขั้นตอนคล้ายกับที่พบในแคมเปญที่ 1 โดยเฉพาะอย่างยิ่ง สคริปต์ BAT จะเรียกใช้คำสั่ง PowerShell เพื่อถอดรหัสและเรียกใช้ไฟล์ปฏิบัติการ (EXE) โดยตรงในหน่วยความจำ โหลดเดอร์นี้รับผิดชอบในการถอดรหัสและปรับใช้เพย์โหลดสุดท้าย ซึ่งในแคมเปญนี้คือโทรจัน XWorm Remote Access (RAT)
การใช้ SVG เป็นกลไกในการส่งมอบถือเป็นวิวัฒนาการที่น่าจับตามองในวิธีการโจมตี เนื่องจากไฟล์ภาพมักถูกมองว่าไม่เป็นอันตรายและมักถูกเครื่องมือรักษาความปลอดภัยแบบดั้งเดิมยกเว้นไม่ให้ทำการตรวจสอบเนื้อหาเชิงลึก ด้วยการใช้ประโยชน์จากความสามารถในการเขียนสคริปต์ของ SVG ผู้ก่อภัยคุกคามสามารถหลบเลี่ยงการป้องกันแบบ Perimeter ได้อย่างมีประสิทธิภาพ และส่งมอบเพย์โหลดที่เป็นอันตรายในลักษณะที่ซ่อนเร้นและไร้ไฟล์
สรุป:
แคมเปญเหล่านี้เน้นย้ำถึงแนวโน้มที่กำลังเติบโตในการใช้สคริปต์ที่ซ่อนไว้ มัลแวร์แบบไร้ไฟล์ และรูปแบบไฟล์ที่ไม่ใช่แบบดั้งเดิม เช่น SVG เพื่อส่งโทรจันการเข้าถึงระยะไกล เช่น XWorm และ Remcos การฝังเพย์โหลดในไฟล์ BAT และเรียกใช้งานผ่าน PowerShell ช่วยให้ผู้โจมตีสามารถหลบเลี่ยงการป้องกันแบบคงที่ได้อย่างมีประสิทธิภาพ การเปลี่ยนจากการใช้ SVG ในการโจมตีแบบฟิชชิงมาเป็นการส่งมัลแวร์ยิ่งตอกย้ำถึงความจำเป็นในการตรวจจับพฤติกรรม การตรวจสอบเนื้อหา และการรับรู้ของผู้ใช้ที่ดีขึ้น เพื่อรับมือกับภัยคุกคามที่เปลี่ยนแปลงไปเช่นนี้
ไอโอซีเอส:
| MD5 | เนื้อไม่มีมัน |
| EDA018A9D51F3B09C20E88A15F630DF5 | ค้างคาว |
| 23E30938E00F89BF345C9C1E58A6CC1D | JS |
| 1CE36351D7175E9244209AE0D42759D9 | โหลด |
| EC04BC20CA447556C3BDCFCBF6662C60 | เอ็กซ์เวิร์ม |
| D439CB98CF44D359C6ABCDDDB6E85454 | รีมคอส |
การตรวจจับ:
โทรจัน.โหลดเดอร์ซีอาร์
โทรจัน.GenericFC.S29960909
MITRE ATTACK TTPs:
| ชั้นเชิง | รหัสและชื่อเทคนิค | รายละเอียด |
| การกระทำ | T1059.001 – ตัวแปลคำสั่งและสคริปต์: PowerShell | PowerShell ใช้ในการตีความคำสั่ง ถอดรหัสข้อมูล และเรียกใช้เพย์โหลด |
| T1106 – การดำเนินการผ่าน API | สคริปต์นี้ใช้ .NET API (เช่น Assembly.Load, Invoke) เพื่อดำเนินการโหลดข้อมูลในหน่วยความจำ | |
| การหลบหลีกการป้องกัน | T1027 – ไฟล์หรือข้อมูลที่ถูกบดบัง | เพย์โหลดได้รับการเข้ารหัส Base64 เข้ารหัส AES และบีบอัดเพื่อหลีกเลี่ยงการตรวจจับแบบคงที่ |
| T1140 – ถอดรหัส/ถอดรหัสไฟล์หรือข้อมูล | สคริปต์ถอดรหัสและแตกข้อมูลก่อนดำเนินการ | |
| T1055.012 – การฉีดกระบวนการ: การฉีดแอสเซมบลี .NET | โหลดเพย์โหลดลงในหน่วยความจำ | |
| T1036 – การปลอมตัว | เนื้อหาที่เป็นอันตรายถูกซ่อนอยู่ในไฟล์แบตช์ | |
| การติดตา | T1053 – งาน/กำหนดการ | สร้างความคงอยู่ผ่านเมนูเริ่มต้น |
| การเข้าถึงเบื้องต้น | T1204 – การดำเนินการของผู้ใช้ | การดำเนินการขึ้นอยู่กับการที่ผู้ใช้รันไฟล์แบตช์ด้วยตนเอง |
| ควบคุมและสั่งการ | T1132 – การเข้ารหัสข้อมูล | Base64 และการเข้ารหัสใช้ในการเข้ารหัสคำสั่งหรือเพย์โหลด |
| T1219 – ซอฟต์แวร์การเข้าถึงระยะไกล | Xworm ให้การเข้าถึงและควบคุมโฮสต์ที่ติดไวรัสจากระยะไกลแบบเต็มรูปแบบ | |
| การเข้าถึงข้อมูลประจำตัว | T1056.001 – การจับข้อมูลอินพุต: การบันทึกคีย์ | XWorm มีฟังก์ชันการบันทึกแป้นพิมพ์เพื่อขโมยข้อมูลอินพุตและข้อมูลประจำตัวของผู้ใช้ |
| การกรอง | T1041 – การกรองผ่านช่อง C2 | ข้อมูลที่ถูกขโมยจะถูกแยกออกผ่านช่อง C2 เดียวกับที่ Xworm ใช้ |
เขียนโดย:
ไวภาฟ บิลลาเด
รูมานา ซิดดิคี



