1. 程式人生 > >伺服器入侵應急響應排查(Linux篇)

伺服器入侵應急響應排查(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.跟蹤可疑程序執行情況:`strace -tt -T -e trace=all -p $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`,檢視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/loc