Phân tích một trường hợp có thể giải mã dữ liệu bởi mã độc tống tiền

Thông qua kênh hỗ trợ cộng đồng, Conmaz nhận được nhiều yêu cầu hỗ trợ từ người dùng thông thường khi dữ liệu (không biết bằng cách nào??) bị mã hóa bởi các phần mềm độc hại, ransomware. Họ bị yêu cầu phải trả tiền chuộc để giải mã dữ liệu. Trong đa số trường hợp, việc giải mã bởi một bên thứ ba hầu như không thể, tuy vậy, cũng có ngoại lệ như trường hợp trong bài viết về TorLocker dưới đây. Bạn đọc không chuyên có thể tìm thấy công cụ giải mã đối với mã độc này ở cuối bài.

Phân tích một trường hợp có thể giải mã dữ liệu bởi mã độc tống tiền

Giữa năm 2014, Fedor Sinitsyn, nhà nghiên cứu mã độc tại Kaspersky Lab, đã công bố một bài viết về ransomware thế hệ mới dựa trên các Trojan mã hóa, và sử dụng một mẫu trong họ Onion (hay còn được gọi là CTB-Locker) để phân tích cách thức làm việc.

Cuối năm 2014, mẫu đầu tiên của loại mã hóa thú vị này đã được phát hiện với tên gọi TorLocker; sau này, TorLocker đã được sử dụng để tiến hành một cuộc tấn công vào người dùng Nhật Bản. Khi bị phát hiện vào 24/10/2014, phần mềm độc hại này đã được Kaspersky Lab ấn định với tên gọi “Trojan-Ransom.Win32.Scraper”.

Tất cả các mẫu TorLocker hiện có thuộc về một trong hai phiên bản: 1.0.1 (bằng Tiếng Anh) hoặc 2.0 (bằng Tiếng Anh hoặc Tiếng Nhật). Chỉ có một số khác biệt nhỏ giữa hai phiên bản này: 1) sử dụng phương pháp làm rối mã, và 2) mã nguồn sử dụng các module bổ sung: ở phiên bản 1.0.1, các module bổ sung được trích xuất từ section data, trong khi ở phiên bản 2.0, các module bổ sung lại được tải về từ Internet (từ các dịch vụ lưu trữ tệp tin hoặc từ các trang độc hại). Cũng ở phiên bản số 2 này, một số string sẽ được chuyển từ section data vào section code, và xuất hiện một số byte dư thừa. Thuật toán mã hóa tệp tin là như nhau đối với cả hai phiên bản.

Các đặc trưng của họ phần mềm độc hại này

Phân tích cho thấy Trojan-Ransom.Win32.Scraper được viết bằng Assembly, điểm bất thường đối với loại phần mềm độc hại này. Các Trojan sử dụng mạng Tor để liên hệ với “các chủ sở hữu” – tính năng cơ bản hiện nay – và máy chủ proxy polipo. Các phần của phần mềm độc hại này thường được đưa vào máy tính của người dùng thông qua botnet Andromeda.

Trojan-Ransom.Win32.Scraper mã hóa các tài liệu của nạn nhân và yêu cầu một khoản tiền chuộc ($300 hoặc nhiều hơn thế) để giải mã các tài liệu đã bị mã hóa. Nếu phần mềm độc hại bị xóa bỏ bởi một sản phẩm bảo vệ sau khi các tệp tin bị mã hóa, Trojan sẽ cài đặt một màu nền đỏ trên màn hình Desktop, có chứa một link liên kết đến tệp tin thực thi của nó. Do đó, người dùng có thể cài đặt lại Trojan và báo với chủ sở hữu của nó rằng họ đã thanh toán tiền chuộc: để làm việc đó, người dùng cần nhập các thông tin thanh toán trong một cửa sổ chuyên dụng TorLocker. Các thông tin này chuyển đến máy chủ C&C, và người dùng sẽ nhận lại một khóa bí mật RSA để giải mã hoặc thông báo rằng thanh toán chưa thành công.

Phân tích một trường hợp có thể giải mã dữ liệu bởi mã độc tống tiền

Đại diện tiêu biểu là họ Scraper được đóng gói (pack) với UPX. Section data được mã hóa thêm bằng khóa AES 256-bit. Trong phần section code, nằm giữa các lệnh assembly, có một lượng lớn các byte dư thừa không được sử dụng.

Các byte dư thừa trong phần mã hóa
Các byte dư thừa trong phần mã hóa

Phương thức trình bày các tham số string đối với các hàm cũng không bình thường. Các string nằm trực tiếp trong section code; nhằm gửi một string như một tham số tới một hàm, trỏ đến vùng nhớ của string bằng lệnh “call”. Kết quả là địa chỉ trả về được đặt vào stack:

Xử lý các chuỗi giống như các tham số đối với các hàm
Xử lý các chuỗi giống như các tham số đối với các hàm

Nguyên tắc hoạt động

Mỗi lần thực hiện, Trojan bắt đầu bằng việc giải mã section data bằng khóa AES 256-bit. 4 byte đầu tiên của khóa được sử dụng giống như một một mẫu ID, và được thêm vào cuối của tệp tin được mã hóa. Sau đó, trojan được sao chép vào một thư mục tạm thời và registry để thực thi tự động được đăng ký như sau:

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]

Tiếp đó, Trojan sẽ tạo ra một vài thread để thực hiện các công việc như sau:

  • Tìm kiếm và ngắt các tiến trình taskmgr.exe, regedit.exe, procexp.exe, procexp64.exe
  • Xóa toàn bộ các điểm khôi phục hệ thống.
  • Mã hóa tài liệu văn phòng, tệp tin âm thanh, video, ảnh, tài liệu lưu trữ, cơ sở dữ liệu, bản sao lưu dự phòng, khóa mã hóa máy ảo, giấy chứng nhận và các tập tin khác trên ổ cứng, ngoại trừ các tệp tin nằm trong thư mục %windir%, %temp%.

Tên và phần mở rộng của các tệp tin được mã hóa không thay đổi. Dưới đây là danh sách các phần mở rộng tệp tin được mã hóa:

.3gp .7z .accdb .ai .aiff .arw .avi .backup .bay .bin .blend .cdr .cer .cr2 .crt .crw .dat .dbf .dcr .der .dit .dng .doc .docm .docx .dwg .dxf .dxg .edb .eps .erf .flac .gif .hdd .indd .jpe .jpg .jpeg .kdc .kwm .log .m2ts .m4p .mdb .mdf .mef .mkv .mov .mp3 .mp4 .mpg .mpeg .mrw .ndf .nef .nrw .nvram .odb .odm .odp .ods .odt .ogg .orf .p12 .p7b .p7c .pdd .pdf .pef .pem .pfx .pif .png .ppt .pptm .pptx .psd .pst .ptx .pwm .qcow .qcow2 .qed .r3d .raf .rar .raw .rtf .rvt .rw2 .rwl .sav .sql .srf .srw .stm .txt .vbox .vdi .vhd .vhdx .vmdk .vmsd .vmx .vmxf .vob .wav .wb2 .wma .wmv .wpd .wps .xlk .xls .xlsb .xlsm .xlsx .zip

Trích xuất một ảnh BMP, lưu nó vào một thư mục tạm thời và sau đó, đặt hình ảnh đó làm hình nền ở màn hình Desktop

Tải tor.exe và polipo.exe, các tệp tin được yêu cầu để giao tiếp với máy chủ C&C, từ các link liên kết được chỉ định trong cấu hình của Trojan (trong trường hợp của TorLocker 2.0) hoặc trích xuất từ section data (trong trường hợp của TorLocker 1.0). Sau đó, tor.exe được thực thi với các tham số sau:

1 2 tor.exe -SOCKSPort 9150 -AvoidDiskWrites 1 -ExcludeSingleHopRelays 0 -FascistFirewall 1 -DirReqStatistics 0

Tệp tin polipo.exe được thực hiện theo cấu hình sau:

1 2 127.0.0.1:57223 proxyPort = 57223 socksParentProxy = 127.0.0.1:9150 socksProxyType = socks5

Tạo giao diện cửa sổ yêu cầu nạn nhân thanh toán cho “chủ sở hữu” của Trojan-Ransom.Win32.Scraper và hiển thị cửa sổ phía trên bên trái của màn hình. Cửa sổ này hỗ trợ việc thanh toán qua BitCoin, Ukash và PaySafeCard.

Phân tích một trường hợp có thể giải mã dữ liệu bởi mã độc tống tiền

Để làm cho người dùng thanh toán tiền chuộc nhanh hơn, Trojan sẽ đe dọa xóa các khóa bí mật để giải mã các tệp tin nếu như người dùng không gửi tiền đúng hạn. Trong thực tế, các khóa RSA sẽ không bị xóa. Các khóa này được gắn với từng mẫu phần mềm độc hại nên với cùng một mẫu khóa RSA sẽ được sử dụng cho nhiều người dùng cùng một lúc.

Địa chỉ IP của máy tính nạn nhân sẽ được xác định bằng các trang web: www.iplocation.net, www.seuip.com.br, whatismyipaddress.com, hoặc checkip.dyndns.org.

Thiết lập một kết nối đến máy chủ C&C trong tên miền onion thông qua máy chủ proxy polipo 127.0.0.1:57223. Nếu người dùng đã thanh toán tiền chuộc, sau khi liên lạc với máy chủ C&C và gửi các thông tin về máy khách (khóa RSA đã được chọn, số lượng tệp tin bị mã hóa, địa chỉ IP của máy khách và ID, phương thức thanh toán và con số của thẻ ngân hàng), trojan sẽ nhận được khóa bí mật RSA với cách để giải mã tệp tin nào đó – trong trường hợp này, một thread giải mã tệp tin sẽ được tạo ra. Nếu không, một tin nhắn được gửi với thông báo là thanh toán không thành công. Với một số mẫu Trojan-Ransom.Win32.Scraper, một vài chục tên miền C&C được mã hóa có thể dẫn đến cùng một máy chủ C&C.

Mã hóa

Khi thực hiện, Trojan-Ransom.Win32.Scraper lựa trọn một trong 128 khóa mã hóa công khai RSA, tùy thuộc vào tên máy tính của nạn nhân và số serial của ổ đĩa logic. Số lượng khóa công khai RSA (n) được tính toán như sau:

n = (Số serial của ổ đĩa logic * độ dài tên máy tính nạn nhân) mod 128,

Mỗi mẫu chứa khóa công khai được thiết lập riêng.

Tệp tin của người dùng được mã hóa AES-256 với một khóa được tạo ra ngẫu nhiên cho mỗi lần; một khóa mã hóa bí mật được tạo ra cho mỗi tệp tin. Sau đó, một section 512-byte được thêm vào cuối của mỗi tệp tin, trong đó gồm 32 byte padding, 4 byte nhận đạng Trojan, và 476 byte được sử dụng khóa mã hóa AES với RSA-2048.

Nếu kích thước tệp tin lớn hơn (512MB +1) byte, sau đó 512MB đầu tiên của tệp tin được mã hóa. Dữ liệu bị mã hóa được viết vào đầu trang của bản gốc, không mã hóa dữ liệu, không có tệp tin mới được tạo ra và tệp tin cũ không bị xóa. Các Trojan không cần truy cập Internet để mã hóa tệp tin

Cấu trúc của một tệp tin bị mã hóa
Cấu trúc của một tệp tin bị mã hóa

Đóng gói

Nhằm cản trở việc phân tích, một số mẫu Trojan-Ransom.Win32.Scraper bị phát hiện được đóng gói thêm KazyLoader và KazyRootkit cùng với UPX.

LazyLoad một bảo vệ mức hai của các tệp tin thực thi, được viết trên.NET. Việc thực thi được bảo vệ với mã hóa AES, và sau đó được đặt vào section asset của phần bảo vệ như một bảng màu của hình ảnh BMP.

Phân tích một trường hợp có thể giải mã dữ liệu bởi mã độc tống tiền
Module giải mã hình ảnh được mã hóa bằng phép toán XOR với 1 byte, sau đó được chia thành các phần và cũng được đặt vào section asset ở dạng string LOADER0, LOADER1,… LOADER272.

Bảo vệ KazyRootkit cũng được viết trên .NET và có một tính năng có thể che giấu tiến trình trong Task Manager (taskmgr.exe) và các khóa registry trong Registry Editor (regedit.exe) bằng việc xóa bỏ các string từ các phẩn từ giao diện ListView với sự giúp đỡ của WinAPI. Tùy thuộc vào cấu hình, mô-đun bảo vệ có thể ngừng hoạt động mà không giải nén tệp tin được nhúng vào, nếu phát hiện bất kỳ Sandboxie, Wireshark, WPE PRO hoặc một mã mô phỏng.

Mặc dù Scraper (TorLocker) mã hóa tất cả các tệp tin với mã hóa AES-256 + RSA-2048, nhưng trong đó, hơn 70% các trường hợp là có thể được giải mã.

Tệp tin được bảo vệ với mã hóa bởi phép toán XOR với một khóa đã biết, và sau đó tiêm nhiễm vào tiến trình của phần bảo vệ.

Phân phối

Bản thiết kế của Trojan-Ransom.Win32.Scraper được phân phối thông qua chương trình hợp tác và được bán ra bằng Bitcoin. Hai bài viết về việc bán bản thiết kế của TorLocker 2.0 trên trang web chợ đen:
Phân tích một trường hợp có thể giải mã dữ liệu bởi mã độc tống tiền
Các ảnh chụp màn hình được công bố về bản thiết kế cho thấy rằng tin tặc có thể thay đổi một vài thiết lập mã hóa như sau:

  • Cho phép hoặc chặn thực thi Task Manager hoặc Process Explorer sau khi lây nhiễm.
  • Cho phép hoặc chặn việc sử dụng hệ thống thanh toán BitCoin, PaySafeCard và Ukash để thành toán tiền chuộc.
  • Cho phép hoặc chặn việc xóa bỏ các điểm khôi phục Windows.

Sửa đổi các link liên kết tải về tor.exe và pơlipo.exe; chỉnh sửa tên của các tệp tin này sau khi được tải xuống.

Một ảnh chụp màn hình của cửa sổ bản thiết kế

Một ảnh chụp màn hình của cửa sổ bản thiết kế

Trên website chợ đen, có 11 ý kiến của các nhà cung cấp về bản thiết kế của Trojan-Ransom.Win32.Scraper builder, được đăng giữa 8/5/2014 và 17/1/2015.

Phân tích một trường hợp có thể giải mã dữ liệu bởi mã độc tống tiền
Quảng cáo bằng cách đăng liên kết tới thông tin truyền thông công bố về các cuộc tấn công thành công được thực hiện với việc sử dụng Trojan-Ransom.Win32.Scraper.
Phân tích một trường hợp có thể giải mã dữ liệu bởi mã độc tống tiền
Giải mã

Ở giai đoạn giải mã, khi tiền chuộc đã được thanh toán, Trojan-Ransom.Win32.Scraper sẽ liên lạc với máy chủ C&C của bọn tội phạm mạng thông qua mạng Tor và máy chủ proxy polipo, để nhận một khóa bí mật RSA. Với khóa này, Trojan sẽ giải mã khóa AES với mỗi tệp tin bị mã hóa, và sau đó giải mã tệp tin. Mặc dù Scraper (TorLocker) mã hóa tất cả các tệp tin với mã hóa AES-256 + RSA-2048, nhưng trong đó, hơn 70% các trường hợp là có thể được giải mã bởi vì các sai sót trong quá trình thực hiện các thuật toán mã hóa. Để khôi phục lại các tệp tin ban đầu, Kaspersky Lab đã phát triển tiện ích ScraperDecryptor bạn đọc có thể tải về từ trang web: http://support.kaspersky.com/viruses/disinfection/11718

conmaz