1. 程式人生 > >一個在Linux系統下的入侵響應案例

一個在Linux系統下的入侵響應案例

受到攻擊

最近,某校校園網管理員接到國外使用者投訴,說該校園網中的一臺視訊伺服器正在對外進行非法的TCP 443埠掃描。該視訊伺服器的地址是192.168.1.10,作業系統為redhat7.3,對外開放埠為TCP 22、80、443。

然而,管理員在機器上經過重重仔細檢查,未觀察到任何異常。在此情況下,我們接受請求幫助他們檢查機器。

初步檢測

我們首先在交換機上對該伺服器的網路流量進行了映象,發現該主機確實存在對外443埠的掃描流量,但是登入到系統上使用netstat -an命令卻看不到任何與443埠相關的網路連線,使用psef命令也沒有看到系統中有任何可疑的程序。因此,我們懷疑係統中可能被安裝了 rootkit(注1)。

為了證實這一點,我們將系統中的ps命令拷貝到另外一臺可信的作業系統版本相同的機器上(當然如果你在系統安裝初始就維護了一張系統命令md5值表的話,那麼你現在只需從別的地方拷一個md5sum程式過來就可以),使用md5sum命令對兩個ps進行比對發現192.168.1.10上的ps已經被人修改過,因此可以斷定系統確實是被入侵併安裝了rootkit級的後門程式。

離線分析

既然系統命令已經被替換,那麼在該系統上所做的任何操作都是不可信的,因此接下來我們將被入侵伺服器關閉並取下硬碟掛到另外一臺主機上面進行分析。

我們首先查詢系統中可疑的登入記錄,使用如下命令:

more /var/log/secure |grep Accepted

(注2)

我們對系統的登入日誌進行了檢視,在排除了管理員自己的登入記錄後,下面這條記錄引起了我們懷疑:

Jul 3 14:01:01 vsp-thu sshd[14042]: Accepted password for news from 82.77.188.56 port 1143 ssh2

這條記錄顯示在7月3號的下午14:01:01秒,有人使用news賬號從82.77.188.56成功登入了系統,經查,82.77.188.56是一個羅馬尼亞的地址。根據對方直接使用news賬號登入這一點來看,對方攻擊成功的時間應該早於7月3號14點,因為系統預設情況下news賬號是內建賬號沒有密碼並無法登入,但是我們檢視/etc/shadow檔案卻發現如下記錄:

這說明news賬號被入侵者加設了密碼,並改成了可以遠端登入的賬號,之所以做這樣的修改,一般是入侵者想留下一個隱藏的登入賬號,方便日後登入。我們繼續檢查系統的其他日誌卻再沒發現任何可疑的紀錄,很顯然入侵者已經對系統的日誌檔案進行了修改。

繼續深入

線索到這裡似乎中斷。而我們所知道的僅僅是入侵者可能來自羅馬尼亞,他修改了系統的news賬號許可權,並篡改了系統日誌。這些已知資訊看起來對整個事件的處理並沒有太大的幫助。但是我們有一個很有用的資訊,就是攻擊發生的大概時間可以定位在7月3號下午2點左右,有了這個時間我們就可以使用find命令來查找出這個時間段裡面系統中被修改的檔案有哪些?命令格式如下:

Find / -ctime +nprint 〉find.log (注3)

在輸出的結果中我們發現入侵者在/var/opt下建了一個名為. (點後面是一個空格字元)(注4)的目錄,而該目錄下包含表1中所顯示子目錄和檔案。

對這些程式進行分析後,知道其功能如下:

表1 入侵者在/var/opt下建立的名為.的目錄

1、z程式是用來清除系統日誌中相關資訊的,例如:

./z 82.77.188.56這條命令執行後,系統中所有與82.77.188.56這個地址有關的日誌資訊全部會被清除掉;

2、cata目錄下是一個IRC的後門程式,執行後系統會自動連線到以下4個IRC伺服器,然後入侵者只要登入相應的IRC聊天室就能向這臺機器傳送控制指令,4個IRC聊天室伺服器地址為:

server 194.134.7.195 6662

server 195.197.175.21 7000

server 161.53.178.240 6667

server 66.198.160.2 8080

3、login程式是用來替換系統登入程序的木馬程式,可以記錄登入賬號和密碼;

4、kaka目錄裡放置的是用來替換系統命令的相應程式,就是這個目錄裡的程式使得我們在系統上看不出有任何異常;

5、atp 目錄下放置的是專門用來掃描https服務和攻擊openssl的程式,國外發過來的443埠的掃描投訴就是因為這個目錄裡的openssl-too程式引起的。這個攻擊程式是2005年4月19號被公佈出來的,利用的是編號為CAN-2002-0656的openssl程式的漏洞;

另外,在7月3號被入侵者修改的檔案還包括以下兩個:

/etc/httpd/conf/httpd.conf(注5)

/etc/httpd/logs/ssl_request_log(注6)

由此可見:

1、入侵者修改了httpd.conf檔案,登出了httpd.conf的443埠(跟管理員確認了不是他們自己登出的),大概是不想漏洞被其他人利用;

2、入侵者刪除了ssl_request_log日誌中的7月3號中午12點到14點的所有紀錄(因為ssl_request_log並不算系統日誌,所以不能用z程式直接清除,入侵者只能手動刪除相應時間段的日誌記錄)。

繼續檢查相應日誌我們又發現在root目錄下的.bash_history(注7)檔案中有如下一條命令紀錄:./z 82.77.188.240

揭開謎團

有了上面這些資訊,我們就可以對本次入侵事件做出如下分析:

1、入侵時間:從目錄生成時間和入侵者刪除ssl_request_log日誌中相應時間段記錄的情況來看入侵的大概時間應該在7月3號中午13點左右;

2、利用的漏洞:利用漏洞掃描程式對系統進行掃描發現系統中存在多個可被利用的漏洞,但是從入侵者關閉apache的443埠服務和修改 ssl_request_log日誌檔案來看,他利用的是apache的mod_ssl模組的漏洞(CAN-2002-0656)入侵系統的;

3、攻擊地址來源:攻擊地址來源有兩個為82.77.188.56和82.77.188.240(但是這兩個地址很有可能也是被入侵者控制的機器);

4、入侵者進入系統後做了以下這些操作:

在系統中安裝了通過IRC聊天伺服器控制的後門程式修改了系統中news賬號的許可權和密碼;

替換系統中一系列的系統命令;

替換了系統本身的login程式,並獲得root的密碼(注8);

利用攻擊程式對外進行443埠的掃描與攻擊;

使用清除程式清除了系統日誌中的相關記錄。

解決辦法

由於系統核心級的程式已經被替換,我們建議使用者備份所需資料後重新安裝系統,並執行以下操作:

1、安裝更高版本的作業系統;

2、安裝相應的系統補丁程式;

3、修改系統管理員的密碼,並檢查同網段內其他使用相同密碼的主機。(因為入侵者已經通過木馬程式獲得了管理員的口令);

4、安裝更高版本的apache程式,並關閉不必要服務埠;

5、使用防火牆限制ssh 22埠的登入來源地址。

(作者單位為CERNET應急響應組)

註釋

注1:簡單點說rootkit就是一種黑客的工具包,它裡面通常包括:修改過的系統命令程式、後門程式、攻擊程式、日誌清除程式等,黑客使用rootkit程式就是為了在被入侵的主機上隱藏自己的攻擊行為。

注2:/var/log/secure 記錄了系統賬號的登入資訊,而grep Accepted可以有效地過濾掉那些不成功的登入記錄。

注3:這個命令的意思就是查詢“/”目錄下的所有n天前被修改過的檔案,使用>管道符是為了將查詢結果輸出到find.log檔案中,便於後面的分析。

注4:linux系統中以“.”開頭的檔案和目錄都隱藏檔案,需要使用ls -al命令才能檢視到,而點後面加空格的目錄名字很容易在ls -al顯示結果中被我們忽略過去)

注5:httpd.conf是apche程式的主配置檔案,在這個檔案裡註釋掉443埠,將導致apche無法正常提供443埠的https服務。

注6:ssl_request_log檔案是apache的一個日誌檔案,它記錄著使用者基於https協議的訪問資訊。

注7:預設情況下各相應使用者主目錄下的.bash_history檔案記錄儲存著500條該使用者在系統中曾經執行過的操作命令。

注8:既然入侵者已經使用了清除程式清除了系統日誌,為什麼還在root的.bash_history中留下了./z 82.77.188.240命令的記錄呢?這就要從.bash_history的記錄機制說起了,使用者每次登入系統後所做的任何操作並不會直接就儲存到了.bash_history檔案中,而是儲存在一個變數中,只有當用戶退出登入以後,這個變數的值才會被寫入到.bash_history檔案中。這就說明入侵者最後一次是通過82.77.188.240這個地址使用root賬號登入系統的,他在執行./z 82.77.188.240這個命令時./bash_history中還沒有這條記錄,所以也沒有被清除,當他退出系統後,變數中的./z 82.77.188.240就被寫入到.bash_history中了。因此我們可以斷定入侵者已經通過假冒的login程式獲得了root的密碼。