Bị hack/chèn mã độc/redirect: checklist cách ly & khôi phục an toàn

September 8, 2025
8659
Thiết Kế Website
Thiết Kế Website Chuẩn SEO
Thiết Kế Website Cho Doanh Nghiệp Nhỏ
Dịch Vụ Thiết Kế Website
Digital Marketing
SEO Website
Landing Page
Web Design
Bị hack/chèn mã độc/redirect: checklist cách ly & khôi phục an toàn

Khi website bị hack/chèn mã độc/redirect lạ, mục tiêu số 1 không phải “làm đẹp ngay” mà là cách ly – thu thập bằng chứng – khôi phục an toàn rồi mới gia cố để không tái nhiễm. Dưới đây là playbook thực chiến bạn có thể áp dụng ngay, theo thứ tự ưu tiên P1 → P2 → P3.

Nếu cần một khung ứng cứu có SLA P1 ≤ 2–4h kèm người chịu trách nhiệm rõ ràng, bạn có thể tham khảo Dịch vụ bảo trì website Hồ Chí Minh (playbook xử lý sự cố, khôi phục và hardening): Dịch vụ bảo trì website Hồ Chí Minh.

1) Nhận diện nhanh (5–10 phút)

Dấu hiệu phổ biến

  • Tự động redirect sang trang lạ (nhất là khi truy cập từ Google/di động).

  • Giao diện vỡ bất thường, nhúng popup/iframe lạ, chèn link Japanese/Pharma.

  • Máy chủ tăng CPU/IO đột biến, email/hosting báo malware.

  • Google Search Console báo Security issues (Malware/Deceptive content), Safe Browsing cảnh báo “Trang web có hại”.

  • Log ghi nhận nhiều 404/5xx bất thường, login bruteforce.

Xác định phạm vi

  • Toàn site hay một phần (blog, /wp-content/uploads, theme/plugin riêng)?

  • Chỉ khách Google/di động hay tất cả?

  • Bị trên production hay staging cũng dính?

2) P1 – Cách ly & giữ bằng chứng (0–60 phút)

Mục tiêu: ngăn lây lan, bảo toàn hiện trạng để điều tra, khôi phục lưu thông an toàn.

  1. Bật chế độ cách ly

  • Tạm chặn public bằng password trên server/ngăn truy cập IP (nếu có thể).

  • Hoặc trả 503 Maintenance cho các đường dẫn công cộng (đừng 302/301).

  • Nếu là WordPress: đặt Maintenance page tĩnh (không chạy PHP động).

  1. Sao lưu forensics trước khi đụng chạm

  • Snapshot toàn bộ mã nguồn + DB + logs (web, PHP-FPM, WAF/CDN) để điều tra sau.

  • Lưu bản sao ngoài máy chủ (off-site).

  1. Đổi khóa & vô hiệu phiên

  • Đổi password (hosting/SSH/DB/CMS/FTP), bật 2FA.

  • Revoke token API (CDN, payment, SMTP), invalidate sessions (đăng xuất toàn bộ).

  1. Cô lập quy trình lạ

  • Tạm dừng cron đáng ngờ, kill process PHP/command lạ, khóa ghi tạm thời với thư mục dễ bị chèn (ví dụ /uploads).

Trong giai đoạn P1, mục tiêu là ngừng chảy máu. Đừng “dọn sạch” vội nếu chưa có bản sao phục vụ điều tra.

3) P2 – Điều tra nguyên nhân & dọn sạch (2–6 giờ)

3.1 Xác định điểm vào (attack vector)

  • Tài khoản quản trị lạ, lần đăng nhập từ IP nước ngoài?

  • Plugin/theme vừa cập nhật hoặc tải từ nguồn không uy tín?

  • Upload PHP trong /uploads, /temp, hoặc .htaccess bị sửa?

  • DB injection: nội dung lạ trong wp_options, siteurl/home, meta bài viết, menu.

3.2 Rà soát chữ ký mã độc (IOC – Indicators of Compromise)

  • Mẫu thường gặp PHP: eval(base64_decode(...)), gzinflate, str_rot13, preg_replace('/e', ...), assert($_POST...).

  • Tập tin đáng ngờ: wp-*.php giả mạo trong /wp-includes/, file tên ngẫu nhiên .ico/.jpg nhưng chứa PHP, cron/backdoor ở /wp-content/mu-plugins/ hoặc /wp-content/sessions/.

  • .htaccess thêm rule redirect theo user-agent/referrer (chỉ chuyển hướng khi đến từ Google/di động).

3.3 Dọn sạch theo thứ tự an toàn

  1. Đóng băng quyền ghi (chỉ mình kỹ thuật có quyền).

  2. Thay mới core (WP core, CMS core) từ nguồn chính thức.

  3. Gỡ bỏ plugin/theme không dùng hoặc nghi ngờ.

  4. Cài sạch plugin/theme còn lại (download bản nguyên gốc).

  5. Quét & khử:

    • Quét file-level: tìm mẫu mã độc, so checksum với bản sạch.

    • Quét DB-level: tìm script lạ trong options/posts/meta/terms.

  6. Xóa webshell/backdoor (các file PHP ẩn, file đuôi lạ).

  7. Làm sạch .htaccess/nginx conf (bỏ rule redirect lạ, giữ rewrite cơ bản).

  8. Regenerate salts, keys (WP AUTH_KEY, SECURE_AUTH_KEY…), đổi toàn bộ mật khẩu.

3.4 Kiểm tra redirect “thông minh”

  • Truy cập từ Google/di động (dùng UA khác) để phát hiện rule theo UA/Referrer.

  • So khớp logs trước–sau dọn, đảm bảo HTTP 200 chuẩn cho các URL money pages.

4) P3 – Khôi phục dịch vụ & vệ sinh SEO (ngày 1–3)

4.1 Mở truy cập có kiểm soát

  • Dỡ maintenance/503, bật site từng phần nếu cần.

  • Giữ WAF/CDN ở chế độ “strict” trong 48–72h đầu (chặn pattern tấn công).

4.2 Khôi phục tín hiệu SEO

  • Trong Google Search Console, mở Security issuesRequest Review sau khi đã dọn sạch (mô tả ngắn gọn “đã xóa mã độc, thay mới core/plugin, đổi keys, bật WAF”).

  • Remove URL rác (nếu hacker tạo nhiều trang spam) qua công cụ Removals hoặc 410/301 hợp lý.

  • Gửi lại Sitemap sạch; kiểm tra Coverage (404/Soft 404/Alternate canonical).

  • So lại robots.txt (đảm bảo không chặn nhầm sau cách ly).

4.3 Theo dõi sát 7–14 ngày

  • Biểu đồ 5xx/CPU/IO, số login failed, lưu lượng quốc gia lạ.

  • Core Web Vitals (tránh mã độc kéo script nặng), CTR/Impressions trong GSC.

Với site có giao dịch, hãy kiểm tra payment webhook, thanh toán thử (sandbox/real small) để chắc chắn chu trình đơn hàng không bị sửa đổi.

5) Gia cố (Hardening) để không tái nhiễm (tuần 1)

Lớp hạ tầng

  • WAF/CDN (Cloudflare/…): bật Bot Fight, chặn quốc gia tấn công, rate limit /wp-login.php, /xmlrpc.php, áp challenge với đường dẫn nhạy cảm.

  • Bật TLS 1.2+, HSTS, HTTP/2/3.

Lớp ứng dụng

  • Cập nhật theo quy trình: staging → test → production, có rollback.

  • Gỡ plugin/theme nulled; tối giản số lượng plugin.

  • Disable file edit trong dashboard (WP DISALLOW_FILE_EDIT).

  • Phân quyền least privilege cho FTP/DB/CMS; tách tài khoản CI/CD.

  • Tắt/giới hạn XML-RPC, bật 2FA cho admin, đổi URL đăng nhập (nếu phù hợp).

Lớp cấu hình bảo mật

  • Content-Security-Policy (CSP): whitelist domain script/img/font.

  • X-Frame-Options / Permissions-Policy / Referrer-Policy.

  • Password policy & chu kỳ đổi mật khẩu, bật SSO/2FA.

Sao lưu & kiểm thử

  • Chiến lược 3–2–1 backup, kiểm tra khôi phục định kỳ (không chỉ backup “cho có”).

  • Lên lịch quét integrity file/DB và audit log đăng nhập/nhật ký thay đổi.

Quy trình vận hành

  • Checklists hàng tháng (update, dọn 404/301, quét malware, CWV, logs).

  • Đào tạo đội nội dung về phishing, quy tắc upload media/script.

Nếu cần một lộ trình bảo trì theo tháng (checklist cập nhật, dọn lỗi lặp, audit tốc độ/SEO kỹ thuật) để duy trì website sạch & ổn định, xem quy trình bảo trì website hàng tháng do đội ngũ Tấn Phát Digital xây dựng: Web Maintenance Services.

6) Giao tiếp & pháp lý (đừng bỏ quên)

  • Thông báo minh bạch cho người dùng (mức độ tùy dữ liệu bị ảnh hưởng).

  • Buộc đổi mật khẩu với nhóm người dùng có rủi ro; vô hiệu token đăng nhập cũ.

  • Nếu liên quan thanh toán/PCI/PII, tham vấn pháp lý & tuân thủ báo cáo theo quy định.

7) Câu hỏi thường gặp (FAQ)

Bị “Japanese/Pharma hack”, dọn file là đủ?
Thường không. Dạng này hay chèn DB (meta, options, menu). Cần quét file + DB, sửa .htaccess, regenerate keys, rồi bật WAF.

Có nên restore backup là xong?
Restore giúp điểm khởi đầu sạch, nhưng nếu vector tấn công chưa bịt (plugin lỗi, key rò rỉ), site rất dễ tái nhiễm. Luôn hardening sau restore.

Bao lâu Google gỡ cảnh báo “Trang web có hại”?
Thường 24–72h sau khi Request Review và thực sự sạch.

Chỉ redirect khi vào từ Google/di động, truy cập trực tiếp thì không → có phải hack?
Rất có thể. Kẻ tấn công thường ẩn mình bằng điều kiện UA/Referrer; hãy kiểm tra .htaccess, script chèn và logs.

8) Checklist tóm tắt (in ra dán tường)

P1 – Cách ly

  • Bật 503/maintenance, chặn public tạm thời

  • Snapshot code + DB + logs (off-site)

  • Đổi password, revoke API tokens, invalidate sessions

  • Tạm dừng cron/process lạ

P2 – Dọn sạch

  • Thay mới core CMS, plugin/theme từ nguồn chính thức

  • Quét & xóa webshell/backdoor, làm sạch .htaccess/nginx

  • Quét DB (options/posts/meta), sửa siteurl/home

  • Regenerate salts/keys, đổi tất cả mật khẩu

P3 – Khôi phục & SEO

  • Mở site, bật WAF/CDN ở mức nghiêm

  • Request Review trong GSC, gửi sitemap sạch

  • Remove/410 URL rác, kiểm tra robots/coverage

Hardening

  • CSP, HSTS, headers bảo mật, 2FA, least privilege

  • Lịch update có staging, backup 3–2–1, test restore

  • Monitor uptime/5xx, integrity scan, audit log

Zalo
Facebook
Zalo
Facebook