一、主機篇:
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

