一、記一次Linux伺服器被入侵後的檢測過程
文章來之網絡整理,《記一次Linux伺服器被入侵後的檢測過程》轉載至http://mageedu.blog.51cto.com/4265610/1901543
0×00 前言
故事是這樣的,大年初一,客戶反應他們伺服器無法通路,檢視路由,發現某oracle+tomcat伺服器UDP流量超大,把帶寬占完了,過年嘛,客戶那邊先找了當地的技術人員弄了幾天沒搞定,然後沒辦法大年初三的找我們弄…顧客是上帝!
其實吧以前也遇到過這類攻擊,當時某IDC都被打癱了,隻不過馬兒不在我們的裝置上,是以沒過多關注…
0×01 查找木馬
首先SSH登陸,top檢視程序,發現奇怪名字的指令gejfhzthbp,一看就感覺有問題。

lsof –c gejfhzthbp
檢視關聯檔案,發現對外的tcp連接配接,不知道是不是反向shell…
執行指令
Whereis gejfhzthbp ls -al gejfhzthbp
檢視檔案路徑。并檢視檔案建立時間,與入侵時間吻合。
順便把檔案拷貝下來放到kali虛拟機試了下威力,幾秒鐘的結果如下…
之前還以為是外國人搞的,這應該能證明是國人搞的了…
0×02 恢複業務
首先kill程序,結果肯定沒那麼簡單,程序換個名字又出來了
中間嘗試過很多過程,ps –ef |grep 發現父程序每次不一樣,關聯程序有時是sshd,有時是pwd,ls,中間裝了個VNC連接配接,然後關閉ssh服務,同樣無效,而且kill幾次之後發現父程序變成了1,水準有限,生産伺服器,還是保守治療,以業務為主吧…
既然被人入侵了,首先還是把防火牆的SSH映射關掉吧,畢竟伺服器現在還要用,還是寫幾條iptables規則吧
iptables -A OUTPUT -o lo -j ACCEPT
允許本機通路本機
iptables -A OUTPUT -m state --state ESTABLISHED -j ACCEPT
允許主動通路本伺服器的請求
iptables -A OUTPUT –p tcp –d 192.168.1.235 -jACCEPT
允許伺服器主動通路的IP白名單
iptables -A DROP
拒絕對外通路
到此,業務恢複正常。
0×03 查找原因
其實原因一開始我就意識到了是SSH的問題,隻是先要幫人把業務恢複了再說,web端口方面就隻有tomcat的,web漏洞都查過了,什麼struts2,manager頁面,還有一些正常web漏洞均不會存在,除非有0day…. Oracle也不外連,隻有個SSH
基于這一點,我直接查root賬戶ssh登陸日志,翻啊翻,終于….
cd /var/log less secure
如上圖,使用印尼IP爆破成功,而後面伺服器内網IP登陸竟然是失敗,問了客戶,算是明白了怎麼回事,他們年底加裝置,給伺服器臨時改了弱密碼友善各種第三方技術人員調試,然後估計忘了改回來,結果悲劇了,被壞人登陸了不說,root密碼還被改,自己都登不上…不知道他們老闆知不知道…
繼續檢視history檔案,看人家都幹了些什麼。
壞人的操作過程基本就在這裡了,他執行了好多腳本,誰知道他幹了多少事,還是建議客戶重裝系統吧…
0×04 後記
主要還是自己經驗尚淺,linux運維玩的不熟,不知道怎麼把馬兒徹底趕出去…大牛勿噴。
二、Linux伺服器被入侵和删除木馬程式的經曆
一、背景
晚上看到有台伺服器流量跑的很高,明顯和平常不一樣,流量達到了800Mbps,第一感覺應該是中木馬了,被人當做殭屍電腦了,在大量發包。
我們的伺服器為了最好性能,防火牆(iptables)什麼的都沒有開啟,但是伺服器前面有實體防火牆,而且機器都是做的端口映射,也不是常見的端口,按理來說應該是滿安全的,可能最近和木馬有緣吧,老是讓我遇到,也趁這次機會把發現過程記錄一下。
二、發現并追蹤處理
1、檢視流量圖發現問題
檢視的時候網頁非常卡,有的時候甚至沒有響應。
2、top動态檢視程序
我馬上遠端登入出問題的伺服器,遠端操作很卡,網卡出去的流量非常大,通過top發現了一個異常的程序占用資源比較高,名字不仔細看還真以為是一個Web服務程序。
3、ps指令檢視程序的路徑
發現這個程式檔案在/etc目錄下面,是個二進制程式,我拷貝了下來,放到了本文附近位置,以供大家在虛拟機上面研究,哈哈。
4、結束異常程序并繼續追蹤
幹掉程序之後,流量立刻下來了,遠端也不卡頓了,難道删掉程式檔案,幹掉異常程序我們就認為處理完成了麼?想想也肯定沒那麼簡單的,這個是木馬啊,肯定還會自己生成程式檔案(果然不出我所料,在我沒有搞清楚之前,後面确實又生成了)我們得繼續追查。
5、檢視登入記錄及日志檔案secure
通過指令last檢視賬戶登入記錄,一切正常。檢視系統檔案message并沒有發現什麼,但是當我檢視secure檔案的時候發現有些異常,反正是和認證有關的,應該是嘗試連進來控制發包?
6、再次ps檢視程序
其實第一次ps的時候就有這個問題,那時候沒有發現,第二次是自習檢視每個程序,自習尋找不太正常的程序,發現了一個奇怪的ps程序。
我找了一台正常的機器,檢視了一下ps指令的大小,正常的大約是81KB,然後這台機器上面的ps卻高達1.2M,指令檔案肯定是被替換了。
然後進入另一個ps的目錄,看到有如下幾個指令,然後我有查詢了一下系統的這幾個指令,發現都變得很大,都達到了1.2M,這些系統指令檔案肯定是都被替換了。
7、更多異常檔案的發現
檢視定時任務檔案crontab并沒有發現什麼一次,然後檢視系統啟動檔案rc.local,也沒有什麼異常,然後進入/etc/init.d目錄檢視,發現比較奇怪的腳本檔案DbSecuritySpt、selinux。
第一個檔案可以看出他就是開機啟動那個異常檔案的,第二個應該和登入有關,具體我還不是很清楚,反正肯定是有問題的。
既然和登入有關,那就找和ssh相關的,找到了下面的一個檔案,是隐藏檔案,這個也是木馬檔案,我們先記錄下來,這樣程式名字都和我們的服務名字很相近,就是為了迷惑我們,他們的大小都是1.2M,他們有可能是一個檔案。
我有看了一下木馬喜歡出現的目錄/tmp,也發現了異常檔案,從名字上感覺好像是監控木馬程式的。
想到這裡,替換的指令應該很多,單靠我們去找肯定是解決不了的,我的建議最好是重裝作業系統,并做好安全政策,如果不重裝,我下面給一下我的方法,具體行不行有待驗證。
三、木馬手動清除
現在綜合總結了大概步驟如下:
1、簡單判斷有無木馬
2、上傳如下指令到/root下
3、删除如下目錄及檔案
4、找出異常程式并殺死
5、删除含木馬指令并重新安裝(或者把上傳的正常程式複制過去也行)
我自己重新安裝好像不行,我是找的正常的機器複制的指令。
四、殺毒工具掃描
1、安裝殺毒工具clamav
2、啟動服務
3、更新病毒庫
由于ClamAV不是最新版本,是以有告警資訊。可以忽略或更新最新版本。
4、掃描方法
可以使用clamscan -h檢視相應的幫助資訊
5、檢視日志發現
把發現的指令删掉替換正常的
附錄:Linux.BackDoor.Gates.5
經過查詢資料,這個木馬應該是Linux.BackDoor.Gates.5,找到一篇檔案,内容具體如下:
某些使用者有一種根深蒂固的觀念,就是目前沒有能夠真正威脅Linux核心作業系統的惡意軟體,然而這種觀念正在面臨越來越多的挑戰。與4月相比,2014年5月Doctor Web公司的技術人員偵測到的Linux惡意軟體數量創下了新紀錄,六月份這些惡意軟體名單中又增加了一系列新的Linux木馬,這一新木馬家族被命名為Linux.BackDoor.Gates。
在這裡描述的是惡意軟體家族Linux.BackDoor.Gates中的一個木馬:Linux.BackDoor.Gates.5,此惡意軟體結合了傳統後門程式和DDoS攻擊木馬的功能,用于感染32位Linux版本,根據其特征可以斷定,是與Linux.DnsAmp和Linux.DDoS家族木馬同出于一個病毒編寫者之手。新木馬由兩個功能子產品構成:基本子產品是能夠執行不法分子所發指令的後門程式,第二個子產品在安裝過程中儲存到硬碟,用于進行DDoS攻擊。Linux.BackDoor.Gates.5在運作過程中收集并向不法分子轉發受感染電腦的以下資訊:
CPU核數(從/proc/cpuinfo讀取)。
CPU速度(從/proc/cpuinfo讀取)。
CPU使用(從/proc/stat讀取)。
Gate'a的 IP(從/proc/net/route讀取)。
Gate'a的MAC位址(從/proc/net/arp讀取)。
網絡接口資訊(從/proc/net/dev讀取)。
網絡裝置的MAC位址。
記憶體(使用/proc/meminfo中的MemTotal參數)。
發送和接收的資料量(從/proc/net/dev讀取)。
作業系統名稱和版本(通過調用uname指令)。
啟動後,Linux.BackDoor.Gates.5會檢查其啟動檔案夾的路徑,根據檢查得到的結果實作四種行為模式。
如果後門程式的可執行檔案的路徑與netstat、lsof、ps工具的路徑不一緻,木馬會僞裝成守護程式在系統中啟動,然後進行初始化,在初始化過程中解壓配置檔案。配置檔案包含木馬運作所必須的各種資料,如管理伺服器IP位址和端口、後門程式安裝參數等。
根據配置檔案中的g_iGatsIsFx參數值,木馬或主動連接配接管理伺服器,或等待連接配接:成功安裝後,後門程式會檢測與其連接配接的站點的IP位址,之後将站點作為指令伺服器。
木馬在安裝過程中檢查檔案/tmp/moni.lock,如果該檔案不為空,則讀取其中的資料(PID程序)并“幹掉”該ID程序。然後Linux.BackDoor.Gates.5會檢查系統中是否啟動了DDoS子產品和後門程式自有程序(如果已啟動,這些程序同樣會被“幹掉”)。如果配置檔案中設定有專門的标志g_iIsService,木馬通過在檔案/etc/init.d/中寫入指令行#!/bin/bash\n<path_to_backdoor>将自己設為自啟動,然後Linux.BackDoor.Gates.5建立下列符号連結:
如果在配置檔案中設定有标志g_bDoBackdoor,木馬同樣會試圖打開/root/.profile檔案,檢查其程序是否有root權限。然後後門程式将自己複制到/usr/bin/bsd-port/getty中并啟動。在安裝的最後階段,Linux.BackDoor.Gates.5在檔案夾/usr/bin/再次建立一個副本,命名為配置檔案中設定的相應名稱,并取代下列工具:
木馬以此完成安裝,并開始調用基本功能。
執行另外兩種算法時木馬同樣會僞裝成守護程序在被感染電腦啟動,檢查其元件是否通過讀取相應的.lock檔案啟動(如果未啟動,則啟動元件),但在儲存檔案和注冊自啟動時使用不同的名稱。
與指令伺服器設定連接配接後,Linux.BackDoor.Gates.5接收來自伺服器的配置資料和僵屍電腦需完成的指令。按照不法分子的指令,木馬能夠實作自動更新,對指定IP位址和端口的遠端站點發起或停止DDoS攻擊,執行配置資料所包含的指令或通過與指定IP位址的遠端站點建立連接配接來執行其他指令。
此後門程式的主要DDoS攻擊目标是中國的伺服器,然而不法分子攻擊對象也包括其他國家。下圖為利用此木馬進行的DDoS攻擊的地理分布:
三、linux如今後處理實戰
事件背景
作業系統:Ubuntu12.04_x64
運作業務:公司業務系統,爬蟲程式,資料隊列。
伺服器托管在外地機房。
突然,頻繁收到一組伺服器ping監控不可達郵件,趕緊登陸zabbix監控系統檢視流量狀況。
可見流量已經達到了800M左右,肯定不正常!
馬上嘗試SSH登陸系統,不幸的是,這種情況是很難登入系統的。
該怎麼辦?
1、排查問題
當時我的第一反應是想馬上切斷外部網絡,通過内網連接配接檢視。
可是這樣一來流量就會消失,也就很難查找攻擊源了。
于是聯系機房協助解決,授權機房技術登入到系統:
首先通過w指令檢視是否有異常使用者在登入;
再檢視登入日志/var/log/auth.log,預料之中,日志已經清空;
最後使用iftop工具找出占用大量流量的連接配接。
下圖是機房技術給我拍的照:
可以看到本地一直通過http方式向104.31.225.6這個ip發送資料包,而且持續不斷。
那好,先把這個ip給屏蔽了試試:
iptables –A OUTPUT –d 104.31.225.6 –j DROP
哇塞!奇迹出現了,流量下去了,能正常連接配接了。
過一會兒,不幸的事情發生了,流量又上來了!
什麼情況!我的心情頓時緊張起來。
又趕緊聯系機房技術,執行上次的操作。
下圖是當時的情況:
傻眼了,目的ip變了,這可咋搞,不可能一個個封吧!
靜下心來,仔細想了下,本地向外發包,那本地肯定會有程式來發!
找到本地程式就能解決了!
2、查找攻擊源
首先我使用了netstat工具過濾端口,檢視運作的程序ID:
netstat –atup |grep 15773
沒有任何結果,更換端口嘗試後仍然沒有結果。
拜托機房技術大哥觀察了下連接配接狀态,原來是短連接配接,會很快的釋放端口,是以才看不到端口的連接配接狀态。
正常長連接配接來說,可以使用lsof –i :15773這樣方式找到PID,再lsof –p PID找到打開的相關檔案。
好吧!隻好先切斷外部網絡,内網SSH進入系統,然後找到這個發包的程式。
第一步:通過netstat –antup 檢視有無開放可疑的端口或者連接配接。
第二步:通過ps –ef檢視有無可疑的程序。
結果是~
都沒有!
難道是植入了rootkit木馬程式?!
想要判斷系統有沒有植入了rootkit可以使用md5sum校驗執行檔案判斷:
先找個同版本作業系統,擷取到這個工具執行檔案的md5值,再擷取可疑的工具執行檔案md5值,比較兩個值是否相同。
如果相同說明這個工具是可信任的,如果不相同很有可能是被替換的。
另外,一般工具可執行檔案大小都在幾十K到幾百K。
但我沒有選擇用md5方式來判斷工具是否可信任,因為完全相同版本的作業系統并不好找。
我直接使用du –sh /bin/lsof檢視,發現大小1.2M,明顯有問題。
是以直接下載下傳正常系統裡的netstat、ps等工具上傳到被黑的系統裡使用,再将不可用的替換掉。
3、清理木馬程式
完成第二步的操作後,奇迹出現了,執行ps –ef後,發下最下面有幾行可疑程式。
本想截圖的,可惜SSH用戶端給關了,沒留下截圖。
記憶中,大概是這樣的:
pid /sbin/java.log
pid /usr/bin/dpkgd/ps –ef
pid /usr/bin/bsd-port/getty
pid /usr/bin/.sshd
看到這幾個,感覺很奇怪,怎麼會有個java.log的執行檔案在運作呢?
先殺掉并删除再說。
這裡就更奇怪了,怎麼會有我執行的指令呢?
ps –ef,指令的路徑不是/bin/ps,引起了我的懷疑,馬上進入此目錄下檢視。
擦,還有幾個,初步判斷是工具被替換了。
還有一個怎麼叫getty呢,再正常系統裡面對比程序,發現沒有這個。
甯可錯殺一百,也不放過一個!
殺掉程序,删除目錄。
這個.sshd程序明顯很可疑,可能是ssh後門,先殺掉删除再說!
再執行ps –ef指令看下,奇怪,java.log程序又起來了,難道有自啟動設定?
于是到了/etc/init.d下檢視,有個異常腳本,在正常系統的也沒有,打開看了下,果然是啟動木馬程式的腳本。
把腳本删除,再删除一次java.log,不再出現了。
删除了/sbin/java.log檔案過一會又出現了,估計是getty趁搞的鬼,同樣清除,不再自動生成了。
好了,可以開啟外網了,觀察了一會網絡流量不再飙升了,心情有如看到美女一樣的愉快!
4、事件總結
ls /usr/bin/dpkgd/ #替換的工具,系統自帶的工具正常不會在這個目錄下,并且也不可用
netstat lsof ps ss
/sbin/java.log #判斷是發包程式,删除後會自動生成
/usr/bin/bsd-port #判斷是自動生成java.log或着後門程式
/usr/sbin/.sshd #判斷是後門程式
如果還有其他木馬程式怎麼辦?如果是XSS攻擊,應用層漏洞入侵怎麼辦?
針對這些問題,從我們公司角度來說,盡量不重裝系統,業務太複雜。找出入侵點,跑的程式多,攻擊面多,很棘手。
就先這樣吧!兵來将擋,水來土掩。~
被黑客趁機入侵的原因:
1. 運維對網絡安全實施落實力度低
2. 沒有相關安全測試人員,不能及時發現應用層漏洞
等等...
針對這次攻擊,總結了下防護思路:
1. linux系統安裝後,啟用防火牆,隻允許信任源通路指定服務,删除不必要的使用者,關閉不必要的服務等。
2. 收集日志,包括系統日志,登入日志,程式日志等,及時發現潛在風險。
3. 針對使用者登入實時收集,包括登入時間,密碼重試次數以及使用者執行指令記錄等。
4. 對敏感檔案或目錄變化進行事件監控,如/etc/passwd、/etc/shadow、/web、/tmp(一般上傳檔案提權用)等。
5. 程序狀态監控,對新增或可疑程序做好記錄并通知。
6. 對上線的伺服器系統、Web程式程序安全漏洞掃描。
最後,沒有絕對的安全,隻有盡可能減少攻擊面,提供系統防護能力。
網絡安全,從我做起!
本文轉自 運維小當家 51CTO部落格,原文連結:http://blog.51cto.com/solin/1903543,如需轉載請自行聯系原作者