挖礦的型別
- 主動挖礦:使用者在個人電腦或伺服器使用挖礦程式進行CPU,GPU計算,獲取虛擬貨幣。
- 被動挖礦:挖礦病毒透過系統漏洞,惡意程式,弱口令等方式入侵伺服器,裝置感染挖礦病毒後會開始挖掘虛擬貨幣。
- 前端挖礦:JS挖礦,挖礦病毒嵌入到網頁的javascript中,使用者訪問網頁時瀏覽器執行挖礦命令,現在比較少。不穩定,使用者關閉瀏覽器挖礦程式可能就停止執行了。
常見挖礦事件的行為
- 訪問惡意域名
- CPU GPU佔用率高
- 埠掃描行為
挖礦的排查思路
總體思路就是:隔離被感染主機 程式確認和系統排查 清除挖礦木馬 加固與防範
一:初步判斷:是否遭受挖礦攻擊,攻擊時間,傳播範圍,網路環境等。
二:異常程式與檔案:隔離被感染的主機後,就要確定挖礦的惡意程式及其關聯的惡意樣本,以便後續進行清楚工作。
三:系統排查:挖礦木馬會建立惡意的程式連線礦池,利用計算機CPU,GPU資源來挖礦。同時會利用系統的功能來實現持久化,例如建立使用者,計劃任務,啟動項,登錄檔等。
四:日誌排查:登入日誌,伺服器日誌,安全裝置日誌,做一下根因分析,避免加固後再次出現同類問題。
具體的排查操作
- 異常程式與檔案
- 使用top 命令檢視佔用CPU最高的程式
2.ps命令也可以定位高CPU佔用的程式。
ps -eo pid,ppid,%mem,%cpu,cmd --sort=-%cpu | head -n 5 cpu佔用前5的資訊
- 網路連線排查 netstart
netstart -anltp 檢視到可疑ip可以到威脅情報上去確認是否為礦池域名或惡意地址
- 檢視可疑的程式檔案
經過上面排查,基本獲取到程式的pid,可以依據pid去查詢相關惡意檔案
lsof -p pid
ls -al /proc/[pid]/exe 定位程式的實際路徑
- 結束程式清除檔案
kill -9 pid
- rm 刪除可疑的程式檔案
rm -rf 檔案路徑
- 有些時候無法透過上述排查定位pid,可能是將/proc/pid進行了隱藏,可以透過以下方式隱藏
mkdir .hidden
mount -o bind .hidden /proc/pid
這種情況可以使用 cat /proc/$$/mountinfo
惡意程式為了持久化駐留,還會建立計劃任務 ,啟動項,使用者賬號等
計劃任務排查
1.使用計劃任務命令查詢 crontab -u root -l 檢視root使用者計劃任務
2.檢視/etc下計劃任務檔案
ls /etc/cron* 檢視/etc目錄下所有計劃任務檔案
常見的定時任務檔案
/var/spool/cron/* #centos的
/var/spool/cron/crontabs/* #ubantu的
/etc/anacrontab* 非同步定時
/etc/cron.hourly/*
/etc/cron.daily/*
/etc/cron.weekly/*
/etc/cron.monthly/*
- 啟動項排查
chkconfig 檢視開機啟動專案
cat /etc/init.d/rc.loacal 檢視init.d資料夾下的rc.local檔案內容
cat /etc/rc.local 檢視rc.local檔案內容
ls -alt /etc/init.d 檢視init.d資料夾下所有檔案的詳細資訊
不同的linux發行版檢視開機啟動項的檔案不大相同,Debian系linux一般檢視/etc/init.d目錄最近有無修改和異常的開機啟動項;Redhat系一般檢視/etc/rc.d/init.d或者/etc/syetemd/syetem等目錄。
- 可疑賬號排查
查詢可登入賬號: cat /etc/passwd | grep -E "/bin/bash$" | awk -F: '{print $1}'
查詢超級使用者: awk -F: '$3==0 {print $1}' /etc/passwd
查詢公鑰檔案
cat /root/.ssh/*.pub
cat /root/.ssh/authorized_keys
- 日誌排查
登入成功 more /var/log/secure* | grep "Accepted password"
登入失敗 more /var/log/secure* | grep "Failed password"
空口令登入 more /var/log/secure* | grep "Accepted none"
新增使用者 more /var/log/secure* | grep "new user"
歷史命令 history cat /root/.bash_history
系統日誌排查無果的話,可以排查其他服務的日誌,如web 中介軟體等
- Linux的庫檔案劫持
排查時命令如果無法正常顯示效果,可能是檔案被劫持或做了替換,這種情況可以使用busybox來檢視