Tổng Quan.
Trong bối cảnh về bảo mật ngày càng quan trọng, việc kiểm thử khả năng khôi phục dữ liệu trước các cuộc tấn công ransomware là một bước cần thiết. Bài viết này hướng dẫn cách giả lập ransomware bằng cách mã hóa file trong ổ đĩa ảo (VHDX) sử dụng AES Crypt hoặc OpenSSL. Qua đó, bạn có thể kiểm tra khả năng khôi phục dữ liệu của các giải pháp phục hồi dữ liệu.
Chúng ta sẽ thực hiện:
✅ Mã hóa file bằng AES-256
✅ Viết script tự động mã hóa toàn bộ thư mục như ransomware
✅ Tạo môi trường kiểm thử an toàn trong VHDX
✅ Cách giải mã file nếu có key, mô phỏng quá trình khôi phục dữ liệu
Các cách giả lập ransomware.
Bạn có thể tạo một volume test và mã hóa nó bằng một phương pháp tương tự như cách ransomware thường làm.

Dưới đây là cách thực hiện trên Windows và Linux:
Cách 1: Sử dụng BitLocker trên Windows
BitLocker là phương pháp mã hóa chính thống của Windows, nhưng không giống ransomware vì nó vẫn yêu cầu key để mở khóa. Tuy nhiên, bạn có thể tạo một file VHDX, mã hóa nó bằng BitLocker và gửi cho bên đơn vị khôi phục dữ liệu để họ kiểm tra khả năng khôi phục.
Bước thực hiện:
- Tạo một file VHDX:
- Mở Disk Management (
diskmgmt.msc
). - Chọn Action > Create VHD.
- Chọn dung lượng (VD: 5GB) và đặt định dạng là VHDX.
- Gán nó vào một ổ đĩa mới.
- Mở Disk Management (
- Mã hóa bằng BitLocker:
- Nhấp chuột phải vào ổ đĩa VHDX > Turn on BitLocker.
- Chọn Encrypt entire drive.
- Lưu key vào một nơi an toàn.
- Sau khi mã hóa xong, tắt VHDX và gửi file cho đơn vị khôi phục dữ liệu để kiểm tra.
Cách 2: Sử dụng VeraCrypt (miễn phí & mã nguồn mở)
Đây là cách tạo volume mã hóa dễ dàng mà không cần BitLocker.
Bước thực hiện:
- Cài đặt VeraCrypt từ https://www.veracrypt.fr.
- Tạo volume mới với tùy chọn “Create an encrypted file container”.
- Chọn thuật toán mã hóa (AES, Serpent, Twofish, v.v.).
- Đặt mật khẩu & tạo volume với kích thước mong muốn.
- Gắn volume vào hệ thống và chép dữ liệu vào.
- Ngắt kết nối và gửi file
.hc
cho bên đơn vị khôi phục dữ liệu để test.
Cách 3: Sử dụng cryptsetup luks
trên Linux
Nếu bạn muốn thử nghiệm trên Linux, có thể sử dụng LUKS (Linux Unified Key Setup).
Bước thực hiện:
- Tạo file disk ảo (5GB chẳng hạn):
dd if=/dev/zero of=test_volume.img bs=1M count=5000
- Mã hóa bằng LUKS:
sudo cryptsetup luksFormat test_volume.img
(Nhập “YES” để xác nhận và đặt mật khẩu.) - Mở volume và format thành ext4:
sudo cryptsetup luksOpen test_volume.img test_volume sudo mkfs.ext4 /dev/mapper/test_volume
- Gắn vào hệ thống, chép dữ liệu vào:
sudo mount /dev/mapper/test_volume /mnt
- Ngắt kết nối và gửi file
.img
cho bên đơn vị khôi phục dữ liệu để test:sudo umount /mnt sudo cryptsetup luksClose test_volume
Cách 4: Mã hóa dữ liệu theo cách giống ransomware.
Bạn muốn mã hóa dữ liệu theo cách giống ransomware, có thể dùng AES Crypt (công cụ có sẵn) hoặc tự viết script sử dụng OpenSSL để mã hóa file trong VHDX.
Sử dụng AES Crypt (dễ làm nhất)
AES Crypt là công cụ đơn giản để mã hóa file bằng AES-256.
Bước 1: Cài đặt AES Crypt
Windows: Tải từ https://www.aescrypt.com/download/
Linux (Debian/Ubuntu):
sudo apt install aescrypt
macOS (Homebrew):
brew install aescrypt
Bước 2: Mã hóa file
Ví dụ, bạn có file test.txt
, để mã hóa:
aescrypt -e -p "password123" test.txt
Tạo ra file test.txt.aes
(mã hóa).
Bước 3: Giả lập ransomware
Chạy lệnh trên với nhiều file trong thư mục:
for file in /path/to/files/*; do
aescrypt -e -p "password123" "$file"
rm "$file" # Xóa luôn file gốc cho nó giống Ransomware
done
Bây giờ, dữ liệu chỉ có thể khôi phục bằng password!
Script mã hóa file bằng OpenSSL (giống Ransomware hơn cách trên nữa)
Bạn có thể viết một script mã hóa tất cả file bằng AES-256-CBC sử dụng OpenSSL.
Bước 1: Mã hóa file bằng OpenSSL
Mã hóa file bằng OpenSSL (AES-256-CBC)
openssl enc -aes-256-cbc -salt -in test.txt -out test.txt.enc -pass pass:password123
-aes-256-cbc
: Sử dụng AES-256-CBC để mã hóa.-salt
: Thêm salt để tăng tính bảo mật.-in test.txt
: File gốc cần mã hóa.-out test.txt.enc
: File đầu ra đã được mã hóa.-pass pass:password123
: Đặt mật khẩu trực tiếp trong lệnh (không an toàn, nên dùng file chứa mật khẩu thay thế).
Giải mã file bằng OpenSSL
openssl enc -aes-256-cbc -d -salt -in test.txt.enc -out test_dec.txt -pass pass:password123
-d
: Chế độ giải mã.-in test.txt.enc
: File mã hóa cần giải mã.-out test_dec.txt
: File đầu ra sau khi giải mã.
Lưu ý:
✔️ Nếu mật khẩu không đúng hoặc file bị hỏng, bạn có thể nhận được lỗi hoặc nội dung giải mã sai.
✔️ Không nên hardcode mật khẩu trực tiếp trong lệnh, thay vào đó dùng file mật khẩu:
openssl enc -aes-256-cbc -salt -in test.txt -out test.txt.enc -pass file:/path/to/password.txt
Sau khi chạy lệnh, test.txt
bị mã hóa thành test.txt.enc
, không thể mở nếu không có password.
Dưới đây là step gõ command.
### Tạo folder và file demo.
shell> mkdir en
shell> cd en/
shell> echo 'hoanghd3' > test.txt
shell> tree .
.
└── test.txt
0 directories, 1 file
### Mã hóa file.
shell> openssl enc -aes-256-cbc -salt -in test.txt -out test.txt.enc -pass pass:password123
*** WARNING : deprecated key derivation used.
Using -iter or -pbkdf2 would be better.
### Check
shell> tree .
.
├── test.txt
└── test.txt.enc
0 directories, 2 files
### Xóa file gốc
shell> rm test.txt
### Check
shell> tree .
.
└── test.txt.enc
0 directories, 1 file
### Kiểm tra nội dung file mã hóa
shell> cat test.txt.enc
Salted__4l~���Z/�WW�
X.ي��S�
### Giải mã
shell> openssl enc -aes-256-cbc -d -salt -in test.txt.enc -out test_dec.txt -pass pass:password123
*** WARNING : deprecated key derivation used.
Using -iter or -pbkdf2 would be better.
### Check
shell> tree .
.
├── test_dec.txt
└── test.txt.enc
0 directories, 2 files
shell> cat test_dec.txt
hoanghd3
Bước 2: Viết script mã hóa toàn bộ thư mục
Tạo script encrypt.sh
:
#!/bin/bash
KEY="password123"
for file in /path/to/files/*; do
if [ -f "$file" ]; then
openssl enc -aes-256-cbc -salt -in "$file" -out "$file.enc" -pass pass:"$KEY"
rm "$file" # Xóa luôn file gốc cho nó giống Ransomware
fi
done
Chạy script:
chmod +x encrypt.sh
./encrypt.sh
Tất cả file sẽ bị mã hóa như ransomware.
Bước 3: Viết script giải mã
Nếu đơn vị khôi phục dữ liệu muốn test khôi phục, bạn có thể cung cấp script giải mã:
#!/bin/bash
KEY="password123"
for file in /path/to/files/*.enc; do
openssl enc -aes-256-cbc -d -in "$file" -out "${file%.enc}" -pass pass:"$KEY"
done
Chạy script để giải mã:
chmod +x decrypt.sh
./decrypt.sh
Cách gửi file cho đơn vị khôi phục dữ liệu
- Bạn có thể đặt các file
.enc
vào một VHDX, hoặc gửi từng file riêng. - Nếu họ có thể khôi phục dữ liệu mà không có key, chứng tỏ họ có công cụ brute-force hoặc khai thác lỗi mã hóa.
- Nếu họ có thể khôi phục dữ liệu mà không cần key, điều đó có nghĩa là họ đang sử dụng một phương pháp khai thác thay vì giải mã.
- Nếu bạn muốn giả lập ransomware, bạn có thể sử dụng AES Crypt hoặc viết một script mã hóa file trong VHDX bằng OpenSSL.
Kết Luận.
Bằng cách giả lập ransomware với OpenSSL và AES Crypt, chúng ta có thể đánh giá khả năng phục hồi dữ liệu và kiểm tra độ tin cậy của các công cụ khôi phục. Điều này giúp người dùng chủ động hơn trong việc bảo vệ dữ liệu trước những cuộc tấn công thực tế. Nếu bạn đang muốn thử nghiệm trên hệ thống của mình, hãy luôn thực hiện trên môi trường virtual hóa hoặc file VHDX để tránh mất dữ liệu quan trọng! 🚀