要檢查系統內是否存在惡意 Rootkit,你可以使用多種方法,包括手動檢查、Rootkit 掃描工具、日誌分析等。以下是完整的檢測步驟:
1️⃣ 使用 chkrootkit
掃描 Rootkit
chkrootkit
是一個常見的 Rootkit 掃描工具,可以檢測已知的 Rootkit 痕跡。
安裝 chkrootkit
sudo apt install chkrootkit -y # Debian / Ubuntu
sudo yum install chkrootkit -y # CentOS / RHEL
運行 chkrootkit
掃描
sudo chkrootkit
如果發現可疑 Rootkit,chkrootkit
會顯示相關警告。
2️⃣ 使用 rkhunter
掃描 Rootkit
rkhunter
(Rootkit Hunter)可以檢測隱藏的 Rootkit 和可疑的系統變更。
安裝 rkhunter
sudo apt install rkhunter -y # Debian / Ubuntu
sudo yum install rkhunter -y # CentOS / RHEL
更新 Rootkit 資料庫
sudo rkhunter --update
運行掃描
sudo rkhunter --check
這將檢查系統中的 Rootkit、惡意後門、可疑的文件修改,並提供詳細報告。
3️⃣ 使用 unhide
檢測隱藏進程
某些 Rootkit 會隱藏惡意進程,使它們不出現在 ps
或 top
命令中。unhide
可以幫助檢測這些隱藏的進程。
安裝 unhide
sudo apt install unhide -y # Debian / Ubuntu
sudo yum install unhide -y # CentOS / RHEL
檢查隱藏進程
sudo unhide proc
sudo unhide sys
sudo unhide brute
如果 unhide
發現隱藏的進程,這可能表示你的系統已被 Rootkit 感染。
4️⃣ 手動檢查異常文件
A. 檢查 /etc/ld.so.preload
是否被惡意利用
cat /etc/ld.so.preload
如果 /etc/ld.so.preload
包含了不明的 .so
文件,可能是惡意 Rootkit 設置的。
解決方法(刪除可疑文件):
chattr -i /etc/ld.so.preload
rm -f /etc/ld.so.preload
B. 檢查可疑的內核模組
Rootkit 可能會通過惡意內核模組來隱藏自己。
列出當前載入的內核模組
lsmod
如果你發現 不熟悉的內核模組,你可以查看它的詳細信息:
modinfo <模組名稱>
移除可疑內核模組(需謹慎)
rmmod <模組名稱>
C. 檢查系統關鍵目錄
ls -al /dev/.udev
ls -al /dev/.initramfs
如果這些目錄中出現了不明文件,可能是 Rootkit 在隱藏惡意檔案。
檢查 /proc
目錄是否被 Rootkit 竄改
ls -al /proc
如果 ps aux
顯示的進程與 /proc
目錄內的 PID 不匹配,可能有 Rootkit 在隱藏進程。
D. 檢查異常網路連接
某些 Rootkit 可能會與攻擊者的伺服器保持連接。
列出所有活躍的網路連接
netstat -antp
或
ss -antp
如果發現可疑的 IP 連線,檢查對應的進程:
lsof -i -n -P
如果發現可疑的 PID
,可以使用以下命令檢查該進程的細節:
ps -aux | grep <PID>
5️⃣ 使用 auditd
監控 Rootkit 活動
如果你懷疑系統受到 Rootkit 影響,可以使用 auditd
監控關鍵文件的變更。
安裝 auditd
sudo apt install auditd -y # Debian / Ubuntu
sudo yum install audit -y # CentOS / RHEL
監控 /etc/ld.so.preload
是否被修改
sudo auditctl -w /etc/ld.so.preload -p wa -k rootkit_watch
查看監控日誌
sudo ausearch -k rootkit_watch --start today
如果發現 /etc/ld.so.preload
被惡意修改,可能存在 Rootkit。
6️⃣ 檢查 Rootkit 是否已設置持久性
某些 Rootkit 可能會在 cron
、systemd
或 init
服務中設置持久性,確保它們在系統重新啟動後仍然運行。
檢查定時任務
crontab -l
ls -al /etc/cron.*
如果發現不明的定時任務,可能是 Rootkit 在設置持久性。
檢查 Systemd 服務
systemctl list-units --type=service | grep suspicious
ls -al /etc/systemd/system/
如果發現可疑的服務,可以禁用並刪除:
systemctl stop <service_name>
systemctl disable <service_name>
rm -f /etc/systemd/system/<service_name>.service
7️⃣ 如何清理 Rootkit
如果你確定系統已被 Rootkit 感染,建議執行以下步驟:
A. 進入救援模式
systemctl rescue
B. 刪除惡意 Rootkit
chattr -i /etc/ld.so.preload
rm -f /etc/ld.so.preload
rmmod <惡意內核模組>
C. 移除可疑的系統文件
find / -type f -name "*.so*" -exec ls -l {} \;
D. 重新安裝關鍵系統組件
apt reinstall coreutils
E. 重新安裝受感染的伺服器 最安全的做法是備份數據並重新安裝系統,以確保 Rootkit 完全移除。
🔚 總結
檢測方式 | 指令 |
---|---|
chkrootkit 掃描 Rootkit |
chkrootkit |
rkhunter 掃描 Rootkit |
rkhunter --check |
unhide 檢查隱藏進程 |
unhide proc |
檢查 /etc/ld.so.preload |
cat /etc/ld.so.preload |
列出內核模組 | lsmod |
檢查異常網路連接 | netstat -antp / ss -antp |
查找可疑的 systemd 服務 | systemctl list-units --type=service |
查找可疑的 cron 任務 | crontab -l / ls -al /etc/cron.* |
透過這些方法,你可以有效檢測系統內是否有 Rootkit,並採取適當的措施來清理和保護系統!🚀