Malware Analysis

Windows là nền tảng mục tiêu được hầu hết các phần mềm độc hại hướng đến và khai thác mạnh mẽ. Vì vậy, việc trang bị kiến thức liên quan đến hệ điều hành là điều cần thiết, giúp chúng ta có cái nhìn tổng quan và việc phân tích hiệu quả dễ dàng hơn.

Trên Windows, các phần mềm được lập trình và biên dịch bình thường sẽ luôn  thực hiện các chức năng theo nguyên tắc của Microsoft đưa ra. Nhưng những phần mềm độc hại sẽ tìm cách phá vỡ nguyên tắc đó và thực hiện các hành vi người dùng không mong muốn.

Để thực hiện các hành vi này, Malware sẽ sử dụng các Windows API sau đó thực hiện sửa đổi hệ thống.

Vậy Windows API là gì?

Windows API (Application Programming Interface) là một bộ các hàm, cấu trúc dữ liệu, và hằng số được cung cấp bởi Microsoft cho việc phát triển ứng dụng chạy trên hệ điều hành Windows. API này cho phép các nhà phát triển tương tác với hệ thống và các thành phần của Windows như cửa sổ, thiết bị đầu vào/đầu ra, mạng, tệp và thư mục, và nhiều tính năng khác.

Một số thuật ngữ thường được sử dụng:

  • Handle: Là một giá trị đại diện cho một đối tượng cụ thể, cho phép thao tác với đối tượng đó thông qua handle đó.
  • Window: Đại diện cho giao diện cửa sổ của một “Control” trong ứng dụng. Trong các ứng dụng khác, có thể được gọi là “Control” (ví dụ: button, label, v.v.). Trên nền tảng Win32, “Window” là một thuật ngữ chung để chỉ các thành phần giao diện người dùng.
  • Message: Là một thông điệp gửi đến máy tính thông qua các hoạt động như click chuột, nhấn bàn phím, và các sự kiện khác.
  • Menu: Là một thành phần giao diện người dùng thể hiện một danh sách các đối tượng, thường được sử dụng để cung cấp các lựa chọn hoặc chức năng cho người dùng.
  • Queue: Là một cấu trúc dữ liệu tổ chức theo nguyên tắc First-In-First-Out (FIFO), trong đó các phần tử được thêm vào hàng đợi trước sẽ được xử lý trước.

Chi tiết tại đây .

Để cụ thể hóa tôi sẽ lấy một ví dụ về một số  Windows API sử dụng trong Babuk Ransomware 2021:

Một số hàm trong Windows API được sử dụng:

  • GetCommandLineA(): lấy đối số dòng lệnh khi chương trình được khởi động.
  • lstrcmpA(a,b): so sánh hai chuỗi kí tự
  • SetProcessShutdownParameters(): thiết lập các tham số liên quan đến quá trình tắt quy trình của một ứng dụng, cho phép ứng dụng cấu hình cách mình xử lí quá trình shutdown (chỉ định mức độ ưu tiên).
  • SHEmptyRecycleBinA(0, 0, 7u): sử dụng để xóa tất cả các tệp tin trong Recycle Bin của người dùng một cách tự động.

Hệ thống tệp

Hành vi phổ biến nhất của các phần mềm độc hại đó là tạo hoặc sửa đổi các tệp trong hệ điều hành.

Do đó các hoạt động, thay đổi của mã độc đối với file sẽ giúp chúng ta hiểu rõ những gì mã độc đang làm.

Microsoft cung cấp các chức năng Windows API để truy cập vào hệ thống file. Tôi sẽ liệt kê một số chức năng thường dùng:

  • CreateFile: Được sử dụng để tạo và mở tệp
  • ReadFile, WriteFile: Được sử dụng để đọc và ghi vào tệp.
  • CreateFileMapping và MapViewOfFile: Tải tệp vào bộ nhớ và thao tác.

Như vậy các phần mềm độc hại có thể đọc các file quan trọng để lấy mật khẩu, thông tin cá nhân người dùng, sửa đổi, mã hóa tệp tin để thực các hành vi tống tiền và các hành vi bất hợp khác.

Windows không chỉ có các tệp trên ổ đĩa thông thường mà còn có các loại file đặc biệt khác: shared files, file namespaces, data streams. Những loại tệp này sẽ không truy cập bằng cách sử dụng đường dẫn gồm ký tự ổ đĩa và tên thư mục (ví dụ: C:\Users) như bình thường.

  • Tệp Được Chia Sẻ (Shared Files): Những tệp tin được chia sẻ trên mạng thường được truy cập thông qua các đường dẫn bắt đầu bằng \\?\. Điều này mở ra cánh cửa cho việc truy cập tệp tin từ xa trên các máy chủ mạng một cách dễ dàng và linh hoạt hơn.
  • Không Gian Tên Tệp (File Namepaces): Các không gian tên tệp cho phép truy cập vào các tệp tin thông qua các tên không gian cụ thể thay vì đường dẫn tệp tin truyền thống. Điều này tạo điều kiện thuận lợi cho việc quản lý và tổ chức tệp tin trên hệ thống.
  • Luồng Dữ Liệu (Data Streams): Các luồng dữ liệu cho phép ứng dụng ghi và đọc dữ liệu từ một tệp tin cụ thể mà không ảnh hưởng đến dữ liệu gốc. Điều này mở ra các cơ hội linh hoạt trong việc lưu trữ và truy cập dữ liệu một cách hiệu quả.

Một số mã độc có thể thực hiện truy cập vào các thiết bị vật lý trên hệ thống thông qua các đường dẫn đặc biệt như \\.\PhysicalDisk1 và đọc ghi chúng như một tệp.

Hi vọng những kiến thức này sẽ hữu ích với các bạn.

Cảm ơn và hẹn gặp lại.

                                  (dt97_Malware_Analysis)

Chia sẻ