Ransomware dùng cả hai dạng mã hóa là đối xứng và bất đối xứng (Hybrid Encryption)
Tại sao lại thế nhỉ?
Hôm nay mình mới biết thêm được một điều khá hay về ransomware là các ransomware thường sử dụng cả 2 dạng mã hóa là đối xứng và bất đối xứng.
Sơ qua lại một chút:
- Mã hóa đối xứng: Quá trình mã hóa và giải mã cùng dùng 1 khóa bí mật
- Mã hóa bất đối xứng: Quá trình mã hóa và giải mã sử dụng cặp (khóa công khai - khóa bí mật). Dùng khóa nào để mã hóa thì dùng khóa còn lại để giải mã
Theo tìm hiểu của mình, nói lại một cách ngắn gọn (theo ý hiểu của mình), ransomware sẽ hoạt động như sau:
- Mã hóa file của người dùng bằng việc sử dụng mã hóa đối xứng (vì tính chất của mã hóa đối xứng, có thể mã hóa một khối lượng lớn với tốc độ nhanh)
- Việc mã hóa này (ví dụ như sử dụng thuật toán AES) thì sẽ cần có một khóa bí mật, tạm gọi là AESkey
- Mã hóa xong file của người dùng thì chính cái AESkey ấy sẽ được mã hóa tiếp bằng việc sử dụng mã hóa bất đối xứng
- Mã hóa lại AESkey(bản rõ) bằng publickey của hacker tạo thành AESkey(bản mã)
- Xóa AESKey(bản rõ) Vậy là bây giờ, khi nạn nhân cần giải mã dữ liệu của mình thì họ cần khóa AESkey bản rõ, nhưng mã bản rõ đã bị xóa mất, chỉ còn lại bản mã của khóa AESkey, mà từ bản mã đó, chỉ có cách là sử dụng khóa private key của hacker để giải mã, thế là chỉ còn cách liên hệ với hacker, trả tiền chuộc để hắn cung cấp privatekey giải mã.
Sơ qua quá trình là như thế.
Câu hỏi đặt ra khi mình biết đến quy trình đó là: Tại sao phải mã hóa AESkey(bản rõ) bằng mã hóa bất đối xứng làm gì, sao hacker không giữ chính cái AESkey (bản rõ) đó rồi bắt người dùng trả tiền mua lại cái key đó ?
Thì….Các vấn đề xảy ra nếu thực hiện theo quy trình như thế là:
- Làm sao để gửi được cái AESkey (bản rõ) đó về cho hacker ?
Vì nó là bản rõ, nó có thể bị bắt khi truyền về cho hacker, thế thì việc tống tiền còn thực hiện thế nào được.
- AESkey bản rõ có thể bị tìm ra khi điều tra bộ nhớ.
Ô????? Vậy tức là kể cả khi đã mã hóa bằng lại AES key bằng mã hóa bất đối xứng thì cũng vẫn có thể truy tìm lại được AES key trên bộ nhớ hả ta?…. Để trả lời cho câu hỏi này, theo tìm hiểu của mình thì: Theo lý thuyết là vẫn có thể nhưng chắc là rất khó vì:
- Khi mã độc dùng AES để mã hóa file, sẽ có thời điểm AES key xuất hiện trong RAM nhưng toàn bộ quá trình diễn ra rất nhanh (vài mili-giây)
- Nếu có thể truy xuất bộ nhớ để tìm ra được thì có thể là ramsomware code kém, AES key tồn tại trong RAM lâu hơn dự kiến và thậm chí là quên không xóa AESkey
Và để giải quyết các vấn đề trên cho hacker thì mã hóa bất đối xứng là giải pháp.
Cụ thể là mã hóa lại AESkey (bản rõ) bằng các thuật toán mã hóa bất đối xứng như RSA. Mã hóa lại AESKey (bản rõ) bằng publickey ngay sau khi mã hóa dữ liệu của nạn nhân xong. Gửi bản mã của khóa về cho hacker cũng vô tư vì kể cả khi ai có bắt được thì họ cũng chẳng làm được gì với cái khóa đã bị mã hóa đó cả…. mà chắc hacker về cơ bản chắc cũng chẳng cần lấy khóa đó về làm gì, chỉ cần cầm chắc privatekey là được.
Sự kết hợp 2 loại mã hóa này gọi là Hybrid encryption
Để hình tượng hóa quá trình này, có thể ví dụ như sau:
-
Dữ liệu bị đặt trong một cái hộp, cái hộp đó bị khóa bằng AESKey (bản rõ)
-
Sau đó cái AESKey (bản rõ) đó bằng cách nào đó lại bị đặt vào một cái hộp khối đặc kín bê tông và không có cách nào lấy ra được (ở đây mình nói AESkey bị đặt vào một cái hộp mà không phải nói nó bị khóa lại trong một cái hộp bởi vì về lý thuyết, cái hộp đó bị khóa lại bởi publickey nhưng chính cái publickey đó lại không thể dùng để mở cái hộp đó, đây là tính chất của mã hóa bất đối xứng, nên thay vì nghĩ cái hộp chứa AESKey bị khóa lại, hãy nghĩ như kiểu bằng cách nào đó AESKey bản rõ bị đóng trong một cục bê tông siêu kiên cố và không thể phá hủy, cục bê tông ấy chính là AESKey bản mã)

-
Để phá được cục bê tông đó, chỉ có một thứ duy nhất mà hacker đang nắm giữ, tưởng tượng trong trường hợp này, thứ mà hacker nắm giữ đó như là cái búa (thực chất là privatekey)
Và đó là những gì mình tìm và hiểu được, cơ bản là thế, còn nhiều câu hỏi đâm nhánh ra nữa nhưng chắc nếu được thì mình sẽ trình bày thành các bài viết khác nhau.