สรุปสั้น
ทีมวิจัยของบริษัท Binary Defense เปิดเผยว่าผู้โจมตีใช้ช่องโหว่ zero-day 2 รายการใน Citrix NetScaler ADC และ Gateway ได้แก่ CVE-2026-88771 และ CVE-2026-88772 (CVSS 9.5 ทั้งคู่ ซึ่งเว็บไซต์นี้รายงานไว้ในโพสต์ 2026/09/230
) เพื่อฝัง Platypus เฟรมเวิร์กควบคุมระยะไกลโอเพนซอร์สเขียนด้วยภาษา Go ที่ถูกดัดแปลงเพิ่มโมดูลยกระดับสิทธิ์ คงสิทธิ์ ลบร่องรอย และปลอมเวลาไฟล์ แล้วคอมไพล์ให้รันบน FreeBSD ซึ่งเป็นระบบปฏิบัติการของ NetScaler ตัวมัลแวร์ถูกตั้งชื่อเลียนแบบสคริปต์ Perl ของระบบ เช่น .ns_09343.pl ทั้งที่จริงเป็นไฟล์ ELF และซ่อนอยู่ในโฟลเดอร์ที่ผู้ดูแลคุ้นตา
ประเด็นสำคัญ คือ implant ที่ฝังไว้แล้วจะยังอยู่แม้องค์กรติดตั้งแพตช์ เพราะแพตช์ปิดช่องโหว่แต่ไม่ลบ web shell แบ็กดอร์ ข้อมูลรับรองที่ถูกขโมย หรือไฟล์ตั้งค่าที่ถูกแก้ไข ช่องโหว่ CVE-2026-88771 ยังมีลักษณะพิเศษคือคำสั่งที่ฝังไว้ถูกเขียนลงล็อกแล้วรันภายหลังโดยสคริปต์จัดการข้อผิดพลาด จึงอาจล่าช้าได้ถึง 24 ชั่วโมง ทำให้จับคู่คำขอล็อกอินที่น่าสงสัยกับกิจกรรมที่ตามมาได้ยาก Binary Defense ไม่ได้ระบุกลุ่มผู้โจมตี แต่ประเมินด้วยความมั่นใจต่ำว่ามีลักษณะคล้ายกลุ่มที่มุ่งหวังผลทางการเงินหรือนายหน้าขายสิทธิ์เข้าถึงเครือข่าย (initial access broker) ในยุโรปตะวันออกหรือกลุ่มประเทศ CIS
รายละเอียดข่าว
เว็บไซต์ Cyber Security News รายงานเมื่อวันที่ 13 ตุลาคม 2569 อ้างผลการสอบสวนของ Binary Defense ซึ่งตรวจอุปกรณ์ NetScaler 2 เครื่องของลูกค้าที่พบร่องรอยการโจมตีระหว่างการอัปเกรด เครื่องหนึ่งพบเพียงความพยายามโจมตี ส่วนอีกเครื่องมีหลักฐานว่าผู้โจมตีส่ง Platypus ที่สร้างขึ้นเองเข้ามาและน่าจะรันไปแล้ว Citrix ออกแพตช์ฉุกเฉินและ CISA เพิ่มทั้งสองช่องโหว่เข้าบัญชี Known Exploited Vulnerabilities แล้ว และ Unit 42 ของ Palo Alto Networks ก็ยืนยันว่าทั้งสองช่องโหว่ถูกใช้โจมตีจริง

ไทม์ไลน์ของ Binary Defense ชี้ว่าผู้โจมตีเตรียมโครงสร้างพื้นฐานไว้ล่วงหน้าหลายเดือน โดเมน white-guard[.]pro จดทะเบียนผ่าน REG.RU เมื่อ 4 มิถุนายน 2569 โดเมน .com เก่า 4 ชื่อถูกจดใหม่ที่ Namecheap เมื่อ 20 สิงหาคม ใบรับรองของ Platypus ชุดแรกปรากฏเมื่อ 2 กันยายน แคมเปญเริ่มเป็นที่สังเกตราว 24 กันยายน และ agent ที่พบถูกคอมไพล์เมื่อ 28 กันยายน ผู้โจมตีใช้เซิร์ฟเวอร์ร่วมกันทั้ง Platypus และ Havoc C2 Binary Defense ระบุด้วยว่า Platypus เคยถูกใช้โดยกลุ่ม CRYSTALRAY และ Volt Typhoon มาก่อน แต่ไม่ได้ใช้ข้อมูลนี้ระบุตัวผู้โจมตีในครั้งนี้
วิธีการโจมตี
CVE-2026-88771 (command injection ผ่านล็อก) ผู้โจมตีที่ไม่ต้องยืนยันตัวตนส่งค่าที่สร้างขึ้นให้เลียนแบบข้อความแครชของ NetScaler Packet Processing Engine (NSPPE) พร้อมฝังคำสั่งเชลล์ไว้ เช่น ในช่องชื่อผู้ใช้ของคำขอ POST ไปยัง /nf/auth/doAuthentication.do NetScaler บันทึกข้อความลงล็อก จากนั้นสคริปต์จัดการข้อผิดพลาด ns_monuploadd_err.pl อ่านข้อมูลในล็อกกลับมาเป็นอินพุตของคำสั่งเชลล์ ทำให้คำสั่งที่ฝังไว้ถูกรันด้วยสิทธิ์ root ในรอบถัดไปที่สคริปต์ทำงาน ซึ่งอาจห่างได้ถึง 24 ชั่วโมง ปลายทางใดที่บันทึกข้อมูล HTTP ที่ผู้โจมตีควบคุมได้ก็ไปถึงจุดนี้ได้เช่นกัน ผู้โจมตียังแบ่งการส่ง payload เป็น 2 ส่วน โดยใส่ payload จริงเข้ารหัส base64 ในส่วนหัว User-Agent ขึ้นต้นด้วย INDEX: ซึ่งถูกเขียนลง httpaccess.log แล้วใช้คำสั่งสั้นในช่องชื่อผู้ใช้ค้นหา INDEX: ในล็อก ถอดรหัส แล้วส่งให้เชลล์รัน
CVE-2026-88772 (DTLS memory overflow) กระทบ VPN virtual server ที่เปิด DTLS ซึ่งเป็นค่าเริ่มต้น อาจนำไปสู่การรันโค้ดหรือทำให้บริการล่ม
หลังเจาะได้ ผู้โจมตีใช้คำสั่ง curl ... | sh ดาวน์โหลดสคริปต์ติดตั้งจาก entretiensol[.]com แล้วติดตั้ง Platypus ไว้ใต้ /var/tmp/, /netscaler.local/ และ /var/core/ ในชื่อไฟล์อย่าง .ns_09343.pl และ ns_827664.pl ตัว implant สั่งงานผ่านเทอร์มินัลระยะไกล อ่านเขียนไฟล์ อัปเดตตัวเอง โหลดปลั๊กอิน และสื่อสารกับ C2 ผ่าน mutual TLS นอกจากนี้มีฟีเจอร์ค้นหาเครื่องที่ติดเชื้อในเครือข่ายเดียวกันผ่านบริการ mDNS _platypus-mesh._tcp และมีเวอร์ชัน Windows ที่ปลอมชื่อบริการเป็น “System Health Monitor” หรือ “healthd”
ผลกระทบ
NetScaler เป็นอุปกรณ์ขอบเครือข่ายที่เปิดสู่อินเทอร์เน็ตและถือข้อมูลยืนยันตัวตนของผู้ใช้ VPN จำนวนมาก การฝัง implant ที่คงสิทธิ์ระดับ root ไว้บนอุปกรณ์นี้ให้ผู้โจมตีมีฐานสำหรับดักข้อมูลรับรอง เคลื่อนที่เข้าเครือข่ายภายใน หรือขายสิทธิ์เข้าถึงต่อ องค์กรที่แพตช์ช้าหรือแพตช์แล้วแต่ไม่ได้ตรวจหาร่องรอย อาจยังมีผู้บุกรุกอยู่ในระบบโดยไม่รู้ตัว
อีกปัญหาคือการมองเห็น Binary Defense ระบุว่าโดยค่าเริ่มต้น SIEM มักได้รับเพียง ns.log, command audit และ veriexec แต่ไม่ได้รับ httpaccess/httperror log, sh.log, bash.log หรือล็อก SSH ซึ่งเป็นจุดที่ร่องรอยของการโจมตีนี้ปรากฏ การล่าภัยคุกคามจาก SIEM อย่างเดียวจึงอาจไม่เห็นอะไรเลย นอกจากนี้ล็อกและไฟล์ core ไม่ถูกซิงก์ระหว่างเครื่องในคู่ HA ต้องตรวจทั้งสองเครื่อง
คำแนะนำ
- อัปเกรด NetScaler ADC และ Gateway เป็น 14.1-73.37 หรือ 13.1-64.23 ขึ้นไป (รวมรุ่น FIPS และ NDcPP ที่เกี่ยวข้อง) หากยังไม่ได้ทำ
- ถือว่าอุปกรณ์ที่เปิดสู่อินเทอร์เน็ตก่อนแพตช์อาจถูกบุกรุก จนกว่าจะตรวจพิสูจน์หลักฐานเสร็จ หมุนเวียนข้อมูลรับรองที่อุปกรณ์เข้าถึงได้ และเพิกถอนเซสชันที่ใช้งานอยู่
- เก็บ support bundle ด้วย
show techsupport -notruncateจากทั้งสองเครื่องในคู่ HA (หากจะทำ disk image ให้ทำก่อน เพราะคำสั่งนี้เขียนลง /var/tmp) - ตรวจ ns.log หาเหตุการณ์ AAA/SSLVPN ที่มีคำว่า “pitboss”, “missed too many heartbeats” หรือ “unexpectedly died” ตามด้วยไวยากรณ์เชลล์
${IFS}หรือb64decodeและตรวจ httpaccess.log หา User-Agent ที่ขึ้นต้นด้วยINDEX: - ตรวจ sh.log, bash.log,
/var/cron/tabs,/var/coreและ/var/tmpหาไฟล์ที่ซ่อน ไฟล์ .pl ที่เป็น ELF ไฟล์ SUID shell และ cron ที่ไม่รู้จัก - เฝ้าระวังการเชื่อมต่อขาออกจาก IP ของ NetScaler (NSIP) ไปยังโฮสต์ที่ไม่รู้จัก และคำขอไปยังพาธ
/v1/artifacts/หรือ/api/v1/install/ - ส่ง httpaccess/httperror log, sh.log และ bash.log เข้า SIEM เพื่อให้ล่าภัยคุกคามได้จริง
Indicators of Compromise (IoCs)
คง defang ตามต้นฉบับ · รายการเต็มรวมใบรับรองและ JARM อยู่ในรายงานของ Binary Defense
| ประเภท | ค่า | คำอธิบาย |
|---|---|---|
| โดเมน | entretiensol[.]com | เซิร์ฟเวอร์ staging และ C2 |
| โดเมน | white-guard[.]pro | โครงสร้างพื้นฐานร่วม (REG.RU) |
| โดเมน | gurerasfalt[.]com | โครงสร้างพื้นฐานร่วม |
| โดเมน | garyvard[.]com | โครงสร้างพื้นฐานร่วม |
| โดเมน | hickoryusedauto[.]com | โครงสร้างพื้นฐานร่วม |
| โดเมน | instances[.]httpworkbench[.]com | callback domain |
| IP | 195[.]123.233.245 | C2 (/submit.php, /pixel.gif) |
| IP | 62[.]133.62.80 | ส่ง exploit payload (/xd7h/x) |
| IP | 31[.]56.197.72 | ส่ง exploit payload (/kk, /lula) |
| IP | 38[.]180.81.157 | โครงสร้างพื้นฐานร่วม |
| IP | 104[.]200.67.56 | โครงสร้างพื้นฐานร่วม |
| IP | 95[.]133.231.109 | โครงสร้างพื้นฐานร่วม |
| SHA-256 | c98aee75c5e199c9b5527984ce48675d665963f7cab8ce9f2e82465de6b58727 | agent FreeBSD (unpacked) |
| SHA-256 | 0dcac605a3a0c37001552369a6a77003226b35ddee7710b554fcd0e6809a76d1 | agent Windows (UPX) |
| SHA-256 | 3754689fafacd2ff1c50781de2027afb1a736f9dadf48767afe560fc0f10a6f0 | agent Windows (unpacked) |
| SHA-256 | 927c7fbef2e620c1ce482c3ed67ebf53da97693c1d6c7552c77aec84ba982cf8 | bootstrap installer |
| ไฟล์ | .ns_09343.pl / ns_827664.pl | Platypus agent (ELF ปลอมเป็น Perl) |
| โฟลเดอร์ | /var/tmp/.ns_data · /netscaler.local/ · /var/core/.ns-cache/ | ที่เก็บข้อมูลและติดตั้ง agent |
| ไฟล์ | .ctxs.receiver | พาธ web shell |
| mDNS | _platypus-mesh._tcp | ค้นหาเครื่องที่ติดเชื้อในเครือข่ายเดียวกัน |
| ชื่อบริการ | System Health Monitor · healthd · system-health · health-monitor · node-health · sys-health | ชื่อปลอมของบริการ |
| JARM | 40d40d40d00000000043d43d00043dabadbb43f9614a00c843a4ecd074ab81 | ลายนิ้วมือ TLS ของ C2 |
