WordPress 被駭之後,收拾殘局全紀錄

WordPress 被駭之後,收拾殘局全紀錄

A+
wp-hacker-site-security-WordPress 被駭之後,收拾殘局全紀錄之前朋友的 WP 網站被駭客入侵,雖然主機商有回溯到當日清晨的服務,但只要太晚發現異狀,例如隔天才發現,那麼回溯功能依然只能還原為異常的狀態,意思就是有問題要當天發現才有用。

由於朋友的網站一開始沒什麼安全防護的概念(而且前任工程師跑了),也沒什麼乾淨的備份檔案可以還原,要收拾這個殘局稍微有點麻煩。

慶幸的是,他的多個 WP 網站,其中一些可算是鏡射網站,只要不是全部網站被駭,我就有機會比對出乾淨的檔案內容。

那麼本文就紀錄一下處理心得,以及清除所有木馬、惡意程式的經過。

(圖片出處: pixabay.com)


一、被植入外掛


1. 利用 FTP 刪除外掛

事後來看,這次的事件應該可以算是幸運,並非遇到破壞性的入侵,還有機會把網站清乾淨、建立起安全防護措施。若遇到高登大「被駭全記錄(疑似被伊朗網軍入侵)」這樣的案例,網站沒有乾淨的備份就只能重來了。

一開始會發現異狀,是進入後台時發現,範本不能編輯,而且外掛也看不到、不能管理。還搞不清楚怎麼回事時,赫然發現後台多了一些英文選項,按了才知道被強制安裝了外掛。

沒想到國外駭客會為了推銷外掛而入侵網站,而且動了手腳讓你無法從後台編輯、移除。這個構想滿有趣的,但應該只會帶來反效果吧,而且對外掛的印象還會更差!

我用 FTP 進入 WP 放外掛的目錄 wp-content\plugins,發現時間點在一個星期前,被安插了兩個外掛的資料夾,記得其中一個是「W3 Total Cache」,一個有「Performance」的字樣,總之都是有關提升效能的外掛,所以將這些被偷裝的資料夾全刪了。


2. 更新 WP 版本

但事情沒這麼容易,刪完這些外掛後回到 WP 後台,編輯範本、管理外掛的功能依舊沒有恢復,想必是重要的系統檔也被動手腳了。

主機商是建議更新 WP 系統版本試試看,但因為看過一些案例,在更新 WP 版本後,原本的工具或外掛會受到影響,所以不敢貿然嘗試。

但想來想去真的沒有更好的辦法,的確只能藉由更新版本,來覆蓋(不知有哪些被感染的)系統檔案,於是請主機商先備份當前的狀態後(確保更新失敗時可復原),接著從後台執行 WP 自動更新版本。

運氣還不錯,更新到 WP 最新版本後,後台編輯、管理的功能都恢復了,前台的畫面也都能跑,網站執行起來沒什麼問題,看來現有的外掛、工具程式等等都沒受到影響,這樣就解決了第一個「被植入外掛」的難題。



二、被植入惡意程式


事情還沒完,解決眼前看得到的問題後,還要檢查有沒有看不到的隱憂。

1. 掃瞄網站

這個網站提供的服務,可以免費幫忙掃瞄網站是否藏有惡意程式(malware):


site-security-check-WordPress 被駭之後,收拾殘局全紀錄

掃完朋友所有的網站後,其中一個網站,就是這次被植入外掛的網站,掃瞄到有惡意程式,看來被植入的東西真是一拖拉庫。

掃到的程式碼很神奇,是一大串 JS 碼,但又都是以數字方式呈現,包含像 (193 - 4) 類似這樣的字串,可惜趕著把這些惡意程式移除,忘了截圖存起來。

奇怪的是,利用「String Locator」這樣的工具,在範本中並沒有搜尋到相關的字串,最後運氣不錯,利用檢視網頁原始碼的方式,看到網頁的確存在被掃出來的這些惡意 JS 碼。


2. PHP 混淆加密

這樣事情就簡單了,從網頁的相對位置,再比對範本相關的 php 檔,就找到了惡意程式碼,且瞭解到為何找不到那些 JS 碼。

原來那些 JS 碼,是利用 php 語言所產生的,而且這些 php 程式碼使用了混淆加密,類似「Free Online PHP Obfuscator」這樣的工具,產生一大段看似無意義的字串,來騙過不熟悉程式碼的站長。

將這些 php 程式碼都刪除,過一段時間後再重新掃瞄網站(因為這個線上服務的網頁會有快取),果然網頁被判定為乾淨正常了。



三、被植入木馬(不明程式碼)


1. 仍有餘孽

就在所有網站都已掃瞄完畢,被認定為沒有惡意程式之後,無意間發現怎麼某個網站的行動版畫面怪怪的,特定位置的字串都變成 ???? 這樣的一堆問號...

網頁內容會被竄改,只能寫 JS 才做得到,因此打開網頁原始碼,一一檢視所有的 JS 內容,查看是哪裡的問題,比較快的方式就是搜尋 script 字串。

總算又發現有一段可疑程式碼,但既然沒有被線上掃瞄網站判定為惡意程式碼,可見其內容並不具有殺傷力。

而把這段內容刪除後,的確原本問號的內容就恢復正常了,也許是這段程式碼讓網頁的編碼(或字型)誤判了。


2. 殘留的惡意程式碼

在範本中找到這段對應的、加密後的無意義字串,推斷這些程式碼,作用為支援主要的木馬程式,當主程式存在時,這些輔助程式才會有作用,不過主程式應該已經被 WFU 砍掉了。

然而所有網站一個個從 script 來找殘留程式,這個流程實在太累了,且這段程式的混淆邏輯跟之前的又不一樣,他的混淆方式是使用 urlencode 這個函數。

於是再次使用「String Locator」這個工具,直接搜尋每個網站的範本,是否含有 urlencode 這個字串,就能快速確認還有沒有殘留程式了。



四、最後的清除工作


在建立乾淨的備份檔案之前,最麻煩的就是得先確定所有檔案都是乾淨的,否則把有問題的檔案拿來備份,將來還原之後,問題還是會不斷發生。

因此以上的步驟,在清除完範本中所有的問題後,還得一一檢查範本之外,是否還有被竄改內容的檔案。

由於異狀是發生在近期,能夠做的,就是進入 FTP,一一檢查所有資料夾及檔案的日期,看看還有沒有近期被修改過的紀錄,有問題的檔案更改為乾淨的檔案。

解決了所有被感染的檔案問題後,下一篇要分享進行防護工程的紀錄。


更多 WordPress 相關文章:

沒有留言:

張貼留言注意事項:

◎ 勾選「通知我」可收到後續回覆的mail!
◎ 請在相關文章留言,與文章無關的主題請至「Blogger 中文論壇」。
◎ 提問若無法提供足夠的資訊供判斷,可能會被無視。建議先參考這篇「Blogger 提問技巧及注意事項」。
◎ CSS 相關問題非免費諮詢,建議使用「Chrome 開發人員工具」尋找答案。
◎ 手機版相關問題請參考「Blogger 行動版範本的特質」→「三、行動版範本不一定能執行網頁版工具」。
◎ 非官方範本問題、或貴站為商業網站 ,請參考「本站諮詢頁面」→「1. 諮詢服務」
◎ 若留言要輸入語法,"<"、">"這兩個符號請用其他符號代替,否則語法會消失!
◎ 為了過濾垃圾留言,所有留言不會即時發佈,請稍待片刻。
◎ 本站「已關閉自刪留言功能」。

TOP