สรุปสั้น

นักวิจัยด้านความมั่นคงไซเบอร์ได้ค้นพบชุดแพ็กเกจ npm ที่ถูกฝังโทรจันจำนวน 14 รายการ ซึ่งปลอมตัวเป็นเครื่องมือช่วยคำนวณปฏิทินและสถิติการทำต่อเนื่องหรือ streak ที่ใช้งานได้จริงตามที่โฆษณาไว้ แต่ภายใต้เปลือกนั้นมีโค้ดที่ออกแบบมาเพื่อวางแบ็กดอร์บนลินุกซ์โดยอำพรางว่าเป็นไบนารีเร่งการคำนวณทางคณิตศาสตร์ สิ่งที่ถูกวางลงไปจริงคือบีคอน RedShell ของเฟรมเวิร์กสั่งการและควบคุมชื่อ RedC2 เวอร์ชัน 4.0 ซึ่งเชื่อมต่อกลับไปยังเซิร์ฟเวอร์ของผู้โจมตีเพื่อดำเนินกิจกรรมหลังการเจาะระบบต่อไป

จุดที่ทำให้ชุดแพ็กเกจนี้อันตรายกว่ากรณีทั่วไปคือกลไกการทำงาน ไม่มีการใช้ install hook ซึ่งเป็นสคริปต์ที่รันตอนติดตั้งและเป็นจุดที่เครื่องมือตรวจสอบส่วนใหญ่จับตาอยู่ แต่โค้ดอันตรายจะทำงานทันทีที่โมดูลถูกเรียกใช้งาน โดยไม่ต้องมีการเรียกฟังก์ชันใดจากแพ็กเกจนั้นเลย และแม้แพ็กเกจจะเข้ามาอยู่ในโครงการในฐานะ dependency ทางอ้อมที่ไม่มีใครเลือกเองก็ตาม การ import เพียงจุดเดียวที่ใดก็ได้ในกราฟการพึ่งพาก็เพียงพอให้เพย์โหลดถูกรัน

อีกประเด็นที่รายงานให้ความสำคัญคือตัวเฟรมเวิร์ก RedC2 เอง ซึ่งถูกขายเปิดเผยบนเว็บบอร์ดอาชญากรรมไซเบอร์ในราคา 99.99 ดอลลาร์ พร้อมชุดความสามารถระดับเดียวกับเครื่องมือทดสอบเจาะระบบเชิงพาณิชย์ และมีส่วนขยายที่ขับเคลื่อนด้วยโมเดลภาษาขนาดใหญ่ชื่อ Red Agent ทำหน้าที่แปลงคำสั่งภาษาคนให้กลายเป็นชุดคำสั่งของบีคอน ซึ่งลดกำแพงทางเทคนิคของผู้ใช้งานลงอย่างมีนัยสำคัญ

รายละเอียดข่าว

เว็บไซต์ The Hacker News รายงานเมื่อวันที่ 14 สิงหาคม 2569 อ้างอิงรายงานของ TrendAI ซึ่งเป็นหน่วยธุรกิจด้านความมั่นคงไซเบอร์สำหรับองค์กรของบริษัท Trend Micro ที่เผยแพร่เมื่อวันพฤหัสบดี ว่าได้ตรวจพบแพ็กเกจ npm ที่ถูกฝังโทรจันชุดหนึ่ง โดยทีมวิจัยอธิบายกลไกการทำงานไว้ว่า “เมื่อโมดูลถูกโหลด มันจะค้นหาไบนารีที่ผนวกมาด้วย ตั้งค่าให้ไฟล์นั้นรันได้ แล้วเปิดใช้งานเป็นโปรเซสเบื้องหลังที่แยกตัวออกไป” และเสริมว่า “ไม่จำเป็นต้องมีการเรียกฟังก์ชัน install hook ใด ๆ การ import เพียงจุดเดียวที่ใดก็ได้ในกราฟการพึ่งพา แม้จะเป็นการพึ่งพาทางอ้อม ก็เพียงพอที่จะทำให้เพย์โหลดถูกรัน”

Fourteen trojanized npm packages deliver the RedC2 4.0 RedShell Linux backdoor with an AI-assisted command and control layer

รายชื่อแพ็กเกจที่ถูกระบุมีดังนี้

แพ็กเกจเวอร์ชัน
streak-metrics-math1.0.0, 1.0.1
kit-map-vim1.0.0
streak-map-cache1.0.0
streak-map-kit1.0.0
map-streak-kit1.0.0
streak-cache-map1.0.0
streak-calc-metrics1.0.0
streak-calc-math1.0.0
streak-math-abz1.0.0
streak-metricsaz1.0.0
streak-math-metrics1.0.0
streak-metricazbd1.0.0
streak-metricsazb1.0.0
streak-kit-map1.0.0

สิ่งที่น่าสังเกตเกี่ยวกับแพ็กเกจชุดนี้คือมันทำงานได้จริงและให้ฟังก์ชันตามที่โฆษณาไว้ ซึ่งเป็นเหตุผลที่ทำให้ผู้พัฒนาที่ติดตั้งไปแล้วไม่มีทางสังเกตเห็นความผิดปกติจากการใช้งานตามปกติ แต่ใต้เปลือกของเครื่องมือจัดการวันที่นั้นมีโค้ดที่ออกแบบมาเพื่อวางแบ็กดอร์บนลินุกซ์ โดยอำพรางไฟล์ดังกล่าวว่าเป็นตัวเร่งการคำนวณที่เขียนด้วยภาษาเนทีฟ ชื่อไฟล์เปลี่ยนไปตามแต่ละแพ็กเกจ ได้แก่ math-core.bin, math-calc.bin, calc-math.dat, calc-cache.bin, calc.bin และ calc-mapping.bin โดยวางไว้ในโฟลเดอร์ dist/ โดยตรงหรือใต้ dist/internal/ แต่สิ่งที่บรรจุอยู่ข้างในเหมือนกันทั้งหมด นั่นคือบีคอน RedShell สำหรับลินุกซ์ของ RedC2 4.0 ที่ติดต่อกับเซิร์ฟเวอร์ปลายทางซึ่งเป็นได้ทั้งวินโดวส์และลินุกซ์

นาย Aliakbar Zahravi นักวิจัยด้านความมั่นคง อธิบายกลไกการส่งมอบไว้ว่า “การส่งมอบจัดการโดยไฟล์จุดเริ่มต้นของแพ็กเกจคือ dist/index.mjs ซึ่งทำหน้าที่เป็นตัวโหลดโทรจัน มันส่งออกฟังก์ชันช่วยจัดการวันที่ต่อไปตามปกติ แล้วเปิดใช้งานอิมแพลนต์ที่ผนวกมาทันทีที่โมดูลถูกโหลด โดยไม่ต้องมี install hook และไม่ต้องมีฟังก์ชันที่ถูกส่งออกใด ๆ”

ในส่วนของตัวเฟรมเวิร์ก RedC2 4.0 ถูกทำการตลาดบนเว็บบอร์ดอาชญากรรมไซเบอร์ในฐานะชุดเครื่องมือข้ามแพลตฟอร์มสำหรับวินโดวส์ แมคโอเอส และลินุกซ์ โดยให้ความสามารถด้านการสอดแนม การขโมยข้อมูลรับรอง การโหลดเพย์โหลด และการสั่งงานจำนวนมากพร้อมกัน เวอร์ชันนี้ถูกโฆษณาโดยผู้ไม่หวังดีที่ใช้ชื่อว่า “MarlboroMan” บนเว็บบอร์ด Hack Forums เมื่อต้นเดือนมิถุนายน 2569 โดยบรรยายว่าเป็นเฟรมเวิร์กสั่งการและควบคุมที่ “สร้างมาเพื่อการหลบเลี่ยง” ก่อนหน้านี้เวอร์ชัน 3.0 ถูกขายเมื่อเดือนมกราคมที่ผ่านมา ส่วนเวอร์ชัน 2.0 ออกมาตั้งแต่เดือนสิงหาคม 2568 บ่งชี้ว่าเฟรมเวิร์กนี้อยู่ระหว่างการพัฒนาอย่างต่อเนื่องมาอย่างน้อยหนึ่งปี โดยบีคอน RedShell สำหรับลินุกซ์เพิ่งถูกเพิ่มเข้ามาในเวอร์ชัน 4.0

วิธีการโจมตี

เมื่อบีคอนเวอร์ชันลินุกซ์ถูกวางลงบนเครื่องแล้ว มันจะเปิดเชลล์แบบโต้ตอบผ่าน /bin/sh และเปิดชุดคำสั่งเฉพาะสำหรับลินุกซ์ให้ผู้ควบคุมใช้งาน ครอบคลุมการสำรวจระบบ การจัดการไฟล์ การเก็บรวบรวมข้อมูลซึ่งรวมถึงกุญแจ SSH และข้อมูลรับรองจากเบราว์เซอร์ การสั่งรันโปรแกรม การฝังตัวให้อยู่รอดหลังรีบูต การรันไฟล์ ELF ในหน่วยความจำโดยไม่แตะดิสก์ การทำพร็อกซี SOCKS5 และการกระโดดต่อไปยังเครื่องอื่นในเครือข่าย จากนั้นจะสร้างการติดต่อกับเซิร์ฟเวอร์สั่งการและลงทะเบียนเครื่องที่ติดเชื้อด้วยการรวบรวมข้อมูลระบบพื้นฐานส่งไปในรูปของข้อความรายงานตัว ก่อนเข้าสู่วงจรรอรับคำสั่ง ประมวลผลผ่าน /bin/sh แล้วส่งผลลัพธ์กลับ

บีคอนเวอร์ชันวินโดวส์และแมคโอเอสมีขอบเขตความสามารถใกล้เคียงกัน ทั้งการจัดการไฟล์ การสำรวจเครื่องและเครือข่าย การไล่รายชื่อผู้ใช้ และการเก็บเกี่ยวข้อมูล แต่เวอร์ชันวินโดวส์ยังเพิ่มความสามารถข้ามการควบคุมบัญชีผู้ใช้หรือ UAC การตรวจหาซอฟต์แวร์แอนตี้ไวรัสและระบบตรวจจับบนอุปกรณ์ปลายทาง การรบกวนการทำงานของแอนตี้ไวรัส การรันในหน่วยความจำ และการเคลื่อนที่ด้านข้างในเครือข่าย ซึ่งเป็นความสามารถที่เวอร์ชันแมคโอเอสไม่มี

ในระดับเฟรมเวิร์ก RedC2 รองรับการเข้าถึงเทอร์มินัล การโอนไฟล์ การส่งเพย์โหลดเป็นขั้น การเก็บรวบรวมข้อมูล การควบคุมบีคอนหลายตัวพร้อมกัน การแสดงภาพเครือข่าย การทำอุโมงค์ระหว่างเครื่อง และการรัน Beacon Object Files แอสเซมบลี .NET และเชลล์โค้ดในหน่วยความจำ ซึ่งเป็นรายการความสามารถที่ทับซ้อนกับเครื่องมือทดสอบเจาะระบบเชิงพาณิชย์ที่ถูกใช้ในทางที่ผิดบ่อยครั้ง

ส่วนที่รายงานให้ความสำคัญเป็นพิเศษคือชั้นควบคุมที่ขับเคลื่อนด้วย AI RedC2 ขยายความสามารถด้วยส่วนขยายบรรทัดคำสั่งที่เรียกว่า RedC2 EXT และคอมโพเนนต์ที่ขับเคลื่อนด้วยโมเดลภาษาขนาดใหญ่ชื่อ Red Agent ซึ่งเปิดทางให้ผู้ควบคุมสั่งงานหลังการเจาะระบบที่ซับซ้อน เช่น การสำรวจเครือข่ายและการดึงข้อมูลรับรองออกมา ด้วยคำสั่งภาษาธรรมชาติ โดยนาย Zahravi ระบุว่า “RedC2 มาพร้อมผู้ช่วย AI ที่เรียกว่า Red Agent ซึ่งเป็นชั้นการรันคำสั่งที่มีโมเดลภาษาอยู่เบื้องหลัง ทำหน้าที่เปลี่ยนเจตนาที่เขียนเป็นภาษาคนให้กลายเป็นคำสั่งบีคอนของเฟรมเวิร์ก” ขณะที่ผู้ขายเรียกส่วนนี้ว่า “ระบบรันคำสั่งที่ขับเคลื่อนด้วย AI ซึ่งออกแบบมาเฉพาะสำหรับการทดสอบเจาะระบบ”

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

อีกจุดที่ควรบันทึกไว้คือความย้อนแย้งของฝั่งผู้ขาย บนเว็บไซต์บนอินเทอร์เน็ตปกติที่ใช้ชื่อแบรนด์ว่า Red Offsec ผู้ขายอ้างว่า “Red C2 คือเฟรมเวิร์กสั่งการและควบคุมหลายภาษาและหลายระบบปฏิบัติการ ออกแบบมาสำหรับวินโดวส์ ลินุกซ์ และแมคโอเอส เฟรมเวิร์กทั้งหมดถูกสร้างขึ้นโดยยึดการหลบเลี่ยงเป็นหลักการแกนกลาง” ขณะที่เงื่อนไขการให้บริการของเว็บไซต์เดียวกันกลับห้ามลูกค้าใช้เครื่องมือนี้เพื่อ “การเข้าถึงคอมพิวเตอร์โดยไม่ได้รับอนุญาต” “การแฮ็กโดยไม่ได้รับอนุญาตอย่างชัดแจ้ง” และ “การใช้ในทางที่ผิด แสวงประโยชน์ หรือสร้างความเสียหายแก่ระบบที่คุณไม่ได้เป็นเจ้าของหรือไม่ได้รับอนุญาตให้ทดสอบ” ซึ่งเป็นข้อความที่ขัดกับช่องทางจัดจำหน่ายจริงที่พบว่าอยู่บนเว็บบอร์ดอาชญากรรมไซเบอร์

ต้องระบุไว้ด้วยว่ารายงานรอบนี้ยังขาดข้อมูลสำคัญหลายอย่าง ไม่มีการเปิดเผยที่อยู่เซิร์ฟเวอร์สั่งการ ค่าแฮชของไบนารี หรือตัวชี้วัดการถูกบุกรุกใด ๆ ให้นำไปใช้ค้นหาย้อนหลัง ไม่มีการระบุยอดดาวน์โหลดของแพ็กเกจทั้ง 14 รายการซึ่งเป็นตัวเลขที่จำเป็นต่อการประเมินขนาดความเสียหาย ไม่มีข้อมูลว่าบัญชีที่เผยแพร่แพ็กเกจเหล่านี้เป็นใครหรือถูกยึดมาจากผู้ดูแลตัวจริงหรือไม่ และไม่มีการยืนยันสถานะว่าแพ็กเกจถูกถอดออกจากทะเบียนแล้วหรือยัง

ผลกระทบ

ผลกระทบที่ตรงที่สุดตกอยู่กับทีมพัฒนาที่ทำงานบนลินุกซ์และเซิร์ฟเวอร์ที่รันโครงการ Node.js เพราะรูปแบบการทำงานของแพ็กเกจชุดนี้ทำให้การป้องกันที่ทีมส่วนใหญ่พึ่งพาใช้ไม่ได้ผล นโยบายห้ามรันสคริปต์ตอนติดตั้งซึ่งเป็นมาตรการมาตรฐานที่หลายองค์กรบังคับใช้กับ CI นั้นไม่ช่วยอะไรเลยในกรณีนี้ เพราะการรันเกิดขึ้นตอนโมดูลถูกโหลด ไม่ใช่ตอนติดตั้ง เท่ากับว่าจุดตรวจที่วางไว้อยู่คนละตำแหน่งกับจุดที่โค้ดทำงานจริง

ประเด็นเรื่อง dependency ทางอ้อมยิ่งขยายผลกระทบออกไปอีกชั้น เพราะทีมที่ไม่เคยเลือกติดตั้งแพ็กเกจเหล่านี้เองก็อาจได้รับมันมาผ่านแพ็กเกจอื่นที่พึ่งพาต่อกันเป็นทอด ๆ ซึ่งเป็นรูปแบบเดียวกับที่ปรากฏในเหตุการณ์แพ็กเกจ Rust ถูกยึดเมื่อไม่กี่วันก่อนหน้านี้ ตามที่รายงานไว้ในโพสต์ 08/129 ที่โครงการซึ่งไม่เคยเรียกใช้ไลบรารีที่ถูกฝังโค้ดเลยก็ติดเชื้อได้ผ่านสายโซ่การพึ่งพา ความเหมือนกันของสองเหตุการณ์นี้ชี้ว่าจุดโจมตีที่ผู้ไม่หวังดีเลือกไม่ใช่ตัวไลบรารียอดนิยม แต่คือกลไกของระบบจัดการแพ็กเกจที่รันโค้ดให้โดยอัตโนมัติ

อีกมุมที่ควรพิจารณาคือสิ่งที่เพย์โหลดเลือกขโมย กุญแจ SSH และข้อมูลรับรองในเบราว์เซอร์บนเครื่องนักพัฒนาเป็นชุดข้อมูลที่มีน้ำหนักต่างจากข้อมูลของผู้ใช้ทั่วไป เพราะมันคือกุญแจที่เปิดเข้าสู่เซิร์ฟเวอร์ที่ใช้งานจริง ระบบควบคุมเวอร์ชัน และท่อส่งงานอัตโนมัติขององค์กร การยึดเครื่องนักพัฒนาได้หนึ่งเครื่องจึงมักไม่จบที่เครื่องนั้น แต่กลายเป็นจุดเริ่มต้นของการเข้าถึงระบบที่อยู่ปลายทางของท่อส่งงานทั้งหมด

สำหรับประเด็นเรื่องผู้ช่วย AI ในเฟรมเวิร์ก สิ่งที่เปลี่ยนไปในทางปฏิบัติไม่ใช่ความสามารถของเครื่องมือ เพราะคำสั่งที่ Red Agent สร้างขึ้นก็เป็นคำสั่งเดิมที่มีอยู่แล้วในเฟรมเวิร์ก แต่คือจำนวนคนที่ใช้เครื่องมือระดับนี้ได้ เมื่อผู้ซื้อไม่จำเป็นต้องเข้าใจลำดับคำสั่งของการปฏิบัติการหลังเจาะระบบ ก็ยังสั่งงานที่ซับซ้อนได้ด้วยการพิมพ์เจตนาลงไป กลุ่มผู้โจมตีที่เดิมถูกจำกัดด้วยทักษะจึงขยายกว้างขึ้น ในขณะที่ราคาของเครื่องมืออยู่ที่หลักร้อยดอลลาร์เท่านั้น

คำแนะนำ

สิ่งแรกที่ทีมพัฒนาควรทำคือตรวจสอบว่าโครงการของตนมีแพ็กเกจในรายชื่อทั้ง 14 รายการอยู่หรือไม่ โดยต้องตรวจจากไฟล์ล็อกที่บันทึกสายโซ่การพึ่งพาทั้งหมด ไม่ใช่ตรวจแค่รายการที่ประกาศไว้ในไฟล์ตั้งค่าโครงการ เพราะแพ็กเกจเหล่านี้อาจเข้ามาในฐานะการพึ่งพาทางอ้อม หากพบให้ถือว่าเครื่องหรือเซิร์ฟเวอร์ที่เคยรันโครงการนั้นถูกบุกรุกแล้ว ไม่ใช่แค่ถอนแพ็กเกจออกแล้วจบ

ในกรณีที่พบร่องรอย ขั้นตอนที่ต้องทำต่อคือหมุนเวียนเปลี่ยนความลับทั้งหมดที่เครื่องนั้นเข้าถึงได้ โดยเฉพาะกุญแจ SSH โทเคนของระบบควบคุมเวอร์ชัน ข้อมูลรับรองของท่อส่งงานอัตโนมัติ และข้อมูลรับรองที่เก็บอยู่ในเบราว์เซอร์ พร้อมตรวจสอบกลไกการฝังตัวที่อาจถูกวางไว้ในระดับผู้ใช้ ตลอดจนไล่ดูการเชื่อมต่อขาออกที่ผิดปกติจากเครื่องนักพัฒนาและเครื่องที่รันงานอัตโนมัติย้อนหลัง

ในเชิงป้องกันระยะยาว ควรทบทวนสมมติฐานว่าการปิด install script เพียงพอแล้วหรือไม่ เพราะกรณีนี้แสดงให้เห็นว่าไม่พอ มาตรการที่ตรงจุดกว่าคือการรันงานสร้างและทดสอบในสภาพแวดล้อมที่แยกออกจากกันและไม่มีสิทธิ์เข้าถึงความลับที่ไม่จำเป็น การจำกัดการเชื่อมต่อขาออกของสภาพแวดล้อมเหล่านั้นให้เหลือเฉพาะปลายทางที่อนุญาต และการตรึงเวอร์ชันของ dependency พร้อมทบทวนทุกครั้งที่มีการเปลี่ยนแปลง นอกจากนี้ควรระวังแพ็กเกจใหม่ที่มีชื่อคล้ายกันจำนวนมากและเพิ่งถูกเผยแพร่พร้อมกัน เพราะรูปแบบการตั้งชื่อที่วนอยู่กับคำเดิมไม่กี่คำอย่างที่พบในชุดนี้เป็นสัญญาณที่สังเกตได้ตั้งแต่ก่อนติดตั้ง

แหล่งอ้างอิง