Tập tành phân tích mã độc

Thu Nguyen
Jan 9, 2018 · 11 min read

Giới thiệu

Năm 2017 là một năm thành công của ransomware với nhiều loại mới cùng biến thể, bên cạnh các lỗ hổng lớn góp phần giúp cho việc lây lan nhanh.

Mình sẻ phân tích mẫu biến thể của ransomware Crysis/Dharma để thấy được hoạt đông cụ thể của biến thể nói riêng cũng như hầu hết các loại ransomware hiện có.

Nhân dịp đầu năm mới và phủi bụi page của nhóm hôm nay mình khai trương bài viết đầu năm cho nhóm :-)

Mình cũng mới tập tành về mã độc, hi vọng các bạn thu được kiến thức khi đọc bài của mình. :twisted:

Đặt điểm của tập tin

  • MD5: f2679bdabe46e10edc6352fff3c829bc

Tóm tắt

Một loại ransomware, biến thể của mẫu ransomware Crysis/Dharma. Thực hiện mã hóa các tập tin trên đĩa cứng và các tập tin trong ổ đĩa mạng chia sẻ. Xóa các bản sao của các tập tin làm cho việc khôi phục bằng các bản sao không được hiệu quả.

Khi máy bị nhiễm, các hoạt động của mã độc gồm:

  • Khởi tạo dữ liệu

Khởi tạo dữ liệu

[caption id=”attachment_1037" align=”aligncenter” width=”600"]

Hình 1- Giải mã, tải API, tạo khóa ngẫu nhiên[/caption]

Mã độc tiến hành giải mã khóa RC4 để dùng cho việc giải mã tất cả các thông tin sau này của mã độc cần. Tiến hành giải mã danh sách các thư viện và các APIs phục vụ xuyên suốt trong cả quá trình của mã độc.

[caption id=”attachment_1038" align=”aligncenter” width=”598"]

Hình 2 — Danh sách API được giải mã[/caption]

Gọi các thư viện và tải các API lên các vùng nhớ đã thiết lặp trước đó thông qua LoadLibrary và GetProcAddress. Thực hiện các lệnh XOR để tạo ra một chuỗi ngẫu nhiên ban dùng cho quá trình mã hóa.

[caption id=”attachment_1039" align=”aligncenter” width=”583"]

Hình 3 — Hàm tạo chuỗi ngẫu nhiên ban đầu[/caption]

Mutex và Process token

Mã đọc thưc hiện giải mã chuỗi mutex bằng thuật toán RC4 với khóa được thiết lặp ban đầu. Kiểm tra mutex đã được tạo chưa, nếu chưa sẻ tạo mutex cho tiến trình.

Chuỗi mutex:

Global\syncronize_H5KF8EA
Global\\syncronize_H5KF8EU

[caption id=”attachment_1040" align=”aligncenter” width=”611"]

Hình 4 — Mutex[/caption]

Tiếp tục kiểm tra phiên bản của hệ điều hành và lấy các thông tin về token của tiến trình.

[caption id=”attachment_1041" align=”aligncenter” width=”707"]

Hình 5 — Lấy thông tin token của process[/caption]

Process và Services

Thực hiện giải mã tên các process và service được mã hóa bằng RC4.



































ProcessService1c8.exeFirebirdGuardianDefaultInstance1cv77.exeFirebirdServerDefaultInstanceoutlook.exesqlwriterpostgres.exemssqlservermysqld-nt.exesqlserveradhelpermysqld.exesqlservr.exe
Tiến hành quét tất cả các process đang hoạt động, nếu có tiến trình nằm trong danh sách sẻ tiến hành cưởng ép tắt tiến trình đó.

Đối với các dịch vụ, mã độc quét tất cả các dịch vụ trên hệ thống, so sánh với danh sách các dịch vụ của nó để kiểm tra xem các dịch vụ có đang hoạt động hay không. Việc chờ các dịch vụ chạy để việc mã hóa các tập tin quan trọng của nạn nhân càng hiệu quả.

[caption id=”attachment_1042" align=”aligncenter” width=”499"]

Hình 6 — Kill process[/caption]

Sau đó, tạo một thread để cho việc trên. Đảm bảo các tiến trình trong danh sách không thực thi được và xác định các dịch vụ trong danh sách.

Thiết lặp thường trú trên máy tính nạn nhân

Mã độc giải mã các đường dẫn hay dùng để thường trú trên máy nạn nhân thông qua RC4. Cố gắng sao chép chính nó tới các đường dẫn trên.

%windir%\<file_name>
%appdata%\<file_name>
%sh(Common Startup)%\<file_name>
%sh(Startup)%\<file_name>

[caption id=”attachment_1043" align=”aligncenter” width=”821"]

Hình 7 — Nhân bản[/caption]

Nếu việc sao chép diễn ra thành công, mã độc sẻ cố gắng thiết lặp một khóa registry cho việc tái khởi động khi máy tín nạn nhân khởi động, đảm bảo cho việc các tập tin mới luôn được mã hóa.

Key registry:

Software\Microsoft\Windows\CurrentVersion\Run

Nó cố gắng ghi vào khóa ở thư mục HKEY_LOCAL_MACHINE nếu không thành công, nó sẻ tạo ở thư mục HKEY_CURRENT_USER.

[caption id=”attachment_1044" align=”aligncenter” width=”556"]

Hình 8 — Ghi vào thư mục registry chỉ định[/caption]

Tiếp theo, nó xóa tất cả bản sao của tất cả các tập tin trước và sau quá trình mã hóa, đảm bảo cho việc khôi phục lại các tập tin dựa vào bản sao là khó thực hiện. Công việc được thực hiện thông qua cmd.exe của hệ thống.

Lệnh thực hiện:

mode con cp select=1251
vssadmin delete shadows /all /quiet

Mã hóa

Mã độc thực hiện kiểm tra các tài nguyên mạng mục đích tìm các ổ đĩa chia sẻ mạng để mã hóa tất cả các tập tin trên đó. Như vậy, tất cả các tập tin không được phân quyền rõ ràng mã độc có thể truy cập và mã hóa tất cả.

Thread cho thấy quá trình dò quét tài nguyên mạng.

[caption id=”attachment_1045" align=”aligncenter” width=”893"]

Hình 9 — Quét tài nguyên mạng[/caption]

Mã độc tiến hành giải mã tất thông tin về các định dạng tập tin cần cho quá trình mã hóa của nó thông qua RC4.

  • Định dạng:
“ 1cd 3ds 3fr 3g2 3gp 7z accda accdb accdc accde accdt accdw adb adp ai ai3 ai4 ai5 ai6 ai7 ai8 anim arw as asa asc ascx asm asmx asp aspx asr asx avi avs backup bak bay bd bin bmp bz2 c cdr cer cf cfc cfm cfml cfu chm cin class clx config cpp cr2 crt crw cs css csv cub dae dat db dbf dbx dc3 dcm dcr der dib dic dif divx djvu dng doc docm docx dot dotm dotx dpx dqy dsn dt dtd dwg dwt dx dxf edml efd elf emf emz epf eps epsf epsp erf exr f4v fido flm flv frm fxg geo gif grs gz h hdr hpp hta htc htm html icb ics iff inc indd ini iqy j2c j2k java jp2 jpc jpe jpeg jpf jpg jpx js jsf json jsp kdc kmz kwm lasso lbi lgf lgp log m1v m4a m4v max md mda mdb mde mdf mdw mef mft mfw mht mhtml mka mkidx mkv mos mov mp3 mp4 mpeg mpg mpv mrw msg mxl myd myi nef nrw obj odb odc odm odp ods oft one onepkg onetoc2 opt oqy orf p12 p7b p7c pam pbm pct pcx pdd pdf pdp pef pem pff pfm pfx pgm php php3 php4 php5 phtml pict pl pls pm png pnm pot potm potx ppa ppam ppm pps ppsm ppt pptm pptx prn ps psb psd pst ptx pub pwm pxr py qt r3d raf rar raw rdf rgbe rle rqy rss rtf rw2 rwl safe sct sdpx shtm shtml slk sln sql sr2 srf srw ssi st stm svg svgz swf tab tar tbb tbi tbk tdi tga thmx tif tiff tld torrent tpl txt u3d udl uxdc vb vbs vcs vda vdr vdw vdx vrp vsd vss vst vsw vsx vtm vtml vtx wb2 wav wbm wbmp wim wmf wml wmv wpd wps x3f xl xla xlam xlk xlm xls xlsb xlsm xlsx xlt xltm xltx xlw xml xps xsd xsf xsl xslt xsn xtp xtp2 xyze xz zip ”

Một thread được tạo ra cho quá trình tìm kiếm các tập tin và so sánh có phù hợp với định dạng cần tìm không, nếu phù hợp sẻ lưu đường dẫn tuyệt đối của tập tin vào bộ nhớ phục vụ cho quá trình mã hóa.

[caption id=”attachment_1046" align=”aligncenter” width=”881"]

Hình 10 — Tìm kiếm các tập tin[/caption]

Tiếp đến, mã độc thiết lặp một struct chứa các thông tin phục vụ cho việc mã hóa như:

  • Khóa ngẫu nhiên được tạo cho việc mã hóa AES

Mô tả struct theo mã giả như sau:

struct _malware {
char Key_random[32];
unit32_t Vol_Info;
char AES_Key_Encrypted[128];
char Hash_Public_key[20];
char *File_format;
char *Email;
char t *Magic;
uint32_t CRC;
char *File_Format_Encrypt_1;
char *File_Format_Encrypt_2;
}

Mã độc tiến hành giải mã hóa khóa công khai RSA của nó, sau đó tiến hành băm bằng thuật toán SHA1. Khóa công khai của mã độc có dạng như sau:

-----BEGIN PUBLIC KEY-----
B1F1414EAE148A1BA205A415B1CCB3C412D9A646B7A2C152DA68D168823CF7E1
F6D9271559970300E9F5FD1FCD3134C747CA98E670BA6346388D1296F23DEE2B
EC8CEC5ADE4D7B477C71B15A8F982D39E27AC09B02F616F613AE6E6054E26D76
A3105411BC31D76E3E621442F2FD8AE7686D771D51F38865406D21B4E3710F15
-----END PUBLIC KEY-----

Một thuật toán tạo chuỗi ngẫu nhiên để liên tục sinh ra chuỗi 32 byte làm khóa dùng cho mã hóa các tập tin.

Tiếp theo lấy thông tin Volume để sử dụng cho việc tạo ID cho máy nạn nhân. Sau đó mã hóa khóa AES được tạo ngẫu nhiên bằng thuật toán RSA với khóa công khai được giải mã lúc trước.

Cuối cùng mã độc giải mã email và định dạng tập tin mới sau đó chép tất cả thông tin trên vào cấu trúc _malware đã đề cập phía trên phục vụ cho quá trình mã hóa tập tin tiếp theo.

[caption id=”attachment_1047" align=”aligncenter” width=”909"]

Hình 11 — Malware Struct[/caption]

Sau khi hoàn thanh xong tất cả các thiết lập cần thiết, mã độc khởi tạo một thread cho việc mã hóa các tập tin đã tìm thấy đạt yêu cầu.

Việc đầu tiên là mã độc kiểm tra các thông tin trong struct trên có bị thây đổi không dựa vào giá trị CRC.

[caption id=”attachment_1048" align=”aligncenter” width=”409"]

Hình 12 — Kiểm tra CRC[/caption]

Tiếp theo, mã độc kiểm tra xem tập tin đã bị mã hóa chưa bằng cách kiểm tra định dạng tập tin có phải là “.arena” không. Sau đó, mã độc tạo ID cho máy dựa vào thông tin của VolumeInfomation của ổ đĩa hệ thống. ID gồm 8 kí tự. Dùng thuật toán tạo chuỗi ngẫu nhiên, mã độc tạo một chuỗi IV dành riêng cho từng tập tin phục vụ cho việc mã hóa.

Mã độc tạo mỗ tập tin mới với tên được tạo theo mẫu sau:

<full_path_old>.id-<ID>.<email>.extend(arena)

Việc mã hóa được thực hiện như sau. Đọc tập tin góc, mã hóa bằng thuật toán AES 128bit. Các thông số cho việc mã hóa:

  • Khóa: Khóa AES ngẫu nhiên được tạo ra từ trước.

[caption id=”attachment_1049" align=”aligncenter” width=”813"]

Hình 13 — Mã hóa tập tin[/caption]

Sau khi mã hóa tất cả các thông tin của tập tin góc ban đầu, mã độc ghi thêm vào cuối tập tin các thông tin phục vụ cho quá trình giải mã tập tin. Trong đó các thông tin quan trọng như:

  • Khóa : AES đã được mã hóa bằng RSA

[caption id=”attachment_1050" align=”aligncenter” width=”878"]

Hình 14 — Ghi thông tin phục vụ việc giải mã[/caption]

Đặt lại thuộc tính của tập tin mới được tạo, xóa tập tin góc ban đầu

[caption id=”attachment_1051" align=”aligncenter” width=”613"]

Hình 15 — Xóa tập tin ban đầu[/caption]

Giải mã

Mã độc kết hợp giữa AES-128 và RSA-1024 tạo thành một mã hóa vừa nhanh lại rất an toàn. Bên cạnh đó nó còn xóa tất cả bản sao của các tập tin dẫn đến việc giải mã hoặc khôi phục tập tin ban đầu gần như không thể.

Để giải mã cần có khóa cá nhân của kẻ tấn công và quá trình diễn ra như sau:

  • Đọc thông tin giải mã tư tập tin đã được mã hóa

Hiển thị

Mã độc giải mã các thông tin về đường dẫn chưa tập tin, thông tin hiển thị về đòi tiền chuộc.

Mã độc tạo một tập tin tên là FILES ENCRYPTED.txt

Đường dẫn:

%sh(Desktop)%\ FILES ENCRYPTED.txt
%sh(Common Desktop)% \ FILES ENCRYPTED.txt
<drivers>\ FILES ENCRYPTED.txt

Nội dung:

all your data has been locked us
You want to return?
write email chivas@aolonline.top

Tạo tập tin ở định dạng “hta” tên là Info.hta để hiển thị thông tin đòi tiền chuộc chứa ID của nạn nhân.

Đường dẫn:

%windir%\System32\ Info.hta
%appdata%\ Info.hta

Dùng hàm ShellExecuteExW để thực thi tập tin dựa vào mshta.exe của hệ thống.

Sau đó thiết lặp một registry để tự động thực thi các tập tin đòi tiền chuộc khi hệ thống khởi động lại.

[caption id=”attachment_1052" align=”alignnone” width=”1260"]

Hình 16 — Màn hình đòi tiền chuộc[/caption]

Kết luận

Bằng việc sử dụng cặp mã hóa RSA-AES nên việc khôi phục dữ liệu gần như là không thể, đây là cách phổ biến nhất mà đa số ransomware hiện nay hay dùng.

Cần lưu trữ dữ liệu cẩn trọng và có các bản sao lưu để khôi phục dữ liệu khi cần thiết.

P/s: lần đầu phân tích hơi dài và nhiều hình ảnh. Có ý kiến góp ý về bài viết xin vui lòng để lại bình luận. Cảm ơn đã đọc.

nightst0rm

NightSt0rm is a group of IT security researchers, enthusiasts , who share the same interests. We are focusing on Hacking, Cryptography, Malware analyst & Computer forensics.

    Thu Nguyen

    Written by

    nightst0rm

    NightSt0rm is a group of IT security researchers, enthusiasts , who share the same interests. We are focusing on Hacking, Cryptography, Malware analyst & Computer forensics.