前段時(shí)間公司發(fā)生了一起服務(wù)器入侵事件,在此分享給大家也順便理順下linux入侵應(yīng)急響應(yīng)思路。
一、事件描述
某天監(jiān)控同事反饋有臺(tái)機(jī)器cpu飆高到2000%,可能機(jī)器已經(jīng)被黑。于是登錄上去查看,果然有個(gè)進(jìn)程名為"HT8sUy71"的進(jìn)程在作祟,這一看名字就不大可能是正常進(jìn)程。
二、處理過(guò)程
2.1?查殺病毒進(jìn)程
cpu占用率如此之高,基本可判斷為挖礦程序無(wú)疑了,使用在線威脅情報(bào)系統(tǒng)對(duì)進(jìn)程進(jìn)行檢測(cè),不出所料,得出的標(biāo)簽是coinminer。這種挖礦進(jìn)程一般都有自動(dòng)重啟機(jī)制,可能是某個(gè)進(jìn)程的子進(jìn)程,也可能在cron定時(shí)任務(wù)里出現(xiàn)。
首先,檢查cron定時(shí)任務(wù),發(fā)現(xiàn)/var/spool/cron/crontabs/root和/etc/cron.d/tomcat文件修改時(shí)間有變化,但是內(nèi)容卻無(wú)改動(dòng)。
然后,使用ps -ef進(jìn)行查找主進(jìn)程,并無(wú)收獲。同時(shí)發(fā)現(xiàn)此挖礦進(jìn)程正在和“172.105.114.84”這個(gè)ip的8443端口進(jìn)行通信,可能是黑客的一臺(tái)遠(yuǎn)控服務(wù)器。
之后,lsof查看此進(jìn)程在操作哪些文件,也無(wú)實(shí)際收獲。
推測(cè)一定是有某個(gè)主進(jìn)程在工作,so,繼續(xù)通過(guò)ps和netstat查找監(jiān)聽(tīng)所監(jiān)聽(tīng)端口的異常。果不其然,看到異常進(jìn)程,正在批量爆破,看來(lái)是被當(dāng)做肉雞了。同時(shí)使用lsof查看此進(jìn)程文件,發(fā)現(xiàn)在調(diào)用/root/.ddg/4003.db文件,貌似是個(gè)加密的社工庫(kù)。
判斷是此程序即是主程序,kill掉挖礦進(jìn)程后,使用strace -T -tt -e strace=full進(jìn)行跟蹤,發(fā)現(xiàn)主進(jìn)程先對(duì)挖礦進(jìn)程增加可執(zhí)行權(quán)限,之后拉起進(jìn)程。
那么現(xiàn)在kill掉主進(jìn)程吧,發(fā)生個(gè)小插曲,發(fā)現(xiàn)主進(jìn)程pid一直在變化,好吧,直接killall osryfa3。
至此,算是暫時(shí)消停一下,簡(jiǎn)單總結(jié)一下此病毒特征,其一方面釋放挖礦病毒進(jìn)行挖礦,同時(shí)又對(duì)公網(wǎng)ssh服務(wù)進(jìn)行爆破以擴(kuò)大感染面。在這里同時(shí)給了我一個(gè)提醒,或許這臺(tái)服務(wù)器就是通過(guò)ssh爆破被入侵的。
2.2?查找入侵痕跡
?一般情況下,入侵可能有以下幾種方式:?
a.各種弱口令爆破
b.系統(tǒng)漏洞的利用
c.應(yīng)用漏洞的利用
上面說(shuō)了,可能是通過(guò)ssh爆破被入侵的,我們先來(lái)驗(yàn)證一下。
查看登錄日志,發(fā)現(xiàn)異常(下圖是已經(jīng)過(guò)濾掉正常登錄的日志),基本可斷定是通過(guò)ssh爆破入侵了,也可以斷定ssh的訪問(wèn)控制已經(jīng)失效。?
cat?/var/log/secure*?|grepAccepted
結(jié)合以上ip查看爆破日志,確認(rèn)以上ip的用戶不是同一個(gè)人,是剛好有這么多ip同時(shí)爆破了root賬戶,而且最短的爆破時(shí)間只花了1分鐘。想來(lái)這個(gè)root賬戶必然是個(gè)弱密碼了。繼續(xù)查找Failed日志的最早時(shí)間如下:
cat?/var/log/secure*?|grepFailed
基本可斷定在這之前有人動(dòng)過(guò)訪問(wèn)控制策略了,詢問(wèn)運(yùn)維人員無(wú)果。
stats查看iptables、/etc/hosts.allow和/etc/hosts.deny文件狀態(tài),結(jié)合.bash_history命令,一切真相大白,一言難盡,你們自己體會(huì)。
2.3 病毒文件的清理
首先,使用stat查看上面兩個(gè)進(jìn)程的修改時(shí)間,大約在7月8號(hào)早上6點(diǎn)多,而ssh系統(tǒng)最早爆破時(shí)間是7月6號(hào)16:41。
然后,結(jié)合這兩個(gè)時(shí)間來(lái)查找敏感目錄中被修改過(guò)的系統(tǒng)文件,進(jìn)行檢查修復(fù)和清除。
find/etc//usr/bin//usr/sbin//bin//usr/local/bin//var/spool/cron/-type?f?-mtime-3|?xargs?ls?-l
最后 ,使用chkrootkit、clamav、rkhunter一通查殺,當(dāng)然,還是重裝系統(tǒng)最保險(xiǎn)。
三、總結(jié)
首先啰嗦一下,關(guān)于linux主機(jī),高危端口真得萬(wàn)萬(wàn)不能全網(wǎng)開放??戳巳罩竞?,發(fā)現(xiàn)黑客真是時(shí)時(shí)刻刻在爆破啊。
關(guān)于linux入侵的排查思路,總結(jié)如下:
1、查看異常進(jìn)程活動(dòng)-查找是否有異常進(jìn)程和端口占用
1.1查找占用cpu最多的進(jìn)程,相關(guān)命令:運(yùn)行top命令后,鍵入大寫字母P按cpu排序;
1.2查找占用內(nèi)存最多的進(jìn)程,相關(guān)命令:運(yùn)行top命令后,鍵入大寫字母M
psaux?|?sort?-k4nr
1.3查找進(jìn)程文件:
ls-la?/proc/$pid/exe
1.4跟蹤異常進(jìn)程運(yùn)行情況:
strace-tt??-T?-e??trace=all??-p$pid
1.5查看進(jìn)程打開的文件
lsof-p$pid
1.6 查看進(jìn)程端口情況? ? ? ? ?
netstat-anltp?|?grep$pid
2、查看賬號(hào)安全
2.1查看是否有存在新增異常賬號(hào):
a.查找特權(quán)用戶
awk-F":"'$3==0{print$1}'/etc/passwd
b.查找可以遠(yuǎn)程登錄的賬號(hào)信息? ? ? ? ? ?
awk'/\$1|\$6/{print$1}'?/etc/shadow
c.查找sudo權(quán)限賬戶
cat/etc/sudoers?|?grep?-v"^#\|^$"|?grep"ALL=(ALL)"
2.2 查看是否有賬號(hào)異常登錄情況:
a.查看當(dāng)前登錄用戶和其行為
w
b.查看所有用戶最后一次登錄的時(shí)間
lastlog
c.查看所有用戶的登錄注銷信息及系統(tǒng)的啟動(dòng)、重啟及關(guān)機(jī)事件???
last
d.查看登錄成功的日期、用戶名及ip
grep"Accepted?"/var/log/secure*?|?awk'{print$1,$2,$3,$9,$11}'
e.查看試圖爆破主機(jī)的ip
greprefused?/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在爆破主機(jī)的root賬號(hào)? ??
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
3、查找異常文件? ?
3.1 查找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/*
3.2 查看最近一段時(shí)間內(nèi)被修改的系統(tǒng)文件?
find/etc//usr/bin//usr/sbin//bin//usr/local/bin/-type?f?-mtime?-T?|?xargs?ls?-la
3.3?按時(shí)間排序,確認(rèn)最近是否有命令被替換,可以結(jié)合rpm -Va命令
ls?-alt?/usr/bin?/usr/sbin?/bin?/usr/local/bin
rpm?-Va>rpm.log
3.4?確認(rèn)是否有異常開機(jī)啟動(dòng)項(xiàng)? ? ? ?
cat?/etc/rc.local
chkconfig--list
4.借助工具查殺病毒和rootkit
4.1?查殺rootkit
chkrootkit(下載地址-http://www.chkrootkit.org)
rkhunter?(下載地址-http://rkhunter.sourceforge.net)
4.2?查殺病毒?
clamav(下載地址-http://www.clamav.net/download.html)??
4.3?查殺webshell
cloudwalker(下載地址-http://github.com/chaitin/cloudwalker)
工具用法不再贅述,大家自行查閱。