天天看點

linux伺服器上使用find清除webshell木馬方法查找檔案,并顯示檔案的ctime時間,比對檔案資訊确認沒有問題後,删除掉

linux伺服器上使用find清除webshell木馬方法

本文轉自:

http://ju.outofmemory.cn/entry/256317

隻要從事網際網路web開發的,都會碰上web站點被入侵的情況。這裡我把清除的一些方法采用随記的形式記錄一下,一是友善自己以後的工作需要,二是給其他朋友提供一些參考幫助。寫的不周的地方,高手們不要噴,歡迎給我提供更好的意見,對于我個人來說也是個提高,并表示感謝。

我們的伺服器環境是linux,是以,肯定少不了用find這個指令,并且需要配合ls指令來使用。

1、可以查找近3天被修改過的檔案,并顯示檔案清單詳細資訊:

find -name "*.php" -type f -mtime -3 -exec ls -l {} ;

當然,結果中可能會包含很多cache類檔案,這些檔案不是我們要查找的,那麼就需要把這類檔案從查詢結果中排除掉,往往cache檔案都存放到cache特定的目錄。

使用 -prune 參數來進行過濾,增加排除某些目錄條件的查詢指令:

find . -path "/xxxxx/caches" -prune -o -name "*.php" -type f -mtime -3 -exec ls -l {} ;

注意:

(1)、要忽略的路徑參數必須緊跟着搜尋的路徑之後,否則該參數無法起作用。

(2)、路徑結尾不要有“/”符号。

2、查到可疑檔案,分析,确定是木馬後,根據木馬檔案的檔案資訊查找更多的存放位置。比如木馬的檔案名稱為“muma.php”。

find . -name "muma.php" -type f -mtime -5 -exec ls -l {} ;

20160426144502

以上指令,是放寬了查詢時間的長度,查詢最近5天該名稱檔案的資訊清單,可以通過檢視檔案大小來判定是否是同樣的木馬檔案。

看圖中指令結果,檔案大小都是“233”,則有很大的可能性是同樣的木馬檔案,綜合修改時間判斷,最好是也cat一下檢查核驗,以免誤殺。

可以利用find和ls指令的一些更豐富的參數資訊來判定分析。

可能會用到find指令的參數功能清單:

find /home -size +512k #查大于512k的檔案

find /home -size -512k #查小于512k的檔案

find /home -mtime -2 # 在/home下查最近兩天内改動過的檔案

find /home -atime -1 # 查1天之内被存取過的檔案

find /home -mmin +60 # 在/home下查60分鐘前改動過的檔案

find /home -amin +30 # 查最近30分鐘前被存取過的檔案

find /home -newer tmp.txt # 在/home下查更新時間比tmp.txt近的檔案或目錄

find /home -anewer tmp.txt # 在/home下查存取時間比tmp.txt近的檔案或目錄

結合ls的兩種時間資訊:

ls -lc filename 列出檔案的 ctime 是在寫入檔案、更改所有者、權限或連結設定時随Inode的内容更改而更改的時間。

ls -l filename 列出檔案的 mtime 在寫入檔案時随檔案内容的更改而更改的時間。

ctime和mtime不一緻時有可能是木馬檔案,黑客有可能會修改了mtime時間。

3、删除木馬檔案

這一步應該是進一步分析木馬的入侵路徑等,但是這個過程又是另一個非常複雜的系統工程,後邊再詳細說明,暫時跳過。

find . -name "muma.php" -type f -mtime -5 -size -5k -exec rm -rf {} ;

增加一個過濾條件,-size -5k,即檔案大小小于5k的。

4、查找目錄下檔案内容包含木馬特定字元串的檔案清單,并删除處理。

查找檔案,并顯示檔案的ctime時間,比對檔案資訊

find . -name "*.php" -exec grep -rl "YLbgPfj524" {} ; -exec ls -lc {} ;

确認沒有問題後,删除掉

find . -name "*.php" -exec grep -rl "YLbgPfj524" {} ; -exec rm -rfv {} ;

Oracle & MSSQL & Postgresql & Mysql 調優 & 優化