Cách tôi truy vết một cuộc tấn công chèn mã độc tinh vi và gia cố môi trường hệ thống

Bạn chạy quét mã độc. Bạn thay thế các tệp tin cốt lõi. Bạn cập nhật plugin và thay đổi mật khẩu. Trang web trông có vẻ đã sạch sẽ.

Hai ngày sau, khách hàng gọi điện. Các tài khoản admin mới lại xuất hiện. Khách truy cập bị chuyển hướng đến các trang web độc hại.

Đây chính là cơn ác mộng về sự tồn tại dai dẳng (persistence).

Các plugin bảo mật tiêu chuẩn thường thất bại. Những kẻ tấn công tinh vi không chỉ thả một payload duy nhất. Chúng xây dựng các backdoor lồng nhau ẩn bên trong các tệp tin hợp lệ.

Gần đây tôi đã xử lý một trường hợp mà cả ba lần dọn dẹp đều thất bại. Các triệu chứng rất đặc thù:

• Admin "ma": Các tài khoản mới với tên ngẫu nhiên xuất hiện sau mỗi 48 giờ. • Chuyển hướng có điều kiện: Chỉ những khách truy cập mới từ các công cụ tìm kiếm mới thấy trang web độc hại. Các nhà phát triển thì không thấy gì cả.

Nhóm kỹ thuật đã ghi đè lên WordPress core và cập nhật các plugin. Các trình quét không tìm thấy gì. Mã độc tự tái tạo như một con quái vật Hydra.

Kẻ tấn công đã cài đặt một cơ chế duy trì (persistence mechanism) trong cơ sở dữ liệu hoặc một cron job. Các trình quét tự động đã bỏ lỡ nó vì mã nguồn là mã tùy chỉnh.

Tôi đã sử dụng dòng lệnh (command line) để tìm ra sự thật.

Đầu tiên, tôi xác minh các tệp tin cốt lõi bằng checksum: wp core verify-checksums

Phần core thì sạch. Backdoor nằm trong wp-content hoặc trong cơ sở dữ liệu.

Tôi tìm kiếm các tệp tin đã bị sửa đổi trong 7 ngày qua: find . -type f -mtime -7 -name "*.php"

Sau đó, tôi tìm kiếm các hàm khả nghi như eval() hoặc base64_decode(): grep -rnw './wp-content/' -e 'eval(' -e 'base64_decode('

Tôi đã tìm thấy một tệp tin bị ẩn sâu trong một plugin premium đã lỗi thời. Nhưng việc xóa plugin đó vẫn không ngăn được sự lây nhiễm.

Kẻ tấn công đã để lại một trình kích hoạt (trigger) trong bảng wp_options dưới tùy chọn cron. Mỗi khi WordPress cron chạy, nó lại tải về một payload mới. Nó tái nhiễm các tệp tin cốt lõi chỉ vài phút sau khi chúng được dọn dẹp.

Để khắc phục điều này, bạn phải tuân thủ một trình tự nghiêm ngặt:

  1. Làm sạch Cơ sở dữ liệu (Database Scrubbing)
  1. Thanh lọc Hệ thống Tệp tin (File System Purge)
  1. Thay đổi Thông tin Xác thực (Credential Rotation)

Tôi cũng đã triển khai ba biện pháp phòng vệ để ngăn chặn sự việc tái diễn:

• Bảo vệ tại biên: Tôi đã sử dụng Cloudflare WAF để chặn các yêu cầu POST khả nghi gửi đến các thư mục nhạy cảm. • Phân quyền tệp: Tôi đã khóa cấu trúc thư mục. Các thư mục được đặt thành 755 và các tệp thành 644. Tôi đã thiết lập wp-config.php ở chế độ chỉ đọc. • Vô hiệu hóa chỉnh sửa: Tôi đã thêm DISALLOW_FILE_EDIT và DISALLOW_FILE_MODS vào wp-config.php. Điều này ngăn chặn bất kỳ ai thay đổi mã nguồn thông qua bảng điều khiển.

Đừng tin vào dấu tích xanh từ một plugin. Hãy giả định rằng một vụ xâm nhập đã xảy ra. Hãy bảo vệ trang web của bạn từ trong ra ngoài.

Nguồn: https://dev.to/jahidshah/how-i-tracked-a-stealthy-injection-and-hardened-the-environment-4clm