18/09/2018, 15:20

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

Ở bài viết lần trước chúng ta đã lần lượt tìm hiểu 6 bước trong quá trình phân tích mã độc LAB 06 cấu trúc 01 . Bài viết này chuyên gia an ninh mạng Bùi Đình Cường sẽ gửi đến các bạn những phân tích trong cấu trúc 02 của mã độc LAB 06 Kiểm tra PEiD. Microsoft Visual C++ 6.0 ⇒ ...

lab 2.12

Ở bài viết lần trước chúng ta đã lần lượt tìm hiểu 6 bước trong quá trình phân tích mã độc LAB 06 cấu trúc 01. Bài viết này chuyên gia an ninh mạng Bùi Đình Cường sẽ gửi đến các bạn những phân tích trong cấu trúc 02 của mã độc LAB 06

Kiểm tra PEiD. Microsoft Visual C++ 6.0 ⇒  không packed.

Kiểm tra Import table. Có hàm Sleep ⇒ chương trình không chạy một lần?

lab 2.1

Gọi các WinAPI InternetGetConnectedState, InternetOpenUrlA, InternetReadFile, InternetOpenA.

lab 2.2

Kiểm tra strings. Các thông báo “Error 1.1: No Internet”, “Success: Internet Connection”, “Error 2.1: Failed to OpenUrl”, “Error 2.2: Failed to ReadFile”, “Error 2.3: Failed to get command”, “Success: Parsed command is %c”; đường dẫn “http://www.practicalmalwareanalysis.com/cc.htm” và thông tin  “Internet Explorer 7.5/pma”

⇒  Chương trình kết nối tới đường dẫn trên, nhận lệnh trong file cc.html.

lab 2.3

  1. Hành vi nào chương trình con đầu tiên gọi bởi hàm main?

Hàm subroutine đầu tiên được gọi bởi main là sub_401000

lab 2.4

lab 2.5

Sub_401000 tương tự sub_401000 trong Lab6-1, thực hiện kiểm tra nếu có kết nối internet.

  1. Chương trình con ở địa chỉ 0x40117F giải quyết nhiệm vụ gì?

sub_40117F tương tự sub_40105F trong Lab6-1, thực hiện ghi thông báo ra file.

lab 2.6

  1. Chương trình con thứ 2 được gọi bởi hàm main thực hiện nhiệm vụ gì?

Subroutine thứ 2 mà main gọi đến là sub_401040. Hàm mở một kết nối tới địa chỉ http://www.practicalmalwareanalysis.com/cc.htm, sử dụng UA là “Internet Explorer 7.5/pma”, có chức năng ProxyBypass, thực hiện một loạt thao tác kiểm tra kết nối, đọc file và lấy lệnh từ nội dung file qua các hàm WinAPI: InternetOpenA, InternetOpenUrlA, InternetReadFile và các phép if so sánh nội dung file truy cập được (các so sánh với 3Ch, 21h, 2Dh, 2Dh tại các dòng 0x4010EC, 0x4010F8, 0x401104, 0x401110, dịch chúng từ Hex-> ASCII được chuỗi “<!– “, là HTML comment); đưa ra thông báo lỗi Error 2-1, Error 2-2, Error 2-3 tương ứng mỗi trường hợp lỗi. Trong các trường hợp lỗi, thanh ghi AL có giá trị 0.

Nếu qua tất cả các bước kiểm tra trên thành công, thanh ghi AL chứa giá trị [ebp+var20C].

lab 2.7

lab 2.8

lab 2.9

  1. Chương trình con sử dụng cấu trúc mã nguồn loại nào?

Cấu trúc code sử dụng trong hàm sub_401040 là một loạt các lệnh if, như đã trình bày ở trên.

  1. Có thông số liên quan tới mạng trong chương trình này?

Dấu hiệu mạng trong chương trình này là:

  • User-Agent: Internet Explorer 7.5/pma
  • URL: http://www.practicalmalwareanalysis.com/cc.htm
  1. Mục đích của mã độc này là gì?

Chương trình kết nối tới địa chỉ http://www.practicalmalwareanalysis.com/cc.htm, sử dụng Agent là Internet Explorer 7.5/pma, kiểm tra kết nối và lấy HTML comment trong đoạn đầu file cc.htm sau đó in nội ký tự đầu tiên trong HTML comment nhận được ra màn hình (main gọi tới sub_40117F (dòng 0x401166)).

lab 2.10

lab 2.11

Sau khi hoàn tất thực thi, chương trình Sleep trong 60 giây (60000 miliseconds, chuyển đổi từ giá trị 0EA60h tại dòng code 0x40116E).

lab 2.12

Bạn muốn hiểu sâu về cấu trúc code c trong hợp ngữ XEM TẠI:

PHÁT HIỆN CẤU TRÚC CODE C TRONG HỢP NGỮ PHẦN 1

PHÁT HIỆN CẤU TRÚC CODE C TRONG HỢP NGỮ PHẦN 2

PHÁT HIỆN CẤU TRÚC CODE C TRONG HỢP NGỮ PHẦN 3

Hoặc xem thêm các bài viết phân tích mã độc của SecurityBox

0