18/09/2018, 13:59

Công cụ phân tích động mã độc

Ở phần trước, chúng ta tập trung vào kỹ thuật được sử dụng để phân tích mã độc mà không thực thi nó. Khi thực hiện phân tích động, chúng ta có thể chạy mã độc và ghi nhận, quan sát hành động của nó. Mã độc có rất nhiều hành vi khác nhau (xóa file, chèn thêm vào file, lấy cắp thông tin, kết nối ...

Ở phần trước, chúng ta tập trung vào kỹ thuật được sử dụng để phân tích mã độc mà không thực thi nó. Khi thực hiện phân tích động, chúng ta có thể chạy mã độc và ghi nhận, quan sát hành động của nó.

Mã độc có rất nhiều hành vi khác nhau (xóa file, chèn thêm vào file, lấy cắp thông tin, kết nối mạng, tấn công DdoS…) vì thế phải kết hợp nhiều công cụ với nhau để có thể thấy được bức tranh toàn cảnh về những gì mà nó làm (chứ không phải làm thế nào). Ở phần này, chúng ta sẽ chỉ nói đến mã độc, và những công cụ phân tích trên nền tảng Windows. Có 2 công cụ phân tích hành vi khá hữu ích là Process Monitor và Wireshark. Một trong những điểm thú vị của các công cụ này là chúng giám sát mọi hành vi trong toàn bộ hệ thống chứ không phải chỉ của mã độc, hay một chương trình cụ thể. Vì thế, để phân tích, cần phải lọc kết quả trả về của chúng. Cả 2 phần mềm này đều có cơ chế lọc với nhiều tùy chọn, rất hiệu quả.

  • Process Monitor : một sản phẩm trong công cụ Sysinternals Suite

Cho phép người phân tích giám sát tất cả các hành vi về file, registry, hoạt động của tiến trình đang chạy trong hệ thống. Process Monitor hoạt động bằng cách cài một driver (một thành phần điều khiển ở mức thấp) để giám sát thông tin về hoạt động đang diễn ra bên trong nhân hệ điều hành. Dữ liệu nó đưa ra rất đầy đủ, chi tiết ở dạng đồ họa.

 processmon

Hình 6 : Giao diện sử dụng của Process Monitor

Sau khi chạy Process Monitor, chúng ta cần lọc các kết quả nó trả về. Không như Filemon (giám sát file), Regmon (giám sát registry) sử dụng cơ chế lọc đơn giản theo chuỗi; Process Monitor có cơ chế lọc khá phức tạp. Dưới đây là hình ảnh cửa sổ lọc kết quả của Process Monitor. Giả sử cần lọc các hoạt động của một tiến trình có tên là “unknown1” chúng ta sẽ chọn ở khung đầu tiên là Process Name, ở khung textbox, điền tên unknown1, nhấn Add. Để giám sát các hành động cụ thể (việc sử dụng hàm API của chương trình, chọn Operation , và điền tên hàm API tương ứng cần giám sát.

processmon2

Hình 7 : Cửa sổ Filter của Process Monitor

  • WireShark : là sản phẩm đa nền tảng dùng để giám sát kết nối mạng. Nó cung cấp những chức năng như: giám sát, phân tích, lọc các kết nối mạng từ tất cả các ứng dụng trong hệ thống. Tuy nhiên, điểm yếu lớn nhất của nó khi phân tích mã độc là không cho biết chính xác ứng dụng nào tạo ra gói tin gửi đi, mà chỉ biết gói tin đó có thành phần gì, gửi từ đâu, và đến đâu… Vì thế, cần kết hợp với những công cụ khác như Process Monitor. Ngoài ra có rất nhiều các sản phẩm khác như Port Explorer của DiamondCS. Công cụ này được sử dụng để giám sát mạng ở mức độ kết nối, và chỉ ghi lại thông tin về tiến trình đã tạo ra kết nối.

Công cụ gỡ rối (debug) 

  • Phân tích tĩnh và phân tích động ở trên thường có thể giải quyết phần lớn công việc phân tích mã độc. Tuy nhiên, có nhiều trường hợp mã độc quá phức tạp, sử dụng nhiều lớp bảo vệ, hay mã hóa các phương thức, mã hóa dữ liệu truyền đi như botnet, backdoor, thì debug là một kỹ thuật cần được sử dụng.
  • Nhiều công cụ cho phép debug, tuy nhiên, OllyDbg, Windbg là những công cụ mạnh nhất. Chúng hoàn toàn miễn phí và dễ sử dụng. Ngoài ra còn có Immunity Debugger.
  • Ollydbg: là một debugger miễn phí, hỗ trợ debug file thực thi và file thư viện. Ngoài ra, còn có một cộng đồng sử dụng đông đảo, vì thế bộ plug-in và script của nó rất phong phú. Một số plug-in quan trọng đó là PhantOm, Olly Advanced, StrongOD. Chúng cung cấp các cơ chế anti-anti debug, ẩn tiến trình-tên cửa số Ollydbg, hook vào một số hàm quan trọng… nhằm làm cho chương trình bị debug không biết mình đang bị debug.
  • Immunity Debugger: Cũng giống như OllyDbg, tuy nhiên ngôn ngữ kịch bản mà nó hỗ trợ là Python, một ngon ngữ rất mạnh và được giới bảo mật, phân tích thường dùng.
  • Windbg: công cụ được phát hành bởi Microsoft. Là một công cụ debug có thể hoạt động trên nhiều mức khác nhau, từ mức người dùng (ring3), đến mức hệ thống (ring0 hay kernel mode). Có một số mã độc sử dụng các kỹ thuật ở mức kernel, driver, do đó, không thể sử dụng 2 công cụ debug nói trên, mà phải dùng Windbg.

Kết luận

Với sự phát triển không ngừng của các ngành công nghiệp nói chung, công nghệ thông tin nói riêng, việc bảo vệ thông tin cá nhân, công ty, quốc gia, các hệ thống máy tính trong công nghiệp… khỏi mã độc trở nên rất cấp thiết. Đề tài này đã giới thiệu về tác hại của mã độc, nhìn lại lịch sử phát triển của chúng. Sau đó chỉ ra các bước để phân tích mã độc, đưa ra những phương án phòng chống, loại bỏ mã độc kịp thời.

0