《服務器入侵應急響應排查》之Linux主機常用命令篇


總體思路

確認問題與系統現象 → 取證清除與影響評估 → 系統加固 → 復盤整改

常見入侵

挖礦:

  表象:CPU增高、可疑定時任務、外聯礦池IP。
  告警:威脅情報(主要)、Hids、蜜罐(挖礦擴散時觸發)
  動作:通過CPU確認異常情況→ 確認可疑進程 → 檢查定時任務、主機服務、守護進程→結束病毒進程,刪除病毒文件->加固。

Webshell:

  表象:業務側應用邏輯漏洞(允許上傳腳本等造成命令執行)或者開源軟件低版本造成(fastjson等)導致,通常為反彈shell、高危命令執行,同時存在內網入侵、惡意程序傳播、數據盜取等行為。
  告警:Hids(主要)、流量監控設備
  動作:確認Webshell文件內容與可用性→ 酌情斷網,摘掉公網出口IP→ 通過日志等確認Webshell文件訪問記錄→ 確定Webshell入侵來源,是業務邏輯漏洞導致、開源組件漏洞還是弱口令與未授權等情況導致 →排查應用其他機器情況,全盤掃描Webshell文件→ 縮容機器,修復相關問題重新恢復應用開放。

內網入侵:

  表象:以入侵的跳板機為源頭進行端口掃描、SSH爆破、內網滲透操作、域控攻擊等。
  告警:Hids(主要)、蜜罐、域控監控(ATA等)
  動作:確定入侵邊界再進行處理,通常蜜罐等存在批量掃描爆破記錄,需登錄前序遭入侵機器確認情況,方便后續批量處理,這個情況較為復雜后期單獨寫一篇文章。

進程相關

1.查詢可疑端口、進程、ip:netstat -antlp | more 或者 netstat -anltp | grep $pid,若存在可疑進程可通過 ls -l /proc/$PID 查看PID對應的進程文件路徑。
2.針對挖礦等大量消耗系統資源的惡意程序可以通過 top(執行top命令后通過大寫字母P按CPU排序,通過大寫字母M按內存排序)、ps -elf 可疑$PID 、ps -aux 命令檢查排名靠前的或者不斷變化的程序。同時使用 kill - 9 進程名 結束進程。
3.查詢通過TCP、UDP連接服務器的IP地址列表:netstat -ntu ,查詢可疑連接:netstat -antlp
4.查詢守護進程:lsof -p $pid
5.查詢進程命令行:ps -aux ,#注意查看命令行,如:帶有URL等可疑字符串、wget等命令字符串可能為病毒下載地址
6.CPU/內存升序排序(防止隱藏進程):ps -aux --sort=-pcpu | head -10,ps -aux --sort=-pmem | head -10,ps -aux --sort -pcpu,+pmem | head -n 10
7.跟蹤可疑進程運行情況:strace -tt -T -e trace=all -p $pid
8.查看PID狀態及守護進程:systemctl status PID #在查詢守護進程中有重要作用

系統相關

檢查賬戶安全:

① 檢查近期登陸的賬戶記錄:使用 last 命令,禁用可疑用戶:usermod -L 用戶名,刪除用戶:userdel -r 用戶名
② 查詢特權用戶:awk -F ":" '$3==0{print $1}' /etc/passwd
③ 查詢可遠程登錄用戶:awk '/\$1|\$6/{print $1}' /etc/shadow
④ 查詢sudo權限賬戶:cat /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL)"
⑤ 與業務確認管理員帳戶、數據庫帳戶、MySQL 帳戶、tomcat 帳戶、網站后台管理員帳戶等密碼設置是否存在弱口令情況。

檢查啟動項與定時任務:

① cron目錄(/var/spool/cron,查詢目錄下所有文件通過ls -al)下檢查非法定時任務腳本:查看/etc/crontab,/etc/cron.d,/etc/cron.daily,cron.hourly/,cron.monthly,cron.weekly/是否存在可疑腳本或程序,進行注釋或者刪除。
② 編輯定時任務:crontab -e,查看定時任務:crontab -l若無顯示需要查看cat /etc/crontab進一步確認,查看anacron異步定時任務:cat /etc/anacrontab,刪除定時任務:crontab -r
3.查詢主機歷史命令: history
4.查詢主機所有服務:service --status-all
5.開機啟動項:ls -alt /etc/init.d/ cat /etc/rc.local

文件相關

關於敏感目錄:

① 查看tmp目錄相關文件:ls -alt /tmp/
② 指定目錄下文件按時間排序:ls -alt |head -n 10
③ 查看可疑文件詳細修改時間: stat 目錄或者文件

關於文件篡改:

① 查找24小時內被修改的特定文件:find ./ -mtime 0 -name "*.jsp"
② 查找72小時內新增的文件:find / -ctime -2
③ 查詢一定時間內敏感目錄下被修改的系統文件: find /etc/ /usr/bin/ /usr/sbin/ /bin/ /usr/local/bin/ /var/spool/cron/ -type f -mtime -3 | xargs ls -l

刪除惡意文件:

ls -al /proc/[pid]/,ls -al /proc/[pid]/exe
rm -f [exe_path]
查詢文件md5: md5sum 文件名
查詢SSH登錄日志: vim /var/log/secure #所有ssh登錄打包日志均在該文件夾,可直接vim,快速判斷爆破痕跡(Accepted password:密碼正確、Failed password:密碼錯誤)

其他

關於取證備份:

系統服務備份 chkconfig --list > services.log
進程備份 ps -ef > ps.log
監聽端口備份 netstat -utnpl > port-listen.log
系統所有端口情況 netstat -ano > port-all.log

查看是否有賬號異常登錄情況:

a.查看當前登錄用戶和其行為:w
b.查看所有用戶最后一次登錄的時間:lastlog
c.查看所有用戶的登錄注銷信息及系統的啟動、重啟及關機事件:last
d.查看登錄成功的日期、用戶名及ip:grep "Accepted " /var/log/secure* | awk '{print $1,$2,$3,$9,$11}'
e.查看試圖爆破主機的ip:grep refused /var/log/secure* | awk {'print $9'} | sort | uniq -c |sort -nr | more 、 grep "Failed password" /var/log/secure* | grep -E -o "(([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3}))" | uniq -c
f.查看有哪些ip在爆破主機的root賬號:grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort
g.查看爆破用戶名字典:grep "Failed password" /var/log/secure | awk {'print $9'} | sort | uniq -c | sort -nr

cron文件檢查惡意腳本位置:

/var/spool/cron/*
/etc/crontab 
/etc/cron.d/* 
/etc/cron.daily/* 
/etc/cron.hourly/* 
/etc/cron.monthly/* 
/etc/cron.weekly/ 
/etc/anacrontab     
/var/spool/anacron/*

檢查近期被替換命令:

ls -alt /usr/bin /usr/sbin /bin /usr/local/bin

好文推薦(會更新)

https://www.cnblogs.com/303donatello/p/13644226.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM