คนที่ติดตามข่าวสารด้าน 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 ขึ้นมาเพื่อให้ผู้ที่สนใจนำไปใช้ในการตรวจจับ มัลแวร์สายมิจ นี้ได้ด้วยตัวเอง โดยท่านสามารถดูข้อมูลได้จากลิงค์ใน ‘ที่มา’
ภาพที่ 13Timeline ความเคลื่อนไหวของบัญชี Github ทั้ง 3 รายการ
เราเริ่มต้นการวิเคราะห์จากไฟล์ batch เพียงอันเดียว จนทราบว่ามัลแวร์ทำงานยังไง มีเป้าหมายอะไร มีศักยภาพแค่ไหน ขโมยและส่งข้อมูลไปให้ผู้โจมตียังไง เราสืบย้อนไปจนรู้ชื่อบัญชี Telegram ของผู้โจมตี เราตามต่อไปยังบัญชี Github และสืบจนบัญชี Github ของผู้โจมตีเพิ่มเติม จากนั้นก็ยื่นเรื่องเพื่อขอให้ระงับการใช้งาน และสร้าง detection rule ขึ้นมาเพื่อตรวจจับมัลแวร์ตัวนี้ ซึ่งทั้งหมดนี้คือตัวอย่างหนึ่งของกระบวนการใช้ข้อมูลที่ได้จากการวิเคราะห์มัลแวร์ (Malware Analysis) มาต่อยอดเพื่อหาข่าวกรองทางไซเบอร์ (Threat Intelligence) และนำมาสร้างข่าวกรองที่ใช้ประโยชน์ได้จริง (Actionable Threat Intelligence)
ขอบคุณทุกท่านที่ทนอ่านจนจบ หวังว่าจะเป็นประโยชน์บ้างไม่มากก็น้อยครับ
ที่มา - FatzQatz’s Medium Blog Post , Sigma Rule
Comments
ขอขอบคุณสำหรับบทความดี ๆ ครับผมอ่านจนจบเลย
สุดยอดมากครับ อ่านจนจบเหมือนกัน
เทคนิคการทำที่ซับซ้อนมากแต่ จขกท ใช้รูปแบบภาษาที่ใช้เขียนอ่านสนุกมากครับ นับถือครับ ๆ
ขอบคุณครับ มีประโยชน์มาก
หน่วยงานของไทยน่าจะทำอะไรกันแบบนี้บ้าง
ผมแก้คำเล็กน้อย (โค๊ด/โค้ด, Github/GitHub) นะครับ รบกวนคอนเฟิร์มว่ามัลแวร์ตัวนี้คือ 50bb15bf64479c6b199e8fc9c4699df8 หรือเปล่าครับ จะได้อ้างอิงได้
lewcpe.com , @wasonliw
ขอบคุณที่แก้คำผิดให้ครับ ต่อไปจะปรับปรุงการเขียนให้ถูกต้องขึ้น
ส่วนรายละเอียดค่า hash ของ Indicators of Compromise (IOCs) มีรายละเอียดตามนี้ครับ
ชื่อไฟล์ - SHA256
List of Event Organizers....batdcc2b331d3f83771a48bf66b0845fcf865551197a05ab6ba57996d8a7082ef71
update1.bat5b279e48eed115eccff837a37aa81217c8f9d02340e53922b68c8600d9e26cba
Document.zip4ae7c33fdeaa89d78293ac4b43c4ca8a32bc57a7b7fc70674b10ff303c55a987
sim.py4e143e11b8f4c5ec02c08912b5de0a42b8f394c4fcfbecb0219cfd3259f4f6da
ซับซ้อน กึ่ง old school
ตัว window ก็ยังอุตส่าห์ทำงานกับ .bat แบบนี้ได้แฮะ(bug หรือ feature?)
ปล. ควรต้องแจ้งไปที่ Window Defender ด้วยมั๊ยครับ?
Byte Order Mark (BOM) เป็น feature การทำงานตามปกติครับ เพียงแค่ถูกผู้โจมตีหยิบมาใช้ประโยชน์ (abused) เฉกเช่นเดียวกับเทคนิค Right-To-Left Override (RTLO)
เราแก้ไขอะไรมันไม่ได้ครับ
ขอบคุณครับ เป็นบทความที่ดีมาก
ลองใช้ online virus scan Document.zip ขึ้น clean..อย่างนี้ถ้าติด ก็ไม่รู้ตัวเลยสิครับ?
เป็นคำถามที่ดีครับ และเพื่อตอบคำถามนี้ผมได้กลับไปทดสอบรันมัลแวร์สายมิจใน lab ดูอีกครั้ง แต่รอบนี้ผมทำการเปิดใช้งาน Microsoft Defender และได้ทำการอัพเดตฐานข้อมูลมัลแวร์ล่าสุดด้วย
ผลลัพธ์คือ Microsoft Defender ใน lab ของผมไม่สามารถตรวจจับอะไรได้ทั้งนั้นครับ (ณ 1 ก.ค.67), ไม่ว่าจะเป็น static-based หรือ behavior-based ก็ตาม
แต่ถ้าเครื่องคอมพิวเตอร์มีการติดตั้งใช้งาน EDR/XDR ก็อาจจะมีการตรวจจับได้อยู่ครับ
ยอดเยี่ยมครับ
เทคนิคนี้น่าจะใช้ขโมย crypto ได้เยอะอยู่