18/09/2018, 15:24

PHÂN TÍCH MÃ ĐỘC – LAB 07 – PRACTICAL MALWARE ANALYSIS (Phần 2)

Cùng chuyên gia an ninh mạng Bùi Đình Cường tiếp tục phân tích cấu trúc của mã độc Lab 07 qua bài viết dưới đây. Bài viết phân tích mã độc Lab 07 với cấu trúc 02 giải quyết các vấn đề: Chương trình đạt được trạng thái ổn định như thế nào? Mục đích của chương trình là gì? Khi nào ...

lab 7.23

Cùng chuyên gia an ninh mạng Bùi Đình Cường tiếp tục phân tích cấu trúc của mã độc Lab 07 qua bài viết dưới đây. Bài viết phân tích mã độc Lab 07 với cấu trúc 02 giải quyết các vấn đề: Chương trình đạt được trạng thái ổn định như thế nào? Mục đích của chương trình là gì? Khi nào chương trình kết thúc?

Mã độc không được packed, biên soạn bằng Microsoft Visual C++ 6.0.

Duyệt qua các Import:

Mã độc Inport các hàm từ thư viện ole32.dll, OLEAUT32.dll và MSVCRT.dll

lab 7.21

lab 7.22

ole32.dll và OLEAUT32.dll cung cấp các hàm thao tác với COM object.

lab 7.23

MSVCRT.dll cung cấp các hàm C chuẩn, là thành phần của bộ thư viện Microsoft C Runtime Library. Ở đây, chưa có dấu hiệu nào cần đặc biệt lưu ý.

Xem xét code dịch ngược của mã độc trong IDA Pro:

lab 7.24

lab 7.25

Toàn bộ hàm main

Đầu tiên, mã độc push tham số ppReversed và gọi hàm OleInitialize khởi tạo thư viện COM (dòng 0x401005). Mã độc cần gọi hàm này trước khi thực hiện gọi bất cứ hàm nào khác trong thư viện COM. Nếu lời gọi hàm OleInitialize không thành công (so sánh eax với 0, nếu eax < 0 => jl), mã độc thực hiện nhảy tới short loc_401085, đoạn code này là một epilogue.

Nếu hàm OleInitialize trả về kết quả OK, mã độc thực hiện push các tham số đầu vào và gọi hàm CoCreateInstance. Các tham số đầu vào hàm CoCreateInstance gồm:

  • rclsid: 0002DF01-0000-0000-C000-000000000046 tương ứng với Internet Explorer (https://www.aldeid.com/wiki/Category:Digital-Forensics/Computer-Forensics/COM-Component-Object-Model )

lab 7.26

  • pUnkOuter: NULL, https://msdn.microsoft.com/en-us/library/ms886232.aspx
  • dwClsContext: 4, tương ứng CLSCTX_LOCAL_SERVER https://msdn.microsoft.com/en-us/library/windows/desktop/ms693716(v=vs.85).aspx
  • riid: 0D30C1661-0CDAF-11D0-8A3E00C04F0C90E26E tương ứng IWebBrowser32

https://msdn.microsoft.com/en-us/library/microsoft.uii.csr.browser.web.iwebbrowser2.aspx

(http://redscreen.tistory.com/tag/Practical%20Malware%20Analysis )

lab 7.27

lab 7.28

  • ppv: sẽ chứa pointer của interface IWebBrowser32 nếu interface này được request thành công.

Như vậy, với lời gọi hàm CoCreateInstance, mã độc thực hiện tạo một COM instance với CLSID tương ứng với Internet Explorer và IID tương ứng với giao diện IWebBrowser32. Giá trị trả về của hàm CoCreateInstance là một pointer, được chứa trong biến ppv và được truyền vào EAX tại 0x401028. Nếu pointer có giá trị bằng 0, sau lệnh test tại 0x40102C, mã độc sẽ nhảy tới lời gọi hàm OleUninitialize tại short loc_40107F. Hàm OleUninitialize thực hiện đóng thư viện COM, giải phóng các COM class và COM server,…

Nếu pointer trả về từ hàm CoCreateInstance có giá trị khác 0, mã độc thực hiện lời gọi hàm VariantInit từ thư viện OLEAUT32.dll → để làm clgv???? Sau đó mã độc phân vùng một string mới và copy nội dung “http://www.malwareanalysisbook.com/ad.html” lên đó → lại để làm clgv??? Nhìn vào các tham số liên quan tới hàm SysAllocString, có thể nhận định hàm SysAllocString trả về giá trị string trong  psz (“http://www.malwareanalysisbook.com/ad.html”) qua biến var_10 (dòng 0x40106D).

Đoạn code từ 0x401056 tới 0x401074 thực hiện: Truyền giá trị pointer trả về bởi hàm OleCreateInstance (tham số ppv) từ EAX sang EDX (0x401065), như vậy, EDX sẽ giữ giá trị pointer trỏ đến các hàm trong giao diện IWebBrowser32. ECX chứa giá trị string “http://www.malwareanalysisbook.com/ad.html” . Giá trị string này cùng một số giá trị Variant được push làm tham số đầu vào cho hàm có địa chỉ [EDX+2Ch] trong giao diện IWebBrowser32. (https://msdn.microsoft.com/en-us/library/aa752127(v=vs.85).aspx http://www.geoffchappell.com/studies/windows/ie/ieframe/interfaces/inavigationtarget.htm )

Sau khi hàm [EDX+2Ch] hoàn thành, mã độc thực hiện một số thao tác dọn dẹp stack và kết thúc thực thi.

Tìm hiểu cụ thể hàm [EDX+2Ch] làm những gì, ta thực hiện phân tích động. Khi thực thi mã độc Lab07-02.exe, một cửa sổ Internet Explorer được mở với đường dẫn “https://practicalmalwareanalysis.com/?post_type=feedback&p=191” . Tiến trình Lab07-02.exe tự kết thúc sau khi gọi Internet Explorer.

lab 7.29

Trên cơ sở các thông tin đã phân tích ở trên, chúng ta kết luận các vấn đề trong Lab 7 – 2 như sau:

  1. Chương trình đạt được trạng thái ổn định như thế nào?

Mã độc không có hành vi cố gắng duy trì hoạt động trong hệ thống.

  1. Mục đích của chương trình là gì?

Mục đích của mã độc là gọi một cửa sổ Internet Explorer, truy cập tới địa chỉ http://www.malwareanalysisbook.com/ad.html nhưng có thể địa chỉ đó không còn tồn tại và được điều hướng tới https://practicalmalwareanalysis.com/?post_type=feedback&p=191.

  1. Khi nào chương trình kết thúc?

Sau khi gọi một cửa sổ Internet Explorer, mã độc tự kết thúc thực thi.

XEM THÊM: Lưu Ý Khi Phân Tích Ứng Dụng Windows (Phần 1) để có cái nhìn tổng quát khi phân tích cấu trúc mã độc lap 07 nha.

0