18/09/2018, 15:55

Phân tích, phát hiện và gỡ bỏ mã độc Practical Malware Analysis Lab09-03

Trong những bài viết trước, bạn đọc đã được tìm hiểu về mã độc Lab09-01 và Lab09-02. Ở bài viết này, chuyên gia an ninh mạng của SecurityBox sẽ tiếp tục đi sâu phân tích tìm hiểu về mã độc Practical Malware Analysis Lab09-03. Phân tích mã độc Lab09-03 trong cuốn Practical ...

lab932

Trong những bài viết trước, bạn đọc đã được tìm hiểu về mã độc Lab09-01 và Lab09-02. Ở bài viết này, chuyên gia an ninh mạng của SecurityBox sẽ tiếp tục đi sâu phân tích tìm hiểu về mã độc  Practical Malware Analysis Lab09-03.

Phân tích mã độc Lab09-03 trong cuốn Practical Malware Analysis của Andrew Honig và Michael Sikorski (https://nostarch.com/malware)

Mẫu mã độc của Lab09-03 có thể tải về từ: https://github.com/mikesiko/PracticalMalwareAnalysis-Labs

Phân tích

  • Lab09-03 gồm 1 file exe Lab09-03.exe và 3 file dll: DLL1.dll, DLL2.dll, DLL3.dll
  • Lab09-03.exe import trực tiếp các hàm export của DLL1.dll và DLL2.dll (tìm thấy trong Import Directory Table của PE header)
  • DLL1.dll export hàm duy nhất là DLL1Print, thực hiện in ra màn hình console dòng “DLL 1 mystery data %d ” với dữ liệu là PID của Lab09-03.exe khi được thực thi

lab931

  • DLL2.dll tạo một file temp.txt tại hàm DllMain; cung cấp 2 hàm DLL2Print và DLL2ReturnJ. DLL2Print in ra màn hình DLL 2 mystery data %d ” với dữ liệu là handle (decimal) của file temp.text. DLL2ReturnJ trả về dữ liệu được in ra trong DLL2Print (handle của temp.txt)
  • DLL3.dll map chuỗi string “ping www.malwareanalysisbook.com” sang dạng UTF-16 (MultiByteToWideChar) trong hàm DllMain và cung cấp 2 hàm DLL3GetStructure và DLL3Print. DLL3GetStructure . DLL3Print in màn hình “DLL 3 mystery data %d ” với dữ liệu là vị trí trên bộ nhớ của chuỗi “ping www.practicalmalwareanalysis.com”.

lab932

lab933

Lab09-03.exe thực hiện các hành vi:

  • Lần lượt gọi các hàm DLL1Print, DLL2Print và DLL2ReturnJ. Lấy handle file temp.txt và ghi vào file đó chuỗi “practicalmalwareanalysis.com” (23 byte). Truyền structure trả về từ DLL3GetStructure vào hàm WinAPI NetScheduleJobAdd. Structure này có thành phần Command là chuỗi  “ping www.practicalmalwareanalysis.com”; JobTime ứng với giá trị 01h00; DaysOfWeek mang giá trị 7Fh ứng với mọi ngày trong tuần.
  • Như vậy, mã độc thực hiện tạo một file với tên temp.txt trong cùng thư mục với file thực thi, ghi chuỗi “practicalmalwareanalysis.com” vào file này; tạo một job thực hiện lệnh “ping www.practicalmalwareanalysis.com” vào 1h00 sáng mỗi ngày trong tuần.
  • Mã độc sử dụng hàm WinAPI NetScheduleJobAdd đồng nghĩa với việc nó chỉ có thể thực thi trên các hệ điều hành Windows trước phiên bản Windows 8.

Phát hiện

Các file của Lab09-03 có thể phát hiện bằng signature:

  • DLL1.dll:

        + 20 byte tính từ fileoffset 4099, là hàm DllMain

lab935

          + 20 byte tính từ fileoffset 4128, là hàm DLL1Print

lab936

  • DLL2.dll:

          + 20 byte tính từ fileoffset 4119, là hàm DllMain

lab937

          + 20 byte tính từ fileoffset 4148, là hàm DLL2Print

lab938

  • DLL3.dll:

         + 20 byte tính từ fileoffset 4142, là hàm DllMain

lab939

         + 20 byte tính từ fileoffset 5344, là hàm DLL3GetStructure và đoạn đầu hàm DLL3Print

lab941

  • Lab09-03.exe:

         + 20 byte tính từ file offset 4120, là đoạn 3 lời gọi hàm DLL1Print, DLL2Printt, DLL2ReturnJ trong hàm DllMain

lab942

        + 20 byte tính từ fileoffset 4213, là đoạn lời gọi hàm NetScheduleJobAdd

lab943

Gỡ bỏ

  • Đối với 3 file DLL: Chỉ cần xóa 3 file này.

lab944

  • Đối với Lab09-03.exe: Mã độc tạo một file .job tại %systemroot%TasksAt1.job. Xóa file thực thi của Lab09-03.exe và file At1.job
  • Lấy đường dẫn %systemroot% bằng hàm WinAPI GetWindowsDirectory.

lab945

Tổng hợp chuyên đề PHÂN TÍCH MÃ ĐỘC

0