Notification texts go here Contact Us Buy Now!

[Write-up] Practical Malware Analysis | Part 3 - Chapter 9 - Lab 9-1

Practical Malware Analysis

CHƯƠNG 9 - OLLYDBG

Dowloads Lab tại đây


Table of Contents

Lab 9-1

Phân tích mã độc được tìm thấy trong tập tin Lab09-01.exe bằng cách sử dụng OllyDbg và IDA Pro để trả lời  câu hỏi sau. Mã độc này đã được phân tích sơ bộ trong các bài thực hành của Chương 3 bằng cách sử dụng các kỹ thuật phân tích tĩnh và động cơ bản.

Câu hỏi?

1. Làm thế nào để khiến mã độc này tự cài đặt?

2. Những tùy chọn dòng lệnh cho chương trình này là gì? Yêu cầu về mật khẩu là gì?

3. Làm thế nào để sử dụng OllyDbg để vá lỗi mã độc này vĩnh viễn, để nó không yêu cầu mật khẩu dòng lệnh đặc biệt?

4. Những dấu hiệu trên máy chủ (host-based indicators) của mã độc này là gì?

5. Những hành động khác nhau mà mã độc này có thể được hướng dẫn thực hiện thông qua mạng là gì?

6. Có bất kỳ chữ ký dựa trên mạng (network-based signatures) hữu ích nào cho mã độc này không?

Phân tích chi tiết

1. Thông tin tổng quan

Môi trường phân tích Windows 10 Flare VM
Mẫu phân tích Lab09-01.exe
Size 61440 bytes
MD5 B94AF4A4D4AF6EAC81FC135ABDA1C40C

2. Công cụ sử dụng

  • Detect It Easy (DIE) (https://www.virustotal.com): Sử dụng để phân tích các tập tin và xác định thông tin về chúng.
    • OllDBG (https://www.ollydbg.de/): gỡ lỗi (debug).

    3 Phân tích Tĩnh

    3.1 - Sử dụng Detect It Easy (DIE)


    Mã độc không bị đóng gói và được biên dịch bằng Microsoft Visual C/C++

    Khi kiểm tra với tính năng Memory map và Entropy




    Mã độc không bị đóng gói.

    Thông tin về hàm Nhập


    Trong số các DLL đã nhập, chúng ta thấy các thư viện Windows quan trọng như KERNEL32.DLL , ADVAPI32.DLL và USER32.DLL , gợi ý các hoạt động ở cấp độ hệ thống và tương tác với API Windows.

    WS2_32.DLL  chỉ ra rằng phần mềm độc hại này có khả năng giao tiếp qua mạng, có thể là để gửi dữ liệu hoặc lấy lệnh.

    Bây giờ, chúng ta hãy xem xét một số chuỗi cơ bản:


    Một số chuỗi đáng chú ý được lọc ra như dưới đây:

    Trích xuất chuỗi đáng chú ý:
    0000B5B8  GetLastActivePopup
    0000B5CC  GetActiveWindow
    0000B5DC  MessageBoxA
    0000B5E8  user32.dll
    0000B5F8  PATH
    0000B7EA  CloseHandle
    0000B7F8  SetFileTime
    0000B806  GetFileTime
    0000B814  CreateFileA
    0000B822  GetSystemDirectoryA
    0000B838  GetLastError
    0000B848  ReadFile
    0000B854  WriteFile
    0000B860  Sleep
    0000B868  GetShortPathNameA
    0000B87C  GetModuleFileNameA
    0000B892  CopyFileA
    0000B89E  ExpandEnvironmentStringsA
    0000B8BA  DeleteFileA
    0000B8C6  KERNEL32.dll
    0000B8D6  RegQueryValueExA
    0000B8EA  RegOpenKeyExA
    0000B8FA  RegSetValueExA
    0000B90C  RegCreateKeyExA
    0000B91E  RegDeleteValueA
    0000B930  CreateServiceA
    0000B942  CloseServiceHandle
    0000B958  ChangeServiceConfigA
    0000B970  OpenServiceA
    0000B980  OpenSCManagerA
    0000B992  DeleteService
    0000B9A0  ADVAPI32.dll
    0000B9B0  ShellExecuteA
    0000B9BE  SHELL32.dll
    0000B9CA  WS2_32.dll
    0000B9D8  ExitProcess
    0000B9E6  TerminateProcess
    0000B9FA  GetCurrentProcess
    0000BA0E  GetTimeZoneInformation
    0000BA28  GetSystemTime
    0000BA38  GetLocalTime
    0000BA48  DuplicateHandle
    0000BA5A  GetCommandLineA
    0000BA6C  GetVersion
    0000BA7A  SetStdHandle
    0000BA8A  GetFileType
    0000BA98  SetHandleCount
    0000BAAA  GetStdHandle
    0000BABA  GetStartupInfoA
    0000BACC  CreatePipe
    0000BADA  GetExitCodeProcess
    0000BAF0  WaitForSingleObject
    0000BB06  HeapReAlloc
    0000BB14  HeapAlloc
    0000BB20  GetCPInfo
    0000BB2C  GetACP
    0000BB36  GetOEMCP
    0000BB42  UnhandledExceptionFilter
    0000BB5E  FreeEnvironmentStringsA
    0000BB78  FreeEnvironmentStringsW
    0000BB92  WideCharToMultiByte
    0000BBA8  GetEnvironmentStrings
    0000BBC0  GetEnvironmentStringsW
    0000BBDA  GetModuleHandleA
    0000BBEE  GetEnvironmentVariableA
    0000BC08  GetVersionExA
    0000BC18  HeapDestroy
    0000BC26  HeapCreate
    0000BC34  VirtualFree
    0000BC42  HeapFree
    0000BC4E  RtlUnwind
    0000BC5A  MultiByteToWideChar
    0000BC70  GetStringTypeA
    0000BC82  GetStringTypeW
    0000BC94  SetFilePointer
    0000BCA6  VirtualAlloc
    0000BCB6  LCMapStringA
    0000BCC6  LCMapStringW
    0000BCD6  GetProcAddress
    0000BCE8  LoadLibraryA
    0000BCF8  FlushFileBuffers
    0000BD0C  GetFileAttributesA
    0000BD22  CreateProcessA
    0000BD34  CompareStringA
    0000BD46  CompareStringW
    0000BD58  SetEnvironmentVariableA
    0000C030  Configuration
    0000C040  SOFTWARE\Microsoft \XPS
    0000C058  \kernel32.dll
    0000C070   HTTP/1.0
    0000C080  GET 
    ...       ...
    
    0000C098  NOTHING
    0000C0AC  DOWNLOAD
    0000C0B8  UPLOAD
    0000C0C4  SLEEP
    0000C0CC  cmd.exe
    0000C0D4   >> NUL
    0000C0DC  /c del 
    0000C0E8  http://www.practicalmalwareanalysis.com
    0000C118   Manager Service
    0000C12C  .exe
    0000C134  %SYSTEMROOT%\system32\
    0000C14C  k:%s h:%s p:%s per:%s

    Phân tích chi tiết các chuỗi quan trong được trích xuất:

    1. API liên quan đến quản lý cửa sổ (User32.dll)
    • GetLastActivePopup, GetActiveWindow, MessageBoxACho thấy khả năng tương tác với giao diện người dùng, có thể được sử dụng để hiển thị thông báo giả mạo hoặc đánh cắp dữ liệu từ cửa sổ đang hoạt động.
    2. API liên quan đến tệp tin và thao tác hệ thống (Kernel32.dll)
    • CreateFileA, ReadFile, WriteFile, CloseHandle, CopyFileA, DeleteFileA, SetFileTime, GetFileTime → Cho thấy mã độc có khả năng thao tác với tệp tin, có thể được sử dụng để sửa đổi, sao chép, xóa hoặc ẩn tệp tin độc hại.
    • GetModuleFileNameA, GetSystemDirectoryA, ExpandEnvironmentStringsA → Dùng để lấy thông tin về đường dẫn hệ thống và thư viện.
    3. API thao tác với Registry (Advapi32.dll)
    • RegOpenKeyExA, RegQueryValueExA, RegSetValueExA, RegCreateKeyExA, RegDeleteValueA → Mã độc có khả năng đọc, ghi, xóa và chỉnh sửa registry, điều này có thể được sử dụng để duy trì sự tồn tại (persistence) hoặc thay đổi cài đặt hệ thống.
    4. API thao tác với dịch vụ hệ thống
    • OpenSCManagerA, OpenServiceA, CreateServiceA, ChangeServiceConfigA, DeleteService, CloseServiceHandle → Chỉ ra khả năng tạo, sửa đổi và xóa dịch vụ hệ thống. Mã độc có thể đăng ký chính nó dưới dạng một dịch vụ Windows để duy trì hoạt động ngay cả sau khi hệ thống khởi động lại.
    5. API liên quan đến tiến trình và quản lý bộ nhớ
    • CreateProcessA, TerminateProcess, ExitProcess, GetCurrentProcess, DuplicateHandle, WaitForSingleObject → Cho thấy khả năng tạo và điều khiển tiến trình, có thể dùng để chạy lệnh độc hại hoặc kiểm soát tiến trình của hệ thống.
    • HeapAlloc, HeapFree, VirtualAlloc, VirtualFree, HeapReAlloc, HeapDestroy → Dấu hiệu của kỹ thuật ẩn mã độc trong bộ nhớ hoặc sử dụng các kỹ thuật như code injection.
    6. API mạng và thực thi lệnh từ xa
    • WS2_32.dll (Windows Sockets) → Chứa các hàm liên quan đến mạng, có thể mã độc sẽ thực hiện kết nối ra bên ngoài.
    • HTTP/1.0, GET, DOWNLOAD, UPLOAD → Cho thấy mã độc có thể tải xuống và tải lên dữ liệu, điều này có thể liên quan đến hành vi điều khiển từ xa hoặc đánh cắp dữ liệu.
    • ShellExecuteA, cmd.exe, /c del → Chỉ ra mã độc có thể chạy các lệnh trên hệ thống bằng cách sử dụng Command Prompt.
    7. Dấu hiệu của sự tồn tại lâu dài (Persistence)
    • Việc sử dụng Registry (RegSetValueExA, RegCreateKeyExA)Service Control Manager (CreateServiceA, ChangeServiceConfigA) cho thấy mã độc có thể tự động khởi động lại khi hệ thống bật lên.
    • Sao chép chính nó (CopyFileA)tạo tiến trình mới (CreateProcessA) có thể giúp mã độc tự nhân bản hoặc khởi động lại chính nó nếu bị đóng.
    8. Dấu hiệu của đánh cắp dữ liệu
    • GetActiveWindow, GetLastActivePopup, ReadFile, WriteFile → Có thể đánh cắp dữ liệu từ cửa sổ đang hoạt động hoặc các tệp tin quan trọng.
    • GetModuleFileNameA, GetSystemDirectoryA, GetShortPathNameA → Có thể thu thập thông tin hệ thống để thực hiện các hành vi độc hại dựa trên môi trường mục tiêu.
    9. Dấu hiệu của tải và thực thi mã độc từ xa
    • HTTP/1.0, GET, DOWNLOAD, UPLOAD, http://www.practicalmalwareanalysis.com → Chứng tỏ mã độc có thể liên lạc với máy chủ điều khiển (C2 server) để tải xuống mã độc bổ sung hoặc gửi dữ liệu bị đánh cắp.
    • ShellExecuteA, cmd.exe → Có thể thực hiện các lệnh tùy ý, bao gồm cả việc xóa dấu vết bằng /c del.

    3.2 Phân tích nâng cao

    Tiếp theo tôi sẽ sử dụng IDA Pro kết hợp với OllDBG để phân tích.

    Bởi vì OllyDBG không thể xác định chính xác điểm bắt đầu của hàm chính nên cần có IDA để xác định điểm bắt đầu thực thi hàm.

    IDA xác định hàm main tại địa chỉ 0x402AF0


    Trong OllDBG mở tệp Lab09-01.exe, chúng ta có thể thấy nó ngay lập tức tạm dừng khi chạm đến điểm thực thi được chỉ định.


    Điều này không quan trọng với chúng ta. Chúng ta có thể nhấn F8 (step-over) nút quay lại và thực hiện từng bước. Trên thực tế F7 (step-into), an toàn nhất là nhấn nút quay lại vào lúc này vì bạn không biết khi nào hàm sẽ được gọi. Nếu bạn muốn Quay lại Nơi bắt đầu thực thi có thể được nhấn Ctrl+F2 để quay lại nơi hàm được thực thi lần đầu tiên.
























    Đăng nhận xét

    Cookie Consent
    We serve cookies on this site to analyze traffic, remember your preferences, and optimize your experience.
    Oops!
    It seems there is something wrong with your internet connection. Please connect to the internet and start browsing again.
    AdBlock Detected!
    We have detected that you are using adblocking plugin in your browser.
    The revenue we earn by the advertisements is used to manage this website, we request you to whitelist our website in your adblocking plugin.
    Site is Blocked
    Sorry! This site is not available in your country.