您在這裡

我的WordPress網站被駭中毒了!最後靠這一招把網站救回來

jack 在 三, 11/25/2015 - 21:31 發表

備份!備份!備份!

在資訊與網路時代,保護數位資產的重要金科玉律永遠都是備份!良好的備份習慣,可以幫忙解救很多東西,包括近年來很猖獗的勒索軟體(ransomware)。

身為一個網站的管理員,事實上我在技術能力上是相當缺乏的。我只是以土法煉鋼的方法邊學邊做的門外漢,因此許多技術問題根本沒能力解決,多數是遇到問題時就用Google找到解決方法。

而這次在發現網站被駭以及中毒之後,更感覺到自己技術的貧乏。不過好在有充足的網站備份,而能夠讓我成功救回網站,免於受到駭客操控。

資源使用破表!

大概在一週前,我的Linode突然發來通知說,Disk I/O破表。到Linode管理後台之後發現,不得了!從CPU用量,網路資料傳輸,到Disk I/O等資源使用,突然之間都飆升到十倍,甚至二十倍....以上。

我知道我的網站出事了,但是到底出了什麼事完全不知道。

透過瀏覽器,連上這個Linode空間裡的兩個網站,兩個網站都相當正常,甚至網速也沒變。找了幾個免費的網站掃瞄服務掃瞄,結果也是非常正常,完全找不到問題。

看log也只是看到比過去數量更高的試圖攻擊記錄,也看不出所以然。

在無計可施之下,於是祭出我的法寶:備份!

除了定期把網站的資料,還有資料庫下載到PC上存放,並以日期做為分類之外,我也買了Linode的備份服務。Linode備份是以每個Linode價格的25%來加計的,例如我買的是每個月20美元的2GB RAM方案,備份費用另計,每個月變成25美元。

Linode的備份服務除了會有每日、每周、每月的例行備份之外,還可自己在做網站重要改變時,手動備份一次。

這次我依過去的習慣,把網站回復到一天前的備份狀態。

沒有用!

把網站回復到事發之前的備份之後,資源用量算是回復了正常。

但只正常一天!緊接著,同樣的事情又開始上演,而且這次情況似乎比上次更糟糕。所以我很清楚問題並沒有解決。

但問題到底出在那裡也是無從找起,又再次到網路上找了幾家號稱可以掃瞄出網站問題的服務,也掃瞄不出問題。

只能這樣眼睜睜的看著Linode資源一直飆升。

這時候我收到了一個Google站長工具的通知,說我一個網站的404錯誤數量爆增,高達近六千個!

Google這個通知打醒了我,於是上Google輸入「site:my website url」才發現,那個用Drupal架的網站沒事,但是另一個用WordPress架的網站,根目錄下竟然有一大堆絕對不該有的.html網頁。

再透過FTP連上網站之後發現,網站被上傳了數不清的.html檔案。

↓ 我的根目錄下被放進數以萬計的像這樣風格的日本網站。

 

↓ 下圖是從Google 搜尋還可找到的庫存頁面

這時候很確認我的網站被駭了!

於是開始搜尋網路上一堆網站被駭該怎麼辦的文章,總而言之,看了一堆,一般建議就是說要快把備份做好。因為有時候網站被駭之後,會被ISP踢出去,所以要先做好備份,以免網站和資料都救不回。

那就備份吧!

於是開始把網站上的資料下傳到PC上。

下傳過程當中,突然之間防毒軟體跳出警告:原來WrodPress網站裡被藏了兩隻BackDoor Generic_c後門程式,這兩隻後門什麼時候進來的完全不知道,是被藏在WordPress網站所使用的主題版型上,另外theme資料夾裡也被多放了一個莫名其妙的主題版型,裡面也藏了一隻。

於是我利用PC端的防毒軟體解毒,解完毒之後,把網站上的資料全清空殺光之後,重新上傳。甚至再依網搜文章的教學文章,利用下載的WordPress官網乾淨檔案,來替換所有網站上的檔案及資料夾,包括那個被感染的主題版型也麼做。

事情沒這麼簡單!

其實我心裡也相當懷疑,PC端的軟體被放在網站的伺服器端應用上到底是什麼意思?有用嗎?而反過來想,伺服器端的惡意程式,PC防毒軟體能幫得上忙嗎?

另外,資料庫安不安全也是個問題。說不準資料庫裡也被藏了什麼髒東西....

因此,這麼做的同時,我也網搜很多文章來看。

有個說法這麼說,把資料庫匯出之後,搜尋裡面的<script>,這些<script>程式碼就是毒。

但這個講法很有問題,我照做了,也搜到了<script>,但我看得懂那些<script>裡的程式碼,認為應該不是毒。

然後許多介紹的解救方式複雜到讓我相當遲疑,到底要不要跟著操作看看?

現在再回頭來看,到底我在PC上解毒之後再上傳,有沒有用呢!

結果是:沒有用!

Linode的監控儀表版上的資源用量不但沒有減緩,反而持續不斷飆高。

在無計可施之下,我又想到了備份!

解決了!

我的理論是這樣的:假設能夠回到被駭客入侵之前的備份狀態,那麼網站應該能夠救回來!

於是我就把Linode網站回復到16天前的備份。

這次終於成功了!

由於我確認另一個Drupal網站沒被駭,在回復到16天之前的備份之後,再把Drupal上最新的資料庫匯入,就順利讓Drupal網站資料也回復到最新的樣態。然後再重新更新網站的各項功能。

至於WordPress,失去的幾天的文章資料,則改以手動重貼。

後紀

這次我算是相當幸運,因為這次的攻擊者似乎只是個做SEO的。我從各式資料研究認為,他是利用我的網站放入了數不清的新站的頁面與連結來強化其網站的搜尋效能。那些頁面似乎並沒有藏有什麼惡意程式。

然而,顯然的,在被駭之後,攻擊者幾乎可以在我網站上為所欲為,他要做什麼我完全都沒有辦法防止,而這些帳都將會算在我的頭上。所以發現被駭之後,救回網站是第一要務。若完全不知該怎麼辦時,建議先將網站完全關機,讓惡意行為無法進行。

至於這次網站如何被攻陷的我完全不知道,但推測不外乎兩個原因。一是網站裡其他具管理員資格的用戶洩露了帳密。二是網站模組或主題有漏洞沒有馬上補,在未修補的空窗期裡被駭了。第三個是較不可能但不能排除的,就是WordPress或者某些我用到的外掛有零時差漏洞。

總之,在網站救回之後,記得除了要快點更新所有的外掛之外,還要更換密碼!

如前所述,我的技術能力連三腳貓都稱不上,但良好的備份習慣,讓我渡過許多次的網站的重大事件!

我不知道功力高的專業人員會如何處理這事,但這個簡單的方法至少對我有效。當然了,或者也可選擇一些提供網站防毒服務的公司幫忙,但所費不低就是了。

最後也建議網站管理員,更新真的很重要!