資安觀念

網站被掛馬怎麼辦:先隔離、保存證據,再確認入口

網站疑似被掛馬時,先隔離、保存證據並確認受影響範圍,再清除惡意檔案、修補入口與更換憑證。

網站被掛馬怎麼辦:先隔離、保存證據,再確認入口

發現陌生跳轉、SEO 垃圾頁、PHP 後門或瀏覽器惡意程式警告時,先把網站視為仍在被控制。只刪除看到的檔案通常會漏掉排程、管理帳號、資料庫注入與被竊取的部署憑證,幾小時後就會再次出現。

01

先隔離流量並保存現況

依業務影響選擇維護頁、WAF 限制、來源站下線或僅允許管理 IP。隔離前後都記錄時間,並保存磁碟快照、程序、網路連線、Web 日誌、登入紀錄與雲端稽核日誌。

不要先執行會大量改寫時間戳的掃毒或格式化;證據副本完成後再清理。

02

用已知安全版本比對檔案差異

若有版本庫或 release artifact,先比較新增、修改與刪除檔案:

find /srv/www -type f -printf '%P\0' | sort -z | xargs -0 sha256sum > live.sha256
find /srv/release-clean -type f -printf '%P\0' | sort -z | xargs -0 sha256sum > clean.sha256
diff -u clean.sha256 live.sha256

動態上傳、快取與設定檔要分開處理,避免把合法變動全部當成感染。PHP 專案也應檢查 Web Root 之外、暫存目錄與使用者上傳區。

03

搜尋持久化入口,不只搜尋可疑關鍵字

  • 新增或被修改的管理員、SSH key、API Token 與 OAuth App。
  • cron、systemd timer、排程平台與 CI/CD 工作。
  • .htaccess、Web Server include、PHP auto_prepend_file。
  • 資料庫中的注入腳本、SEO 連結與使用者權限。
  • 雲端 startup script、容器映像與部署 webhook。

惡意程式可以合法語法與正常函式實作,單靠搜尋 eval 或 base64 會漏掉大量情況,也可能誤判合法程式。

04

找出最初入口並界定受影響時間

把最早的檔案時間、異常請求、登入、套件更新與部署事件放進同一時間線。常見入口包括弱密碼、外洩 FTP/SSH、未修補 CMS、惡意外掛、上傳漏洞、供應鏈與主機控制台接管。

如果無法確認入口,就不能宣告已修復;至少要縮小到可驗證的假設並補上監控。

05

優先從乾淨來源重建,不在感染主機上手工補洞

  1. 建立全新主機或容器。
  2. 從已知安全 commit 與鎖定依賴重新建置。
  3. 只還原經檢查的資料庫與上傳資料。
  4. 修補入口、更新套件與安全設定。
  5. 輪替主機、資料庫、部署、第三方 API 與管理帳號憑證。
  6. 在隔離環境驗證後再切換流量。

若只能原地清理,至少保留完整備份並逐項驗證持久化機制已移除。

06

恢復後持續監控與搜尋修復

恢復上線後提高登入、檔案變更、外連、錯誤與管理操作的監控。提交乾淨 sitemap,檢查搜尋主控台的安全性問題與垃圾 URL,必要時回傳 404/410 並移除惡意頁面。

結案條件:已確認入口、完成乾淨重建或可驗證清理、輪替所有可能外洩憑證,且監控能偵測相同活動。

重新上線門檻

乾淨建置已通過功能與安全測試、入口已修補、秘密已輪替、惡意指標不再出現,且加強監控已開始收集資料。