Cron Job và mã độc trong WordPress

Web mình bị nhiễm mã độc mọi người ạ, dùng Wordfence quét ra file chứa mã độc, xóa nó, 3s sau nó lại xuất hiện, nếu bạn cũng bị tình trạng tương tự thì bạn đến đúng bài rồi đó

Đầu tiên bạn cần biết về 1 khái niệm gọi là Cron Job

Cron job trong WordPress (wp-cron.php) là cơ chế giúp hệ thống tự động chạy các tác vụ định kỳ như kiểm tra bản cập nhật, đăng bài viết đã lên lịch hoặc gửi email. Tuy nhiên, đây lại là một trong những con đường ưa thích nhất của hacker để duy trì quyền kiểm soát (persistence) sau khi xâm nhập website.

Cách mã độc lợi dụng WP-Cron

Kẻ tấn công thường chèn mã độc vào hệ thống cron job để thực hiện các hành vi ẩn:

  • Tự động tái nhiễm (Auto-reinfection): Khi bạn phát hiện và xóa tệp mã độc gốc, một tác vụ cron độc hại chạy sau đó vài phút/giờ sẽ tự động tải hoặc tạo lại tệp mã độc đó.
  • Tải malware từ xa (Remote Payload Fetching): Cron job kích hoạt mã PHP để tải thêm backdoor, web shell, hoặc công cụ đào tiền ảo từ server của hacker.
  • Spam & SEO Spam Injector: Định kỳ chèn liên kết ẩn, tạo hàng nghìn bài viết/trang rác (SEO spam) hoặc gửi email spam khiến IP máy chủ bị đưa vào danh sách đen (blacklist).
  • Tạo tài khoản Administrator ẩn: Định kỳ kiểm tra và tự tạo mới các tài khoản quản trị viên nếu tài khoản cũ bị phát hiện và xóa.

Dấu hiệu nhận biết WP-Cron bị nhiễm mã độc

  • Tác vụ lạ trong Cron: Xuất hiện các cron job có tên kỳ quặc, vô nghĩa (ví dụ: wp_check_file_action, sys_update_v2, backdoor_cron_job) hoặc móc vào các hàm PHP nguy hiểm như eval(), base64_decode(), assert().
  • Tệp lạ trong thư mục /wp-contenthoặc wp-includes/: Tệp PHP xuất hiện ở những nơi vốn dĩ không nên chứa code chạy được.
  • Tốc độ website giảm / Server quá tải: Lượng yêu cầu gửi đến wp-cron.php tăng đột biến hoặc các tiến trình PHP chạy ngầm tốn nhiều CPU/RAM.

Quy trình kiểm tra và xử lý sạch mã độc Cron

Mình nhờ AI viết cho cái plugin bảo mật gọi là XD Security, chỉ cần cài vào là bạn đã control toàn bộ cron job trên wesbsite bằng giao diện Việt hóa hoàn toàn.

Duyệt Cron Job trước khi thực thi

Mặc định khi bật plugin trên, các Cron Job mới trên wordpress của bạn sẽ cần được bạn duyệt thì mới được thực thi, bạn có thể tắt chức năng này bằng cách vào XD Security >>

Kiểm tra và phát hiện Cron Job nghi vấn

Các mã độc và Cron Job mà mình từng gặp

sc_cron_fetch

Dựa trên các báo cáo an ninh mạng mới nhất vào tháng 8/2026, sc_cron_fetch là một cron hook độc hại (malicious cron hook) liên quan đến một loại mã độc WordPress rất tinh vi có khả năng tự phục hồi (self-healing malware).

Cách thức hoạt động của sc_cron_fetch

Loại mã độc chứa sc_cron_fetch thường hoạt động ngầm bên dưới tầng ứng dụng của WordPress để qua mặt các công cụ quét thông thường:

  • Vector tấn công chính: Sử dụng cơ chế auto_prepend_file thông qua tệp .user.ini ở thư mục gốc (document root). Tệp này sẽ tự động thực thi mã độc trước bất kỳ request PHP nào, khiến việc chỉ xóa plugin là không đủ vì mã độc sẽ tự phục hồi lại.
  • REST API ẩn: Nó đăng ký các API routes ẩn như /wp-json/ticker/v1/update, /ticker/v1/post, hoặc /ticker/v1/sweep để giao tiếp với máy chủ của hacker (C2).
  • Tác động Database: Nó tạo ra các tài khoản Admin giả mạo (ví dụ: api_handler…), sinh ra hàng loạt bài viết spam, và cấy các cron hook (như sc_cron_fetch) vào bảng wp_options.

Quy trình dọn dẹp và khắc phục (Eradication Plan)

Để dọn sạch hoàn toàn, bạn cần xử lý từ cấp độ server thay vì chỉ xóa từ bảng điều khiển WordPress:

  • Xử lý tệp .user.ini (Quan trọng nhất)
  • Kiểm tra thư mục gốc (root) của website xem có tệp .user.ini không.
  • Xóa hoặc làm trống (zero-fill) tệp này để vô hiệu hóa cơ chế auto_prepend_file.
  • Xóa các tệp PHP khả nghi trong wp-content
  • Tìm kiếm các tệp PHP hoặc .zip có tên mã hóa chuỗi ngẫu nhiên (VD: d1b67b3b.php, 5c6ff481.php trong thư mục cache hoặc wp-content) và xóa chúng. Kiểm tra cả các tệp ẩn (có dấu chấm ở đầu).
  • Dọn dẹp Database (bảng wp_options và wp_users)
  • Chỉnh sửa giá trị của option cron (chứa mảng serialized của wp_cron) trong bảng wp_options và xóa bỏ chuỗi sc_cron_fetch cùng các hook lạ khác.
  • Quét bảng wp_users để tìm và xóa các tài khoản Admin không hợp lệ. Xóa luôn tất cả các post rác do user này tạo ra.
  • Kiểm tra Drop-in / Mu-plugins

Mã độc thường tạo các tệp trong thư mục mu-plugins hoặc can thiệp vào db.php và advanced-cache.php – những file có ưu tiên cao khi thực hiện lệnh. Hãy kiểm tra nội dung các tệp này xem có mã lạ không.

scope-console-pad.php

Khám phá thêm nhiều kiến thức hữu ích về website