Phân tích, phát hiện và gỡ bỏ mã độc Trojan-Ransom.Win32.WannaCrypt.AA Phần 1
Mặc dù được phát hiện và ngăn chặn ngay từ tháng 5/2017, hơn một năm qua, mã độc WannaCry vẫn luôn là một trong những mối đe dọa hàng đầu trong dòng mã độc mã hóa tống tiền đối với các tổ chức và doanh nghiệp. Trong những lần ứng cứu sự cố mã độc, SecurityBox liên tục thu thập được ...
Mặc dù được phát hiện và ngăn chặn ngay từ tháng 5/2017, hơn một năm qua, mã độc WannaCry vẫn luôn là một trong những mối đe dọa hàng đầu trong dòng mã độc mã hóa tống tiền đối với các tổ chức và doanh nghiệp. Trong những lần ứng cứu sự cố mã độc, SecurityBox liên tục thu thập được những biến thể mới của mã độc WannaCry. Bài phân tích kỹ thuật chi tiết của chuyên gia an ninh mạng Nguyễn Việt Anh từ SecurityBox hướng tới đối tượng là các bạn mới bắt đầu tìm hiểu và tự nghiên cứu phân tích mã độc.
Các công cụ được sử dụng trong quá trình phân tích:
- OllyDbg
- IDA Pro
- PEview
- RegShot
- Process Explorer
- Process Monitor
- 010Editor
- Resource Hacker
Thông tin mẫu
ef95a048df895637c5aa94ca7f003fa3c435328c5486f9ffb11f8bf84194111f
Tên file: mssecsvc.exe
MD5: cf96dfb043ddc2c720a67dc71f5b2da2
SHA1: a43f2d86bb619bf0912a2b935ac1dab9766df0c9
SHA256: ef95a048df895637c5aa94ca7f003fa3c435328c5486f9ffb11f8bf84194111f
Thời điểm tạo 2010-11-20 09:03:08
Thời điểm phát hiện lần đầu 2018-08-18 03:13:36
Tên trong CSDL của MVS SecurityBox: Trojan-Ransom.Win32.WannaCrypt.DRPR.AX
Thành phần dropper của WannaCry
ed01ebfbc9eb5bbea545af4d01bf5f1071661840480439c6e5babe8e080e41aa
Tên file: tasksche.exe
MD5: 84c82835a5d21bbcf75a61706d8ab549
SHA1: 5ff465afaabcbf0150d1a3ab2c2e74f3a4426467
SHA256: ed01ebfbc9eb5bbea545af4d01bf5f1071661840480439c6e5babe8e080e41aa
Thời điểm tạo 2010-11-20 09:05:05
Thời điểm phát hiện lần đầu 2017-05-12 07:31:10
Tên trong CSDL của MVS SecurityBox: Trojan-Ransom.Win32.WannaCrypt.ENCRYPT.AA
Thành phần mã hóa của WannaCry
b9c5d4339809e0ad9a00d4d3dd26fdf44a32819a54abf846bb9b560d81391c25
Tên file: u.wnry, @WanaDecryptor@.exe
MD5: 7bf2b57f2a205768755c07f238fb32cc
SHA1: 45356a9dd616ed7161a3b9192e2f318d0ab5ad10
SHA256: b9c5d4339809e0ad9a00d4d3dd26fdf44a32819a54abf846bb9b560d81391c25
Thời điểm tạo 2009-07-13 23:19:35
Thời điểm phát hiện lần đầu 2017-05-12 07:32:47
Tên trong CSDL của MVS SecurityBox: Trojan-Ransom.Win32.WannaCrypt.DECRYPT.AA
Thành phần thông báo đòi tiền chuộc và giải mã của WannaCry
Phân tích
Tất cả các mẫu trong bài phân tích này đều không có các thành phần làm rối code, chống dịch ngược, hay chống debug.
mssecsvc.exe
Khi được thực thi, đầu tiên, dropper kiểm tra kết nối tới domain http://www[.]iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea[.]com . Nếu kết nối thành công, mã độc kết thúc thực thi.
Có hai giả thiết về hành vi kết nối tới sinkhole domain này: Tác giả mã độc sử dụng một domain có vẻ được nhập ngẫu nhiên từ bàn phím (tại thời điểm mã độc bắt đầu được phát tán, domain này chưa được đăng ký) như một cơ chế phát hiện sandbox. Nếu kết nối thành công, mã độc coi như nó đang nằm trong một sandbox và kết thúc thực thi. Hoặc tác giả mã độc chủ đích tạo một killswitch trong trường hợp mã độc lây lan vượt quá tầm kiểm soát.
Nếu kết nối không thành công, mã độc tạo một service với tên mssecsvc2.0, sử dụng tên hiển thị (DisplayName) là “Microsoft Security Center (2.0) Service”, đường dẫn thực thi (BinaryPathName) được gán giá trị là đường dẫn tới file thực thi của mssecsvc.exe cùng tham số thực thi là “-m security”.
Mã độc sử dụng EternalBlue, một khai thác lỗ hổng trên giao thức SMB để lây nhiễm tới mọi máy tính Windows trong cùng mạng LAN nếu các máy tính đó đang sử dụng giao thức này và chưa vá lỗ hổng (bản vá MS17-010).
Thành phần dropper sau đó sẽ trích xuất resource “R” trong resource section của mình ra file C:WINDOWS asksche.exe.
Resource “R” là một file PE không được packed.
Trong thao tác cuối cùng của mình, dropper tạo một process với giá trị CommandLine là “C:WINDOWS asksche.exe /i”. Sau đó, nó kết thúc thực thi.
File tasksche.exe vừa được trích xuất và thực thi chính là thành phần mã hóa của WannCry.
tasksche.exe
Một số string đáng chú ý:
Khi được thực thi, đầu tiên, mã độc thêm một registry value tại địa chỉ HKLMSOFTWAREWanaCrypt0rwd (HKLMSOFTWAREWow6432NodeWanaCrypt0rwd trên Windows 64-bit), giá trị của registry value wd được gán với đường dẫn tới thư mục chứa file thực thi mã độc. Trong hình minh họa phía dưới, file thực thi được đặt trong thư mục wnry trên Desktop. Trong trường hợp thực tế, giá trị của wd sẽ là “C:WINDOWS”.
Sau đó, mã độc trích xuất resource “XIA” trong resource section vào thư mục chứa file thực thi của mình, sử dụng password “WNcry@2ol7” trong quá trình trích xuất. Trong biến thể này, ta có thể giải nén resource “XIA” bằng công cụ Resource Hacker mà không cần sử dụng password trên.
“XIA” thực chất là một file .zip được nhúng trong file thực thi của mã độc. Nó bao gồm các file sau:
- Thư mục “msg” chứa các file định dạng rich text format (RTF) với tên mở rộng là .wnry. Các file này chứa thông báo đòi tiền chuộc bằng các ngôn ngữ: bulgarian, chinese (simplified), chinese (traditional), croatian, czech, danish, dutch, english, filipino, finnish, french, german, greek, indonesian, italian, japanese, korean, latvian, norwegian, polish, portuguese, romanian, russian, slovak, spanish, swedish, turkish, vietnamese.
- b.wnry: Một file ảnh bitmap (header là 42 4D) hiển thị hướng dẫn các bước để giải mã file. b.wnry sẽ được sử dụng làm hình nền Desktop sau khi mã độc hoàn thành thao tác mã hóa file.
- c.wnry: Chứa các địa chỉ:
gx7ekbenv2riucmf.onion
57g7spgrzlojinas.onion
xxlvbrloxvriy2c5.onion
76jdd2ir2embyv47.onion
cwwnhwhlz52maqm7.onion https://dist.torproject.org/torbrowser/6.5.1/tor-win32-0.2.9.10.zip
- r.wnry: Ransom note ở dạng text bản rõ.
- s.wnry: Một file .zip khác, chứa các file thực thi và thư viện của Tor.
- t.wnry: Một file được mã hóa với header là “WANACRY!”.
- taskdl.exe: SHA256: 4a468603fdcb7a2eb5770705898cf9ef37aade532a7964642ecd705a74794b79, công cụ xóa file.
- taskse.exe: SHA256: 2ca2d550e603d74dedda03156023135b38da3630cb014e3d00b1263358c5f00d , công cụ quản lý các phiên RDP.
- u.wnry: Là một file PE, SHA256: b9c5d4339809e0ad9a00d4d3dd26fdf44a32819a54abf846bb9b560d81391c25, chính là thành phần thông báo đòi tiền chuộc và giải mã của WannaCry.
Sau khi hoàn tất giải nén các file trên, mã độc cập nhật một địa chỉ bitcoin (13AM4VW2dhxYgXeQepoHkHSQuy6NgaEb94, được hard-coded trong file thực thi mã độc) vào file c.wnry.
Sau đó, mã độc tạo hai process để thực hiện hai lệnh “attrib +h .” (thiết lập thuộc tính “hide” cho thư mục hiện tại, là thư mục chứa file thực thi mã độc) và “icacls . /grant Everyone:F /T /C /Q” (cấp quyền truy cập “full access” cho mọi user đối với mọi file trong thư mục hiện tại và tất cả các thư mục con của nó). Hai process này kết thúc thực thi ngay sau khi hoàn thành hai lệnh trên.
Mã độc nạp hai thư viện kernel32.dll và advapi32.dll, và gọi các hàm sau: CreateFileW, WriteFile, ReadFile, MoveFileW, MoveFileExW, DeleteFileW, CloseHandle; CryptAcquireContextA, CryptImportKey, CryptDestroyKey, CryptEncrypt, CryptDecrypt, CryptGenKey.
Có thể thấy rằng mã độc sử dụng các hàm Advapi32 trong thao tác mã hóa RSA AES. Địa chỉ hàm của các hàm kể trên được lưu trong các biến DWORD.
Trong thao tác tiếp theo, mã độc giải mã file t.wnry, ghi dữ liệu vừa giải mã được vào một vùng nhớ và cấp khả năng thực thi cho vùng nhớ đó thông qua hàm VirtualProtect.
Ở thao tác cuối cùng trong tiến trình của mình, mã độc gọi hàm TaskStart từ vùng nhớ mà nó vừa cấp khả năng thực thi, chờ cho tới khi hàm TaskStart hoàn thành, sau đó kết thúc thực thi.
Tiếp tục đón đọc phần 2 trong chuyên đề Phân tích, phát hiện và gỡ bỏ mã độc Trojan-Ransom.Win32.WannaCrypt.AA Phần 2 TẠI Blog Securitybox nhé