Xử lý website bị dính mã độc, phần mềm độc hại
Trần Thị Vân
- 2780
- 28/04/2024
Website bị nhiễm mã độc hoặc phần mềm độc hại là một trong những sự cố nghiêm trọng nhất mà bất kỳ cá nhân hay doanh nghiệp nào cũng có thể gặp phải. Không chỉ làm gián đoạn hoạt động của website, mã độc còn có thể đánh cắp dữ liệu, phát tán nội dung lừa đảo, chuyển hướng người truy cập sang các trang nguy hiểm, ảnh hưởng đến SEO và khiến website bị các công cụ tìm kiếm hoặc trình duyệt đưa vào danh sách cảnh báo.
Trong nhiều trường hợp, chủ website chỉ phát hiện sự cố khi khách hàng phản ánh website xuất hiện nội dung bất thường, Google hiển thị cảnh báo hoặc hosting gửi email thông báo về việc phát hiện tập tin độc hại. Tuy nhiên, thời điểm đó thường đồng nghĩa với việc mã độc đã tồn tại trong hệ thống một khoảng thời gian nhất định.
Bài viết dưới đây sẽ hướng dẫn chi tiết quy trình kiểm tra, xử lý, khắc phục và phòng chống website bị nhiễm mã độc theo đúng quy trình thực tế, giúp bạn nhanh chóng đưa website trở lại trạng thái an toàn.

Website bị nhiễm mã độc là gì?
Mã độc (Malware) là các đoạn mã được tin tặc chèn vào website nhằm thực hiện những hành vi trái phép như:
- Chiếm quyền quản trị website.
- Chèn quảng cáo trái phép.
- Chuyển hướng người dùng sang website khác.
- Đánh cắp thông tin khách hàng.
- Đánh cắp dữ liệu quản trị.
- Phát tán virus.
- Tạo cửa hậu (Backdoor) để truy cập lại sau này.
- Biến website thành nơi gửi thư rác.
- Sử dụng tài nguyên máy chủ để đào tiền điện tử.
Điểm nguy hiểm là nhiều loại mã độc hoạt động âm thầm, gần như không ảnh hưởng giao diện website nên rất khó phát hiện nếu không kiểm tra định kỳ.
Dấu hiệu nhận biết website đang bị nhiễm phần mềm độc hại
Google hiển thị cảnh báo bảo mật
Khi truy cập website, trình duyệt có thể xuất hiện các thông báo như:
- Trang web này có thể gây hại.
- Website chứa phần mềm độc hại.
- Deceptive Site Ahead.
- Phishing Warning.
Đây là dấu hiệu rõ ràng cho thấy website đã bị Google hoặc Safe Browsing đánh dấu.
Website tự động chuyển hướng
Người dùng truy cập website nhưng lại bị chuyển sang:
- Website cá cược.
- Website người lớn.
- Website bán thuốc.
- Website lừa đảo.
- Website chứa quảng cáo.
Đây là một trong những biểu hiện phổ biến của mã độc Redirect.
Xuất hiện các trang lạ
Khi tìm kiếm trên Google, website xuất hiện hàng nghìn trang không do bạn tạo như:
- Casino.
- Crypto.
- Thuốc.
- Game.
- Sản phẩm không liên quan.
Đây thường là dấu hiệu website đã bị chèn mã SEO Spam.
Website hoạt động chậm bất thường
Nếu website đột nhiên sử dụng CPU, RAM hoặc băng thông tăng cao dù lượng truy cập không đổi thì có thể máy chủ đang bị khai thác để chạy các tiến trình độc hại.
Hosting liên tục gửi email cảnh báo
Các nhà cung cấp hosting thường quét định kỳ và gửi cảnh báo khi phát hiện:
- Backdoor.
- Shell.
- Trojan.
- Web Shell.
- Virus.
Nguyên nhân website bị nhiễm mã độc
Sử dụng plugin hoặc theme không rõ nguồn gốc
Đây là nguyên nhân phổ biến nhất đối với website WordPress. Các phiên bản nulled thường bị chèn sẵn backdoor hoặc mã độc.
Không cập nhật hệ thống
CMS, plugin hoặc theme cũ thường tồn tại các lỗ hổng đã được công khai. Tin tặc chỉ cần quét Internet để tìm website chưa cập nhật và tự động khai thác.
Mật khẩu yếu
Sử dụng mật khẩu đơn giản hoặc dùng chung cho nhiều tài khoản làm tăng nguy cơ bị dò mật khẩu.
Phân quyền sai
Các thư mục hoặc tập tin được cấp quyền quá rộng giúp hacker dễ dàng ghi mã độc vào hệ thống.
Máy tính quản trị bị nhiễm virus
Nếu máy tính của quản trị viên chứa mã độc đánh cắp FTP hoặc Cookie đăng nhập thì website cũng có nguy cơ bị kiểm soát.
Lỗ hổng trong mã nguồn
Website tự phát triển nhưng không kiểm tra bảo mật có thể tồn tại lỗi SQL Injection, File Upload, Remote Code Execution hoặc Local File Inclusion.
Những loại mã độc thường gặp
| Loại mã độc | Mức độ nguy hiểm | Biểu hiện |
|---|---|---|
| Backdoor | Rất cao | Cho phép hacker quay lại bất cứ lúc nào. |
| Web Shell | Rất cao | Điều khiển toàn bộ website. |
| SEO Spam | Cao | Tạo hàng nghìn trang rác. |
| Redirect | Cao | Chuyển hướng người truy cập. |
| Mailer | Trung bình | Gửi email spam. |
| Crypto Miner | Cao | Chiếm tài nguyên máy chủ. |
| JavaScript độc hại | Cao | Đánh cắp thông tin người dùng. |
Quy trình xử lý website bị nhiễm mã độc đúng cách
Bước 1: Đưa website vào chế độ bảo trì
Việc đầu tiên là hạn chế người dùng truy cập để tránh tiếp tục phát tán mã độc hoặc làm lộ dữ liệu.
Nếu chưa thể tạm dừng website, nên chặn quyền ghi dữ liệu và giới hạn quyền truy cập quản trị.
Bước 2: Sao lưu toàn bộ dữ liệu
Dù website đã bị nhiễm mã độc, bạn vẫn nên tạo một bản sao lưu đầy đủ trước khi xử lý để phục vụ việc phân tích hoặc khôi phục khi cần.
Bước 3: Kiểm tra nhật ký hệ thống
Phân tích log truy cập giúp xác định:
- Thời điểm bị tấn công.
- Địa chỉ IP đáng ngờ.
- Tập tin bị sửa.
- Lỗ hổng bị khai thác.
Bước 4: Quét toàn bộ mã nguồn
So sánh mã nguồn hiện tại với phiên bản gốc để phát hiện:
- Tập tin mới xuất hiện.
- Mã hóa Base64.
- Chuỗi ký tự khó hiểu.
- Đoạn mã bị chèn.
- Backdoor ẩn.
Bước 5: Loại bỏ tập tin độc hại
Chỉ xóa sau khi xác định chắc chắn tập tin là mã độc. Việc xóa nhầm có thể khiến website ngừng hoạt động.
Bước 6: Kiểm tra cơ sở dữ liệu
Mã độc không chỉ nằm trong tập tin mà còn có thể tồn tại trong cơ sở dữ liệu dưới dạng:
- Script độc hại.
- Iframe.
- JavaScript.
- Liên kết spam.
- Tài khoản quản trị giả.
Bước 7: Đổi toàn bộ thông tin đăng nhập
Sau khi làm sạch website, cần thay đổi ngay:
- Mật khẩu quản trị.
- Mật khẩu Hosting.
- Mật khẩu FTP.
- Mật khẩu SSH.
- Mật khẩu cơ sở dữ liệu.
- Mật khẩu Email.
Bước 8: Cập nhật hệ thống
Cập nhật CMS, plugin, theme và các thư viện lên phiên bản mới nhất nhằm vá các lỗ hổng đã biết.
Bước 9: Kiểm tra lại toàn bộ website
Đảm bảo website hoạt động bình thường, không còn chuyển hướng, không xuất hiện tập tin lạ và không phát sinh thêm cảnh báo bảo mật.
Cách xác định website đã được làm sạch hoàn toàn hay chưa
Sau khi loại bỏ các tập tin nghi ngờ, công việc vẫn chưa kết thúc. Một website chỉ được xem là an toàn khi toàn bộ cửa hậu, mã độc và nguyên nhân gây ra sự cố đều đã được xử lý. Nếu chỉ xóa những tập tin nhìn thấy mà bỏ sót backdoor, hacker hoàn toàn có thể xâm nhập trở lại chỉ sau vài phút hoặc vài giờ.
Kiểm tra toàn bộ tập tin vừa thay đổi
Hãy rà soát danh sách các tập tin được chỉnh sửa gần đây. Nếu phát hiện nhiều tập tin có cùng thời gian chỉnh sửa hoặc xuất hiện hàng loạt tập tin lạ trong các thư mục hệ thống thì cần kiểm tra kỹ từng tập tin.
Đặc biệt nên chú ý các thư mục:
- uploads
- cache
- tmp
- images
- includes
- vendor
- plugins
- themes
Đây là những vị trí thường bị lợi dụng để cài mã độc vì quản trị viên ít khi kiểm tra.
Kiểm tra tài khoản quản trị
Nhiều cuộc tấn công không chỉ cài mã độc mà còn tạo thêm tài khoản quản trị bí mật. Nếu bỏ sót những tài khoản này, website vẫn có nguy cơ bị chiếm quyền bất cứ lúc nào.
Hãy kiểm tra:
- Tài khoản quản trị website.
- Tài khoản FTP.
- Tài khoản SSH.
- Tài khoản Hosting.
- Tài khoản cơ sở dữ liệu.
Xóa ngay những tài khoản không rõ nguồn gốc hoặc không còn sử dụng.
Đối chiếu với mã nguồn gốc
Đối với các CMS phổ biến, nên tải phiên bản sạch tương ứng rồi so sánh với website hiện tại. Những tập tin bị thay đổi ngoài dự kiến cần được kiểm tra từng dòng để xác định có bị chèn mã độc hay không.
Kiểm tra các đoạn mã đáng ngờ
Mã độc thường được ngụy trang dưới nhiều hình thức nhằm tránh bị phát hiện. Không phải đoạn mã dài nào cũng nguy hiểm, nhưng những đoạn có dấu hiệu sau cần được kiểm tra cẩn thận.
- Chuỗi ký tự rất dài không có ý nghĩa.
- Dữ liệu được mã hóa Base64.
- Nhiều ký tự ngẫu nhiên.
- Đoạn mã được nén hoặc mã hóa nhiều lớp.
- Mã JavaScript được chèn ở cuối trang.
- Mã PHP tự động tạo tập tin mới.
Ví dụ về đoạn mã cần kiểm tra
<?php
eval(base64_decode('Tm9pIGR1bmcgZHVvYyBtYSBob2E='));
?>
Không phải mọi trường hợp sử dụng Base64 đều là mã độc, nhưng việc xuất hiện hàm giải mã kết hợp với thực thi trực tiếp là dấu hiệu cần phân tích kỹ.
Kiểm tra tập tin cấu hình
Nhiều hacker không sửa mã nguồn chính mà thay đổi tập tin cấu hình để chuyển hướng hoặc cấp quyền trái phép.
Cần kiểm tra:
- File cấu hình của website.
- Tập tin khởi động.
- Tập tin cấu hình máy chủ.
- Tập tin cấu hình PHP.
- htaccess.
Ví dụ một đoạn htaccess chuyển hướng bất thường
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} Googlebot [NC]
RewriteRule ^(.*)$ https://example.com/$1 [R=302,L]
Nếu không phải do quản trị viên chủ động cấu hình thì cần xem xét ngay vì hacker thường lợi dụng quy tắc chuyển hướng để đánh lừa công cụ tìm kiếm hoặc người truy cập.
Kiểm tra cơ sở dữ liệu sau khi xử lý
Nhiều website đã xóa sạch tập tin nhưng vẫn bị tái nhiễm do cơ sở dữ liệu còn chứa mã độc.
Nên kiểm tra:
- Bài viết.
- Trang.
- Bình luận.
- Cấu hình website.
- Widget.
- Menu.
- Dữ liệu mở rộng.
Đặc biệt cần tìm các đoạn JavaScript, iframe hoặc liên kết đến những tên miền không quen thuộc.
Khôi phục website từ bản sao lưu có phải luôn là giải pháp tốt?
Nhiều người lựa chọn khôi phục website từ bản sao lưu gần nhất để tiết kiệm thời gian. Tuy nhiên, phương pháp này chỉ hiệu quả khi bản sao lưu được tạo trước thời điểm website bị tấn công.
Nếu bản sao lưu cũng đã chứa mã độc thì sau khi khôi phục, website vẫn tiếp tục bị nhiễm và có thể bị khai thác trở lại.
Trước khi phục hồi, cần kiểm tra:
- Ngày tạo bản sao lưu.
- Tính toàn vẹn của dữ liệu.
- Các tập tin bị thay đổi.
- Các plugin đã cài.
- Các tài khoản quản trị.
Cách yêu cầu Google gỡ cảnh báo website độc hại
Sau khi chắc chắn website đã được làm sạch, bạn cần yêu cầu Google xem xét lại nếu website từng bị đánh dấu là không an toàn.
- Đăng nhập Google Search Console.
- Kiểm tra mục bảo mật.
- Xác nhận mọi vấn đề đã được xử lý.
- Gửi yêu cầu xem xét lại.
- Theo dõi kết quả phản hồi.
Trong thời gian chờ xét duyệt, website vẫn có thể hiển thị cảnh báo trên trình duyệt hoặc kết quả tìm kiếm.
Biện pháp phòng chống website bị nhiễm mã độc trong tương lai
Luôn cập nhật phần mềm
Việc cập nhật thường xuyên giúp vá các lỗ hổng đã được phát hiện và giảm đáng kể nguy cơ bị khai thác tự động.
Sử dụng mật khẩu mạnh
Mỗi tài khoản nên có mật khẩu riêng, đủ độ dài và kết hợp chữ hoa, chữ thường, số cùng ký tự đặc biệt.
Kích hoạt xác thực nhiều lớp
Xác thực nhiều lớp giúp hạn chế nguy cơ bị chiếm quyền ngay cả khi mật khẩu bị lộ.
Sao lưu định kỳ
Nên xây dựng quy trình sao lưu tự động và lưu nhiều phiên bản khác nhau để có thể khôi phục khi cần thiết.
Giới hạn quyền truy cập
Chỉ cấp quyền đúng với nhu cầu sử dụng của từng tài khoản. Không nên sử dụng tài khoản có quyền cao nhất cho mọi công việc hằng ngày.
Theo dõi nhật ký hoạt động
Việc giám sát log giúp phát hiện sớm các hành vi bất thường như đăng nhập trái phép, tải lên tập tin lạ hoặc thay đổi cấu hình hệ thống.
Cài đặt tường lửa ứng dụng web
Tường lửa ứng dụng web có thể ngăn chặn nhiều hình thức tấn công phổ biến trước khi chúng tiếp cận website, góp phần giảm nguy cơ bị khai thác lỗ hổng.
Những sai lầm thường gặp khi xử lý website bị nhiễm mã độc
- Chỉ xóa tập tin bị phát hiện mà không tìm nguyên nhân.
- Không đổi toàn bộ mật khẩu sau khi xử lý.
- Tiếp tục sử dụng plugin hoặc giao diện không rõ nguồn gốc.
- Khôi phục từ bản sao lưu đã nhiễm mã độc.
- Không cập nhật hệ thống sau khi làm sạch.
- Bỏ qua việc kiểm tra cơ sở dữ liệu.
- Không theo dõi website sau khi khắc phục.
Nếu cần thiết hãy phân quyền toàn bộ thư mục về 555 và toàn bộ file về 444
Trong trường hợp website liên tục bị chèn mã độc trở lại dù đã làm sạch hoặc nghi ngờ hacker vẫn còn khả năng ghi dữ liệu lên máy chủ, bạn có thể áp dụng biện pháp tạm thời là khóa quyền ghi đối với toàn bộ mã nguồn. Cách này giúp ngăn chặn việc tạo mới hoặc chỉnh sửa tập tin trái phép trong thời gian theo dõi và điều tra nguyên nhân.
Biện pháp này chỉ nên áp dụng khi bạn hiểu rõ cấu trúc website và biết chính xác những thư mục hoặc tập tin nào cần quyền ghi để website hoạt động bình thường. Sau khi xác định website đã an toàn, hãy điều chỉnh lại quyền phù hợp với nhu cầu thực tế.
Thiết lập quyền truy cập
- Đặt toàn bộ thư mục về quyền 555.
- Đặt toàn bộ tập tin về quyền 444.
- Riêng các thư mục dùng để tải lên tập tin (upload) thì cấp lại quyền ghi theo nhu cầu của hệ thống.
- Riêng các tập tin được người dùng tải lên hoặc hệ thống cần cập nhật thì cấp lại quyền phù hợp để đảm bảo chức năng hoạt động.
Việc khóa toàn bộ quyền ghi sẽ khiến hacker hoặc mã độc không thể dễ dàng tạo mới, chỉnh sửa hoặc ghi đè tập tin trong mã nguồn nếu vẫn còn tồn tại lỗ hổng chưa được vá.
Ví dụ thực hiện trên Linux
Đưa toàn bộ thư mục về quyền 555:
find /duong-dan-website -type d -exec chmod 555 {} ;
Đưa toàn bộ tập tin về quyền 444:
find /duong-dan-website -type f -exec chmod 444 {} ;
Sau đó chỉ cấp lại quyền ghi cho các thư mục upload hoặc các vị trí bắt buộc phải ghi dữ liệu, chẳng hạn như thư mục chứa tệp người dùng tải lên, bộ nhớ đệm hoặc thư mục lưu phiên làm việc nếu website yêu cầu.
Lưu ý rằng việc phân quyền 555 và 444 thường phù hợp với website đã hoàn thiện, ít thay đổi nội dung hoặc chỉ được sử dụng như một giải pháp tăng cường bảo mật trong quá trình xử lý sự cố. Nếu website cần cập nhật mã nguồn, cài đặt plugin, nâng cấp hệ thống hoặc chỉnh sửa giao diện, bạn cần cấp lại quyền ghi tạm thời rồi khóa lại sau khi hoàn tất.
Hướng dẫn phân quyền toàn bộ file và toàn bộ thư mục bằng FileZilla
Nếu bạn sử dụng FileZilla để quản lý website qua FTP hoặc SFTP, có thể thay đổi quyền của toàn bộ thư mục và tập tin một cách nhanh chóng bằng chức năng File permissions. Trước khi thực hiện, hãy đảm bảo bạn đã sao lưu website để có thể khôi phục nếu việc phân quyền làm ảnh hưởng đến hoạt động của hệ thống.
- Kết nối đến máy chủ bằng FileZilla.
- Đi tới thư mục gốc chứa mã nguồn website.
- Nhấp chuột phải vào thư mục gốc của website và chọn File permissions....
- Nhập giá trị 555 vào ô Numeric value.
- Tích chọn Recurse into subdirectories.
- Chọn Apply to directories only.
- Nhấn OK và chờ FileZilla hoàn tất quá trình phân quyền.
Sau khi hoàn tất việc phân quyền cho thư mục, tiếp tục thực hiện lại các bước trên để phân quyền cho toàn bộ tập tin:
- Nhấp chuột phải vào thư mục gốc của website.
- Chọn File permissions....
- Nhập giá trị 444 vào ô Numeric value.
- Tích chọn Recurse into subdirectories.
- Chọn Apply to files only.
- Nhấn OK để FileZilla áp dụng quyền cho toàn bộ tập tin.
Sau khi hoàn thành, hãy cấp lại quyền ghi cho các thư mục upload và các tập tin cần được hệ thống cập nhật trong quá trình hoạt động. Đồng thời, kiểm tra lại các chức năng như tải tệp, bộ nhớ đệm, tạo ảnh thu nhỏ hoặc các tính năng ghi dữ liệu để đảm bảo website vẫn hoạt động ổn định.
Lưu ý: Phân quyền không thể thay thế việc làm sạch mã độc
Việc đưa toàn bộ thư mục về quyền 555 và toàn bộ tập tin về quyền 444 chỉ có tác dụng hạn chế khả năng ghi hoặc chỉnh sửa dữ liệu trên máy chủ. Đây là một biện pháp tăng cường bảo mật, không phải là cách loại bỏ mã độc.
Nếu trong mã nguồn vẫn còn chứa các đoạn mã độc, backdoor hoặc web shell chưa được phát hiện thì chúng vẫn sẽ tiếp tục tồn tại và có thể được thực thi khi có yêu cầu phù hợp. Nói cách khác, việc phân quyền sẽ không tự động xóa hay vô hiệu hóa mã độc đã có sẵn trong các tập tin.
Vì vậy, trước khi thực hiện phân quyền, bạn cần đảm bảo website đã được kiểm tra kỹ lưỡng, loại bỏ hoàn toàn các tập tin độc hại, làm sạch cơ sở dữ liệu nếu cần, đồng thời vá lỗ hổng mà hacker đã khai thác. Chỉ khi mã nguồn đã sạch, việc phân quyền mới thực sự phát huy hiệu quả trong việc ngăn chặn nguy cơ website tiếp tục bị ghi thêm mã độc.
Đừng xem việc phân quyền là giải pháp xử lý cuối cùng. Nếu website vẫn còn một backdoor hoặc một đoạn mã PHP độc hại hoạt động trong hệ thống thì khi bạn mở lại quyền ghi để cập nhật website, cài plugin hoặc tải tệp lên, mã độc đó hoàn toàn có thể tiếp tục tạo thêm tập tin độc hại hoặc tái nhiễm toàn bộ website. Vì vậy, việc làm sạch triệt để mã nguồn luôn là ưu tiên hàng đầu trước khi áp dụng các biện pháp khóa quyền ghi.
Kết luận
Xử lý website bị dính mã độc không đơn thuần là xóa một vài tập tin đáng ngờ mà cần thực hiện theo quy trình đầy đủ từ xác định nguyên nhân, loại bỏ mã độc, kiểm tra cơ sở dữ liệu, thay đổi thông tin đăng nhập, cập nhật hệ thống cho đến theo dõi sau khi khắc phục. Việc xử lý đúng ngay từ đầu sẽ giúp hạn chế nguy cơ tái nhiễm, bảo vệ dữ liệu, duy trì uy tín thương hiệu và đảm bảo website hoạt động ổn định trong thời gian dài.
Đối với các website doanh nghiệp hoặc website có lượng truy cập lớn, nên xây dựng quy trình kiểm tra bảo mật định kỳ, sao lưu dữ liệu thường xuyên và giám sát hệ thống liên tục. Chủ động phòng ngừa luôn là giải pháp hiệu quả và tiết kiệm hơn rất nhiều so với việc khắc phục sau khi website đã bị tấn công.
- 0 Bình luận
Email, Điện thoại của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *