Hướng dẫn kiểm tra xử lý khi website bị hack

By | 3:59 pm | 20/09/2016

Bài viết sau đây cung cấp cho bạn các phương pháp để bảo vệ website của mình cũng như những hướng dẫn cơ bản kiểm tra website khi website bị hack.

Your_Site_Has_Been_Hacked

    1. Dấu hiệu phát hiện website bị hack

Thông thường khi một website bị hack sẽ có các dấu hiệu dễ nhận biết sau:

  • Website bị thay đổi nội dung (deface)
  • Trong mã nguồn bị upload shell hoặc bị chèn một số đoạn mã, script lạ do hacker chèn vào.
    Có thể sử dụng công cụ Website malware scanner của hãng bảo mật Sucuri để phát hiện các mã độc mà hacker đã chèn vào wesite của, tại địa chỉ:https://sitecheck.sucuri.net/
  • Khi truy cập vào website thì thường xuyên bị redirect qua các website độc hại, website quảng cáo
  • Bị cảnh báo blacklist bởi Google, Bing, McAfee
  • Cảnh báo trong kết quả search Google
  • Xuất hiện kết quả spam trên công cụ tìm kiếm google, bing..
  • Nhận được thông báo hosting bị khóa bởi nhà cung cấp.

    2. Nguyên nhân
Để xác định được rõ nguyên nhân thì cần điều tra cụ thể trong từng trường hợp, nhưng website bị hack thông thường do những nguyên nhân sau:

– Đặt mật khẩu quản trị quá yếu, thiếu cơ chế chống brute force khiến kẻ tấn công có thể dò password admin, hoặc để lộ mật khẩu trong quá trình sử dụng
– Cài đặt các theme, module, plugin, extension,…bản null, không rõ nguồn gốc, kém an toàn
– Dùng mã nguồn phiên bản cũ với nhiều lỗi bảo mật, hacker có thể tấn công và khai thác lỗi
– Tấn công local attack tại các server share hosting (Linux share hosting tại vnptdata.vn hiện tại sử dụng hệ điều hành CloudLinux có thể ngăn chặn được dạng tấn công này)

3. Kiểm tra và xử lý
Khi website bị hack, webmaster cần bình tĩnh và thực hiện các bước sau để kiểm tra và xử lý:

Bước 1. Cách ly website

Trước tiên bạn cần sao lưu backup lại trạng thái của website để phục vụ các bước điều tra sau này. Bạn hãy liên hệ ngay với nhà cung cấp để được hỗ trợ kiểm tra , cung cấp các bản backup.
Bạn có thể thay thế trang chủ bởi nội dung “Website đang được bảo trì và nâng cấp, Xin vui lòng quay lại sau!” hoặc chặn tất cả các kết nối đến website sử dụng firewall hoặc .htaccess.
Tiếp đó bạn cần kiểm tra lại các tài khoản trên hệ thống xem hacker có tạo mới tài khoản không, nếu có thì xóa các tài khoản đó đi, đồng thời thực hiện thay đổi tất cả các thông tin tài khoản hiện tại bao gồm: tài khoản website, database, tài khoản quản lý hosting, FTP, encryption key..

Bước 2. Khôi phục lại hoạt động của website.

Trong trường hợp bạn có bản sao lưu của mã nguồn hoàn chỉnh, bạn có thể thực hiện restore lại website để website trở lại hoạt động.
bạn có thể kiểm tra các file bị sửa đổi trên website so với bản backup sử dụng câu lệnh sau:
# diff -qr <current-directory> <backup-directory>
Ví dụ:
# diff -qr www/ backups/full-backup/

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\n’ | 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 -exec ls -al {} \;
    Hoặc :
    $ find /var/www/html -type f -mmin -60 | xargs ls -al

Bước 3. Làm sạch website

Ở bước 2, bạn đã xác định được các file đã bị thay đổi trong mã nguồn, bạn cần kiểm tra kỹ lại các file này.
Các file backdoors hacker để lại thường có tên gần giống với mã nguồn của bạn, và nếu là mã nguồn php thì thường chứa các hàm PHP sau:

base64 passthru
base64_decode create_function
gzinflate(base64_decode, system
eval(gzinflate(base64_decode, assert
eval(base64_decode show_source
gzuncompress proc_open
eval stripslashes
exec preg_replace (with /e/)
shell_exec move_uploaded_file
pcntl_exec

Nếu bạn sử dụng máy chủ hoặc sử dụng hệ điều hành Linux thì có công cụ Linux Malware Detect (LMD) rất hay và dễ sử dụng trong việc tìm kiếm các loại mã độc.

Bạn cũng có thể download mã nguồn về máy và dùng các phần mềm antivirus để kiểm tra
Các phần mềm có trả phí (Paid): BitDefender, Kaspersky, Sophos, F-Secure.
Các phần mềm miễn phí (Free): Malwarebytes, Avast, Microsoft Security Essentials, Avira.

Làm sạch 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.

Gỡ bỏ blacklist: Nếu bạn bị blacklisted bởi Google, McAfee, Yandex (Hoặc bất kì các tổ chức chống spam nào khác), bạn có thể gửi yêu cầu xem xét gỡ bỏ blacklist sau khi bạn đã kiểm tra và gỡ bỏ mã độc khỏi website.

Bước 4: Điều tra nguyên nhân website bị hack

Đây là bước khó nhất, nó đòi hỏi kinh nghiệm và kiến thức để có thể kiểm tra chính xác nguyên nhân và cách khắc phục. Bài viết này chỉ cung cấp cho bạn một số bước cơ bản để kiểm tra và xác định nguyên nhân:

Kiểm tra network để kiểm tra các kết nối và traffic bất thường:
root@secureserver:/var/www/html/# netstat -nputw

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.
Với hosting sử dụng CPanel thì access_log thường nằm trong thư mục ~/access-log, với vps hoặc máy chủ vật lý thì thường nằm ở thư mục /var/log/httpd (hoặc /var/log/nginx hoặc /var/log/apache)
Log thường có định dạng như sau:

IP_ADDRESS – – [Date_Time Timezone] “HTTPMETHOD /URL HTTP_VERSION” HTTP_RESPONSE_CODE HTTP_LENGHT “REFERER” “USER AGENT”

Ví dụ:
66.249.75.219 – – [08/Jul/2015:16:22:24 +0700] “GET / HTTP/1.1” 200 255 “-” “Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)”

Kinh nghiệm: Bạn có thể dựa vào thời điểm file index bị chỉnh sửa deface, thời điểm file shell được hacker upload lên để tìm ra điểm bất thường hoặc upload file thường phải dùng POST request
Ví dụ:
Tìm tất cả các access_log truy cập trong ngày 08/Jul/2015
root@secureserver:/var/logs/httpd/# cat access_log |grep “08/Jul/2015” | more
Tìm các truy cập vào trang admin
root@secureserver:/var/logs/httpd/# cat access-log |grep -E “wp-admin|wp-login|POST /” | more
Hoặc
root@secureserver:/var/logs/httpd/# cat access-log |grep wp-login|grep “POST /”| more

188.163.91.92 – – [24/Jun/2015:14:00:40 -0500] “POST /wp-login.php HTTP/1.1” 302 – “-” “Mozilla/5.0 (Windows; U; Windows NT 6.0; rv:15.0) Gecko/20121011 Firefox/15.0.2”

Kiểm tra ip , ta biết được IP đến từ Ukraine

   $ whois 188.163.91.92
     route: 188.163.64.0/18
    descr: Kyivstar GSM, Kiev, Ukraine
    origin: AS15895
    mnt-by: KYIVSTAR-MNT

Kiểm tra tất cả các access_log liên quan đến ip này

     root@secureserver:/var/logs/httpd/# cat access-log | grep ^188.163.91.92 | more

188.163.91.92 – – [14/Dec/2014:00:12:07 -0500] “GET /wp-admin/admin-ajax.php?action=revslider_show_image&img=../wp-config.php HTTP/1.0” 200 49913 “-” “Mozilla/5.0 (Windows; U; Windows NT 6.0; rv:15.0)
188.163.91.92 – – [24/Jun/2015:14:00:41 -0500] “GET /wp-admin/ HTTP/1.1” 200 49913 “-” “Mozilla/5.0 (Windows; U; Windows NT 6.0; rv:15.0) Gecko/20121011 Firefox/15.0.2”
188.163.91.92 – – [24/Jun/2015:14:00:44 -0500] “GET /wp-admin/ HTTP/1.1” 200 49913 “-” “Mozilla/5.0 (Windows; U; Windows NT 6.0; rv:15.0) Gecko/20121011 Firefox/15.0.2”
188.163.91.92 – – [24/Jun/2015:14:00:45 -0500] “GET /wp-admin/theme-editor.php HTTP/1.1” 200 49286 “-” “Mozilla/5.0 (Windows; U; Windows NT 6.0; rv:15.0) Gecko/20121011 Firefox/15.0.2”

Trong ví dụ trên , từ access_log ta có thể phát hiện được hacker khai thác qua lỗ hổng revslider, download file wp-config.php, sau đó login vào trang quản trị admin và chỉnh sửa theme

Bạn 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, bạn cũng có thể sử dụng các công cụ bảo mật Acunetix, Nikto, OpenVAS để kiểm tra lại các lỗ hổng của website.

Sau khi đã biết được cách mà hacker đã khai thác, tấn công website bạn cần vá lại các lỗ hổng mà hacker đã khai thác, cập nhật các bản vá mới mới nhất cho mã nguồn và phần mềm để fix các lỗi bảo mật.

Sau đó ban kiểm tra lại lần cuối và tạo một bản backup để sử dụng khi cần thiết

4. Một số lời khuyên để website an toàn hơn
– Backup dữ liệu – Việc tối thiểu phải làm:
Nếu bây giờ website của bạn chưa bị hacker viếng thăm nhưng chưa sử dụng các phương thức sao lưu dữ liệu dự phòng thì hãy làm ngay bây giờ, càng sớm càng tốt và sao lưu càng thường xuyên càng tốt.
– Luôn đặt mật khẩu phức tạp để đăng nhập và đổi mật khẩu định kỳ. Xem hướng dẫn đặt mật khẩu và sử dụng mật khẩu an toàn http://vnptcert.vnpt.vn/huong-dan-dat-va-su-dung-mat-khau-toan/
– Không nên cài đặt các theme, module, plugin, extension,… bản null, không thật sự cần thiết và không rõ nguồn gốc,
– Thường xuyên update mã nguồn lên phiên bản mới nhất để hạn chế các lỗi bảo mật trong các phiên bản trước