Biết mã độc giấu ở đâu trong WordPress là nửa phần thắng khi dọn web. Kẻ tấn công không để mã ở nơi dễ thấy — chúng giấu trong những file trông vô hại, trộn vào cơ sở dữ liệu, thậm chí núp trong lịch tác vụ tự động. Bài này điểm danh từng ngóc ngách, kèm dấu hiệu để bạn nhận ra.
Vì sao mã độc khó tìm
Mã độc hiện đại được “ngụy trang” (obfuscation — làm rối để khó đọc): thay vì viết rõ ràng, nó mã hoá thành chuỗi ký tự loằng ngoằng rồi giải mã lúc chạy. Đó là lý do các hàm như eval(), base64_decode(), gzinflate(), str_rot13() hay xuất hiện trong file nhiễm — chúng dùng để giải mã đoạn độc ẩn. Thấy mấy hàm này trong file lạ là dấu hiệu rất đáng ngờ.
Những file hay bị nhắm
wp-config.php: chạy ở đầu mỗi lần tải trang, là chỗ lý tưởng để giấu mã chạy sớm. Soi kỹ phần đầu và cuối file..htaccess: tầng máy chủ — nơi chèn lệnh chuyển hướng và chặn. File này còn hay bị tạo bản ẩn trong nhiều thư mục con.- Thư mục
uploads: chỉ nên chứa ảnh và tài liệu. Bất kỳ file.phpnào ở đây gần như chắc chắn là mã độc hoặc cửa hậu. functions.phpcủa theme: đoạn mã chèn vào đây chạy trên mọi trang, lại dễ bị bỏ qua khi cập nhật.- File lõi giả: kẻ tấn công đặt file tên giống file lõi WordPress (kiểu
wp-load.phpnhái) ở sai thư mục để trà trộn.
Trong cơ sở dữ liệu
Không phải mã độc nào cũng nằm ở file. Cơ sở dữ liệu cũng là nơi trú ẩn:
- Bảng
wp_options: các trường như header/footer tùy biến bị chèn thẻ<script>. - Bài viết và trang: link ẩn, khối nội dung spam giấu bằng CSS.
- Bảng
wp_users: tài khoản quản trị lạ được thêm thẳng vào.
Những nơi ít ai ngờ
Hai chỗ nâng cao mà người tự dọn hay bỏ sót — cũng là nơi cửa hậu thích nấp:
- Thư mục
mu-plugins(must-use plugins — plugin bắt buộc): plugin đặt ở đây tự chạy và không hiện nút tắt trong giao diện, rất dễ bị lợi dụng để giấu mã. - Lịch
wp-cron(tác vụ định kỳ): kẻ tấn công đặt một tác vụ tự chạy để cài lại mã độc sau khi bạn dọn — đây là lý do web “tự nhiễm lại” dù bạn đã xoá hết file.
Soi theo thứ tự để khỏi sót
Truy mã độc nên đi có trình tự, từ nơi dễ nhiễm nhất tới nơi ẩn sâu: uploads → theme/plugin → file lõi (so với bản gốc) → cơ sở dữ liệu → wp-cron và mu-plugins. Cách hiệu quả nhất với file lõi là so sánh với bản tải mới từ wordpress.org — bất cứ file nào khác bản gốc đều đáng nghi.
Tìm được chỗ là xử được
Danh sách này cũng cho thấy vì sao quét tự động hay sót: công cụ giỏi tìm file nhiễm đã biết, nhưng cửa hậu mới hoặc tác vụ ẩn thì cần mắt người soi. Nếu bạn đã dọn mà web vẫn nhiễm lại, gần như chắc còn sót ở wp-cron hoặc một cửa hậu — đọc bài dọn backdoor. Cần làm dứt điểm, Web22 nhận xử lý mã độc website với việc rà đủ các nơi này.
