天天看點

[安全]一個簡單的應急響應流程

步驟1 上傳到伺服器

一線人員把busybox,chkrootkit和,GatherInfo腳本一起上傳到目标伺服器上

步驟2 執行資訊收集腳本

接下來執行以下指令進行

# bash GatherInfo.sh

步驟3 回傳資訊收集包

腳本執行完成後,會在/tmp目錄下生成一個GatherInfo.tar.gz檔案,回傳該檔案給應急人員。

步驟4 應急響應診斷

應急人員根據各個指令執行内容進行分析,并完善“應急響應Checklist”内容。

步驟5 其他情況

如果自動化腳本收集到的資訊不足以判斷病毒情況,則需要應急人員人工連接配接到伺服器執行排查。

#!/bin/bash
function initial(){
 echo "Doing initial"
 mkdir /tmp/GatherInfo 
 chmod +x ./chkrootkit
 chmod +x ./busybox
}
function chkrootkit_info(){
 echo "Doing chkrootkit"
 ./chkrootkit > /tmp/GatherInfo/chkrootkit.log 2>&1
}
function network_info(){
 echo "Gathering network info"
 netstat -tulnp > /tmp/GatherInfo/netstat_tulnp.log 2>&1
 netstat -anp > /tmp/GatherInfo/netstat_anp.log 2>&1
}
function process_info(){
 echo "Gathering process info"
 ps aux > /tmp/GatherInfo/ps_aux.log 2>&1
 ps auxef > /tmp/GatherInfo/ps_auxef.log 2>&1
 top -n 1 > /tmp/GatherInfo/top_n1.log 2>&1
}
function init_info(){
 echo "Gathering init info"
 chkconfig --list > /tmp/GatherInfo/chkconfig_list.log 2>&1
 ls -alt /etc/init* > /tmp/GatherInfo/ls_alt_etc_init.log 2>&1
}
function cron_info(){
 echo "Gathering cron info"
 cat /etc/crontab > /tmp/GatherInfo/crontab.log 2>&1
 cat /etc/anacrontab > /tmp/GatherInfo/anacrontab.log 2>&1
 crontab -l > /tmp/GatherInfo/crontab_l.log 2>&1
 
 cd /etc/cron.d/
 ls -alt > /tmp/GatherInfo/etc_cron.d.log 2>&1
 cat * >> /tmp/GatherInfo/etc_cron.d.log 2>&1
 
 cd /etc/cron.daily/
 ls -alt > /tmp/GatherInfo/etc_cron.daily.log 2>&1
 cat * >> /tmp/GatherInfo/etc_cron.daily.log 2>&1
 
 cd /etc/cron.hourly/
 ls -alt > /tmp/GatherInfo/etc_cron.hourly.log 2>&1
 cat * >> /tmp/GatherInfo/etc_cron.hourly.log 2>&1
 
 cd /etc/cron.monthly/
 ls -alt > /tmp/GatherInfo/etc_cron.monthly.log 2>&1
 cat * >> /tmp/GatherInfo/etc_cron.monthly.log 2>&1
 
 cd /etc/cron.weekly/
 ls -alt > /tmp/GatherInfo/etc_cron.weekly.log 2>&1
 cat * >> /tmp/GatherInfo/etc_cron.weekly.log 2>&1
 
 cd /var/spool/cron/
 ls -alt > /tmp/GatherInfo/var_spool_cron.log 2>&1
 cat * >> /tmp/GatherInfo/var_spool_cron.log 2>&1
 
 cd /var/spool/anacron/
 ls -alt > /tmp/GatherInfo/var_spool_anacron.log 2>&1
 cat * >> /tmp/GatherInfo/var_spool_anacron.log 2>&1
}
function other_info(){
 echo "Gathering other info"
 
 # check system users
 cat /etc/passwd | grep -v nologin > /tmp/GatherInfo/passwd.log 2>&1
 # check dirs with 777 permition
 ls -alt /tmp > /tmp/GatherInfo/tmp.log 2>&1
 ls -alt /var/tmp > /tmp/GatherInfo/var_tmp.log 2>&1
 ls -alt /dev/shm > /tmp/GatherInfo/dev_shm.log 2>&1
 # check ld env
 echo $LD_PRELOAD > /tmp/GatherInfo/LD_PRELOAD.log 2>&1
 cat /etc/ld.so.preload > /tmp/GatherInfo/etc_ld.so.preload.log 2>&1
 # check root ssh config
 ls -alt /root/.ssh > /tmp/GatherInfo/ls_alt_root_.ssh.log 2>&1
 cat /root/.ssh/* > /tmp/GatherInfo/cat_root_.ssh.log 2>&1
 # check bash config
 cat /root/.bash_profile > /tmp/GatherInfo/cat_root_bash_profile.log 2>&1
 cat /root/.bashrc > /tmp/GatherInfo/cat_root_bashrc.log 2>&1
 
 for user in /home/*
 do
    if test -d $user;then
   cat /home/$user/.ssh/* > /tmp/GatherInfo/cat_$user.ssh.log 2>&1
   ls -alt /home/$user > /tmp/GatherInfo/cat_$user.home.log 2>&1
    fi
 done
}
initial
chkrootkit_info
network_info
process_info
init_info
cron_info
other_info
cd /tmp
tar -zcvf GatherInfo.tar.gz GatherInfo      

附件: 常見檢查項

步驟 執行操作 解釋 執行結果 結論
确定程序 執行 #ps aux 檢視目前系統運作的程序 備注:結果需要明确惡意程序,輸出程序名稱以及程序pid
執行 #ps auxef 檢視目前系統運作的程序,及父子程序關系
執行 #netstat -tulnp 檢視目前系統開啟監聽的tcp,udp端口的程序
執行 #netstat -anp 檢視目前系統所有的網絡連接配接
執行 #top -n 1 檢視目前系統
确定惡意程序關聯檔案 執行 #ls -l /proc/pid/exe 檢視惡意程序對于的可執行程式 備注:結論需要明确哪個目錄,哪些檔案和惡意檔案關聯,以ls -R dir的結果形式呈現,比如ls -R /home/.virus的執行結果。輸出病毒檔案結構,并整理打包所有相關檔案
執行 #cat /proc/pid/cmdline 檢視惡意程序啟動指令
執行 #lsof -p pid 檢視與惡意程序關聯的檔案
執行 #ls -alt /tmp 檢視/tmp目錄下的可疑檔案,特别是以點開頭的隐藏檔案
執行 #ls -alt /var/tmp 檢視/var/tmp目錄下的可疑檔案,特别是以點開頭的隐藏檔案
執行 #ls -alt /dev/shm 檢視/dev/shm目錄下的可疑檔案,特别是以點開頭的隐藏檔案
分析惡意程式/腳本,了解惡意程式對系統的改動 分析病毒相關的文本檔案 盡可能收集多的資訊以便後續排查,把擷取到的資訊寫入執行結果 備注:結論可以包括病毒執行了哪些操作,是什麼類型的病毒等
分析腳本檔案,了解病毒邏輯 分析腳本,腳本可能是shell,python,perl等,甚至還可能混淆過,如果分析難度太大,可跳過暫不分析
分析二進制程式,用常見的逆向工具如IDA pro分析病毒邏輯 如果分析難度太大,可跳過暫不分析
把二進制病毒上傳到virustotal檢測 檢測病毒是什麼類型的病毒
确定惡意程序定時任務 執行 #cat /var/log/cron.log 檢視定時任務的log記錄,看是否有異常的定時任務 輸出異常的定時任務日志資訊
執行 #grep -rn 病毒特征 /etc 病毒特征可以是某個路徑或者病毒樣本名稱,基本上比對到就可以認為是和病毒有關。這麼操作的原因定時任務和惡意程式之間,可能通過多個腳本關聯,比如定時任務執行a.sh,而a.sh調用了b.sh,b.sh調用惡意程式。 輸出比對的檔案名稱及相關資訊
執行 #grep -rn 病毒特征 /var
執行 #grep -rn 病毒特征 /bin
執行 #grep -rn 病毒特征 /sbin
确定惡意程序開機啟動項 執行 #ls -alt /etc/init.d
特别需要關注etc目錄下的rc相關目錄檔案以及init相關目錄及檔案。
清除與恢複 執行 #vim 定時任務檔案 删除惡意定時任務

執行 #killall -9 程序名

執行 #kill -9 pid

殺死惡意程序
再次确認惡意定時任務是否被删除
執行 #ps aux | grep 程序名 再次确認惡意程序是否被殺死
執行 #vim /etc/init.d/* 删除惡意開機啟動項
執行 #rm,#rm -rf,#rmdir 清除所有和病毒有關聯的檔案 删除各個病毒檔案,如果檔案不能被删除,很可能是設定了第二屬性,通過chattr -i 檔案名去除不能修改的權限。
執行 #reboot 如條件允許則重新開機系統看是否有惡意程序

繼續閱讀