2011-09-06 30 views
0

我正面臨着我的服務器問題,因爲有時惡意軟件會在文件的末尾或文件開始時添加它們的代碼。據我所知,我已經修復了安全漏洞。我的託管服務提供商已經通知安全性已經足夠,但我已經變得對我的網站上的病毒/惡意軟件活動產生偏執。我有一個計劃,但我不熟悉像sed或awk或gawk這樣的Linux編輯器,所以需要您的幫助。我可以使用我的PHP知識來做到這一點,但這會非常耗費資源。使用awk獲取惡意軟件病毒活動所需的幫助

由於惡意軟件/病毒在文件的開頭或結尾添加了代碼(以便網站不顯示任何錯誤),請您告訴我如何編寫一個可遞歸查看所有.php文件的命令(我將使用幫助對其他類型的文件進行更改)放在父目錄和所有子目錄中,並在文件的開始和結束處添加一個特定標記,例如XXXXXX_START和YYYYYY_END。

然後我需要一個腳本來讀取所有的.php文件,並檢查代碼的第一行是否是XXXXX_START,最後一行是YYYYYYY_END,如果發現任何文件不同,請創建報告。

我將設置一個cron來檢查所有文件,並在發現任何差異時通過電子郵件將報告發送給我。

我知道這不是100%萬無一失,因爲病毒可能會在註釋行之後添加數據,但這是我能想到的最佳選擇。


我曾嘗試下面的命令在開始添加數據 -

sed -i -r '1i add here' *.txt 

但這不是遞歸,並將其添加行僅在父目錄中的文件。

然後我發現這個 - BEGIN和END是特殊模式。它們不用於匹配輸入記錄。相反,它們用於爲awk腳本提供啓動或清理信息。在讀取第一個輸入記錄之前,執行一次BEGIN規則。在所有輸入被讀取後,執行END規則一次。例如:

awk 'BEGIN { print "Analysis of `foo'" } 
    /foo/ { ++foobar } 
    END { print "`foo' appears " foobar " times." }' BBS-list 

但不幸的是,我無法破譯任何東西。

任何有關上述細節的幫助是非常感謝。歡迎任何其他建議。

問候,

尼廷

+4

你會更好,產生SHA-256散列每個文件,並保持的紀錄官方散列比你的託管服務提供商(一個USB棒,或一臺筆記本電腦,或其他地方)的地方。當您需要檢查時,您會重新生成託管提供商上的文件的哈希值,然後將這次得到的結果與上次記錄的結果進行比較。任何差異都歸因於文件更改。最可能的原因是您忘記了更新了文件,並且您沒有更改保存的散列值,但它只給出了有限數量的文件(您希望)進行檢查。 –

回答

1

您可以使用以下命令來修改文件(還會創建名爲的備份文件。BAK):

find . -name "*.php" | xargs sed -i.bak '1iSTART_XXXX 
$aEND_YYYY' 

你可以使用下面的shell腳本來檢查文件:

for f in `find . -name "*.php" -print` 
do 
    START_LINE=`head -1 $f` 
    END_LINE=`tail -1 $f` 

    if [[ $START_LINE != "START_XXXX" ]] 
    then 
     echo "$f: Mismatched header!" 
    fi 

    if [[ $END_LINE != "END_YYYY" ]] 
    then 
     echo "$f: Mismatched footer!" 
    fi 
done 
+3

在反向查找時要小心。如果你遇到這個錯誤,Google的「參數列表太長」。或者只是'find -name「* .php」-print |同時讀f;在$'START_XXXX \ nEND_YYYY'中執行case $(sed -n -e'1p'-e'$ p'「$ f」))continue ;; ESAC;回聲「$ f:不匹配」;做完了' – tripleee

+0

好點了! – beny23

0
$ find . -type f | grep "txt$" | xargs sed -i -r '1i add here' 

將應用命令將所有文件或在當前目錄下。你可以將grep邏輯摺疊成find,但我喜歡簡單的咒語。

+1

如果這些文件不是定期更改的,另一種方法可能是爲每個文件計算一個校驗和(例如md5sum),然後檢查它是否仍然匹配。 – James

+0

謝謝你的快速回答。我喜歡校驗的想法,但隨着我們不斷改變網站上的內容,文件不斷變化。你能解釋一下你在回答中寫下的命令嗎 –

+1

@Nitin:你的發佈過程的一部分將是在你上傳文件之前生成文件的校驗和,或者在上傳之後立即生成(不太令人滿意)。如果你沒有足夠好的發佈流程,現在可能是開始實施一個發佈流程的好時機。 –

1

使用版本控制和/或備份;如果發生可疑活動,請停止活動站點並從備份或版本控制源重新安裝。

+0

我們已經有SVN爲我們在服務器上工作,這是我們能夠恢復網站恢復正常。我們有一個自動部署服務器上代碼的提交後代碼,但問題是惡意軟件也編輯了.svn文件夾中的文件。 SVN版本控制是每個開發公司不可分割的一部分,但這並不能保證任何東西。我試圖追蹤正在編輯我的文件的程序,但在此之前,我需要讓我的系統足夠工作,以便我的業務不受影響。 –