Sandboxing

Các tiêu chí cần có của một sandbox dùng để phân tích mã độc:

  • Một máy cô lập không được kết nối đến các live hoặc production system.
  • Có khả năng lưu trạng thái và khôi phục trạng thái (snapshot). Oracle VirtualBox và VMware Workstation có tính năng này.
  • Các công cụ giám sát, có thể là tự động hoặc thủ công.
  • Có cơ chế chia sẻ file để chuyển malware vào sandbox và trích xuất báo cáo từ sandbox chẳng hạn như shared directory hoặc các network drive. Càng cô lập thì càng an toàn cho host machine.

Sau khi tạo máy ảo, thiết lập các tool phân tích, lưu snapshot và đặt malware vào sandbox thì chúng ta có thể bắt đầu phân tích mã độc.

Process Monitor (ProcMon)

Giao diện của ProcMon:

Chú thích các phần:

  1. Các tùy chọn mở hoặc lưu file có chứa các sự kiện.
  2. Clear các sự kiện đã capture.
  3. Lọc các sự kiện.
  4. Bao gồm: tắt mở các sự kiện Registry, FileSystem, Network, Process/Thread và Profiling.

Chúng ta có thể filter dựa trên giá trị của một cột cụ thể nào đó:

Monitor the sample ~Desktop\Samples\1.exe using ProcMon. This sample makes a few network connections. What is the first URL on which a network connection is made?

Chạy file 1.exe sau khi mở ProcMon.

Sử dụng hai filter sau:

  1. Process Name is 1.exe
  2. Operation begins with TCP

Tìm được các thao tác TCP Reconnect và TCP Disconnect. Thao tác TCP Reconnect đầu tiên có URL là:

94-73-155-12.cizgi.net.tr:2448

What network operation is performed on the above-mentioned URL?

TCP Reconnect

What is the name with the complete full path of the first process created by this sample?

Sử dụng hai filter sau:

  1. Process Name is 1.exe
  2. Event Class is Process

Path của process đầu tiên là C:\Users\Administrator\Desktop\samples\1.exe

API Logger

Là tool cung cấp các thông tin cơ bản về các lời gọi Windows API của một tiến trình.

Giao diện của công cụ:

Sau khi chọn file thực thi thì ta nhấn “Inject & Log” để bắt đầu quá trình logging:

Chúng ta cũng có thể log các API call của một tiến trình dựa trên PID thông qua nút “PID”:

API Monitor

Công cụ này cung cấp các thông tin chi tiết hơn về các API call của tiến trình.

Giao diện của công cụ:

Chú thích:

  1. Lọc theo các nhóm API.
  2. Danh sách các tiến trình được giám sát. Click “Monitor New Process” để chọn tiến trình.
  3. Hiển thị các API call.
  4. Các tiến trình đang chạy mà công cụ có thể giám sát.
  5. Tham số của các API call trước và sau khi nó được diễn ra.
  6. Hex buffer của giá trị được chọn.
  7. Call stack của tiến trình.
  8. Output.

Khi chọn tiến trình, ta có thể chọn đường dẫn, đối số, thư mục khởi chạy và phương pháp gắn monitor.

Sau khi chọn tiến trình, giao diện sẽ có dạng như sau:

The sample ~Desktop\samples\1.exe creates a file in the C:\ directory. What is the name with the full path of this file?

Nạp malware vào API Logger và nhấn nút “Inject & Log”, tìm được dòng log sau:

pid: a4c - 7a3341     CreateFileA(C:\myapp.exe)

What API is used to create this file?

CreateFileA

Question

In Question 1 of the previous task, we identified a URL to which a network connection was made. What API call was used to make this connection?

Tìm được các dòng log sau:

pid: 106c - 40a126    InternetConnectW(94.73.155.12) = cc0008
pid: 106c - 40a1a0    HttpOpenRequestW(cc0008, POST, /) = cc000c
pid: 106c - 71b18f31     CreateMutexA(Local\ZonesCacheCounterMutex) = 0x434
pid: 106c - 71b18f31     CreateMutexA(Local\ZonesLockedCacheCounterMutex) = 0x3f0
pid: 106c - 744fd741     bind(440, port=0)
pid: 106c - 744dd4b3     socket(family=17,type=1,proto=6) = 44c
pid: 106c - 744dd57b     closesocket(44c)
pid: 106c - 744dd4b3     socket(family=17,type=1,proto=6) = 464
pid: 106c - 744dd57b     closesocket(464)
pid: 106c - 744dd4b3     socket(family=17,type=1,proto=6) = 474
pid: 106c - 744dd57b     closesocket(474)
pid: 106c - 744dd4b3     socket(family=17,type=1,proto=6) = 478
pid: 106c - 744dd57b     closesocket(478)
pid: 106c - 744dd4b3     socket(family=17,type=1,proto=6) = 478
pid: 106c - 744dd57b     closesocket(478)
pid: 106c - 74501f9f     closesocket(440)
pid: 106c - 402033     Sleep(29428)

API sử dụng là InternetConnectW.

We noticed in the previous task that after some time, the sample's activity slowed down such that there was not much being reported against the sample. Can you look at the API calls and see what API call might be responsible for it?

Chính là hàm Sleep.

Process Explorer

Là dạng nâng cấp của Task Manager giúp phát hiện process hollowing và các kỹ thuật giả dạng.

Giao diện của công cụ:

Chúng ta có thể bật Lower Pane View để biết thêm các thông tin về tiến trình:

Có thể thấy, công cụ hiển thị các handle mà tiến trình đã mở ra cho các Section, Process, Thread, File, Mutex và Semaphore. Các handle này cho ta biết về tài nguyên mà tiến trình sử dụng. Tương tự, công cụ cũng cung cấp cho chúng ta thông tin về DLL và luồng của tiến trình.

Chúng ta có thể chuột phải vào một tiến trình để xem thông tin chi tiết về tiến trình:

Nút “Verify” trong tab Image giúp ta kiểm tra xem file thực thi của tiến trình có được ký bởi tổ chức có liên quan hay không. Trong ví dụ trên, ta thấy có thông báo “(No signature was present in the subject) Microsoft Corporation” ở đầu. Điều này cho thấy: file thực thi đang giả dạng một tiến trình Microsoft.

Chú ý rằng cách này chỉ có thể kiểm tra nếu image của tiến trình được lưu trên đĩa. Nếu một tiến trình đã được ký nhưng bị làm rỗng và thay thế bằng mã độc thì vẫn có thể có được một chữ ký hợp lệ. Trong trường hợp này, ta cần mở tab “Strings”:

Khi chọn option “Image”, công cụ sẽ hiển thị các chuỗi có trên disk image của tiến trình. Khi chọn option “Memory”, công cụ sẽ hiển thị các chuỗi nằm trên bộ nhớ chính mà thuộc về tiến trình. Tuy nhiên, nếu như tiến trình bị làm rỗng thì các chuỗi giữa hai option sẽ khác nhau rất nhiều. Điều này cho ta thấy tiến trình được nạp lên bộ nhớ rất khác so với tiến trình được lưu ở ổ đĩa.

What is the name of the first Mutex created by the sample ~Desktop\samples\1.exe? If there are numbers in the name of the Mutex, replace them with X.

Tìm được mutant sau trong tab handle:

\Sessions\1\BaseNamedObjects\SM0:2360:304:WilStaging_02

Đáp án là:

\Sessions\1\BaseNamedObjects\SMX:XXXX:XXX:WilStaging_XX

Is the file signed by a known organization? Answer with Y for Yes and N for No.

Nhấn Verify và nhận được thông điệp “(No signature was present in the subject)“.

Is the process in the memory the same as the process on disk? Answer with Y for Yes and N for No.

Chọn tab Strings của tiến trình 1.exe rồi chuyển đổi giữa option Image và Base để so sánh. Nhận thấy sự khác biệt rất lớn.

Regshot

Là công cụ giúp phát hiện các sự thay đổi của registry (hoặc file system). Regshot hoạt động bằng cách chụp snapshot trước và khi thực thi malware rồi so sánh để tìm ra sự khác biệt.

Giao diện của công cụ:

Để sử dụng, đầu tiên ta nhấn nút “1 shot” rồi chạy malware. Sau đó, nhấn nút “2 shot”. Sau khi có 2 snapshot thì ta có thể tiến hành so sánh để tìm ra những sự thay đổi trong registry.

Kết quả so sánh có dạng như sau:

Nếu ta chọn “Compare > Output” thì công cụ sẽ trích xuất thông tin chi tiết như sau:

Điểm mạnh của Regshot là nó không cần phải chạy khi malware đang được thực thi vì một số malware sẽ tắt các công cụ phân tích rồi mới thực hiện những hành vi độc hại. Tuy nhiên, khi dùng Regshot thì ta cần đảm bảo không có tiến trình nào khác đang chạy nền vì Regshot không có cơ chế filter.

Analyze the sample ~Desktop\Samples\3.exe using Regshot. There is a registry value added that contains the path of the sample in the format HKU\S-X-X-XX-XXXXXXXXXX-XXXXXXXXXX-XXXXXXXX-XXX. What is the path of that value after the format mentioned here?

Tìm được giá trị registry được add vào như sau:

HKU\S-1-5-21-1966530601-3185510712-10604624-500\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Compatibility Assistant\Store\C:\Users\Administrator\Desktop\samples\3.exe: 53 41 43 50 01 00 00 00 00 00 00 00 07 00 00 00 28 00 00 00 00 88 12 00 4C A1 12 00 01 00 00 00 00 00 00 00 00 00 00 0A 00 21 00 00 88 50 E1 70 C3 4C D4 01 00 00 00 00 00 00 00 00

Đáp án là:

Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Compatibility Assistant\Store\C:\Users\Administrator\Desktop\samples\3.exe
list
from outgoing([[TryHackMe - Dynamic Malware Analysis]])
sort file.ctime asc

Resources