HeptaX: การเข้าถึง RDP ที่ไม่ได้รับอนุญาตเพื่อขโมยข้อมูล

CRIL พบแคมเปญการโจมตีทางไซเบอร์หลายขั้นตอน โดยเริ่มต้นจากไฟล์ ZIP ที่มีไฟล์ shortcut (.lnk) ที่เป็นอันตราย ถึงแม้ว่าจะยังไม่ทราบแหล่งที่มาของไฟล์ ZIP นี้ แต่คาดว่าถูกเผยแพร่ผ่านอีเมลฟิชชิง โดยจากชื่อของไฟล์ LNK คาดว่าแคมเปญนี้มีเป้าหมายเป็นอุตสาหกรรมด้านการดูแลสุขภาพ (Healthcare)

เมื่อเรียกใช้งาน ไฟล์ LNK จะทำการเรียกใช้คำสั่ง PowerShell ที่จะดาวน์โหลด และเรียกใช้งานเพย์โหลดเพิ่มเติม รวมถึงสคริปต์ PowerShell และไฟล์ BAT จากเซิร์ฟเวอร์ภายนอก สคริปต์เหล่านี้จะทำงานร่วมกันเพื่อสร้างบัญชีผู้ใช้งานใหม่บนระบบที่ถูกโจมตีพร้อมสิทธิ์ผู้ดูแลระบบ และแก้ไขการตั้งค่า Terminal Services (RDP) โดยลดข้อกำหนดการยืนยันตัวตน การตั้งค่านี้ทำให้ผู้ไม่หวังดีสามารถเข้าถึงระบบของเหยื่อผ่าน Remote Desktop (RDP) ได้ง่ายขึ้น เพื่อดำเนินกิจกรรมอันตรายเพิ่มเติม เช่น การขโมยข้อมูล, การติดตั้งมัลแวร์เพิ่มเติม หรือแม้แต่การตรวจสอบระบบ

นอกจากนี้ CRIL ยังพบโปรแกรมที่ไม่พึงประสงค์ชื่อ “ChromePass” ภายในโครงสร้างเครือข่ายของผู้ไม่หวังดี เครื่องมือแฮ็กนี้ถูกออกแบบมาเพื่อขโมยรหัสผ่านที่บันทึกไว้ในเบราว์เซอร์ที่ใช้ Chromium-based ซึ่งเพิ่มความเสี่ยงให้กับเหยื่อโดยการเปิดเผยข้อมูล credentials ที่ใช้ในการเข้าสู่ระบบ

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

การวิเคราะห์แคมเปญ

ในช่วง 12 เดือนที่ผ่านมา กลุ่มที่ยังไม่ได้ระบุชื่อนี้ได้กลับมาโจมตีอีกครั้งโดยใช้ธีมต่าง ๆ อย่างต่อเนื่อง ในขณะที่รูปแบบการโจมตียังคงเหมือนเดิม โดยแคมเปญดังกล่าวถูกติดตามในชื่อ "HeptaX" แคมเปญนี้อาศัยการใช้ PowerShell และสคริปต์ Batch เพื่อใช้ในการควบคุมระบบที่ถูกโจมตี โดยการวิเคราะห์ IP Address พบหลักฐานเพิ่มเติมที่เกี่ยวข้องกับผู้ไม่หวังดีเดียวกันที่ใช้ในแคมเปญต่าง ๆ

หนึ่งในไฟล์ที่โดดเด่นของแคมเปญนี้

202409_Resident_Care_Quality_Improvement_Strategies_for_Nursing_Homes_Enhancing_Patient_Satisfaction_and_Health_Outcomes.pdf.lnk
นอกจากนี้ แคมเปญเก่า ๆ ที่เชื่อมโยงกับกลุ่มผู้ไม่หวังดีนี้ในช่วงปีที่ผ่านมา ยังมีไฟล์ที่เป็นอันตรายดังนี้

  • SOW_for_Nevrlate.pdf
  • WebContentWriting_Handout.pdf
  • Blockchain_Trading_Website_Manager.docx
  • Project Description – PoC smart assistant Vhyro Project from jvope signature.pdf
  • Resume – professional sax, keys and guitar player with over 40 years experience working with own bands, accompanied world stars.pdf
  • dropshipping Elien project prposal-soft online service ventilization from xihu.pdf.lnk

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

การวิเคราะห์ทางเทคนิค

เมื่อเรียกใช้งานไฟล์ LNK จะดำเนินการเรียกใช้คำสั่ง PowerShell ซึ่งจะดาวน์โหลด และเรียกใช้งานเพย์โหลดจากเซิร์ฟเวอร์ภายนอก

ขั้นตอนแรก – bb.ps1

ในขั้นตอนเริ่มต้น สคริปต์ PowerShell ที่ดาวน์โหลดมาจะสร้าง URL หลักที่ใช้ในการส่งข้อมูล และดาวน์โหลดเพย์โหลดในขั้นตอนถัดไป สคริปต์ PowerShell ประกอบด้วยฟังก์ชันหลายตัว โดยฟังก์ชันแรกจะเรียกคืน unique identifier (UID) สำหรับระบบที่ถูกโจมตี UID นี้จะถูกดึงมาจากพาททรีจิสตรีเฉพาะ (HKEY_LOCAL_MACHINE\SOFTWARE\Wireless) หรือจากไฟล์ logs (id.log) ในไดเรกทอรี “C:\Users\Public\Documents” หากไม่มีไฟล์ใดอยู่ จะมีการสร้าง GUID ใหม่และบันทึกลงในไฟล์ id.log ที่ถูกสร้างขึ้นใหม่

หลังจากนั้น สคริปต์ PowerShell จะสร้างไฟล์ shortcut ในโฟลเดอร์ Windows Startup เพื่อสร้างการแฝงตัวบนระบบ (Persistence) ไฟล์ LNK ที่สร้างขึ้นมาใหม่นี้มีเนื้อหาตรงกับไฟล์ LNK ที่เป็นอันตรายต้นฉบับ

จากนั้น สคริปต์ PowerShell จะสร้าง URL โดยการเพิ่ม UID ที่สร้างขึ้นก่อนหน้านี้ไปยังเซิร์ฟเวอร์ภายนอก ด้วย request hxxp://157.173.104.153/up/get-command.php?uid=<UID> และใช้ WebClient เพื่อส่ง request เพื่อดึงคำสั่งจากเซิร์ฟเวอร์ เมื่อดำเนินการสำเร็จ มันจะตรวจสอบว่าการ response นั้นมีสตริง “autoreconnect” หรือไม่ หากมีสตริงนี้อยู่ สคริปต์ PowerShell จะรันโค้ดในเซสชันปัจจุบันโดยใช้ iex; แต่ถ้าไม่มี มันจะเรียกใช้โค้ดเป็น Schedule Task ใน PowerShell process แยกต่างหาก

หลังจากนั้น สคริปต์ PowerShell จะดาวน์โหลดเอกสารปลอมที่มีการใส่รหัสผ่านจากเซิร์ฟเวอร์ภายนอกที่กล่าวถึงข้างต้น และบันทึกเอกสารไว้ในไดเรกทอรีชั่วคราวของระบบ “C:\Users<Username>\AppData\Local\Temp” และจากนั้นจะเปิดเอกสารดังกล่าว

สุดท้าย สคริปต์ PowerShell จะดึงค่าจากรีจิสตรีสองค่าที่เกี่ยวกับการควบคุมบัญชีผู้ใช้ (UAC)

  • HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\ConsentPromptBehaviorAdmin ซึ่งควบคุมพฤติกรรมของหน้าต่างขออนุญาตสำหรับผู้ดูแลระบบ
  • HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\EnableLUA ซึ่งระบุว่า UAC ได้เปิดใช้งานหรือไม่

หากค่าทั้งสองนี้มีค่าเป็น 0 ซึ่งแสดงว่า UAC ถูกปิดใช้งาน หรือกำหนดค่าในระดับความปลอดภัยที่ต่ำกว่า สคริปต์จะดาวน์โหลด และเรียกใช้สคริปต์ PowerShell อีกตัว (b.ps1) จากเซิร์ฟเวอร์ภายนอก

ขั้นตอนที่สอง – b.ps1

สคริปต์ PowerShell ขั้นที่สองที่ดาวน์โหลดมาใหม่มีฟังก์ชันหลายตัว โดยบางฟังก์ชันมีลักษณะเหมือนกันกับฟังก์ชันในขั้นตอนแรก ฟังก์ชันหลักของสคริปต์นี้เน้นไปที่การประเมินการตั้งค่า User Account Control (UAC) ของระบบ โดยใช้การตรวจสอบรีจิสตรีเดียวกันที่ใช้ก่อนหน้านี้เพื่อตรวจสอบว่า UAC ได้เปิดใช้งานหรือไม่ และ ConsentPromptBehaviorAdmin ยังคงทำงานอยู่หรือไม่

หาก UAC ถูกปิดใช้งาน หรือพฤติกรรมของ ConsentPromptBehavior ถูกกำหนดค่าให้มีความปลอดภัยน้อยลง ฟังก์ชันจะส่งข้อความไปยังเซิร์ฟเวอร์ภายนอกเพื่อระบุว่า UAC ปิดอยู่ตามค่าเริ่มต้น: (“hxxp://157.173.104[.]153/up/index.php?uid=$uid&msg=UAC off in default!”)

หากการตั้งค่าทั้งสองถูกเปิดใช้งาน ฟังก์ชันจะเข้าสู่ลูป และพยายามปิด UAC โดยการตั้งค่า “ConsentPromptBehaviorAdmin” เป็น 0 ซ้ำ ๆ เมื่อดำเนินการสำเร็จ ฟังก์ชันจะส่งข้อความไปยังเซิร์ฟเวอร์ภายนอกเพื่อระบุว่า UAC ถูกปิดใช้งานโดยการบังคับ: (“hxxp://157.173.104[.]153/up/index.php?uid=$uid&msg=UAC force disabled!”)

หลังจากการหน่วงเวลาสั้น ๆ 300 มิลลิวินาที สคริปต์ PowerShell จะเรียกใช้ฟังก์ชัน schReg() ซึ่งจะดาวน์โหลดไฟล์ batch สามไฟล์จากเซิร์ฟเวอร์ภายนอกไปยังไดเรกทอรีชั่วคราวของระบบ ($env:TEMP) ไฟล์เหล่านี้มีชื่อว่า “k1.bat,” “scheduler-once.bat,” และ “k2.bat” หลังจากดาวน์โหลดแล้ว สคริปต์จะเรียกใช้งานไฟล์ “scheduler-once.bat” โดยใช้ cmdlet “Start-Process” ที่มีสิทธิ์ระดับสูง

ขั้นตอนที่สาม – scheduler-once.bat

ไฟล์ batch ที่ถูกเรียกใช้จะทำการคัดลอก “k1.bat” และ “k2.bat” จากไดเรกทอรี %temp% ไปยัง “C:\Windows\System32” โดยเปลี่ยนชื่อเป็น “sysmon.bat” และ “sysmon2.bat” ตามลำดับ จากนั้นจะลบไฟล์ต้นฉบับ “k1.bat” และ “k2.bat” ออกจากตำแหน่งชั่วคราว ถัดไปไฟล์ batch จะตรวจสอบ และลบ Scheduled Tasks ที่ชื่อว่า

  • Intel(R) Ethernet Connection 1219-LM
  • Intel(R) Ethernet2 Connection 1219-LM

หลักจากนั้น สคริปต์จะสร้าง scheduled task ใหม่ที่ชื่อว่า “Intel(R) Ethernet2 Connection 1219-LM” เพื่อเรียกใช้ “sysmon2.bat” สุดท้ายสคริปต์ “scheduler-once.bat”จะลบตัวเองเพื่อปกปิดร่องรอยจากระบบ

ขั้นตอนที่สี่ – sysmon2.bat

เมื่อ scheduled task ถูกเรียกใช้งานเพื่อดำเนินการไฟล์ “sysmon2.bat” มันจะเริ่มต้นด้วยการตรวจสอบ และลบ scheduled tasks ที่มีชื่อว่า

  • Intel(R) Ethernet Connection 1219-LM2
  • Intel(R) Ethernet2 Connection 1219-LM2

จากนั้น มันจะสร้าง scheduled task ใหม่ที่เรียกว่า “Intel(R) Ethernet2 Connection1219-LM2” เพื่อเรียกใช้ไฟล์ “sysmon.bat” ที่อยู่ในโฟลเดอร์ “CC:Windows\System32” โดยเฉพาะ ไฟล์ batch ที่เป็นขั้นตอนที่สามก่อนหน้านี้จะทำการตรวจสอบที่คล้ายกัน แต่ชื่อของ task จะแตกต่างกันเล็กน้อย

ขั้นตอนที่ห้า – Sysmon.bat

สคริปต์ sysmon.bat จะทำการดำเนินการต่าง ๆ ตามลำดับดังนี้

  • สร้างบัญชีผู้ใช้งานใหม่ชื่อ “BootUEFI”
  • ตั้งรหัสผ่านสำหรับบัญชีใหม่เป็น "123456!!!" และเปิดใช้งานบัญชี
  • เพิ่มบัญชี "BootUEFI" ลงในกลุ่ม Administrators เพื่อมอบสิทธิ์การเข้าถึงระดับผู้ดูแลระบบ
  • เพิ่มบัญชี "BootUEFI" ลงในกลุ่ม Remote Desktop Users เพื่ออนุญาตให้ใช้ Remote Desktop
  • ลบบัญชี "BootUEFI" ออกจากกลุ่ม Users เพื่อให้มีเฉพาะสิทธิ์ผู้ดูแลระบบ และการเข้าถึง Remote Desktop เท่านั้น
  • นอกจากนี้ ไฟล์ batch ยังทำการแก้ไขรีจิสทรีหลายรายการเพื่อเปิดใช้งาน Remote Desktop และลดฟีเจอร์ด้านความปลอดภัย ซึ่งรวมถึงการซ่อนผู้ใช้งาน "BootUEFI" จากหน้าจอเข้าสู่ระบบ และปรับการตั้งค่าของ Terminal Services (Remote Desktop) เพื่ออำนวยความสะดวกในการเชื่อมต่อระยะไกลได้ง่ายขึ้นโดยไม่ต้องมีการตรวจสอบความถูกต้องที่เข้มงวด
  • ไฟล์ batch จะเรียกใช้คำสั่ง PowerShell ที่หลีกเลี่ยงข้อจำกัดในการดำเนินการ และเพิ่มไดเรกทอรี System32 ซึ่งมีไฟล์ batch ที่เป็นอันตรายทั้งสามไฟล์ลงในรายการยกเว้นของ Windows Defender
  • สุดท้ายจะเริ่ม PowerShell process เบื้องหลังที่ดาวน์โหลด และเรียกใช้สคริปต์ PowerShell อื่นจากเซิร์ฟเวอร์ภายนอก (hxxp://157.173.104[.]153/up/a.ps1)

ขั้นตอนที่หก – a.ps1

สคริปต์ PowerShell ที่ดาวน์โหลดมาใหม่ "a.ps1" ทำงานคล้ายกับสคริปต์ในขั้นตอนแรก (bb.ps1) โดยจะสร้าง URL โดยการต่อ UID ที่สร้างขึ้นก่อนหน้านี้เข้ากับที่อยู่เซิร์ฟเวอร์ภายนอก เพื่อสร้างคำขอไปยัง "hxxp://157.173.104.153/up/get-command.php?uid=<UID>"

จากนั้นสคริปต์จะใช้ WebClient เพื่อส่งคำขอ และดึงคำสั่งจากเซิร์ฟเวอร์ เมื่อได้รับการตอบกลับ สคริปต์จะตรวจสอบว่ามีข้อความว่า "autoreconnect id" อยู่หรือไม่ หากพบข้อความนี้ สคริปต์ PowerShell จะเรียกใช้งานโค้ดในเซสชันปัจจุบันโดยใช้ iex; หากไม่พบข้อความจะเรียกใช้งานโค้ดเป็น Task เบื้องหลังใน PowerShell process ที่แยกต่างหาก โดยที่ในทั้งสองขั้นตอน ไม่ได้รับคำสั่งเฉพาะใด ๆ เช่น "autoreconnect" หรือ "autoreconnect id" ความแตกต่างหลักในสคริปต์ในขั้นตอนที่หกนี้คือมันมองหาข้อความ "autoreconnect id" แทนที่จะเป็นแค่ "autoreconnect"

ขั้นตอนที่เจ็ด – Server response PowerShell Script

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

สคริปต์นี้รวบรวมข้อมูลระบบที่มีความสำคัญ เช่น

  • ชื่อคอมพิวเตอร์ และชื่อผู้ใช้งาน
  • ดึงไฟล์ล่าสุดจากไดเรกทอรี: C:\Users<user profile>\AppData\Roaming\Microsoft\Windows\Recent
  • รับข้อมูลการกำหนดค่าของเครือข่ายโดยใช้คำสั่ง “ipconfig /all”
  • รายการผู้ใช้งานในเครื่อง (net user)
  • รายละเอียดผู้ใช้งานที่ล็อกอินอยู่ในขณะนั้น
  • ระบุกลุ่มผู้ใช้งาน local ที่เกี่ยวข้องกับผู้ใช้งานปัจจุบัน
  • ดึงรายการไดเรกทอรีที่ถูกยกเว้นใน Windows Defender
  • แสดงผลิตภัณฑ์ซอฟต์แวร์ป้องกันไวรัสที่ติดตั้งอยู่
  • บันทึก process ที่กำลังทำงานอยู่โดยใช้คำสั่ง “tasklist”
  • รวบรวมข้อมูลระบบโดยรวมโดยใช้คำสั่ง “systeminfo”
  • ข้อมูลทั้งหมดนี้ถูกบันทึกใน log file ที่ตั้งอยู่ใน “C:\Windows\Temp\OneDriveLog\OneDrive.log”

จากนั้นสคริปต์จะอ่านเนื้อหาของ log file, เปลี่ยนข้อมูลให้เป็นอาร์เรย์ของไบต์ และเข้ารหัสในรูปแบบ Base64 ข้อมูลที่เข้ารหัสนี้ พร้อมกับ UID จะถูกแนบส่งออกไปยัง URL “hxxp://157.173.104[.]153/up/index.php” และส่งผ่าน POST request หลังจากส่งข้อมูลสำเร็จ log file และไดเรกทอรีจะถูกลบเพื่อกำจัดร่องรอยของการรวบรวมข้อมูลทั้งหมด

การเข้าถึง Remote Desktop

ด้วยข้อมูลที่เก็บรวบรวมได้ และการปิด User Account Control (UAC) รวมถึงการสร้างบัญชีผู้ใช้งานใหม่ชื่อ “BootUEFI” ที่มีสิทธิ์ระดับผู้ดูแลระบบ และการลดความต้องการในการตรวจสอบสิทธิ์สำหรับ Terminal Services ผู้ไม่หวังดีสามารถเข้าถึง Remote Desktop ของเครื่องที่ถูกโจมตีได้อย่างง่ายดาย การเข้าถึงนี้ทำให้พวกเขาสามารถทำกิจกรรมต่าง ๆ บนเครื่องของเหยื่อได้ เช่น

  • ติดตั้งมัลแวร์เพิ่มเติม
  • ขโมยข้อมูลที่สำคัญ
  • ติดตามพฤติกรรมของผู้ใช้งาน
  • เปลี่ยนแปลงการตั้งค่าของระบบ
  • ใช้เครื่องนี้ในการทำพฤติกรรมอันตรายอื่น ๆ

นอกจากนี้ ยังพบแอปพลิเคชันที่ไม่พึงประสงค์ ซึ่งเป็นเครื่องมือแฮ็กชื่อว่า ChromePass ที่เชื่อมโยงกับโครงสร้างของเครือข่ายเดียวกันที่ “hxxp://157.173.104[.]153/up/Tool/ChromePass.exe” ซึ่งเครื่องมือนี้ถูกออกแบบมาเพื่อขโมยรหัสผ่านที่บันทึกไว้จากเบราว์เซอร์ที่ใช้ Chromium-based

คำแนะนำ

  • การโจมตีในขั้นตอนแรกอาจเกิดขึ้นจากอีเมลสแปม ดังนั้นจึงควรมีการติดตั้งระบบกรองอีเมลที่มีประสิทธิภาพเพื่อระบุ และป้องกันการส่งต่อไฟล์แนบที่เป็นอันตราย
  • ควรระมัดระวังเมื่อจัดการกับไฟล์แนบในอีเมลหรือลิงก์ โดยเฉพาะจากผู้ส่งที่ไม่รู้จัก ควรตรวจสอบตัวตนของผู้ส่งโดยเฉพาะหากอีเมลนั้นดูน่าสงสัย
  • ควรพิจารณาปิดการใช้งานไฟล์ shortcut (.lnk) ที่มาจากไฟล์แนบในอีเมล หรือกำหนดนโยบายที่ต้องการการยินยอมจากผู้ใช้งานก่อนที่จะดำเนินการเรียกใช้งานไฟล์ดังกล่าว
  • ควรพิจารณาปิดการใช้งาน หรือจำกัดการเรียกใช้งานภาษาโปรแกรม เช่น PowerShell และ cmd.exe บนเครื่องคอมพิวเตอร์ของผู้ใช้งาน และเซิร์ฟเวอร์ หากไม่จำเป็นต่อการใช้งานที่ถูกต้องตามวัตถุประสงค์
  • ควรดำเนินการกำหนดนโยบายที่ป้องกันไม่ให้มีการสร้างบัญชีที่มีสิทธิพิเศษโดยไม่ได้รับอนุญาต
  • ควรติดตามการเปลี่ยนแปลงของคีย์ในรีจิสตรีที่เกี่ยวข้องกับ User Account Control (UAC) อย่างสม่ำเสมอ เช่น “EnableLUA” และ “ConsentPromptBehaviorAdmin” การตรวจสอบคีย์เหล่านี้ช่วยในการระบุความพยายามในการหลีกเลี่ยง UAC ซึ่งจะเสริมความปลอดภัยของระบบจากการเปลี่ยนแปลงที่ไม่ได้รับอนุญาต
  • ควรเสริมสร้างความปลอดภัยให้กับ Remote Desktop Protocol (RDP) โดยการบังคับใช้ขั้ยตอนการยืนยันตัวตนที่เข้มงวด เช่น การยืนยันตัวตนแบบหลายปัจจัย (MFA), และการใช้การยืนยันตัวตนระดับเครือข่าย (NLA) การจำกัดการเข้าถึง RDP ให้เฉพาะที่อยู่ IP ที่เชื่อถือได้ และการใช้ VPN ยังช่วยลดความเสี่ยงได้อีกด้วย
  • ตั้งค่าการตรวจสอบระดับเครือข่ายเพื่อตรวจจับพฤติกรรมที่ผิดปกติ หรือการขโมยข้อมูลโดยมัลแวร์ และบล็อกพฤติกรรมที่น่าสงสัยเพื่อลดโอกาสในการเกิดการละเมิดข้อมูล

MITRE ATT&CK® Techniques

Indicators Of Compromise

ที่มา : cyble