คนที่ติดตามข่าวสารด้าน 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) โดยมีรายละเอียดการทำงานดังนี้
ภาพที่ 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
Comments
ขอขอบคุณสำหรับบทความดี ๆ ครับ
ผมอ่านจนจบเลย
สุดยอดมากครับ อ่านจนจบเหมือนกัน
เทคนิคการทำที่ซับซ้อนมากแต่ จขกท ใช้รูปแบบภาษาที่ใช้เขียนอ่านสนุกมากครับ นับถือครับ ๆ
ขอบคุณครับ มีประโยชน์มาก
หน่วยงานของไทยน่าจะทำอะไรกันแบบนี้บ้าง
ผมแก้คำเล็กน้อย (โค๊ด/โค้ด, Github/GitHub) นะครับ รบกวนคอนเฟิร์มว่ามัลแวร์ตัวนี้คือ 50bb15bf64479c6b199e8fc9c4699df8 หรือเปล่าครับ จะได้อ้างอิงได้
lewcpe.com, @wasonliw
ขอบคุณที่แก้คำผิดให้ครับ ต่อไปจะปรับปรุงการเขียนให้ถูกต้องขึ้น
ส่วนรายละเอียดค่า hash ของ Indicators of Compromise (IOCs) มีรายละเอียดตามนี้ครับ
ชื่อไฟล์ - SHA256
List of Event Organizers....bat
dcc2b331d3f83771a48bf66b0845fcf865551197a05ab6ba57996d8a7082ef71
update1.bat
5b279e48eed115eccff837a37aa81217c8f9d02340e53922b68c8600d9e26cba
Document.zip
4ae7c33fdeaa89d78293ac4b43c4ca8a32bc57a7b7fc70674b10ff303c55a987
sim.py
4e143e11b8f4c5ec02c08912b5de0a42b8f394c4fcfbecb0219cfd3259f4f6da
ซับซ้อน กึ่ง 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 ได้เยอะอยู่