สรุปสั้น
ผู้โจมตีที่เชื่อมโยงกับเกาหลีเหนือกำลังใช้วิธีใหม่ในการซ่อนเซิร์ฟเวอร์ที่ควบคุมมัลแวร์ โดยนำที่อยู่ของเซิร์ฟเวอร์สั่งการไปฝังไว้ในธุรกรรม Ethereum ที่ไม่มีการโอนมูลค่าใด ๆ ทำให้กิจกรรมทั้งหมดดูเหมือนการโอนคริปโตธรรมดามากกว่าจะเป็นสัญญาณของมัลแวร์ เทคนิคนี้ถูกพบในแพ็กเกจ npm ประสงค์ร้ายสองตัวคือ bianira-ui เวอร์ชัน 1.27.0 และ fluid-type-ui เวอร์ชัน 2.0.8 ซึ่งทั้งคู่ปลอมตัวเป็นปลั๊กอินของ Tailwind CSS ที่ถูกต้อง จึงสร้างความเสี่ยงต่อห่วงโซ่อุปทานสำหรับนักพัฒนาที่ติดตั้ง dependency โดยไม่ตรวจซอร์สโค้ดอย่างละเอียด
นักวิเคราะห์จาก OpenSource Malware เป็นผู้ค้นพบกิจกรรมนี้และตั้งชื่อเทคนิคว่า NullReceiver โดยระบุในรายงานที่แบ่งปันกับ Cyber Security News ว่าแคมเปญนี้ดูจะเชื่อมโยงกับปฏิบัติการ Contagious Interview ที่มีเกาหลีเหนือหนุนหลัง ซึ่งเล่นงานนักพัฒนาผ่านโครงการและแพ็กเกจที่ดูน่าเชื่อถือมาแล้วหลายครั้ง (เราเคยรายงานการปรับกลยุทธ์ล่าสุดของกลุ่มนี้ไว้ใน Contagious Interview เปลี่ยนเหยื่อล่อเป็นโฆษณาค้นหา ) สิ่งที่การค้นพบครั้งนี้สะท้อนคือภัยคุกคามในห่วงโซ่อุปทานซอฟต์แวร์กำลังตรวจจับได้ยากขึ้นเรื่อย ๆ เพราะแทนที่จะพึ่งโดเมนเว็บที่มองเห็นได้หรือที่อยู่เซิร์ฟเวอร์ตายตัว มัลแวร์สามารถดึงคำสั่งชุดใหม่จากบล็อกเชนสาธารณะที่ฝ่ายป้องกันไม่สามารถสั่งปิดหรือแก้ไขได้โดยง่าย
ข้อจำกัดสำคัญที่ต้องระบุคือนักวิจัยไม่ได้รันแพ็กเกจเหล่านี้จริง ข้อค้นพบทั้งหมดมาจากการวิเคราะห์แบบสถิตและการตรวจสอบบล็อกเชนแบบอ่านอย่างเดียว
รายละเอียดข่าว
เว็บไซต์ Cyber Security News รายงานเมื่อวันที่ 4 สิงหาคม พ.ศ. 2569 ว่า NullReceiver ทำงานด้วยการอ่านที่อยู่ผู้รับจากธุรกรรมขาออกล่าสุดของกระเป๋าเงิน Ethereum ที่ผู้โจมตีควบคุมอยู่ ที่อยู่ผู้รับนั้นไม่ใช่ปลายทางของการชำระเงินจริง แต่ถูกเลือกไบต์มาอย่างจงใจ เพื่อให้ค่าบางส่วนของมันแปลงกลับออกมาเป็นหมายเลข IP ของเซิร์ฟเวอร์สั่งการและควบคุม (command-and-control หรือ C2) ของมัลแวร์
ธุรกรรมที่ใช้ไม่มีมูลค่าการชำระเงินและไม่มีข้อมูล input ใด ๆ แนบมา จุดนี้เองที่ทำให้มันกลมกลืนไปกับกิจกรรมทั่วไปบนบล็อกเชน เพราะไม่มีการเรียกใช้สัญญาอัจฉริยะ ไม่มีสคริปต์ซ่อนอยู่ และไม่มีฟิลด์เพย์โหลดให้เครื่องมือด้านความปลอดภัยเข้าไปตรวจสอบ เมื่อถอดรหัสที่อยู่ผู้รับออกมาได้แล้ว เซิร์ฟเวอร์สั่งการก็จะชี้ระบบที่ติดเชื้อไปยังขั้นตอนถัดไปของปฏิบัติการ
การออกแบบนี้ต่างจาก EtherHiding ที่ผู้โจมตีเก็บข้อมูลคำสั่งไว้ใน calldata ของธุรกรรมหรือในสัญญาอัจฉริยะ (เราเคยรายงานการใช้เทคนิค EtherHiding ซ่อน C2 บนบล็อกเชนไว้ใน ช็อตคัต Windows อันตรายใช้ PowerShell และ Node.js เปิดทางรันโค้ดระยะไกล ) รายงานก่อนหน้านี้เกี่ยวกับมัลแวร์ EtherRAT และ EtherHiding แสดงให้เห็นว่าโครงสร้างพื้นฐานที่อิงบล็อกเชนช่วยให้ผู้โจมตีเปลี่ยนเส้นทางเครื่องที่ถูกยึดไปยังปลายทางใหม่ได้อย่างทนทาน แม้เซิร์ฟเวอร์แบบเดิมจะถูกบล็อกไปแล้ว
NullReceiver มีข้อจำกัดมากกว่าตรงที่บรรจุข้อมูลได้เพียงเล็กน้อย เช่น หมายเลข IP เท่านั้น แต่แลกมาด้วยต้นทุนการดำเนินการที่ถูกกว่า สังเกตเห็นบนเชนได้ยากกว่า และหลีกเลี่ยงจุดอ่อนของ EtherHiding ที่ใช้ที่อยู่ปลายทางซึ่งคาดเดาได้ ทำให้ฝ่ายป้องกันเฝ้าติดตามได้ตั้งแต่ต้น
วิธีการโจมตี
แพ็กเกจที่ได้รับผลกระทบใช้โค้ด Node.js ในการสอบถามบริการ remote procedure call (RPC) ของ Ethereum แบบสาธารณะ ตรวจดูธุรกรรมโอนล่าสุดของกระเป๋าเงินที่ผู้โจมตีควบคุม ถอดรหัสที่อยู่ผู้รับออกมา แล้วติดต่อไปยังเซิร์ฟเวอร์ที่ได้จากการถอดรหัสนั้น
สายโซ่การโจมตีทั้งหมดจึงเริ่มจากการที่นักพัฒนาติดตั้งแพ็กเกจปลอมที่ตั้งชื่อและวางตัวให้ดูเหมือนปลั๊กอินของ Tailwind CSS ซึ่งเป็นเครื่องมือที่ใช้กันแพร่หลายในงานพัฒนาส่วนหน้า ความน่ากังวลอยู่ที่ dependency ประสงค์ร้ายสามารถเข้าสู่เครื่องทำงานของนักพัฒนา ระบบสร้างซอฟต์แวร์ และตัวโครงการซอฟต์แวร์เองได้ผ่านคำสั่งติดตั้งที่ใช้กันเป็นกิจวัตร
ในเชิงการป้องกัน จุดที่มีประโยชน์คือเมื่อรู้แล้วว่ากระเป๋าเงินใดเป็นของผู้โจมตี ฝ่ายป้องกันสามารถติดตามธุรกรรมโอนของกระเป๋านั้น และระบุโครงสร้างพื้นฐานชุดใหม่ที่ถูกเข้ารหัสไว้ได้ก่อนที่ระบบซึ่งติดเชื้อจะเชื่อมต่อไปถึง
ผลกระทบ
สิ่งที่เทคนิคนี้เปลี่ยนไปไม่ใช่ความสามารถของมัลแวร์ แต่เป็นความทนทานของโครงสร้างพื้นฐานฝั่งผู้โจมตี การนำที่อยู่ C2 ไปฝากไว้บนบล็อกเชนสาธารณะทำให้การถอดถอนโดเมนหรือการแจ้งผู้ให้บริการโฮสต์ ซึ่งเป็นวิธีมาตรฐานในการตัดวงจร ใช้ไม่ได้อีกต่อไป ผู้โจมตีเพียงส่งธุรกรรมใหม่หนึ่งรายการก็เปลี่ยนปลายทางของเครื่องที่ติดเชื้อทั้งหมดได้ทันที
ในมุมการตรวจจับ ธุรกรรมที่ไม่มีมูลค่าและไม่มีข้อมูลแนบเป็นสิ่งที่แทบไม่มีใครมองว่าน่าสงสัย เครื่องมือวิเคราะห์บล็อกเชนส่วนใหญ่ให้ความสำคัญกับการไหลของเงินและการเรียกใช้สัญญาอัจฉริยะ ธุรกรรมเปล่าที่มีแต่ที่อยู่ผู้รับแปลก ๆ จึงหลุดจากตะแกรงไปได้ง่าย สัญญาณที่ใช้ได้จริงจึงย้ายไปอยู่ฝั่งเครือข่ายขององค์กรแทน นั่นคือการที่แอปพลิเคชันซึ่งไม่ควรยุ่งกับคริปโตกลับส่งทราฟฟิกไปยังผู้ให้บริการ RPC ของ Ethereum
สำหรับองค์กรที่ทำงานด้านพัฒนาซอฟต์แวร์ ความเสี่ยงตรงที่สุดคือเครื่องของนักพัฒนาและระบบ CI ซึ่งมักถือข้อมูลรับรองที่มีสิทธิ์สูง และการที่ผู้ก่อภัยที่มีรัฐหนุนหลังเลือกใช้ช่องทางนี้แทนการหาช่องโหว่ ยืนยันว่าการหลอกให้ติดตั้งของปลอมยังคงเป็นเส้นทางที่ได้ผลคุ้มค่ากว่าสำหรับพวกเขา
คำแนะนำ
- ตรวจสอบการอัปเดต dependency ก่อนนำขึ้นใช้งานจริง โดยเฉพาะแพ็กเกจที่อ้างตัวเป็นปลั๊กอินของเฟรมเวิร์กยอดนิยมแต่ไม่ได้มาจากผู้ดูแลตัวจริง
- สอบสวนทราฟฟิกขาออกที่วิ่งไปยังบริการ RPC ของบล็อกเชนโดยไม่มีเหตุผลรองรับ และเฝ้าระวังแอปพลิเคชันที่ตรวจดูที่อยู่ผู้รับของธุรกรรม
- แยกเครื่องที่เคยติดตั้งแพ็กเกจตามรายการ IoC ออกจากเครือข่าย และหมุนข้อมูลรับรองของนักพัฒนาที่อาจหลุดออกไป
- จำกัดการเข้าถึงผู้ให้บริการ RPC ของคริปโตเคอร์เรนซีที่ไม่จำเป็นออกจากเครือข่ายองค์กรและระบบสร้างซอฟต์แวร์
- เมื่อทราบกระเป๋าเงินของผู้โจมตีแล้ว ให้ติดตามธุรกรรมของกระเป๋านั้นเพื่อดักโครงสร้างพื้นฐานชุดใหม่ล่วงหน้า แทนการไล่บล็อกหมายเลข IP ทีละตัวหลังเกิดเหตุ
Indicators of Compromise (IoCs)
| ประเภท | ตัวบ่งชี้ | คำอธิบาย |
|---|---|---|
| แพ็กเกจ npm ประสงค์ร้าย | bianira-ui@1.27.0 | แพ็กเกจ npm ที่ถูกฝังโทรจันและใช้เทคนิค NullReceiver |
| แพ็กเกจ npm ประสงค์ร้าย | fluid-type-ui@2.0.8 | แพ็กเกจ npm ที่ถูกฝังโทรจันและใช้เทคนิค NullReceiver |
| กระเป๋าเงิน Ethereum | 0xa322e5f3d311d3080e6f0121063e9adc2490ef1a | กระเป๋าเงินที่ผู้โจมตีควบคุม ซึ่งมัลแวร์เข้าไปสอบถามข้อมูล |
| ที่อยู่ผู้รับที่ถูกเข้ารหัส | 0xa658863ea658863e68656c6c6f6970626f742121 | ที่อยู่ผู้รับที่ใช้เข้ารหัสหมายเลข IP ของ C2 พร้อมเครื่องหมาย helloipbot!! |
| หมายเลข IP ของ C2 | 166.88.134[.]62 | โครงสร้างพื้นฐานสั่งการและควบคุมที่ถอดรหัสได้ |
| ปลายทาง C2 | 166.88.134[.]62:443 | ปลายทางสั่งการและควบคุมผ่าน HTTPS |
| ปลายทาง C2 | 166.88.134[.]62:80 | ปลายทางสั่งการและควบคุมผ่าน HTTP |
| Blockchain RPC URL | hxxps://1rpc[.]io/eth | บริการ RPC ของ Ethereum ที่มัลแวร์เรียกใช้ |
| Blockchain RPC URL | hxxps://eth[.]drpc[.]org | บริการ RPC ของ Ethereum ที่มัลแวร์เรียกใช้ |
หมายเหตุ: หมายเลข IP และโดเมนถูกทำให้ปลอดภัย (defang) ด้วยการใส่วงเล็บเหลี่ยมโดยเจตนา เพื่อป้องกันการเปิดลิงก์หรือเชื่อมต่อโดยไม่ตั้งใจ ให้แปลงกลับเป็นรูปแบบปกติเฉพาะภายในระบบข่าวกรองภัยคุกคามที่ควบคุมได้ เช่น MISP, VirusTotal หรือ SIEM ขององค์กรเท่านั้น
