
ThaiCERT ได้ติดตามสถานการณ์ภัยคุกคามทางไซเบอร์ และพบประกาศภัยคุกคามตัวใหม่ในชุดเครื่องมือของกลุ่ม TeamPCP ซึ่งครั้งนี้ไม่ใช่แค่การขโมยข้อมูลรับรองหรือฝัง backdoor แต่เป็น payload ที่สามารถลบทั้ง Kubernetes cluster ได้ โดยตัวอย่างที่พบใช้โครงสร้างควบคุมเดิมแบบ ICP canister เดียวกับแคมเปญ CanisterWorm และมีพฤติกรรมคัดแยกเป้าหมายจาก timezone และ locale ของระบบ เพื่อเลือกว่าจะ “ฝัง backdoor” หรือ “ล้างเครื่อง/ล้างคลัสเตอร์” โดยเฉพาะระบบที่เกี่ยวข้องกับประเทศเป้าหมาย [1]
1. รายละเอียด
1.1 มัลแวร์จะตรวจสอบก่อนว่าเครื่องที่รันอยู่เป็น Kubernetes หรือไม่ และตรวจว่าเครื่องตั้งค่าเป็นประเทศเป้าหมายหรือไม่ โดยดูจากค่า timezone เช่น “Asia/Tehran”, “Iran” หรือค่า locale ที่มี “fa_IR”
1.2 หากเป็น Kubernetes และเข้าข่ายว่าเป็นระบบของประเทศเป้าหมาย มัลแวร์จะ deploy DaemonSet ชื่อ “host-provisioner-iran” ใน “kube-system” พร้อมคอนเทนเนอร์ชื่อ “kamikaze” เพื่อ mount root filesystem ของโฮสต์, ลบข้อมูลระดับบนสุดของระบบ และสั่ง reboot แบบบังคับ ซึ่งสามารถกระทบทุก node รวมถึง control plane ได้
1.3 หากเป็น Kubernetes แต่ไม่ใช่ระบบของประเทศเป้าหมาย มัลแวร์จะ deploy DaemonSet ชื่อ “host-provisioner-std” เพื่อฝัง CanisterWorm backdoor ลงในทุก node และลงทะเบียนเป็น systemd service เพื่อให้กลับมาทำงานต่อเนื่องอัตโนมัติ
1.4 หากไม่ใช่ Kubernetes แต่เป็นระบบที่เข้าข่ายว่าอยู่ในประเทศเป้าหมาย มัลแวร์จะพยายามรันคำสั่งล้างระบบ “rm -rf / –no-preserve-root” และถ้าไม่ได้สิทธิ์ root ก็จะพยายามใช้ “sudo” แบบไม่ต้องใส่รหัสผ่านก่อน
1.5 ตัวอย่างนี้ยังเพิ่มความสามารถในการแพร่กระจายในเครือข่าย โดยดึงข้อมูลจาก “auth.log”/”secure” เพื่อหา SSH login ที่สำเร็จ, ค้นหา SSH private key ที่มีอยู่ และพยายามโจมตีเป้าหมายผ่าน SSH รวมถึงสแกนหา Docker API ที่เปิดพอร์ต “2375” ใน subnet ภายในด้วย
2. สิ่งที่ควรเฝ้าระวัง
2.1 ตรวจสอบ DaemonSet ใน namespace “kube-system” ที่ไม่ได้สร้างเอง โดยเฉพาะชื่อ “host-provisioner-iran” และ “host-provisioner-std” รวมถึง workload ที่ใช้ “privileged” และ mount “hostPath: /” เพราะเป็นลักษณะเสี่ยงสูงมาก
2.2 ตรวจสอบไฟล์และ service ที่อาจเกี่ยวข้อง เช่น “/tmp/pglog”, “/tmp/.pg_state”, “/var/lib/svc_internal/runner.py”, “/etc/systemd/system/internal-monitor.service”, “/var/lib/pgmon/pgmon.py”, “/etc/systemd/system/pgmonitor.service” รวมถึง service ชื่อ “pgmonitor” และ “internal-monitor”
2.3 เฝ้าระวังการเชื่อมต่อออกผิดปกติไปยังโดเมนที่เกี่ยวข้อง เช่น ICP canister “tdtqy-oyaaa-aaaae-af2dq-cai.raw.icp0.io” และโดเมน “trycloudflare.com” หลายรายการที่ถูกใช้เป็นช่องทางส่ง payload
2.4 เฝ้าระวัง outbound SSH ที่มีพารามิเตอร์ “StrictHostKeyChecking=no” และการเชื่อมต่อไปยังพอร์ต “2375” ภายในเครือข่าย ซึ่งอาจบ่งชี้ถึงการเคลื่อนย้ายด้านข้างของมัลแวร์
3. แนวทางการป้องกัน
3.1 จำกัดการเข้าถึง Kubernetes cluster และไม่อนุญาตให้ workload ทั่วไปมีสิทธิ์ “privileged”, `”hostPID”, “hostNetwork” หรือ mount “hostPath: /” โดยไม่จำเป็น เพราะพฤติกรรมโจมตีชุดนี้อาศัยสิทธิ์ระดับสูงบนโหนดโดยตรง
3.2 ปิดหรือจำกัดการเข้าถึง Docker API บนพอร์ต “2375” จากภายนอกและภายในเครือข่ายเท่าที่ทำได้ เนื่องจากผู้โจมตีใช้ช่องทางนี้เพื่อแพร่กระจายไปยังเครื่องอื่น
3.3 ตรวจสอบและปกป้อง SSH key, ลบ key ที่ไม่จำเป็น, จำกัดการใช้งานบัญชีสิทธิ์สูง และทบทวน log การ login อย่างสม่ำเสมอ เพราะมัลแวร์ใช้ข้อมูลเหล่านี้เพื่อหาทางแพร่กระจายต่อ
3.4 ใช้การตรวจจับเชิงพฤติกรรมและเฝ้าระวังการสร้าง DaemonSet ผิดปกติ, การสร้าง systemd service ใหม่, และการ mount root filesystem ของโฮสต์จากคอนเทนเนอร์ ซึ่งเป็นสัญญาณสำคัญของการโจมตีลักษณะนี้
3.5 สำรองข้อมูลและทดสอบแผนกู้คืนระบบอย่างสม่ำเสมอ เพราะ payload นี้มีลักษณะทำลายข้อมูลและอาจทำให้ทั้งโหนดหรือทั้งคลัสเตอร์ไม่สามารถใช้งานได้
4. ตัวบ่งชี้การโจมตี (IOC) ที่สำคัญ
4.1 Network
– “tdtqy-oyaaa-aaaae-af2dq-cai[.]raw[.]icp0[.]io”
– “souls-entire-defined-routes[.]trycloudflare[.]com”
– “investigation-launches-hearings-copying[.]trycloudflare[.]com”
– “championships-peoples-point-cassette[.]trycloudflare[.]com”
4.2 Kubernetes
– DaemonSet: “host-provisioner-iran”
– DaemonSet: “host-provisioner-std”
– Container name: “kamikaze”, “provisioner”
แหล่งอ้างอิง
