แฮกเกอร์ใช้วิธีการพรางโคด ซ่อนมัลแวร์ในไฟล์รูป PNG
พบแฮกเกอร์ใช้วิธีการพรางโคด ซ่อนโคดมัลแวร์ไว้ภายในไฟล์รูป PNG เพื่อปล่อยมัลแวร์
การซ่อนไฟล์มัลแวร์ หรือ Payload นั้นสามารถทำได้หลากวิธี ตั้งแต่การซ่อนผ่านทางการเปลี่ยนเป้าหมาย (Redirect) ตัว URL อย่างซับซ้อน, การใช้งานบริการคลังดิจิทัล หรือ Repo (Repository) ที่น่าเชื่อถือ และวิธีที่น่าจะกำลังมาแรงในปัจจุบันคือการซ่อนโค้ดไว้ในไฟล์ต่าง ๆ ที่ดูไม่มีพิ ษมีภัย เช่น ไฟล์รูปภาพ เป็นต้น ดังเช่นข่าวนี้
จากรายงานโดยเว็บไซต์ Cyber Security News ได้กล่าวถึงการตรวจพบแพคเกจ NPM ซึ่งเป็นแพคเกจ JavaScript ที่มีการซุกซ่อนมัลแวร์สำหรับการเข้าถึงระบบของเหยื่อจากระยะไกล หรือ RAT (Remote Access Trojan) แบบ .NET อยู่ด้วยการซ่อนโค้ดมัลแวร์ (Payload) ไว้ในไฟล์รูปภาพแบบ PNG ที่ดูไม่มีพิษมีภัยด้วยวิธีการแบบ Steganography (การพรางโค้ดอันตรายไว้ในไฟล์ธรรมดา) ซึ่งแพ็คเกจดังกล่าวนั้นจะแอบอ้างว่าเป็นแพ็คเกจชื่อว่า buildrunner-dev ซึ่งเป็นการตั้งชื่อให้คล้ายกับเครื่องมือพัฒนาอย่าง buildrunner และ build-runner ซึ่งทั้ง 2 โครงการนั้นถูกผู้พัฒนาละทิ้งลอยแพไปนานแล้ว แต่ชื่อก็คล้ายมากพอที่จะทำให้ผู้ที่ค้นหาเครื่องมือทั้ง 2 ตัวนี้ดาวน์โหลดผิดตัวได้
ซึ่งกลไกการทำงานของมัลแวร์ดังกล่าวนั้นจะเริ่มขึ้นหลังจากเหยื่อทำการติดตั้งเครื่องมือจากแพ็คเกจดังกล่าวผ่านทาง npm install แล้วตัว Hook ที่ทำงานหลังจากการติดตั้งอย่าง Postinstall Hook จะทำการรันสคริปท์จากไฟล์ init.js ขึ้นมาเพื่อทำการดาวน์โหลดไฟล์สคริปท์แบบ Btach ชื่อว่า packageloader.bat ลงมาจาก Codeberg ซึ่งเป็นบริการ Repo แห่งหนึ่งที่มีความน่าเชื่อถือ ซึ่งไฟล์นี้จะคัดลอกตัวเองอย่างเงียบ ๆ ลงไปยังโฟลเดอร์ Windows Startup ซึ่งเป็นการสร้างความคงทนบนระบบ หรือ Persistence ทำให้รับประกันได้ว่าตัวมัลแวร์จะทำงานใหม่ทุกครั้งที่มีการเปิดเครื่อง หรือ รีบูทเครื่องขึ้นมาใหม่
ไฟล์ Batch ดังกล่าวนั้นนอกจากจะมีความสามารถในการสร้าง Persistence แล่ว ตัวไฟล์ยังได้มีการสร้างความสับสนให้กับระบบป้องกัน (Obfuscation) มากถึง 7 ชั้น ด้วยโค้ดที่มากถึง 1,653 บรรทัด แต่มีโค้ดที่มีฟังก์ชันใช้งานจริงเพียง 21 บรรทัดเท่านั้น นอกจากนั้นยังมีการใส่ความคิดเห็น (Comments) แบบกระคำอย่างไม่เป็นระเบียบ, ตัวแปรแ บบขยะที่ไม่มีประโยชน์ (Junk Variables), ค่าสตริง (String) แบบ Base64 ปลอม ๆ ไว้เป็นจำนวนมาก เพื่อก่อกวนระบบการตรวจสอบแบบค่าคงที่ (Static Analysis) และการตรวจสอบด้วยมนุษย์ ให้เกิดความสับสนในการวิเคราะห์
และก่อนที่จะทำการรันโค้ด Payload ขึ้นมา ตัวมัลแวร์จะตรวจสอบก่อนว่ามีสิทธิ์ในการใช้งานระดับผู้ดูแลระบบ (Admin หรือ Administrator) หรือไม่ ถ้าไม่พบก็จะใช้งาน fodhelper.exe เพื่ออัปเกรดสิทธิ์ของตัวเองในขณะที่หลบเลี่ยงระบบป้องกันของ UAC (User Account Control) ไปในเวลาเดียว โดยไม่ให้ UAC แสดง Prompt ให้ผู้ใช้งานเลือกว่าจะให้สิทธิ์หรือไม่ หลังจากนั้นตัวมัลแวร์ก็จะทำการรันโค้ด PowerShell ผ่านทาง conhost.exe ขึ้นมาเพื่อตรวจสอบว่ามีแอนตี้ไวรัส หรือ เครื่องมือป้องกันภัยไซเบอร์ต่าง ๆ ติดตั้งอยู่บนระบบหรือไม่ ซึ่งในจุดนี้จะมีวิธีการที่นำไปสู่การติดตั้งไฟล์มัลแวร์ตัวสุดท้ายมากมายหลายทางตามแต่ที่ผลวิเคราะห์ตรวจพบ ซึ่งทางแหล่งข่าวไม่ได้ให้รายละเอียดเอาไว้
โดย Payload ตัวสุดท้ายนั้นจะเป็น Payload ของมัลแวร์แบบ RAT ที่มีชื่อว่า Pulsar ที่หลังจากติดตั้งเสร็จจะมีการแทรกตัวเองลงไปยัง Process ทั่วไปของ Windows ทำให้ถูกตรวจจับได้ยาก โดยโค้ดของ Payload ตัวนี้จะถูกซ่อนไว้ภายใน RGB (Red Green Blue) Pixel ของไฟล์รูปภาพสกุล PNG อยู่ 2 ตัวที่ถูกฝากไว้บนเว็บไซต์ ImgBB ซึ่งจะประกอบด้วย
“6b8owksyv28w.png” (41×41 px, 2.3 KB) ภายในจะมีโค้ดแบบ PowerShell ที่สามารถเล็ดลอดการป้องกันแบบ AMSI (Antimalware Scan Interface) ได้
“0zt4quciwxs2.png” (141×141 px, 67 KB) ภายในจะบรรจุโค้ดของมัลแวร์นกต่อ (Loader) แบบ .NET สำหรับใช้ในการปล่อย Payload ตัวจริงลงมา
ซึ่งการรันทั้ง 2 จะนำไปสู่การดาวน์โหลด และถอดรหัสโค้ดจากไฟล์รูปภาพอีกรูปหนึ่งที่ถูกฝากไว้ที่ hxxps://i.ibb[.]co/tpyTL2Zg/s9rugowxbq8i.png ซึ่งไฟล์ตัวที่ 3 นี้จะทำตัวเสมือนเป็นเซิร์ฟเวอร์ควบคุม (C2 หรือ Command and Control) ที่จะทำการปล่อยมัลแวร์ Pulsar ลงสู่เครื่องของเหยื่อในท้ายที่สุด
จากประสบการณ์ในการติดตามและวิเคราะห์ภัยคุกคามไซเบอร์ประเภทซ่อนโค้ดในไฟล์มีเดีย เช่น PNG ผมพบว่าการใช้ Steganography เป็นวิธีที่แฮกเกอร์นิยมมากขึ้น เพราะไฟล์รูปภาพแพร่หลายและดูเหมือนไม่เป็นภัย การซ่อนโค้ดในพิกเซล RGB ทำให้มัลแวร์สามารถเล็ดลอดผ่านระบบสแกนไวรัสทั่วไปได้ง่าย โดยเฉพาะเมื่อโค้ด PowerShell หรือ .NET Loader ที่ใช้ในมัลแวร์ RAT ได้ถูกเข้ารหัสหรือปรับแต่งให้สมบูรณ์แบบ เรื่องที่น่ากลัวคือเทคนิค Persistence ที่ใส่โค้ด Batch ลงในโฟลเดอร์ Windows Startup เพื่อให้มัลแวร์ทำงานทุกครั้งที่เริ่มระบบ ผมเคยเจอหลายกรณีที่โค้ดถูกทำ Obfuscation ซับซ้อนมาก ทำให้การวิเคราะห์ด้วยมือแทบจะเป็นไปไม่ได้ ต้องพึ่งพาเครื่องมือเฉพาะทางหรือ AI ช่วยวิเคราะห์ อีกทั้งฟีเจอร์เดียวที่น่าสนใจ คือ การขอสิทธิ์ Admin โดยใช้ fodhelper.exe ที่หลบเลี่ยง UAC Prompt ได้ ทำให้มัลแวร์ได้สิทธิ์สูงสุดโดยไม่แจ้งเตือนผู้ใช้ สำหรับผู้ใช้ทั่วไป ควรระวังการติดตั้งแพ็กเกจหรือซอฟต์แวร์จากแหล่งที่ไม่น่าเชื่อถือ และหมั่นอัพเดตแอนตี้ไวรัสรวมถึงใช้เครื่องมือความปลอดภัยที่สามารถตรวจจับพฤติกรรมแปลก ๆ ได้ นอกจากนี้ ควรระมัดระวังไฟล์รูปภาพหรือไฟล์อื่น ๆ ที่ได้จากแหล่งภายนอกโดยไม่ผ่านการตรวจสอบ เพราะอาจแฝงมัลแวร์หรือโค้ดอันตรายแบบนี้ได้ การเรียนรู้เทคนิค Steganography คร่าวๆ และเข้าใจถึงวิธีการที่แฮกเกอร์ใช้พรางโค้ด เป็นประโยชน์ในการป้องกันภัยคุกคามไซเบอร์ในยุคสมัยที่เทคโนโลยีก้าวหน้าเช่นนี้
