Linux系統(tǒng)被入侵后處理實戰(zhàn)
事件背景
操作系統(tǒng):Ubuntu12.04_x64
運行業(yè)務(wù):公司業(yè)務(wù)系統(tǒng),爬蟲程序,數(shù)據(jù)隊列。
服務(wù)器托管在外地機房。
突然,頻繁收到一組服務(wù)器ping監(jiān)控不可達郵件,趕緊登陸zabbix監(jiān)控系統(tǒng)查看流量狀況。
可見流量已經(jīng)達到了800M左右,肯定不正常!
馬上嘗試SSH登陸系統(tǒng),不幸的是,這種情況是很難登錄系統(tǒng)的。
該怎么辦?
1、排查問題
當(dāng)時我的第一反應(yīng)是想馬上切斷外部網(wǎng)絡(luò),通過內(nèi)網(wǎng)連接查看。
可是這樣一來流量就會消失,也就很難查找攻擊源了。
于是聯(lián)系機房協(xié)助解決,授權(quán)機房技術(shù)登錄到系統(tǒng):
首先通過w命令查看是否有異常用戶在登錄;
再查看登錄日志/var/log/auth.log,預(yù)料之中,日志已經(jīng)清空;
最后使用iftop工具找出占用大量流量的連接。
下圖是機房技術(shù)給我拍的照:
可以看到本地一直通過http方式向104.31.225.6這個ip發(fā)送數(shù)據(jù)包,而且持續(xù)不斷。
那好,先把這個ip給屏蔽了試試:
- iptables –A OUTPUT –d 104.31.225.6 –j DROP
哇塞!奇跡出現(xiàn)了,流量下去了,能正常連接了。
過一會兒,不幸的事情發(fā)生了,流量又上來了!
什么情況!我的心情頓時緊張起來。
又趕緊聯(lián)系機房技術(shù),執(zhí)行上次的操作。
下圖是當(dāng)時的情況:
傻眼了,目的ip變了,這可咋搞,不可能一個個封吧!
靜下心來,仔細想了下,本地向外發(fā)包,那本地肯定會有程序來發(fā)!
找到本地程序就能解決了!
2、查找攻擊源
首先我使用了netstat工具過濾端口,查看運行的進程ID:
- netstat –atup |grep 15773
沒有任何結(jié)果,更換端口嘗試后仍然沒有結(jié)果。
拜托機房技術(shù)大哥觀察了下連接狀態(tài),原來是短連接,會很快的釋放端口,所以才看不到端口的連接狀態(tài)。
正常長連接來說,可以使用lsof –i :15773這樣方式找到PID,再lsof –p PID找到打開的相關(guān)文件。
好吧!只好先切斷外部網(wǎng)絡(luò),內(nèi)網(wǎng)SSH進入系統(tǒng),然后找到這個發(fā)包的程序。
第一步:通過netstat –antup 查看有無開放可疑的端口或者連接。
第二步:通過ps –ef查看有無可疑的進程。
結(jié)果是~
都沒有!
難道是植入了rootkit木馬程序?!
想要判斷系統(tǒng)有沒有植入了rootkit可以使用md5sum校驗執(zhí)行文件判斷:
先找個同版本操作系統(tǒng),獲取到這個工具執(zhí)行文件的md5值,再獲取可疑的工具執(zhí)行文件md5值,比較兩個值是否相同。
如果相同說明這個工具是可信任的,如果不相同很有可能是被替換的。
另外,一般工具可執(zhí)行文件大小都在幾十K到幾百K。
但我沒有選擇用md5方式來判斷工具是否可信任,因為完全相同版本的操作系統(tǒng)并不好找。
我直接使用du –sh /bin/lsof查看,發(fā)現(xiàn)大小1.2M,明顯有問題。
所以直接下載正常系統(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
看到這幾個,感覺很奇怪,怎么會有個java.log的執(zhí)行文件在運行呢?
先殺掉并刪除再說。
這里就更奇怪了,怎么會有我執(zhí)行的命令呢?
ps –ef,命令的路徑不是/bin/ps,引起了我的懷疑,馬上進入此目錄下查看。
擦,還有幾個,初步判斷是工具被替換了。
還有一個怎么叫g(shù)etty呢,再正常系統(tǒng)里面對比進程,發(fā)現(xiàn)沒有這個。
寧可錯殺一百,也不放過一個!
殺掉進程,刪除目錄。
這個.sshd進程明顯很可疑,可能是ssh后門,先殺掉刪除再說!
再執(zhí)行ps –ef命令看下,奇怪,java.log進程又起來了,難道有自啟動設(shè)置?
于是到了/etc/init.d下查看,有個異常腳本,在正常系統(tǒng)的也沒有,打開看了下,果然是啟動木馬程序的腳本。
把腳本刪除,再刪除一次java.log,不再出現(xiàn)了。
刪除了/sbin/java.log文件過一會又出現(xiàn)了,估計是getty趁搞的鬼,同樣清除,不再自動生成了。
好了,可以開啟外網(wǎng)了,觀察了一會網(wǎng)絡(luò)流量不再飆升了,心情有如看到美女一樣的愉快!
4、事件總結(jié)
- ls /usr/bin/dpkgd/ #替換的工具,系統(tǒng)自帶的工具正常不會在這個目錄下,并且也不可用
- netstat lsof ps ss
- /sbin/java.log #判斷是發(fā)包程序,刪除后會自動生成
- /usr/bin/bsd-port #判斷是自動生成java.log或著后門程序
- /usr/sbin/.sshd #判斷是后門程序
如果還有其他木馬程序怎么辦?如果是XSS攻擊,應(yīng)用層漏洞入侵怎么辦?
針對這些問題,從我們公司角度來說,盡量不重裝系統(tǒng),業(yè)務(wù)太復(fù)雜。找出入侵點,跑的程序多,攻擊面多,很棘手。
就先這樣吧!兵來將擋,水來土掩。~
被黑客趁機入侵的原因:
1. 運維對網(wǎng)絡(luò)安全實施落實力度低
2. 沒有相關(guān)安全測試人員,不能及時發(fā)現(xiàn)應(yīng)用層漏洞
等等...
針對這次攻擊,總結(jié)了下防護思路:
1. linux系統(tǒng)安裝后,啟用防火墻,只允許信任源訪問指定服務(wù),刪除不必要的用戶,關(guān)閉不必要的服務(wù)等。
2. 收集日志,包括系統(tǒng)日志,登錄日志,程序日志等,及時發(fā)現(xiàn)潛在風(fēng)險。
3. 針對用戶登錄實時收集,包括登錄時間,密碼重試次數(shù)以及用戶執(zhí)行命令記錄等。
4. 對敏感文件或目錄變化進行事件監(jiān)控,如/etc/passwd、/etc/shadow、/web、/tmp(一般上傳文件提權(quán)用)等。
5. 進程狀態(tài)監(jiān)控,對新增或可疑進程做好記錄并通知。
6. 對上線的服務(wù)器系統(tǒng)、Web程序進程安全漏洞掃描。
最后,沒有絕對的安全,只有盡可能減少攻擊面,提供系統(tǒng)防護能力。
網(wǎng)絡(luò)安全,從我做起!