ด่วน! แจ้งเตือนมัลแวร์สร้างความเสียหายแก่ระบบ Kubernetes

ยอดเข้าชม: 36 views

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”

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

[1] https://dg.th/4nqwclrhga