Linux應急響應思路詳談


一、主機篇:

1、自動化初篩,建議使用RootkitHunter

(1)安裝

1 $sudo wget https://jaist.dl.sourceforge.net/project/rkhunter/rkhunter/1.4.4/rkhunter-1.4.4.tar.gz
2 $sudo tar zxvf rkhunter-1.4.4.tar.gz
3 $sudo cd rkhunter-1.4.4
4 $sudo sh install.sh --install

(2)使用(主要看一下,常用的基礎的命令有沒有被替換)

1 $/usr/local/bin/rkhunter --propupd
2 $/usr/local/bin/rkhunter -c --sk --rwo

(3)詳細使用部分--引用自:https://yq.aliyun.com/ziliao/75349

詳細內容見附錄一

2、確保命令沒有被替換后進行排查,第一步查看在線連接和登錄日志(無論從什么途徑進來的,如果能進來說明登錄了才能完成操作,因此查看登錄日志)

 1 $sudo netstat -anpo #查看網絡連接情況
 2 $ps -ef 或者 $ps aux   #查看異常進程
 3 $top #查看資源占用情況
 4 #查看登錄操作情況
 5 $last > last.log
 6 $who /var/log/utmp #登錄情況(很可能被刪除)
 7 $who /var/log/wtmp #登錄情況(很可能被刪除)
 8 $cat /var/log/lastlog #最后登錄日志(很可能被刪除)
 9 $cat /var/log/secure #登錄日志,成功失敗都有(很可能被刪除)
10 $cat /var/log/faillog #登錄失敗日志,未必有
11 $cat /var/log/cron #計划任務,惡意程序、木馬后門啟動集中地或者cd /etc/crontab && ls
12 $cat ~/.bash_history 記錄操作指令,但是最好有shelllog,因為shelllog是內核hook的,及時攻擊者敲了unset history也可以記錄操作
13 #有異常進程和連接先干掉,從甲方首先保障回復切斷攻擊,保護自己然后再開始分析入侵細節。從乙方來說也可以避免干擾。
14 #綜上:shelllog是最王道的

3、系統級的(例如redis未授權訪問利用備份機制寫ssh證書密鑰獲取登錄權限的、或者ssh爆破的):

  根據上面查看的有漏洞修漏洞,弱密碼改口令,清楚所有木馬后門基本做不到,基本上對於安全制度要求都是重裝機器,業務備份就非常重要,確保業務不中斷。

  查看最近被修改的文件、創建的文件、隱藏的文件等等,爭取找到后門或其他惡意程序。

1 #find /path/ -mtime -1 -type f -print
2 #find /path/ -ctime -1 -type f -print
3 #ls -alt

  提權檢測(首先最好堵住臧臟牛等可以提權的漏洞,但出於業務對底層包文件、庫文件的依賴無法升級的一定要做好邊界防護)

1 $cat /etc/passwd  #查看異常id gid 為0的
2 $lsof -g gid 查看相關文件

4、WEB級的

   如果有網絡流量的監控預警會大大便利web的入侵應急響應。因為可以獲取到攻擊時間、攻擊來源、尤其是加載payload等重要信息,其實主機級別的一樣,如果有網絡級別的告警會更方便處理。

1 """
2 比如,利用java反序列化漏洞,把寫好的后門文件類通過java反序列化的方式傳到服務器上,甚至無需服務器運行web服務器(只要有java rmi倉庫即可),可以運行后門程序,全程沒有web日志。只能從tcp流量中查看。
3 """

  一般查看日志:

#如果可以,先停止服務:
#查看日志--確定攻擊源、確定攻擊操作:
#根據時間,現象等信息或者更多信息,確定攻擊者IP、攻擊操作:
#access_log/error.log
$sudo cat access_log | awk '{print $1}'|sort|uniq -c| sort -n -t ' ' #按訪問次數排序(nr)
$sudo cat  access_log | grep a.b.c.d | grep "2018-01-09:10:10:10"
#一定要開啟POST的部分的日志
#可以看出菜刀連接、木馬后門訪問、 SQL注入、反射性XSS、目錄遍歷、參數污染、文件上傳、OS命令注入執行等。
#關於數據的庫也可以去查看數據可的SQL運行日志,如果有后門去檢查后門文件,命令執行看操作那些,一般命令執行了,肯定會彈shell。

  后門檢查:很多人說查eval和system啊,也有很多有經驗的工程師說不能查這些詞,有網絡流量分析監控多好,能考到請求,查參數名(無論是GET還是POST)感覺蠻快的。

 1 #找到所有的腳本文件打包:
 2 $sudo find /var/www/html/  |grep -E ".asp$|.aspx$|.jsp$|.jspx$|.jspf$|.php$|.php3$|.php4$|.php5$|.inc$|.phtml$|.jar$|.war$|.pl$|.py$|.cer$|.asa$|.cdx$|.ashx$|.ascx$|.cfm$|.cgi$ "|xargs tar zcvf /tmp/shellscript.tar.gz
 3 #解壓縮后查找最近有改動的:
 4 $sudo ls -alt
 5 $sudo find ./ -mtime(ctime) x -name "*.[exetendfilename]"
 6 #x  第x天前那一天內修改過的文檔
 7 #+x x天之前修改過的
 8 #-x x天之內修改過的
 9 #查看文件內容的:
10 $find ./ -name "x.[exetendfilename]" | xargs grep [neirong]

二、對於非傳統攻擊(例如APT攻擊的)的應急處置:

1、快速斷網:

  根據上文中的對網絡連接的查詢, 快速查找到可以連接直接切斷,疑似受控危險情況下,直接斷網。(記錄下可以IP、Domain)

2、進程排查:

  根據進程,找到樣本(木馬、蠕蟲、病毒、downloader),交由沙箱快速分析重點找到網絡行為,如果已知更好。

  可以采取的措施:

  1、對於c&c的IP、域名要直接在防火牆上deny掉,或者直接托管(dns代理),dga類型的可以定期的檢測dga域名,嘗試預測或者根據逆向分析惡意樣本得到的dga算法進行封堵或者托管。

  2、已經感染的和未感染的機器進行隔離措施。

  3、分析惡意樣本行為以及失陷主機日志,分析評估損失。

  4、進行全面的主機惡意樣本檢查。

  5、回復或重裝系統。

3、排查rookit,或許有深度隱藏惡意后門、如有可能,重新全面評估內部安全包括滲透測試,風險評估等。

三、小技巧(引用自同學兼同行hyber博客http://www.cnblogs.com/Hyber/p/6039551.html

四、附錄:

1、附錄一RootkitHunter的詳細使用:

指令參數說明:

/usr/local/bin/rkhunter
Usage: rkhunter {--check | --update | --versioncheck |
                 --propupd [{filename | directory | package name},...] |
                 --list [{tests | {lang | languages} | rootkits},...] |
                 --version | --help} [options]
Current options are:
         --append-log                  在日志文件后追加日志,而不覆蓋原有日志
         --bindir <directory>...       Use the specified command directories
     -c, --check                       檢測當前系統
  --cs2, --color-set2                  Use the second color set for output
         --configfile <file>           使用特定的配置文件
         --cronjob                     作為cron定期運行
                                       (包含參數 -c, --sk , --nocolors )
         --dbdir <directory>           Use the specified database directory
         --debug                       Debug模式(不要使用除非要求使用)
         --disable <test>[,<test>...]  跳過指定檢查對象(默認為無)
         --display-logfile             在最后顯示日志文件內容
         --enable  <test>[,<test>...]  對指定檢測對象進行檢查
                                       (默認檢測所有對象)
         --hash {MD5 | SHA1 | NONE |   使用指定的文件哈希函數
                 <command>}            (Default is SHA1)
     -h, --help                        顯示幫助菜單
 --lang, --language <language>         指定使用的語言
                                       (Default is English)
         --list [tests | languages |   羅列測試對象明朝,使用語言,可檢測的木馬程序
                 rootkits]             
     -l, --logfile [file]              寫到指定的日志文件名
                                       (Default is /var/log/rkhunter.log)
         --noappend-log                不追加日志,直接覆蓋日志文件
         --nocolors                    輸出只顯示黑白兩色
         --nolog                       不寫入日志文件
--nomow, --no-mail-on-warning          如果有警告信息,不發送郵件
   --ns, --nosummary                   不顯示檢查結果的統計數據
 --novl, --no-verbose-logging          不顯示詳細記錄
         --pkgmgr {RPM | DPKG | BSD |  使用特定的包管理用於文件的哈希值驗證
                   NONE}               (Default is NONE)
         --propupd [file | directory | 更新整個文件屬性數據庫或僅僅更新指定條目
                    package]...        
     -q, --quiet                       安靜模式(no output at all)
  --rwo, --report-warnings-only        只顯示警告信息
     -r, --rootdir <directory>         使用指定的root目錄
   --sk, --skip-keypress               自動完成所有檢測,跳過鍵盤輸入
         --summary                     顯示檢測結果的統計信息
                                       (This is the default)
         --syslog [facility.priority]  記錄檢測啟動和結束時間到系統日志中
                                       (Default level is authpriv.notice)
         --tmpdir <directory>          使用指定的臨時目錄
         --update                      檢測更新內容
   --vl, --verbose-logging             使用詳細日志記錄 (on by default)
     -V, --version                     顯示版本信息
         --versioncheck                檢測最新版本
     -x, --autox                       當X在使用時,自動啟動檢測
     -X, --no-autox                    當X在使用時,不自啟檢測

有了rootkit hunter,偵測 rootkit 程序、偵測后門程序、以及主機端的套件檢查問題就變得簡單了,很多時候,rootkit hunter可以自動幫我們完成這些復雜的工作。

以上是雲棲社區小編為您精心准備的的內容,在雲棲社區的博客、問答、公眾號、人物、課程等欄目也有的相關內容,歡迎繼續使用右上角搜索按鈕進行搜索日志 , 文件 , 對象 , 程序 , 系統 哈希 linux rootkit掃描、rootkit掃描工具、linux rootkit工具、rootkit hunter、rootkithunter,以便於您獲取更多的相關知識。

2、附錄二:關於一些命令的使用我自己原來的博客合並過來:

(1)首先查看網絡連接情況:

1 #netstat -anop | grep "ssh" /*查看ssh連接或者telent*/
2 #netstat -anop | grep "a.b.c.d" /*查看連接的IP*/
3 #ps aux /*查看可以進程*/ 
4 /*
5 可以結合起來,因為netstat -anop里面有pid
6 */

由上面確認是否攻擊者仍在連接。如果連接,建議關閉網絡或直接下線脫機應急。

(2)查看history

1 #history /*查看歷史命令*/=》即使攻擊者敲擊了unset history 也至少會被記錄這一條

如果覺得history歷史記錄太少請查看歷史命令文件:

1 #vim ~/.bash_history

(3)查看用戶:

1 #who        /*查看登錄情況*/
2 #whoami   /*查看自己是誰*/
3 #vim /etc/passwd
4 #vim /etc/shadow

(4)查看最近被改過的文件:

1 #find /path/ -mtime -1 -type f -print
2 #find /path/ -ctime -1 -type f -print 3 #ls -alt

(5)查看所有腳本文件打包:

1 find /var/www/html/  |grep -E ".asp$|.aspx$|.jsp$|.jspx$|.jspf$|.php$|.php3$|.php4$|.php5$|.inc$|.phtml$|.jar$|.war$|.pl$|.py$|.cer$|.asa$|.cdx$|.ashx$|.ascx$|.cfm$|.cgi$ "|xargs tar zcvf /tmp/shellscript.tar.gz

(6)查看web日志:

 1 /*access_log:/var/log/httpd/access_log*/
 2 #cat access_log | awk '{print $1}'|sort|uniq -c  查看訪問的ip
 3 #cat access_log | awk '{print $1}'|sort|uniq -c| sort -n -t ' ' 按訪問次數排序(nr) 4 #find ./ -name "*.php" |grep 404|xargs ls -la//(xargs)把前面的結果傳到后面作為輸入 5 /*awk指定符號切:-F '切割符號' 6 /*復雜的awk*/ 7 #cat access_log | awk '{print $1"\t"$2}' 8 #cat access_log | awk'(/404/)'|wc -l 9 #cat access_log | awk '($1>2000&&$1~/172/)'#awk可以是表達式 10 #find /var/www/html/ -name "*.php" |xargs grep chenran 查看文件里面的內容

 3、附錄三:Unix日志分析讀書筆記:

一、文件分析:
知識點1、敏感目錄
(1)/tmp 臨時文件
(2)/usr/bin , /usr/sbin , /bin 命令所在目錄
(3)/etc/init.d 開機啟動目錄
知識點2、敏感文件
(1)/etc/rc.local 開機啟動文件
(2)/root/.bash_history 命令執行歷史信息文件
(3)/etc/password /etc/shadow 用戶賬戶信息文件
(4)/etc/cron* 計划任務信息
知識點3、常用命令
(1)ls -alt [a 查看以.開頭的隱藏文件;t 按時間排序;l 查看列表詳細信息 ]
(2)取前x(x為正整數集合)項 head -n X
(3)查看文件詳細信息 stat
(4)find ./ -mtime(ctime) x -name "*.php"
[-mtime 指不包含權限的文件修改時間]
[-ctime包含權限的文件修改時間]
[-name 后面是文件名的正則
(5)查看文件權限 find ./*.py -perm 4777 [-perm 后面權限號]
(6)查看命令文件是否替換 可以直接MD5檢查。

二、網絡與進程分析
知識點一、查看進程
(1)ps aux
(2)連接grep使用,例如grep xxx 或者 grep -v xxx [-v 排出xxx]
知識點二、查看網絡
(1)netstat -antlp | more 基本信息關聯查看
(2)lsof -i port 查看端口對應程序
知識點三、查看隱藏進程
(1)ps -ef | awk '{print}' | sort -n | uniq > 1
ls /proc | sort -n | uniq >2
diff 1 2

三、系統信息分析
知識點1、history分析 /root/.bash_history 分析歷史執行命令
知識點2、敏感文件分析(參考敏感文件)
知識點3、開機啟動分析(chkconfig)
知識點4、用戶信息分析cat /etc/passwd | grep -E "/bin/bash$"能登錄的用戶
知識點5、環境變量系統路徑分析 echo $PATH
知識點6、ssh分析 /etc/ssh /etc/.ssh

四、日志分析
知識點1、日志文件
(1)/var/log/wtmp
(2)/var/run/utmp
(3)/var/log/lastlog
(4)/var/log/btmp
知識點2、關鍵字
(1)Accepted
(2)Failed
(3)password
(4)invalid
知識點3、登錄日志分析
(1)lastlog最近幾次登錄成功和最后一次登錄失敗相關信息
(2)who 查詢當前用戶信息
(3)whois 類似(2)
(4)users 類似(2)
(5)lastb 類似(1)
(6)finger
知識點4、兩條語句
(1)grep "Failed password for root" /var/log/auth.log | awk '{print $11}' | sort | uniq -nr | more
(2)grep "Accepted" /var/log/auth.log | awk '{print $11}' | sort |uniq -c | sort -nr | more

四、后門排查
知識點1、webshell查找
(a)命令:
find /var/www/ -name "*.php" | xargs egrep 'assert | phpspy | c99sh | milw0rm | eval | \( gunerpress | \(bas464_encode | spider _bc | shell_exec | passthru | \(\$\_\POST\[|eval\(str_rotl3 | .chr\c|\$\{\"\_P|eval\C\$\_R | file_put_contents\C\.\*\$\_ | base64_decode'

五、應用類日志的幾個小技巧:
知識點1、
find .access_log | grep xargs ip a.b.c.d
find .access_log | grep xargs trojan_name
cat access.log | cut -f 1(ip)/4(url) "" | sort | uniq -c | sort -k | -r head -10
cat access.log | sort -k 2 -n -r | head -10

 


免責聲明!

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



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