-
06/07/2013
-
797
-
1.308 bài viết
Dấu hiệu website bị tấn công và cách xử lý
Những dấu hiệu phát hiện website bị tấn công:
Các bước xử lý khi website bị tấn công:
1. Khắc phục tạm thời:
Bước đầu tiên, quản trị viên cần cách ly / sao lưu trạng thái website để phục vụ công tác điều tra về sau.
Thông báo “Nâng cấp/Bảo trì” tại trang chủ để tránh ảnh hưởng uy tín cơ quan, doanh nghiệp…
Kiểm tra và xóa các tài khoản lạ trên hệ thống. Đổi mật khẩu các tài khoản như: FTP, SSH, phpmyadmin, database, tài khoản quản trị web…
2. Rà soát, xử lý
Để kiểm tra các file bị sửa đổi trên website có thể thực hiện bằng cách so sánh với bản backup, ta sử dụng câu lệnh sau:
# diff -qr
Hoặc lệnh:
# md5sum
Dựa vào các thông tin trên người quản trị sẽ dễ dàng thấy các file nào bị sửa đổi hay mới được tạo ra và thực hiện thêm một số kiểm tra trên các file này (các lệnh diff và md5sum thực hiện trên hệ điều hành Linux).
Trong trường hợp bạn không có bản sao lưu hoàn chỉnh, bạn có thể sử dụng các câu lệnh sau để tìm file bị hacker sửa đổi:
Lệnh tìm và sắp xếp các file theo thời gian bị sửa đổi:
$ find /var/www/html -type f -printf ‘%TY-%Tm-%Td %TT %p
’ | sort -r
Lệnh tìm các file bị sửa đổi trong vòng 60 phút:
$ find /var/www/html -type f -mmin -60
Lệnh tìm các file bị sửa đổi trong vòng 7 ngày trước:
$find /var/www/html -type f -mtime -7
Lệnh tìm các file bị sửa đổi trong vòng 60 phút và hiển thị các thuộc tính của file để phục vụ điều tra:
$ find /var/www/html -type f -mmin -60 | xargs ls –al
Sau khi đã xác định được các file đã bị thay đổi trong mã nguồn, cần kiểm tra kỹ lại các file này bằng cách sử dụng các trình editor để tìm kiếm theo các hàm nguy hiểm thường được sử dụng trong web shell (Một số hàm phổ biến đối với mã nguồn php: preg_replace, passthru, stripslashes, shell_exec, exec, base64_decode, eval, system, proc_open, gzuncompress, popen, curl_exec, curl_multi_exec, parse_ini_file, show_source).
Ngoài ra có thể sử dụng thêm một số công cụ hỗ trợ như Web Shell Detector để quét các định dạng shell phức tạp hơn (sử dụng mã hóa tên, mã hóa mã nguồn…)
Kiểm tra database: Hacker có thể lưu trữ backdoor ở trong database, bạn cần mở database và tìm kiếm trong các bảng các từ khóa spam hoặc các hàm php. Lưu ý bạn nhớ backup database trước khi thực hiện.
Phân tích hiện trường: Sau khi đã rà soát thấy file shell, tiến hành điều tra theo tên shell trong file logs web để xác định chính xác shell được tải lên qua lỗ hổng web, và hành vi của nó. Tìm kiếm mã độc, các thành phần của mã độc trong hệ thống (nếu có).
3. Phân tích và xử lý các thành phần độc hại
Sau khi phân tích hiện trường và lấy được các mẫu file độc hại (nếu có). Tiến hành phân tích hành vi của mã độc để khoanh vùng, theo dõi các kết nối đến server. Sau đó xử lý mã độc ra khỏi server bị nhiễm bằng cách loại bỏ tiến trình, xóa file shell, xóa key khởi động.
Phân tích các hành vi của file độc hại:
Có thể đọc mã nguồn của shell để phân tích hành vi, đối với nhưng webshell đa năng có thể truy cập vào giao diện của webshell để xem những chức năng của shell.
Dịch ngược mã nguồn mã độc để phân tích hành vi, ngoài ra có thể sử dụng các công cụ giám sát các hành vi ghi file hoặc truy cập ra ngoài.
4. Xác định và vá lỗ hổng website:
Đây là bước yêu cầu người thực hiện phải có kiến thức chuyên môn tốt và kinh nghiệm để có thể tìm và khắc phục các lỗ hổng, nếu người có nhiệm vụ không thể tự thực hiện có thể thuê các đơn vị uy tín bên ngoài.
Trước tiên cần kiểm tra trong access log hay error log tìm kiếm tất cả các thông tin liên quan đến việc website bị tấn công: như website bị tấn công dò mật khẩu, có một số login không hợp lệ từ IP lạ, một số file lạ được upload bằng FTP. Dựa vào các thông tin trên có thể xác định website bị tấn công do lộ mật khẩu hay hacker tấn công băng cách khai thác các lỗ hỗng bảo mật khác trên website.
Thông qua những đoạn access log lạ từ đó tìm ra cách khai thai lỗ hỗng của hacker. Như thông thường để upload một file lên website thì phải dùng phương thức POST, từ đó có thể dựa vào thông tin này để rút ngắn lại phạm vi tìm kiếm nhằm xác định chính xác cách thức khai thác.
Người quản trị nên kiểm tra lại mã nguồn đang dùng có đang tồn tại lỗ hỗng bảo mật nào không, các module, plugin được cài lên website có an toàn không.
Để xác định được hacker đã lợi dụng module nào để tải file độc hại lên server, cần phải phân tích file log và điều tra xem file shell đã được tải lên thông qua module nào, có thể điều tra dựa theo tên shell hoặc nội dung của file shell được tải lên. Đọc source để tìm đoạn code gây lỗi và tìm phương pháp khắc phục.
Rà soát bằng tay hoặc sử dụng một số công cụ quét lỗ hổng bảo mật như: Acunetix, Burp Suite,… để rà soát lại toàn bộ các module của website để đảm bảo website không còn lỗ hổng nào khác cho phép hacker tấn công trở lại.
Sau khi xác định được các lỗ hổng thì tiến hành phối hợp với các bộ phận liên quan để tiến hành vá các lỗ hỗng, cập nhật phiên bản mới cho mã nguồn (đối với website sử dụng nguồn mở như Wordpress, Joomla…) các module, plugin.
5. Điều tra nguồn tấn công
Sau khi phân tích shell và mã độc (nếu có), tìm ra chi tiết thông tin server điều khiển, địa chỉ tải mã độc. Sau đấy gửi yêu cầu trợ giúp điều tra tới các cơ quan chức năng. Gửi cảnh báo tới các cơ quan đơn vị khác có liên quan để đề cao cảnh giác.
6. Đưa website trở lại hoạt động
Sau khi rà soát và xử lý hoàn tất các bước cần nhanh chóng đưa website trở lại hoạt động để tránh gián đoạn hoạt động của cơ quan, tổ chức quá lâu.
Trong quá trình vận hành, khai thác cần theo dõi thường xuyên, thực backup dữ liệu, kiểm tra bảo mật cho website để tránh những sự cố đáng tiếc xảy ra.
- Trang chủ của website hoặc trang con bị thay đổi giao diện (deface).
- Nội dung trang web xuất hiện các thông báo như: “Hacked by…”, “Bạn đã bị hack…”
- Mã nguồn website bị chèn những đoạn mã, script lạ.
- Khi truy cập website bị trình duyệt cảnh báo.
- Website tự động đăng những nội dung, tin tức trái phép.
- Web server xuất hiện những file lạ, shell, các tập tin có nội dung đã được mã hóa.
- Website tự động gửi các request đến các website lạ thường xuyên.
- Khi truy cập website thông qua kết quả tìm kiếm Google bị cảnh báo.
- Truy cập vào website bị chuyển hướng sang những website quảng cáo, độc hại.
- Website bị đưa đưa lên các diễn đàn hacker, các trang thống kê những website bị tin tặc tấn công.
Các bước xử lý khi website bị tấn công:
1. Khắc phục tạm thời:
Bước đầu tiên, quản trị viên cần cách ly / sao lưu trạng thái website để phục vụ công tác điều tra về sau.
Thông báo “Nâng cấp/Bảo trì” tại trang chủ để tránh ảnh hưởng uy tín cơ quan, doanh nghiệp…
Kiểm tra và xóa các tài khoản lạ trên hệ thống. Đổi mật khẩu các tài khoản như: FTP, SSH, phpmyadmin, database, tài khoản quản trị web…
2. Rà soát, xử lý
Để kiểm tra các file bị sửa đổi trên website có thể thực hiện bằng cách so sánh với bản backup, ta sử dụng câu lệnh sau:
# diff -qr
Hoặc lệnh:
# md5sum
Dựa vào các thông tin trên người quản trị sẽ dễ dàng thấy các file nào bị sửa đổi hay mới được tạo ra và thực hiện thêm một số kiểm tra trên các file này (các lệnh diff và md5sum thực hiện trên hệ điều hành Linux).
Trong trường hợp bạn không có bản sao lưu hoàn chỉnh, bạn có thể sử dụng các câu lệnh sau để tìm file bị hacker sửa đổi:
Lệnh tìm và sắp xếp các file theo thời gian bị sửa đổi:
$ find /var/www/html -type f -printf ‘%TY-%Tm-%Td %TT %p
’ | sort -r
Lệnh tìm các file bị sửa đổi trong vòng 60 phút:
$ find /var/www/html -type f -mmin -60
Lệnh tìm các file bị sửa đổi trong vòng 7 ngày trước:
$find /var/www/html -type f -mtime -7
Lệnh tìm các file bị sửa đổi trong vòng 60 phút và hiển thị các thuộc tính của file để phục vụ điều tra:
$ find /var/www/html -type f -mmin -60 | xargs ls –al
Sau khi đã xác định được các file đã bị thay đổi trong mã nguồn, cần kiểm tra kỹ lại các file này bằng cách sử dụng các trình editor để tìm kiếm theo các hàm nguy hiểm thường được sử dụng trong web shell (Một số hàm phổ biến đối với mã nguồn php: preg_replace, passthru, stripslashes, shell_exec, exec, base64_decode, eval, system, proc_open, gzuncompress, popen, curl_exec, curl_multi_exec, parse_ini_file, show_source).
Ngoài ra có thể sử dụng thêm một số công cụ hỗ trợ như Web Shell Detector để quét các định dạng shell phức tạp hơn (sử dụng mã hóa tên, mã hóa mã nguồn…)
Kiểm tra database: Hacker có thể lưu trữ backdoor ở trong database, bạn cần mở database và tìm kiếm trong các bảng các từ khóa spam hoặc các hàm php. Lưu ý bạn nhớ backup database trước khi thực hiện.
Phân tích hiện trường: Sau khi đã rà soát thấy file shell, tiến hành điều tra theo tên shell trong file logs web để xác định chính xác shell được tải lên qua lỗ hổng web, và hành vi của nó. Tìm kiếm mã độc, các thành phần của mã độc trong hệ thống (nếu có).
3. Phân tích và xử lý các thành phần độc hại
Sau khi phân tích hiện trường và lấy được các mẫu file độc hại (nếu có). Tiến hành phân tích hành vi của mã độc để khoanh vùng, theo dõi các kết nối đến server. Sau đó xử lý mã độc ra khỏi server bị nhiễm bằng cách loại bỏ tiến trình, xóa file shell, xóa key khởi động.
Phân tích các hành vi của file độc hại:
Có thể đọc mã nguồn của shell để phân tích hành vi, đối với nhưng webshell đa năng có thể truy cập vào giao diện của webshell để xem những chức năng của shell.
Dịch ngược mã nguồn mã độc để phân tích hành vi, ngoài ra có thể sử dụng các công cụ giám sát các hành vi ghi file hoặc truy cập ra ngoài.
4. Xác định và vá lỗ hổng website:
Đây là bước yêu cầu người thực hiện phải có kiến thức chuyên môn tốt và kinh nghiệm để có thể tìm và khắc phục các lỗ hổng, nếu người có nhiệm vụ không thể tự thực hiện có thể thuê các đơn vị uy tín bên ngoài.
Trước tiên cần kiểm tra trong access log hay error log tìm kiếm tất cả các thông tin liên quan đến việc website bị tấn công: như website bị tấn công dò mật khẩu, có một số login không hợp lệ từ IP lạ, một số file lạ được upload bằng FTP. Dựa vào các thông tin trên có thể xác định website bị tấn công do lộ mật khẩu hay hacker tấn công băng cách khai thác các lỗ hỗng bảo mật khác trên website.
Thông qua những đoạn access log lạ từ đó tìm ra cách khai thai lỗ hỗng của hacker. Như thông thường để upload một file lên website thì phải dùng phương thức POST, từ đó có thể dựa vào thông tin này để rút ngắn lại phạm vi tìm kiếm nhằm xác định chính xác cách thức khai thác.
Người quản trị nên kiểm tra lại mã nguồn đang dùng có đang tồn tại lỗ hỗng bảo mật nào không, các module, plugin được cài lên website có an toàn không.
Để xác định được hacker đã lợi dụng module nào để tải file độc hại lên server, cần phải phân tích file log và điều tra xem file shell đã được tải lên thông qua module nào, có thể điều tra dựa theo tên shell hoặc nội dung của file shell được tải lên. Đọc source để tìm đoạn code gây lỗi và tìm phương pháp khắc phục.
Rà soát bằng tay hoặc sử dụng một số công cụ quét lỗ hổng bảo mật như: Acunetix, Burp Suite,… để rà soát lại toàn bộ các module của website để đảm bảo website không còn lỗ hổng nào khác cho phép hacker tấn công trở lại.
Sau khi xác định được các lỗ hổng thì tiến hành phối hợp với các bộ phận liên quan để tiến hành vá các lỗ hỗng, cập nhật phiên bản mới cho mã nguồn (đối với website sử dụng nguồn mở như Wordpress, Joomla…) các module, plugin.
5. Điều tra nguồn tấn công
Sau khi phân tích shell và mã độc (nếu có), tìm ra chi tiết thông tin server điều khiển, địa chỉ tải mã độc. Sau đấy gửi yêu cầu trợ giúp điều tra tới các cơ quan chức năng. Gửi cảnh báo tới các cơ quan đơn vị khác có liên quan để đề cao cảnh giác.
6. Đưa website trở lại hoạt động
Sau khi rà soát và xử lý hoàn tất các bước cần nhanh chóng đưa website trở lại hoạt động để tránh gián đoạn hoạt động của cơ quan, tổ chức quá lâu.
Trong quá trình vận hành, khai thác cần theo dõi thường xuyên, thực backup dữ liệu, kiểm tra bảo mật cho website để tránh những sự cố đáng tiếc xảy ra.