Linux Rootkit Detection:工具與技術
10 分鐘閱讀 - 2026年5月16日

如何使用 chkrootkit、rkhunter、Auditd、AIDE 和伺服器上的行為監控來偵測和預防 Linux rootkits。
Linux Rootkit Detection:伺服器安全的工具與技術
Rootkit 可讓攻擊者持續、隱蔽地存取 Linux 系統。它們會操控核心作業、隱藏檔案與進程,並躲避標準的安全工具。有些攻擊者多年來都沒有被偵測到。偵測它們需要多層次的方法,因為沒有任何單一工具可以抓到所有的東西。
這篇文章涵蓋了 Linux rootkit 的主要類型、如何掃描它們,以及可偵測基本掃描程式遺漏的進階監控技術。
Linux Rootkit 的種類
Rootkit 會在不同的權限層級運作,而且越深越難發現。
使用者模式 rootkit在應用程式層級 (Ring 3) 執行。它們使用LD_PRELOAD劫持動態連結,以注入惡意函式庫,攔截標準 C 函式庫函式,例如readdir或fopen,從而隱藏檔案和進程,使其無法被使用者工具發現。
核心模式 rootkit 會以Loadable Kernel Modules (LKM) 的方式載入,在 0 環運行。它們會截取系統呼叫、操作核心記憶體,並隱藏自己的存在。由於它們與特定的內核版本相連,配置錯誤的內核模組可能會導致內核恐慌,諷刺的是,這會暴露它。
基於 eBPF 的 rootkits利用延伸的 Berkeley Packet Filter 子系統,在不載入傳統模組的情況下在核心空間執行。它們附著在 syscall 鉤子、tracepoints 或 LSM 事件上。標準的 LKM 掃描程式不會看到它們。Boopkit是一個著名的概念驗證,它使用這種方法建立了一個隱蔽的 C2 通道。
以 io_uring 為基礎的 rootkits是最新的變種。它們使用io_uring異步 I/O 介面來批量操作,產生較少的可觀察 syscall 事件。RingReaper 是一種實驗性的 rootkit,它展示了這種方式如何在躲避 EDR 工具的同時,默默地取代讀、寫和連接等呼叫。
| rootkit 類型 | 權限等級 | 掛鉤方法 | 偵測難度 |
|---|---|---|---|
| 使用者模式 | 環 3 (使用者) | LD_PRELOAD, 函式庫騎乘 | 中度 |
| 核心模式 | 環 0 (核心) | 系統呼叫表、LKM、內嵌掛勾 | 高 |
| 基於 eBPF | 環 0 (核心) | eBPF 程式附件 | 非常高 |
| 基於 io_uring | 使用者/核心 | 異步 I/O 批次 | 非常高 |
使用 chkrootkit 和 rkhunter 進行掃描
在 Linux 伺服器上,有兩種工具構成 rootkit 檢測的基線:chkrootkit用於快速掃描,rkhunter用於深入檢查。
chkrootkit
chkrootkit是一個 shell 腳本,可檢查重要的系統二進位檔案(ls、ps、netstat、sshd、ifconfig) 是否有被篡改的跡象。它還能偵測混亂的網路介面和刪除的日誌。截至 0.59 版 (2026 年 1 月),它可以識別超過 75 種 rootkits、蠕蟲和 LKM,包括 Linux BPFDoor、Syslogk 和 XZ Backdoor 等較新的威脅。
在任何可疑活動後執行它。注意ifpromisc元件發出的警告,以及有關刪除lastlog或wtmp檔案的警示。
rkhunter
rkhunter更進一步。它會比較系統二進位檔的 SHA-1 哈希值與已知的良好值、監控檔案權限與隱藏檔案、檢查啟動組態,以及執行核心與網路分析。
從一開始就正確設定:
# Establish a baseline after a clean install or update
rkhunter --propupd
# Update rootkit definitions
rkhunter --update
# Run a full scan (use --novl on production servers to reduce I/O)
rkhunter --check --enable all
若要自動執行每日掃描,請在/etc/rkhunter.conf中設定CRON_DAILY_RUN="true",並使用--skip-keypress及--report-warnings-only以獲得乾淨輸出。檢閱/var/log/rkhunter.log中的日誌,並將已確認的誤判列入白名單。
偵測 LKM rootkit
LKM rootkit 特別危險,因為它們會以核心擴充的方式運作,攔截系統呼叫並在核心層級隱藏進程。lsmod等標準工具不會看到它們,但有一些方法可以發現它們。
比較lsmod 輸出與/sys/module/清單。檢查系統日誌是否有可疑的核心訊息:
# Look for out-of-tree module warnings
sudo dmesg | grep "loading out-of-tree module taints kernel"
# Check for module verification failures
grep "module verification failed" /var/log/syslog
# Run chkrootkit's LKM-specific check
sudo chkrootkit lkm
透過檢查/sys/module/diamorphine/coresize或檢閱 syslog 警告,即使是隱藏於lsmod和/proc/modules(如 Diamorphine) 的 rootkit,仍可被發現。
進階偵測:行為監控與完整性檢查
靜態掃描器有一個基本弱點。在 2026 年的一項實驗中,在 rootkit 二進位檔中加入一個空位元組(這項改變並不影響功能),就能大幅降低偵測率。Diamorphine 的偵測率從 33/66 降至 8/64,只因為剔除了符號表。光靠簽名是不夠的。
行為分析
行為分析不是詢問「這個檔案是否符合已知的 rootkit?監控這些訊號:
- 使用Auditd監視
init_module()和finit_module()系統呼叫,這些呼叫會不論方法載入核心模組。 - 監控
kill()呼叫的信號高於 31,這可能表示隱蔽的 rootkit 通訊。 - 檢查
/proc/sys/kernel/tainted是否有未經授權的核心模組活動。 - 注意
/tmp或/dev/shm中的意外.so檔案。 - 追蹤 eBPF 活動,尤其是
bpf_probe_write_user呼叫。BCC等工具可以透過sys_enter_io_uring_enter等追蹤點來追蹤io_uring作業。
針對 eBPF 和 io_uring rootkit,Tetragon、Falco 和Tracee等執行時監控工具可以即時觀察內核內的活動。
檔案完整性監控
AIDE(Advanced Intrusion Detection Environment) 會建立可信系統檔案的基線,並檢查變更。使用aide --init 來初始化,然後透過 cron 排程aide--check。它會追蹤/bin/login和/usr/bin/sshd 等關鍵二進位檔的檢查和、權限、所有權和時間戳記。
對於套件層級的驗證,debsums(Debian/Ubuntu) 或rpm -Va(RHEL/CentOS) 可以確認系統檔案的完整性。若要獲得最可靠的結果,請從可信賴的救援媒體開機,並離線檢查檔案系統,因為 rootkit 可能會篡改執行中核心的報告。
同時也要監控持久性機制。Rootkit 通常會修改/etc/ld.so.preload以注入共用物件,或變更.bashrc和.profile。這些檔案的合法變更非常罕見,因此此處的警示信噪比很高。
使用 Auditd 進行自動監控
將這些規則新增至/etc/audit/rules.d/rootkit.rules,以即時偵測可疑的核心活動:
# Detect unauthorized kernel module loading
-a always,exit -F arch=b64 -S finit_module -S init_module
# Catch unusual high-range kill signals
-a always,exit -F arch=b64 -S kill -F a1>=32
將這些與 rkhunter 的自動更新結合。在設定中設定UPDATE_MIRRORS=1及MIRRORS_MODE = 0,並在合法的系統更新後執行rkhunter --propupd以刷新基線。
加固您的伺服器以防禦 Rootkit
偵測很重要,但預防更好。大多數 Rootkit 都需要提升權限才能安裝,因此減少攻擊面能產生真正的差異。
保持核心和套件更新。攻擊者會利用未修補的漏洞提升權限,並部署基於 LKM 或 eBPF 的 rootkit。修補程式後,使用rkhunter --propupd 更新偵測基線。
強制執行最低權限。不要賦予使用者或程序超過其所需的存取權限。使用SELinux或AppArmor進行強制存取控制,即使程序受到攻擊,也能阻止未經授權的動作。
停用啟動後的核心模組載入。在專用伺服器上,您可以在系統啟動後鎖定模組載入,以完全防止 LKM rootkit。這在共用主機上是不可能的,這也是專用或 VPS 環境提供更強大安全威脅的原因之一。
分割您的網路。如果一台機器受到攻擊,隔離部分基礎架構可限制橫向移動。
定期審核。 Lynis等工具可以在攻擊者利用之前找出權限錯誤和配置錯誤。
結論
Rootkit 是隱藏在眾目睽睽之下的。當出現症狀時,系統可能已經受到損害,無法輕易復原。沒有任何單一掃描軟體可以捕捉到所有東西,而基於特徵的基本偵測也很容易躲避。
實用的防禦方法是結合多層防禦:
- 使用 chkrootkit 和 rkhunter 定期掃描已知的威脅
- Auditd 規則和行為監控,以偵測可疑的核心活動
- 使用 AIDE 監控檔案完整性,以偵測未經授權的變更
- 運行時工具,如 Tetragon 或 Falco,以偵測 eBPF 和 io_uring 威脅
- 強化存取控制、修補程式及網路分割,以降低攻擊面
自動化您可以做的事,保持基線最新,並從您信任的乾淨作業系統安裝開始。
FDC Servers 提供具有完全 root 存取權限和客製化核心配置的專用和 VPS 主機。探索專用伺服器選項以建立強化的 Linux 環境。

厌倦了缓慢的部署或带宽限制?FDC Servers 提供即时的专用电源、全球覆盖和灵活的计划,适合任何规模。
立即升级
iperf3 教學:測試 Linux 與 Windows 上的網路速度
10 分鐘閱讀 - 2026年5月7日