linux系統(tǒng)被入侵后處理實(shí)戰(zhàn)

事件背景
操作系統(tǒng):Ubuntu12.04_x64
運(yùn)行業(yè)務(wù):公司業(yè)務(wù)系統(tǒng),爬蟲程序,數(shù)據(jù)隊(duì)列。
服務(wù)器托管在外地機(jī)房。
突然,頻繁收到一組服務(wù)器ping監(jiān)控不可達(dá)郵件,趕緊登陸zabbix監(jiān)控系統(tǒng)查看流量狀況。


可見流量已經(jīng)達(dá)到了800M左右,肯定不正常!
馬上嘗試SSH登陸系統(tǒng),不幸的是,這種情況是很難登錄系統(tǒng)的。
該怎么辦?
1、排查問(wèn)題
當(dāng)時(shí)我的第一反應(yīng)是想馬上切斷外部網(wǎng)絡(luò),通過(guò)內(nèi)網(wǎng)連接查看。
可是這樣一來(lái)流量就會(huì)消失,也就很難查找攻擊源了。
于是聯(lián)系機(jī)房協(xié)助解決,授權(quán)機(jī)房技術(shù)登錄到系統(tǒng):
首先通過(guò)w命令查看是否有異常用戶在登錄;
再查看登錄日志/var/log/auth.log,預(yù)料之中,日志已經(jīng)清空;
最后使用iftop工具找出占用大量流量的連接。
下圖是機(jī)房技術(shù)給我拍的照:

可以看到本地一直通過(guò)http方式向104.31.225.6這個(gè)ip發(fā)送數(shù)據(jù)包,而且持續(xù)不斷。
那好,先把這個(gè)ip給屏蔽了試試:
iptables –A OUTPUT –d 104.31.225.6 –j DROP
哇塞!奇跡出現(xiàn)了,流量下去了,能正常連接了。
過(guò)一會(huì)兒,不幸的事情發(fā)生了,流量又上來(lái)了!
什么情況!我的心情頓時(shí)緊張起來(lái)。
又趕緊聯(lián)系機(jī)房技術(shù),執(zhí)行上次的操作。
下圖是當(dāng)時(shí)的情況:

傻眼了,目的ip變了,這可咋搞,不可能一個(gè)個(gè)封吧!
靜下心來(lái),仔細(xì)想了下,本地向外發(fā)包,那本地肯定會(huì)有程序來(lái)發(fā)!
找到本地程序就能解決了!
2、查找攻擊源
首先我使用了netstat工具過(guò)濾端口,查看運(yùn)行的進(jìn)程ID:
netstat –atup |grep 15773
沒有任何結(jié)果,更換端口嘗試后仍然沒有結(jié)果。
拜托機(jī)房技術(shù)大哥觀察了下連接狀態(tài),原來(lái)是短連接,會(huì)很快的釋放端口,所以才看不到端口的連接狀態(tài)。
正常長(zhǎng)連接來(lái)說(shuō),可以使用lsof –i :15773這樣方式找到PID,再lsof –p PID找到打開的相關(guān)文件。
好吧!只好先切斷外部網(wǎng)絡(luò),內(nèi)網(wǎng)SSH進(jìn)入系統(tǒng),然后找到這個(gè)發(fā)包的程序。
第一步:通過(guò)netstat –antup 查看有無(wú)開放可疑的端口或者連接。
第二步:通過(guò)ps –ef查看有無(wú)可疑的進(jìn)程。
結(jié)果是~
都沒有!
難道是植入了rootkit木馬程序?!
想要判斷系統(tǒng)有沒有植入了rootkit可以使用md5sum校驗(yàn)執(zhí)行文件判斷:
先找個(gè)同版本操作系統(tǒng),獲取到這個(gè)工具執(zhí)行文件的md5值,再獲取可疑的工具執(zhí)行文件md5值,比較兩個(gè)值是否相同。
如果相同說(shuō)明這個(gè)工具是可信任的,如果不相同很有可能是被替換的。
另外,一般工具可執(zhí)行文件大小都在幾十K到幾百K。
但我沒有選擇用md5方式來(lái)判斷工具是否可信任,因?yàn)橥耆嗤姹镜牟僮飨到y(tǒng)并不好找。
我直接使用du –sh /bin/lsof查看,發(fā)現(xiàn)大小1.2M,明顯有問(wèn)題。
所以直接下載正常系統(tǒng)里的netstat、ps等工具上傳到被黑的系統(tǒng)里使用,再將不可用的替換掉。
3、清理木馬程序
完成第二步的操作后,奇跡出現(xiàn)了,執(zhí)行ps –ef后,發(fā)下最下面有幾行可疑程序。
本想截圖的,可惜SSH客戶端給關(guān)了,沒留下截圖。
記憶中,大概是這樣的:
pid /sbin/java.log
pid /usr/bin/dpkgd/ps –ef
pid /usr/bin/bsd-port/getty
pid /usr/bin/.sshd
看到這幾個(gè),感覺很奇怪,怎么會(huì)有個(gè)java.log的執(zhí)行文件在運(yùn)行呢?
先殺掉并刪除再說(shuō)。

這里就更奇怪了,怎么會(huì)有我執(zhí)行的命令呢?
ps –ef,命令的路徑不是/bin/ps,引起了我的懷疑,馬上進(jìn)入此目錄下查看。

擦,還有幾個(gè),初步判斷是工具被替換了。
還有一個(gè)怎么叫g(shù)etty呢,再正常系統(tǒng)里面對(duì)比進(jìn)程,發(fā)現(xiàn)沒有這個(gè)。
寧可錯(cuò)殺一百,也不放過(guò)一個(gè)!

殺掉進(jìn)程,刪除目錄。
這個(gè).sshd進(jìn)程明顯很可疑,可能是ssh后門,先殺掉刪除再說(shuō)!

再執(zhí)行ps –ef命令看下,奇怪,java.log進(jìn)程又起來(lái)了,難道有自啟動(dòng)設(shè)置?
于是到了/etc/init.d下查看,有個(gè)異常腳本,在正常系統(tǒng)的也沒有,打開看了下,果然是啟動(dòng)木馬程序的腳本。
把腳本刪除,再刪除一次java.log,不再出現(xiàn)了。


刪除了/sbin/java.log文件過(guò)一會(huì)又出現(xiàn)了,估計(jì)是getty趁搞的鬼,同樣清除,不再自動(dòng)生成了。
好了,可以開啟外網(wǎng)了,觀察了一會(huì)網(wǎng)絡(luò)流量不再飆升了,心情有如看到美女一樣的愉快!
4、事件總結(jié)
ls /usr/bin/dpkgd/ ? #替換的工具,系統(tǒng)自帶的工具正常不會(huì)在這個(gè)目錄下,并且也不可用
netstat lsof ps ss
/sbin/java.log ?#判斷是發(fā)包程序,刪除后會(huì)自動(dòng)生成
/usr/bin/bsd-port #判斷是自動(dòng)生成java.log或著后門程序
/usr/sbin/.sshd ?#判斷是后門程序
如果還有其他木馬程序怎么辦?如果是XSS攻擊,應(yīng)用層漏洞入侵怎么辦?
針對(duì)這些問(wèn)題,從我們公司角度來(lái)說(shuō),盡量不重裝系統(tǒng),業(yè)務(wù)太復(fù)雜。找出入侵點(diǎn),跑的程序多,攻擊面多,很棘手。
就先這樣吧!兵來(lái)將擋,水來(lái)土掩。~
被黑客趁機(jī)入侵的原因:
1. 運(yùn)維對(duì)網(wǎng)絡(luò)安全實(shí)施落實(shí)力度低
2. 沒有相關(guān)安全測(cè)試人員,不能及時(shí)發(fā)現(xiàn)應(yīng)用層漏洞
等等...
針對(duì)這次攻擊,總結(jié)了下防護(hù)思路:
1. Linux系統(tǒng)安裝后,啟用防火墻,只允許信任源訪問(wèn)指定服務(wù),刪除不必要的用戶,關(guān)閉不必要的服務(wù)等。
2. 收集日志,包括系統(tǒng)日志,登錄日志,程序日志等,及時(shí)發(fā)現(xiàn)潛在風(fēng)險(xiǎn)。
3. 針對(duì)用戶登錄實(shí)時(shí)收集,包括登錄時(shí)間,密碼重試次數(shù)以及用戶執(zhí)行命令記錄等。
4. 對(duì)敏感文件或目錄變化進(jìn)行事件監(jiān)控,如/etc/passwd、/etc/shadow、/web、/tmp(一般上傳文件提權(quán)用)等。
5. 進(jìn)程狀態(tài)監(jiān)控,對(duì)新增或可疑進(jìn)程做好記錄并通知。
6. 對(duì)上線的服務(wù)器系統(tǒng)、Web程序進(jìn)程安全漏洞掃描。
最后,沒有絕對(duì)的安全,只有盡可能減少攻擊面,提供系統(tǒng)防護(hù)能力。
網(wǎng)絡(luò)安全,從我做起!
?
文章來(lái)源:馬哥教育
官方微信:馬哥Linux運(yùn)維
Linux運(yùn)維學(xué)習(xí)交流群:537045784