Cơ bản về phân tích Malware (2)
Phân tích động phần mềm độc hại
Phương pháp phân tích phần mềm độc hại động là phương pháp phân tích trong đó phần mềm độc hại được chạy và kiểm tra trong môi trường an toàn. Phương pháp này nhằm mục đích phân tích hành vi của phần mềm độc hại bằng cách kiểm tra các hoạt động như mạng, tệp, v.v. trong môi trường an toàn.
Có nhiều giải pháp sandbox khác nhau để tự động hóa quá trình phân tích động. Sandbox chạy phần mềm độc hại trong môi trường riêng biệt và tự động hiển thị kết quả phân tích.
Công cụ và phần mềm
- Phần mềm ảo hóa: Nhờ những phần mềm này, có thể sử dụng một hệ điều hành khác trên hệ điều hành máy chủ. Nếu được cấu hình đúng cách, có thể thực hiện phân tích một cách an toàn, vì phần mềm độc hại không thể thoát khỏi hệ điều hành ảo này
- Phần mềm tiện ích: Sau khi cài đặt hệ điều hành ảo , cần cài đặt phần mềm hữu ích cho việc phân tích động. Ví dụ, chúng ta sẽ không thể thực hiện phân tích động các tệp Office có phần mở rộng tệp như docx, xlsx nếu không cài đặt Microsoft Office hoặc phần mềm tương tự trên hệ thống.
- Trình gỡ lỗi ( debugger): Trình gỡ lỗi là phần mềm thường được lập trình viên sử dụng để kiểm tra mã và phát hiện lỗi. Trình gỡ lỗi giúp xem hướng dẫn của một quy trình và thay đổi luồng chương trình.
- Công cụ giám sát mạng: Thông tin như kết nối mạng được thiết lập bởi phần mềm độc hại, địa chỉ mà nó giao tiếp và cách nó giao tiếp với những địa chỉ đó sẽ được báo cáo sau khi phân tích phần mềm độc hại
- Công cụ giám sát tiến trình: ví dụ như Procmon
- Công cụ giám sát hoạt động tệp
Những lưu ý khi thực hiện phân tích động
- Hoạt động của các tiến trình: Khi phần mềm độc hại được chạy, nó sẽ tạo ra một tiến trình riêng giống như các ứng dụng khác. Trước khi thực hiện các hoạt động khác, chúng ta phải phát hiện các tiến trình thuộc về phần mềm độc hại. Khi kiểm tra một quy trình, cần đặc biệt chú ý đến các thông tin như liệu quy trình đó có tạo ra quy trình con mới hay không, các DLL mà quy trình đó nhập và quy trình đó do người dùng nào điều hành.
Ví dụ có thể dùng Process Hacker: Process Hacker giúp bạn dễ dàng kiểm tra các tiến trình bằng cách liệt kê các tiến trình theo chế độ xem phân cấp. Khi phần mềm độc hại tạo một tiến trình mới, bạn có thể thấy tiến trình mới được tạo trong tiến trình gốc của nó.
- Hoạt động của mạng: Phần mềm độc hại thường thiết lập kết nối mạng để tải xuống phần tải trọng thứ hai, để giao tiếp với bộ chỉ huy và điều khiển (c2), để nhảy đến các thiết bị khác trong mạng, để đánh cắp dữ liệu. Khi kết thúc quá trình phân tích phần mềm độc hại, chúng ta cần phát hiện các kết nối mạng này, tìm hiểu cách phần mềm độc hại giao tiếp và báo cáo các hoạt động mạng này.
- Hoạt động của Registry: Registry là cơ sở dữ liệu phân cấp được sử dụng để lưu trữ dữ liệu trong hệ điều hành Windows. Kẻ tấn công sử dụng Registry cho các mục đích như đánh cắp dữ liệu và đảm bảo tính bền vững.
- Hoạt động của tập tin: Trên Windows, có một thư mục gọi là "Temp" chứa các tệp tạm thời. Các ứng dụng thường sử dụng thư mục này để lưu trữ các tệp dễ bay hơi. Phần mềm độc hại thường tự sao chép vào thư mục Temp. Vì lý do này, nên đặc biệt chú ý đến các hoạt động được thực hiện trên thư mục này.
Kiến thức cơ sở
Định dạng file thực thi trên Window: PE file format: là một cấu trúc dữ liệu mà Window định nghĩa, chứa thông tin cần thiết cho window nạp và thực thi tệp. Một PE về cơ bản sẽ có cấu trúc như sau:
- Virtual size: kích thước của file trên bộ nhớ RAM
- Size of raw data: kích thước của file trên ổ đĩa cứng Với .text Section, với tệp tin thông thường kích thước không thay đổi nhiều
Các tệp tin thực thi bị packed sẽ cho kích thước của Virtual size lớn hơn nhiều lần so với kích thước của Size of Raw Data => Đây cũng là dấu hiệu của mã độc
Resource hacker: là một chương trình cho phép duyệt qua phần .rsrc section => thông qua đó có thể sửa, thêm, xóa các tài nguyên như string, icon, menus => có thể vd là Mod game
Liên kết các thư viện và hàm: các hàm được sử dụng trong chương trình được lưu trữ bởi một chương trình khác, chẳng hạn như thư viện
Khi biên dịch chương trình từ mã nguồn thu được các Object file, cần phải có một trình liên kết (linker) liên kết các Object file đó thành các file thực thi.exe. Các Linker có thể liên kết theo 3 cách:
- Statically: hiếm khi sử dụng cho các file trên Window, phổ biến trên nền tảng Unix, Linux. Tất cả các hàm trong thư viện đều được thêm vào file thực thi nên kích thước của file chạy sẽ lớn
- At Runtime(Runtime Linking): thường gặp trong các phần mềm độc hại, đặc biệt là với các chương trình đã bị packed hoặc obfuscate, trong quá trình chạy nó mới import các thư viện cần thiết. Các hàm thường gặp như LoadLibrary và GetProcAddress
- Dynamically: phương pháp phổ biến nhất, các thư viện cần thiết sẽ được tìm kiếm khi chương trình được nạp
Các breakpoint: được dùng làm điểm dừng thực thi và cho phép ta quan sát trạng thái của chương trình Một chương trình khi dừng tại breakpoint => đc gọi là broken Các loại breakpoints:
- Software breakpoint: khi được cài đặt trình gỡ rối sẽ ghi đè lệnh 0xCC, thường là loại breakpoint mặc định của các trình gỡ rối
- Hardware breakpoint: không làm biến đổi code, stack hoặc bất kỳ tài nguyên nào, không làm chậm quá trình thực thi, hoạt động dựa vào thanh ghi debug DR7 của CPU, có thể đặt tối đa 4 vị trí trong 1 thời gian
- Conditional breakpoint: chỉ ngắt khi thỏa mãn 1 đk logic, hạn chế hành động thừa
- Breakpoint on memory: ctrinh bị ngắt khi truy cấp vào vị trí bộ nhớ đã định, làm thay đổi các thuộc tính của khối nhớ => không đáng tin cậy và ít sử dụng
All rights reserved