Đặc điểm và cách phòng chống mã độc tống tiền Ransomware

MỤC LỤC

THIẾT KẾ

Tìm hiểu về mã độc tống tiền - Ransomware 1. Khái niệm

    Nạn nhân sẽ không thể thực hiện được bất kỳ thao tác nào trên máy tính (ngoại trừ việc bật – tắt màn hình). Nhiều người có thói quen lưu trữ các file nhạy cảm hoặc ảnh cá nhân ở máy tính nên sẽ không tránh khỏi việc hoảng loạn, cố gắng trả tiền chuộc cho hacker. Vấn đề đối với các nạn nhân là, ngay cả khi họ trả tiền chuộc, không có gì đảm bảo dữ liệu bị rò rỉ sẽ bị xóa – chỉ là lời hứa của bọn tội phạm.

    Dữ liệu bị rò rỉ có thể được bán trong nền kinh tế ngầm, được sử dụng trong các cuộc tấn công trong tương lai và thậm chí được sử dụng để tống tiền cùng một nạn nhân với cùng một dữ liệu vào thời điểm sau đó. Sau khi được gửi đến hệ thống qua email lừa đảo, ransomware sẽ tự cài đặt trên thiết bị đầu cuối và mọi thiết bị mạng mà nó có thể truy cập. Với công việc mã hóa được thực hiện, ransomware hiển thị các hướng dẫn về tống tiền và thanh toán tiền chuộc, đe dọa hủy dữ liệu nếu thanh toán (thường bằng Bitcoin) không được thực hiện.

    Các tổ chức có thể trả tiền chuộc và hy vọng tội phạm mạng thực sự giải mã các tệp bị ảnh hưởng (trong nhiều trường hợp không xảy ra). Hoặc họ có thể thử phục hồi bằng cách xóa các tệp và hệ thống bị nhiễm khỏi mạng và khôi phục dữ liệu từ các bản sao lưu sạch.

    Các phương thức mã hóa sử dụng

      Trong hệ thống mã hóa đối xứng, trước khi truyền dữ liệu 2 bên gửi và nhận phải thỏa thuận về khóa dùng chung cho qúa trình mã hóa và giải mã, khóa được sinh ra bởi bộ sinh khóa. Những gì bạn nhìn thấy hình trên chính là quá trình tiến hành trao đổi thông tin giữa bên gửi và bên nhận thông qua việc sử dụng phương pháp mã hóa đối xứng.Trong quá trình này thì thành phần quan trọng nhất cần phải được giữ kín chính là khóa. Việc trao đổi, thỏa thuận về thuật toán được sử dụng trong việc mã hóa có thể tiến hành một cách công khai, nhưng bước thỏa thuận về khóa trong việc mã hóa và giải mã phải tiến hành bí mật.

       Nếu như hai bên đã thống nhất thuật toán mã hóa, nhưng sau đó nơi gửi gửi thông điệp đã mã hóa tới cho nơi nhận mà không cho biết khóa đã sử dụng trong quá trình mã hóa. Phải thực hiện qua kênh truyền bí mật vì rất có thể sẽ có một bên thứ ba nghe lén cuộc trao đổi giữa hai bên và có được khóa, như vậy thông tin trao đổi sẽ bị kẻ khác biết được. Thêm vào đó hai bên buộc phải tin cậy lẫn nhau, không thể nhờ một người khác gửi hộ khóa được vì rất có thể người này sẽ dùng khóa đó để ăn cắp thông tin Thuật toán mã hóa loại này có ưu.

      Hay còn được gọi với một cái tên khác là mã hóa khóa công khai (Public Key Cryptography), nó được thiết kế sao cho khóa sử dụng trong quá trình mã hóa khác biệt với khóa được sử dụng trong quá trình giải mã. Một người hòan toàn xa lạ có thể dùng khóa này để mã hóa dữ liệu nhưng chỉ duy nhất người mà có khóa giải mã tương ứng mới có thể đọc được dữ liệu mà thôi. Do đó trong thuật mã hóa này Encryption Key được gọi là Public key còn Decryption Key được gọi là Private key.Tại sao lại có sự xuất hiện của Mã hóa khóa công khai?.

       Sau đó hai phía thống nhất thuật toán dùng để mã hóa dữ liệu, Sender sử dụng khóa công khai của Receiver cùng với thuật toán đã thống nhất để mã hóa thông tin bí mật. Hệ thống này an toàn hơn nhiều so với mã hóa khóa riêng, người mã hóa không thể giải mã được dữ liệu đã mã hóa bằng khóa công khai của người khác.Tuy nhiên nhược điểm của Mã hóa khóa công khai nằm ở tốc độ thực hiện, nó chậm hơn mã hóa khóa riêng cỡ ~1000 lần. Trong đoạn mã bên trên, mình đã sử dụng phương thức get() với tham số đầu vào là đường dẫn trỏ tới vị trí chứa tệp chrome.exe và tên trình duyệt cần mở là chrome để mở trình duyệt chrome.

      Tuy nhiên kể từ Python 3.5 trở đi, subprocess trong Python đã được làm lại và chúng ta chỉ cần sử dụng một hàm chung cho tất cả các trường hợp là subprocess.run(), và một class cung cấp nhiều lựa chọn linh hoạt hơn dành cho các nhà phát triển là subprocess.Popen(). Điều đó có nghĩa, khi lê ̣nh hoă ̣c ứng dụng khác đã được gọi, chúng ta phải chờ cho nó kết thúc rồi mới có thể thực thi các lê ̣nh python tiếp theo trong chương trình.  time.mktime() :Hàm mktime() trong module time lấy struct_time (hoặc một tuple chứa 9 phần tử tương ứng với struct_time) làm đối số và trả về số giây tính từ epoch theo giờ địa phương.

       time.asctime() :Hàm asctime() trong module time lấy struct_time (hoặc một tuple chứa 9 phần tử tương ứng với struct_time) làm đối số và trả về một chuỗi đại diện cho thời gian đó.  time.strftime() :Hàm strftime() trong module time lấy struct_time (hoặc một tuple tương ứng với struct_time) làm đối số và trả về một chuỗi đại diện cho thời gian đó dựa trên code định dạng được truyền vào.

      Hình 2. 1:Sơ đồ hệ thống mã hóa đối xứng
      Hình 2. 1:Sơ đồ hệ thống mã hóa đối xứng

      TRIỂN KHAI

      Yêu cầu

        Mã độc sẽ tạo thông điệp cùng khoá đối xứng để mã hoá dữ liệu. Chú ý: khoá đối xứng do ở trong máy nạn nhân có thể nhanh chóng bị tìm ra nên cần đến khoá public để mã hoá lại. Sau khi có được khoá private của attacker sẽ giải khoá đối xứng và dùng khoá đối xứng vừa được giải để giải mã dữ liệu gốc.

        Lưu ý: Sau khi chi trả tiền thành công, attacker có thể không đưa khoá private của hắn cho nạn nhân. Vì danh tính của attacker là không xác định nên hắn không nhất thiết phải đưa khoá private cho nạn nhân. Sau khi giải mã khoá đối xứng bằng khoá private nhận được, ta được 1 file tên.

        Đưa file “PUT_ME_ON_DESKTOP” ra màn hình để chương trình mã độc thực hiện giải mã dữ liệu gốc. - Tuy nhiên, chưa chuyển định dạng từ .py sang .exe để hoàn toàn đánh lừa nạn nhân. - Nếu nạn nhân có sẵn backup từ thiết bị lưu trữ ngoài hay trên internet thì mã độc này xem có thể như vô hại.

        Hình 3. 3: Kiểm tra file ảnh
        Hình 3. 3: Kiểm tra file ảnh