Phân tích mã độc của APT41 nhắm vào các doanh nghiệp Việt Nam

Phân tích mã độc của APT41 nhắm vào các doanh nghiệp Việt Nam

February 13, 2020 | hieulx

Trong năm 2019, Cục An toàn Thông tin thuộc Bộ Thông tin và Truyền thông đã phát hiện và ghi nhận hàng loạt chiến dịch tấn công mạng có tổ chức và có chủ đích (APT) của các tổ chức tội phạm mạng quốc tế nhắm vào các doanh nghiệp, tổ chức của Việt Nam.

Ngày 14/01/2020, một trong những nhóm tội phạm khét tiếng thế giới, APT41 đã phán tán hàng loạt file mã độc nhắm tới một doanh nghiệp lớn của Việt Nam với một chiến dịch quy mô và được tính toán kỹ lưỡng. Rất may, với việc trang bị giải pháp bảo mật email của FireEye (FireEye EX), các mã độc đã được phát hiện và ngăn chặn, qua đó giúp doanh nghiệp không phải chịu bất cứ thiệt hại nào.

Để làm rõ sự tinh vi và nguy hiểm của chiến dịch này, các kỹ sư an toàn thông tin của VietSunshine đã tiến hành phân tích các mã độc, bạn đọc có thể tham khảo quá trình đánh giá, nghiên cứu, phân tích và đưa ra kết luận như phía dưới đây.

1. Danh sách các mã độc và đánh giá tổng quan

 

danh sách mã độc

Mã độc được phát tán dưới dạng một file Word, với tên file là về một chủ đề đang nóng ở Việt Nam. Điều này sẽ thu hút, dẫn dụ người dùng mở file,  khi mở file thì mã độc sẽ tạo ra các file QcConsol.exe, QcLite.dll, stdole.tlb trong folder Temp của người dùng, mã độc này sau đó sẽ kết nối tới 1 máy chủ ở bên ngoài để gửi nhận thông tin.

2. Phân tích chi tiết

 

phân tích mã độc_01

Sử dụng rtfobj.exe để kiểm tra file Word thì thấy file wd32PrvSE.wmf được nhét bên trong.

Sử dụng rtfobj.exe để kiểm tra file Word

EQNEDT32.exe

Khi mở file Word lên thì thấy file Word sẽ bung file wd32PrvSE.wmf vào trong Folder Temp của người dùng và sử dụng CVE-2017-11882 của EQNEDT32.exe để giải nén file wd32PrvSE.wmf thành 3 file QcConsol.exe, QcLite.dll, stdole.tlb.

EQNEDT32.exe_2

EQNEDT32.exe_3

Sau đó EQNEDT32.exe sẽ cho chạy file QcConsole với lệnh -LowIntegrityServer.

chạy file QcConsole với lệnh -LowIntegrityServer

Sử dụng rtfobj.exe để kiểm tra file Word_2

Tiếp theo là load thư viện QcLite.dll và chạy code của QcLite.dll

load thư viện QcLite.dll và chạy code của QcLite.dll

load thư viện QcLite.dll và chạy code của QcLite.dll_2

Bởi vì file stdole.tlb nằm cùng folder với QcLite.dll nên mã độc dùng GetModuleFileNameW để lấy đường dẫn của file QcLite.dll và chỉnh sửa thành đường dẫn của file stdole.tlb

stdole.tlb

Tiếp theo mã độc dùng hàm CreateFileW với mã truy xuất là 0x80000000. Khi dò mã này trên https://docs.microsoft.com/en-us/windows/win32/secauthz/access-mask thì mã này là generic_read, tức mã độc đang muốn đọc file stdole.tlb

generic_read

generic_read_2

Mã độc tạo ra một vùng nhớ trong bộ nhớ và load file stdole.tlb vào vùng nhớ này.

Mã độc tạo ra một vùng nhớ trong bộ nhớ và load file stdole.tlb

Mã độc tạo ra một vùng nhớ trong bộ nhớ và load file stdole.tlb_2

Sau đó mã độc này sẽ giải mã vùng nhớ stdole.tlb bằng các lệnh XOR và vùng nhớ này sẽ biến thành một đoạn mã độc mới.

giải mã vùng nhớ stdole.tlb

Mã độc tìm địa chỉ của Kernel32.dll trong bộ nhớ.

Mã độc tìm địa chỉ của Kernel32.dll trong bộ nhớ.

Tiếp theo là địa chỉ của hàm GetProcAdd trong vùng nhớ của Kernel32.dll.

địa chỉ của hàm GetProcAdd trong vùng nhớ của Kernel32.dll.

Kế đến là load các hàm LoadLibrary, VirtualAlloc, FreeLibrary, Sleep.

load các hàm LoadLibrary, VirtualAlloc, FreeLibrary, Sleep.

Tạo một vùng nhớ mới và giải mã dữ liệu vào vùng nhớ này.

Tạo một vùng nhớ mới và giải mã dữ liệu vào vùng nhớ này

Dữ liệu mã hóa của hàm DecodeData nằm ngày sau Entry Point của vùng nhớ stdole.tlb 11 byte, bắt đầu từ B7 CB BG FC.

Dữ liệu mã hóa của hàm DecodeData

Dữ liệu mã hóa của hàm DecodeData_2

Khi debug thì thấy vùng nhớ chứa dữ liệu đã được giải mã là 330000, khi xem xét vùng nhớ này ta lại thấy đây là một đoạn mã khác thấy được rằng PE Header offset là 0x100, đoạn gạch chân màu cam trong hình trên.

phân tích mã độc_0_4

phân tích mã độc_05

Tiếp theo là tìm ra SectionHeader AddressOfEntryPoint của đoạn mã độc mới.

SectionHeader và AddressOfEntryPoint

Đoạn code này làm công việc của PE loader là chuyển đổi địa chỉ dạng tĩnh trên ổ đĩa thành địa chỉ Section trên bộ nhớ, lúc này mã độc đã được load vào bộ nhớ.

PE loader

Relocation các địa chỉ dựa theo Reloc Table.

Relocation các địa chỉ dựa theo Reloc Table.

Import các thư viện cần thiết.

Import các thư viện cần thiết.

Cuối cùng là nhảy đến Entry Point của mã độc để chạy.

Cuối cùng là nhảy đến Entry Point của mã độc để chạy.

Một số chuỗi ký tự có dấu hiệu khả nghi bên trong process này.

Một số chuỗi ký tự có dấu hiệu khả nghi bên trong process này.

Tiếp theo mã độc sẽ tạo ra process dllhst3g là một file có chứng thực của Microsoft, mã độc tạo process này dưới mã CREATE_SUSPENDED nhằm thay thế code của dllhst3g bằng code của chương trình có trong stdole.tbl như hình bên dưới.

dllhst3g

dllhst3g_1

Sau đó QcConsol sẽ thoát.

Sau đó QcConsol sẽ thoát.

Dllhst3g sẽ tạo ra process QcConsol.exe mỗi khi process này bị kill.

Dllhst3g sẽ tạo ra process QcConsol.exe mỗi khi process này bị kill

các kết nối đến tên miền

QcConsol.exe liên tục tạo ra các kết nối đến tên miền club.baclieuvn.com

QcConsol.exe QcConsol.exe_1

Tiếp theo là thêm vào trong registry để tạo autorun cho QcConsol.exe mỗi khi khởi động máy.

thêm vào trong registry để tạo autorun cho QcConsol.exe

Cuối cùng là dựa vào danh sách các chuỗi ký tự khả nghi ta còn tìm được file desktop.ini lạ này.

3. IOC

Domain/IP: club.baclieuvn.com/103.253.25.15

File:

  • Bao cao su kien Dong Tam (1).doc
  • wmf
  • dll
  • exe
  • tlb
  • ini

Registry:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

ValueName: Windows HD Audio Manager

Data: AppData\Local\Temp\QcConsol.exe -LowIntegrityServer

Xem thêm:

Tags: , ,