Archive for January, 2019


Mới đây, một người bạn nước ngoài thông báo cho tôi về sample có nội dung từ “Bộ Công Thương” gửi tới “Tập đoàn Dầu khí Việt Nam” như sau:

Bạn còn nhắn tôi : “APT có vẻ thích Việt Nam nhỉ!!” …Tôi không biết là mình nên vui hay nên buồn 😀

1. Stage 1 — Phân tích sơ bộ

Kiểm tra sơ bộ thấy sample này có chứa mã VBA, nhắm vào người sử dụng Office 2007+:

Nội dung của VBA code như sau:

VBA code thực hiện nhiệm vụ giải mã chuỗi Base64, sau đó tạo file Chrome.jstại thư mục C:\Windows\Tasks và lưu nội dung đã giải mã vào file này. Kiểm tra tiếp thông tin metadata liên quan:

Như vậy, VBA code sẽ tạo schedule task để thực thi file Chrome.js.

2. Stage 2 — Giải mã chuỗi Base64

Có thể dùng VBA Editor của Word để debug và có được nội dung của chuỗi Base64. Tuy nhiên, khi đọc code thấy chuỗi Base64 này sẽ được giải mã 3 lần, thông qua CyberChef tôi có thể giải mã được mà không cần phải debug:

Toàn bộ nội dung sẽ lưu vào Chrome.js sau khi giải mã:

3. Stage 3 — Giải mã JS

Chrome.js sẽ giải mã chuỗi base64 được lưu tại biến “c”, sau đó sẽ thực thi kết quả sau giải mã. Ta có nội dung giải mã của chuỗi Base64 trên như hình:

Ta có được một powershell script với nội dung như sau:

4. Stage 4 — Phân tích Powershell

Tại thời điểm phân tích tôi vẫn kết nối được tới C2:

Powershell sẽ kết nối tới C2 tại hxxp://154[.]16[.]37[.]122/GoogleUpdate/Update.php để đọc nội dung command từ Update.php vào biến $Cmd.

Nội dung của Update.php như sau:

Sử dụng wmic để lấy uuid và encode uuid này thành một chuỗi Base64:

Cuối cùng cấu thành một Uri có chứa chuỗi uuid đã encode và kết nối tới uri này:

Tới đây, tôi không thấy có thêm thông tin gì khác, cảm giác như kẻ tấn công chỉ muốn thăm dò xem người dùng có mở tài liệu này hay không để chuẩn bị cho một đợt tấn công khác!

5. IoCs

– Doc file: b22d7b196ca03b43f9b140732a3d317f328e5d5f53379c2520a0f05a17d6e617

– C2: hxxp://154[.]16[.]37[.]122

– Scheduled tasks: schtasks /create /sc MINUTE /tn “Chrome” /tr “C:\Windows\Tasks\Chrome.js” /mo 2 /F & schtasks /create /sc MINUTE /tn “Chrome” /tr “C:\Windows\Tasks\Chrome.js” /mo 2 /RU SYSTEM

Advertisements

Nhờ người em hỗ trợ, tôi có được một sample mới c580d77722d85238ed76689a17b0205b4d980c010bef9616b8611ffba21b142e sử dụng CVE-2017–11882. Sample này có thay đổi chút về OLE object, init_key để decrypt binary, cũng như các dropped binary so với mẫu tôi đã viết tại đây https://kienmanowar.wordpress.com/2018/11/08/la-1937cn-hay-oceanlotus-hay-lazarus/

1. Stage 1 — Phân tích sơ bộ

Kiểm tra thấy đây là một file RTF:

Sử dụng rtfobj để xem có các embedded objects không, thấy có 4 objects:

Thông qua Profiler, có được thông tin sau:

CVE-2017–11882 Signature
Embedded file

Mở file bằng ứng dụng Word không thấy có nội dung gì (theo đánh giá cá nhân, tụi này làm mẫu không bằng các mẫu nhắm vào VN, không viết nổi một nội dung cho tử tế 😀). Nó sẽ drop file e.m vào thư mục Temp . File này sẽ có nội dung như trên hình:

2. Stage 2 — Lấy binary được giải mã

Với sample này, tôi không áp dụng được dụng tính năng Image File Execution Options (IFEO) nên tôi dùng HxD để patch Entry Point của EQNEDT32.exethành 0xEB 0xEF.

Sau đó mở file bằng ứng dụng Word, dùng OllyDBG tiến hành attach tiến trình EQNEDT32.exe. Sau khi attach xong khôi phục lại các bytes gốc đã patch bằng HxD. Đặt một bp tại CreatFileW:

Thông qua shellcode gọi hàm VirtualAlloc để cấp phát vùng nhớ phục vụ cho việc lưu nội dung của file e.m:

Tiếp theo gọi hàm ReadFile để đọc nội dung từ e.m và lưu vào vùng nhớ ở trên:

Dùng vòng lặp xor để giải mã dữ liệu tại vùng nhớ trên (thuật toán tương tự như bài viết https://kienmanowar.wordpress.com/2018/11/08/la-1937cn-hay-oceanlotus-hay-lazarus/ , chỉ khác init_key):

Sau vòng lặp trên có được một PE file mới như sau:

Dump vùng nhớ này ra đĩa để phân tích:

3. Stage 3 — Phân tích binary đã dump

Load binary ở trên vào IDA, nó thực hiện tạo thư mục có tên IISWebClient tại %appdata%:

Thực hiện giải mã một buffer:

Sau đó copy toàn bộ các bytes đã giải mã ở trên vào vùng nhớ đã được cấp phát:

Tạo một key là “Direct3D” tại HKEY_CURRENT_USER\Software & lưu toàn bộ decrypted bytes:

Tiếp theo, drop 3 files vào thư mục IISWebClient đã tạo ở trên:

· iassvcs.exe (signed by Symantec).

· sqlite3.dll (signed by Qihoo 360).

· RasTls.dll (signed by Avira — not valid cert).

Thông tin Digital Signatures của các files:

Tạo persistence key để tự động chạy tại “Software\Microsoft\windows NT\CurrentVersion\windows”:

Sau khi tạo key trong Registry xong, thực thi file iassvcs.exe, file này sẽ load các đã drop cùng thư mục:

Binary cuối cùng được lưu thành file 189AFE4.TMP:

Tiến trình iassvcs.exe sau khi thực thi sẽ kết nối tới C2 tại:

4. IOCs

· Malicious RTF:c580d77722d85238ed76689a17b0205b4d980c010bef9616b8611ffba21b142e

· Decrypted binary: 8D7425AE30FD2D5196EC4DCD2540B31A0D26772F

· Dropped binary:

o %appdata%\IISWebClient\iassvcs.exe: 62944E26B36B1DCACE429AE26BA66164

o %appdata%\IISWebClient\sqlite3.dll: FEE0B982AF421FF8C16C0187B376B086

o %appdata%\IISWebClient\RasTls.dll: C6A73E29C770065B4911EF46285D6557

· C2:

o Name: skylineqaz[.]crabdance[.]com

o Name: xn — ylineqaz-y25ja[.]crabdance[.]com

· Registry:

o “HKCU\Software\Microsoft\windows NT\CurrentVersion\windows”; Value name “Load”; Data: C:\Users\{username}\AppData\Roaming\IISWEB~1\iassvcs.exe

o “HKEY_CURRENT_USER\Software\Direct3D”