Trang chủ Security

Phương pháp phân tích mã độc

Phương pháp phân tích mã độc

Có 4 phương pháp phân tích mã độc: Phân tích tĩnh (code (static) analysis), phân tích động (behavioral (dynamic) analysis), gỡ rối (debug), điều tra hành vi của mã độc (malware forensics). Cả 4 phương pháp này cùng có mục đích là giải thích cách hoạt động của mã độc, tuy nhiên thời gian làm việc và kỹ năng cần có thì lại rất khác nhau. Trong bài này, chúng ta sẽ tìm hiểu về những công cụ, phương pháp phân tích mã độc, dựa trên nền tảng cụ thể là Windows.

Vậy phân tích động mã độc là gì?

- Phân tích mã độc là một bước quan trọng trong để có thể ngăn chặn và tiêu diệt hoàn toàn mã độc ra khỏi máy tính và hệ thống mạng; khôi phục lại hiện trạng của mạng như ban đầu; truy tìm nguồn gốc tấn công.

- Nó là phương pháp phân tích cách hoạt động của mã độc khi mã độc được thực thi, xem xét mã độc hoạt động ra sao, lây lan như thế nào, nó kết nối đến đâu, cài đặt những gì vào hệ thống, thay đổi thành phần nào nhằm mục đích ngăn chặn việc lây nhiễm, tạo ra các dấu hiệu nhận dạng hiệu quả.

- Việc phân tích mã độc đòi hỏi quá trình theo dõi liên tục và lặp đi lặp lại. Nếu thực hiện trên hệ thống thiết bị thật sẽ mất rất nhiều công sức và thời gian. Nó cũng có thể gây thiệt hại lớn cho cả hệ thống của bạn. Vì thế, bạn cần phải thiết lập một môi trường an toàn cho việc chạy mã độc để có thể thu thập thông tin về mã độc một cách tốt nhất.

Các công cụ phân tích các mã độc điển hình

1. Process Monitor

Ảnh 1.

Process Monitor là một công cụ giám sát tiên tiến cho Windows hiển thị hệ thống tập tin theo thời gian thực, hoạt động của Registry và process / thread. 

Nó kết hợp các tính năng của hai tiện ích Sysinternals là Filemon (giám sát file) và Regmon (giám sát registry), Process Monitor có cơ chế lọc khá phức tạp mà không sử dụng cơ chế lọc đơn giản theo chuỗi. 

Các tính năng mạnh mẽ độc nhất của nó sẽ làm cho Process Monitor trở thành một tiện ích cơ bản trong bộ công cụ xử lý sự cố và bộ công cụ tìm kiếm phần mềm độc hại.

2. WireShark

Ảnh 2.

Wireshark là một công cụ theo dõi, kiểm tra và phân tích các loại mã độc, thông tin mạng được phát triển bởi Gerald Combs. 

WireShark vượt trội về khả năng hỗ trợ các giao thức (khoảng 850 loại). Giao diện của Wireshark là một trong những giao diện phần mềm phân tích gói dễ dùng nhất do đó nó thân thiện với người dùng. Vì nó có thể bắt đường đi của gói tin, nên nosconf được ứng dụng vào quá trình phân tích lỗ hổng, mã độc.

Tuy nhiên, điểm yếu lớn nhất của nó khi phân tích các 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.

3. OllyDBG

Ảnh 3.

OllyDBG hay còn gọi tắt là Olly là công cụ debug 32-bit rất phổ biến cho Microsoft Windows. 

Nhấn mạnh vào phân tích mã nhị phân làm cho nó đặc biệt hữu ích trong trường hợp nguồn không có sẵn. Bạn có thể tải về và sử dụng nó miễn phí.

Nhờ giao diện trực quan và dễ sử dụng nên Olly phù hợp với người dùng ở mọi trình độ khác nhau. Nó hỗ trợ debug file thực thi và file thư viện. Thêm vào đó, script và bộ plug-in của nó rất phong phú vì có một cộng đồng sử dụng đông đảo. Một số plug-in quan trọng đó là  Olly Advanced, PhantOm,StrongOD. Chúng cung cấp các cơ chế anti-anti debug, hook vào một số hàm quan trọng, ẩn tiến trình-tên cửa số Ollydbg … nhằm làm cho chương trình bị debug không biết mình đang bị debug.

4. Immunity Debugger

Ảnh 4.

Cũng giống như OllyDbg, tuy nhiên ngôn ngữ kịch bản mà Immunity Debugger hỗ trợ là Python, một ngôn ngữ rất mạnh, tự động debug và được giới bảo mật, phân tích thường dùng. 

Nó giảm nhẹ và debug nhanh để tránh bị fail trong quá trình phân tích mã độc phức tạp. Immunity Debugger cũng có giao diện đơn giản, dễ hiểu.

5. Windbg

Ảnh 5.

Windbg: là một công cụ debug mạnh mẽ  được phát hành bởi Microsoft. Nó có khả năng debug trên cả user-mode và kernel-mode. WinDbg cung cấp debug cho hạt nhân Windows, trình điều khiển chế độ hạt nhân, và dịch vụ hệ thống, cũng như các ứng dụng chế độ người dùng và trình điều khiển.

WinDbg có thể xem mã nguồn, thiết lập các điểm ngắt, xem các biến (bao gồm cả các đối tượng C ), ngăn xếp dấu vết, và bộ nhớ. Cửa sổ Debugger Command của nó cho phép người dùng thực hiện  nhiều lệnh. 

Tuy nhiên để sử dụng được WinDbg đòi hỏi có nhiều kinh nghiệm về Reverse Engineering cũng như programming.

6. GDB

Ảnh 6.

GDB, trình gỡ lỗi Dự án GNU, cho phép bạn xem những gì đang diễn ra bên trong một chương trình khác trong khi nó thực hiện.

GDB có thể thực thi 4 bước (cộng với những thứ khác để hỗ trợ những điều này), giúp bạn bắt lỗi trong quá trình phân tích các mã độc.

– Bắt đầu chương trình của bạn, xác định bất cứ điều gì có thể ảnh hưởng đến hoạt động của nó.

– Hãy dừng chương trình của bạn theo các điều kiện quy định.

– Kiểm tra những gì đã xảy ra, khi chương trình của bạn đã dừng lại.

– Thay đổi mọi thứ trong chương trình của bạn, do đó bạn có thể thử nghiệm với việc điều chỉnh hiệu ứng của một lỗi và tiếp tục tìm hiểu về một lỗi khác.

Chương trình được debug có thể được viết bằng Ada, C, C , Objective-C, Pascal (và nhiều ngôn ngữ khác). Những chương trình này có thể được thực hiện trên cùng một máy như GDB  hoặc trên một máy khác (từ xa). GDB có thể chạy trên phổ biến nhất của UNIX và Microsoft Windows biến thể

Với sự phát triển như vũ bảo của công nghệ thông tin như hiện nay thì việc bảo mật thông tin, bảo vệ hệ thống máy tính, hệ thống mạng… khỏi mã độc trở nên rất cấp thiết hơn bao giờ hết. Bài viết này đã giới thiệu đầy đủ cho bạn các phương pháp giúp phân tích mã độc. Từ đó, hãy rút ra cách phòng chống và tiêu diệt chúng. Chúc các bạn thành công!