มัลแวร์สายมิจ เขียนด้วย Python ขโมยข้อมูลผ่านทาง Telegram API ในโค้ดมีภาษาเวียดนาม แต่พบจากในไทย

by FatzQatz
27 June 2024 - 17:22

คนที่ติดตามข่าวสารด้าน cybersecurity น่าจะพอทราบกันดีว่ากลุ่มแฮกเกอร์จากประเทศเวียดนามมีความถนัดและให้ความสนใจในการใช้มัลแวร์เพื่อขโมยข้อมูล (InfoStealer) โดยมุ่งเป้าไปที่ข้อมูลจากเว็บเบราว์เซอร์ เช่น username และ password ที่บันทึกเอาไว้, cookies, และ web data เป็นต้น

ในครั้งนี้เราจะมาวิเคราะห์มัลแวร์สายมิจดังกล่าว โดยใช้ไฟล์จาก Any.Run ซึ่งถูกอัพโหลดจากประเทศไทย

ไฟล์ที่เราจะใช้ในการเริ่มต้นการวิเคราะห์เป็นไฟล์ประเภท Batch Script ชื่อ ‘List of Event Organizers…bat’ ซึ่งถูกอัพโหลดขึ้นไปบนเว็บไซต์ Any.Run โดยมีต้นทางมาจากประเทศไทย สิ่งที่น่าสนใจอย่างหนึ่งคือ ไฟล์ batch ดังกล่าวถูกระบุว่าเป็นไฟล์ที่ไม่อันตราย (No threats detected)

ภาพที่ 1 ไฟล์ batch ที่เราจะใช้เป็นจุดเริ่มต้นในการวิเคราะห์ครั้งนี้

ถ้าเราเปิดไฟล์ batch ดังกล่าวโดยโปรแกรมสำหรับแก้ไขข้อความ เช่น Notepad++ จะพบว่ามีแต่ภาษาต่างชาติที่ดูหน้าตาไม่เหมือนโค้ดแต่อย่างใด แต่ถ้าเราเปิดไฟล์ด้วยโปรแกรม hex editor จะพบว่ามีตัวอักษรภาษาอังกฤษที่พอจะมีหน้าตาเหมือน batch command อยู่บ้าง สิ่งที่เกิดขึ้นคือผู้โจมตีใช้เทคนิคที่เรียกว่า Byte Order Mark (BOM) เพื่อ obfuscate ไฟล์ batch ดังกล่าวเอาไว้

ภาพที่ 2 (ซ้าย) เปิดไฟล์โดยใช้ Notepad (ขวา) เปิดไฟล์เดียวกันแต่ใช้ HxD

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

ภาพที่ 3 โค้ดในไฟล์ batch หลังจาก deobfuscate แล้ว

ต่อมาถ้าเรา deobfuscate เทคนิคการกำหนดและแทนที่ค่าตัวแปรได้ เราก็จะพบว่าโค้ดที่แท้จริงถูกเอาไปซ่อนไว้ท่ามกลางคอมเม้นท์จำนวนมหาศาลเพื่อหวังตบตาเราอีกชั้นหนึ่ง

ภาพที่ 4 โค้ดที่แท้จริงซ่อนอยู่ท่ามกลางคอมเม้นท์

ทั้งนี้โค้ดในไฟล์ batch จะทำหน้าที่ในการดาวน์โหลดไฟล์อันตรายจาก GitHub ของผู้โจมตี จากนั้นจะเตรียมการจัดวางไฟล์ดังกล่าวเอาไว้ในโฟลเดอร์ต่าง ๆ โดยอาศัยการสั่งงานผ่าน Windows Commad Shell (CMD) และ PowerShell ซึ่งเป็นเทคนิคที่เรียกว่า Living Off The Land Binaries (LOLBins) โดยมีรายละเอียดการทำงานดังนี้

  • ดาวน์โหลดไฟล์ชื่อ Document.zip จาก hxxps://github[.]com/s123s1/s/raw/main/Document.zip จากนั้นทำการ extract ไปเก็บไว้ในโฟลเดอร์ %Public%\Document โดยไฟล์ที่ถูก extract มานั้น จะประกอบไปด้วยไฟล์ที่จำเป็นในการรัน Python รวมไปถึงไฟล์สคริปต์ชื่อ sim.py ที่เป็นตัวร้ายหลักในครั้งนี้
  • ทำการ execute ไฟล์ sim.py โดยใช้ python.exe จากในโฟลเดอร์ที่เตรียมไว้ก่อนหน้านี้
  • ดาวน์โหลดไฟล์ batch ชื่อ update1.bat จาก GitHub เดียวกัน แล้วจัดวางไฟล์เอาไว้ใน Startup Folder ซึ่งจะทำให้ไฟล์ batch ดังกล่าวถูกเรียกใช้งานทุกครั้งที่เครื่องคอมพิวเตอร์เริ่มต้นใช้งาน โดยไฟล์ batch ดังกล่าวจะทำหน้าที่ในการ execute ไฟล์สคริปต์ sim.py ทั้งนี้ไฟล์ update1.bat ก็ได้ถูก obfuscate เอาไว้ด้วยเทคนิค BOM เช่นเดียวกัน

ภาพที่ 5 ไฟล์ update1.bat และโค้ดที่แท้จริงหลังจากผ่านกระบวนการ deobfuscatge แล้ว

ภาพที่ 6 รายละเอียดภายในโฟลเดอร์ %Public%\Document

คราวนี้ถึงเวลามาดูรายละเอียดการทำงานของไฟล์สคริปต์ sim.py ซึ่งเป็น มัลแวร์สายมิจ ที่เราให้ความสนใจในครั้งนี้กัน โดยต่อไปนี้เราจะเรียกแทนไฟล์ sim.py ว่า มัลแวร์สายมิจ เพื่อให้สะดวกขึ้น โดยภาพรวมการทำงานของมัลแวร์สายมิจนี้ค่อนข้างเข้าใจง่ายคือ ขโมยข้อมูลจากเบราว์เซอร์ ขโมยข้อมูลที่เกี่ยวกับระบบปฏิบัติการ แล้วส่งข้อมูลไปให้ผู้โจมตีผ่านช่องทาง Telegram API

ภาพที่ 7 บางส่วนของโค้ดภายในไฟล์ sim.py จะเห็นว่ามีความพยายามในการวางคอมเม้นท์ไว้ที่ด้านบนเหมือนเคย

มัลแวร์สายมิจตัวนี้ ถูกสร้างมาให้มุ่งเป้าขโมยข้อมูลจากเบราว์เซอร์เจ้าดัง ๆ เกือบทั้งหมด ไม่ว่าจะเป็น Google Chrome, Mozilla Firefox, Microsoft Edge, Opera, Brave, และ Chromium โดยมีข้อมูลที่เป็นเป้าหมาย เช่น username และ password ที่บันทึกเอาไว้, ข้อมูล cookies, ข้อมูลกุญแจ Master Key ของ Chrome เป็นต้น นอกจากนี้มัลแวร์สายมิจยังสามารถขโมยข้อมูลที่เกี่ยวกับระบบปฏิบัติการได้อีกด้วย ยกตัวอย่างเช่น ชื่อเครื่องคอมพิวเตอร์, ชื่อ user ในระบบปฏิบัติการ, เวอร์ชันของระบบปฏิบัติการ, รายชื่อของโปรเซส, หมายเลขไอพี, และ ตำแหน่งทางภูมิศาสตร์ของหมายเลขไอพี

ภาพที่ 8 โค้ดในส่วนที่ใช้สำหรับเก็บรวบรวมข้อมูลเกี่ยวกับระบบปฏิบัติการจากเครื่องเหยื่อ

ข้อมูลที่มัลแวร์สายมิจเก็บรวบรวมมาได้ในตอนแรก จะถูกเก็บเอาไว้ภายในโฟลเดอร์ %TEMP% โดยตั้งชื่อโฟลเดอร์ในรูปแบบ ‘CountryCode+IP+Date’ จากนั้นข้อมูลดังกล่าวจะถูกบีบอัดเป็นไฟล์ ZIP โดยใช้ชื่อไฟล์เหมือนกัน

ภาพที่ 9 ตัวอย่างของข้อมูลมัลแวร์เก็บรวบรวมเอาไว้ เพื่อเตรียมส่งออกไปให้ผู้โจมตีในภายหลัง

ไฟล์ ZIP รวมถึงข้อมูลอื่น ๆ จะถูกส่งไปยัง Command and Control (C2) ของผู้โจมตีผ่านช่องทาง Telegram API ที่ hxxps://api.telegram[.]org/bot6878187208:AAFjqOqPfUbezs5GaBB-x99QhDkXaXsWgpg/sendDocument พร้อมกับหมายเลข Bot ID คือ -4200000448

ภาพที่ 10 ข้อมูล network traffic แสดงให้เห็นรายละเอียดภายใน POST request ขณะที่มัลแวร์กำลังส่งข้อมูลไปยัง Telegram C2 ของผู้โจมตี

การวิเคราะห์การทำงานของ มัลแวร์สายมิจ ก็จบแต่เพียงเท่านี้ แต่เราจะยังคงไม่หยุดอยู่แค่ตรงนี้เพราะเราจะเริ่มขั้นตอนต่อไปคือ การรวบรวมข้อมูลที่เกี่ยวกับผู้โจมตี (Threat Actor Profiling)

เราสามารถเริ่มต้นด้วยการเช็คค่า string ที่น่าสนใจจากภายในไฟล์ sim.py โดยสิ่งที่ค้นพบคือค่า string คำว่า ‘data lần thứ’ ซึ่งเป็นภาษาเวียดนาม ถูกนำมาใช้อยู่ภายในไฟล์ดังกล่าว ซึ่งก็พอจะทำให้เราคาดการณ์ได้ว่าผู้โจมตีน่าจะมีความเข้าใจในภาษาเวียดนามระดับหนึ่ง

ภาพที่ 11 ภาษาเวียดนามถูกพบใช้งานอยู่ภายในไฟล์ sim.py

นอกจากนี้เรายังสามารถหาข้อมูลบัญชีผู้ใช้งาน Telegram ของผู้โจมตีได้ โดยเราจะใช้ค่า Bot Token และ Bot ID ที่พบจาก URL ก่อนหน้านี้ ไปทำการสืบหาข้อมูล Username, User ID และการตั้งค่าอื่น ๆ ของบอทกัน โดยใช้เครื่องมือชื่อ tosint ที่พัฒนาโดย drego85 ซึ่งผลลัพธ์ที่ได้พบว่า username ที่ผู้โจมตีใช้คือ ThomasDante89 โดยมี ID คือ 7012036276 และยังมีข้อมูลอื่น ๆ อีก เช่น Bot Name และ Bot User ID ตามที่เห็นได้จากภาพด้านล่างนี้

ภาพที่ 12 ผลลัพธ์จาก tosint

หากยังจำกันได้ ผู้โจมตีมีการใช้ GitHub เพื่อฝากไฟล์ที่เป็นอันตรายเอาไว้ โดยบัญชี GitHub ดังกล่าวมีชื่อว่า s123s1 ทั้งนี้หากเราทำการตรวจสอบอย่างละเอียด จะพบว่ามีการเชื่อมโยงโดยตรงไปถึงบัญชี GitHub อื่น ๆ อีกจำนวน 2 รายการ ที่มีชื่อบัญชีคือ vtbg1 และ zzhshsss ซึ่งบัญชี GitHub ทั้งหมดนี้มีรูปแบบการตั้งชื่อ repository และ ชื่อไฟล์ ที่คล้ายกัน แม้กระทั่งเนื้อหาภายในไฟล์ก็คล้ายกัน ยกตัวอย่างเช่น ไฟล์ batch จากทั้ง 3 GitHub นี้มีการใช้เทคนิค BOM เหมือนกันทั้งหมด อีกทั้งบัญชีเหล่านี้ถูกสร้างขึ้นมาในห้วงเวลาที่ไล่เลี่ยกัน ดังนั้นจึงยืนยันได้ว่าบัญชี GitHub เหล่านี้ถูกสร้างโดยผู้โจมตีเดียวกัน

และเพื่อเป็นการตอบแทนในการทำงานหนักของผู้โจมตีท่านนี้ ผมได้ทำการ report ไปยัง GitHub เพื่อให้ทำการระงับบัญชีทั้งหมดแล้ว นอกจากนี้ผมยังได้เขียน Sigma rule ขึ้นมาเพื่อให้ผู้ที่สนใจนำไปใช้ในการตรวจจับ มัลแวร์สายมิจ นี้ได้ด้วยตัวเอง โดยท่านสามารถดูข้อมูลได้จากลิงค์ใน ‘ที่มา’

ภาพที่ 13 Timeline ความเคลื่อนไหวของบัญชี Github ทั้ง 3 รายการ

เราเริ่มต้นการวิเคราะห์จากไฟล์ batch เพียงอันเดียว จนทราบว่ามัลแวร์ทำงานยังไง มีเป้าหมายอะไร มีศักยภาพแค่ไหน ขโมยและส่งข้อมูลไปให้ผู้โจมตียังไง เราสืบย้อนไปจนรู้ชื่อบัญชี Telegram ของผู้โจมตี เราตามต่อไปยังบัญชี Github และสืบจนบัญชี Github ของผู้โจมตีเพิ่มเติม จากนั้นก็ยื่นเรื่องเพื่อขอให้ระงับการใช้งาน และสร้าง detection rule ขึ้นมาเพื่อตรวจจับมัลแวร์ตัวนี้ ซึ่งทั้งหมดนี้คือตัวอย่างหนึ่งของกระบวนการใช้ข้อมูลที่ได้จากการวิเคราะห์มัลแวร์ (Malware Analysis) มาต่อยอดเพื่อหาข่าวกรองทางไซเบอร์ (Threat Intelligence) และนำมาสร้างข่าวกรองที่ใช้ประโยชน์ได้จริง (Actionable Threat Intelligence)

ขอบคุณทุกท่านที่ทนอ่านจนจบ หวังว่าจะเป็นประโยชน์บ้างไม่มากก็น้อยครับ

ที่มา - FatzQatz’s Medium Blog Post, Sigma Rule

Blognone Jobs Premium