Phân biệt vai trò của Packer, Crypter, và Protector trong các phần mềm độc hại

RESEARCH CREW
21:41 15/06/2020

 

Trong bài viết này, chúng tôi sẽ cố gắng giải thích các thuật ngữ về Packer (Trình đóng gói), crypter (Trình mã hóa) và Protector (Trình bảo vệ) trong ngữ cảnh chúng được sử dụng trong phần mềm độc hại như thế nào. Hãy nhớ rằng không có định nghĩa nào cho các thuật ngữ này được xem là khuôn mẫu bất di bất dịch. Tất cả chúng đều có sự chồng chéo và có những ngoại lệ nhất định đối với các quy tắc được định nghĩa. Nhưng đây là phân loại phổ biến được người viết chấp nhận sử dụng.

Điểm chung của 3 thuật ngữ nằm ở mục tiêu sử dụng

Payload, thực tế vốn là đoạn mã độc hại mà kẻ phá hoại muốn chạy trên các máy tính nạn nhân. Thành phần này sẽ được những kẻ tạo ra mã độc ưu tiên bảo vệ chống lại kỹ thuật dịch ngược và phát hiện (bằng các phần mềm bảo mật khác nhau). Điều này được thực hiện bằng cách thêm vào các đoạn mã dường như vô hại, chỉ nhằm mục đích che giấu sự tồn tại của mã độc. Về cơ bản, mục tiêu chung của Packer, Crypter và Protector là che giấu payload khỏi sự phát hiện của nạn nhân và từ các nhà nghiên cứu bảo mật bằng cách phân tích tập tin.

Trình đóng gói (Packer)

Loại này thường được hiểu là thuật ngữ viết tắt của các trình đóng gói runtime (runtime packer), có khả năng tự giải nén. Cụ thể, chương trình sẽ thực hiện giải nén tự động trong bộ nhớ khi tập tin được đóng gói của tập tin ban đầu được thực thi. Kỹ thuật này đôi khi còn được gọi là kỹ thuật nén thực thi (executable compression). Kiểu nén này được tạo ra để làm cho kích thước các tệp nhỏ hơn. Vì vậy, người dùng sẽ không cần phải giải nén thủ công trước khi chúng có thể được thực thi. Nhưng với kích thước hiện tại của các tập tin dữ liệu đa phương tiện và tốc độ internet, nhu cầu về các tệp nhỏ hơn không còn đóng vai trò quá quan trọng nữa. Do đó, ngày nay khi bạn thấy một số trình đóng gói (Packer) được sử dụng trong các chương trình phần mềm, thì hầu như việc sử dụng Packer là để thực hiện mục đích xấu. Về bản chất, vai trò của Packer là để làm cho kỹ thuật dịch ngược trở nên khó khăn hơn, cùng với lợi thế gia tăng cho các tác giả phần mềm độc hại khi các manh mối, dấu vết liên quan tới payload hay mã độc tồn tại có kích thước nhỏ hơn trên máy bị nhiễm.

Trình mã hóa (Crypter)

Kỹ thuật cơ bản nhất đối với Crypter thường được gọi là kỹ thuật rối mã (obfuscation). Phương pháp rối mã cũng được sử dụng thường xuyên trong các mã lệnh script, như javascript và vbscript. Nhưng để bỏ qua hoặc khử nhiễu (de-obfuscation) hầu hết các phương pháp này không phải là một điều bất khả thi. Các phương pháp phức tạp hơn của Crypter sử dụng các giải thuật mã hóa thực sự.

Hầu hết các loại Crypter không chỉ mã hóa tệp tin, mà phần mềm crypter còn cung cấp cho người dùng nhiều tùy chọn khác để làm cho các công cụ bảo mật khó phát hiện nhất có thể. Điều này cũng đúng đối với một số Packer. Tóm lại, khả năng không bị phát hiện bởi bất kỳ chương trình bảo mật nào là một trong những ưu tiên hàng đầu cho các tác giả viết ra các phần mềm độc hại. 

Trình bảo vệ (Protector)

Trong bối cảnh này, một trình bảo vệ (Protector) là một đoạn chương trình nhằm ngăn chặn sự giả mạo (tampering) và kỹ thuật dịch ngược trên phần mềm/mã độc mà nó hoạt động. Các phương thức được sử dụng trong Protector có thể bao gồm cả kỹ thuật đóng gói (Packer) và mã hóa (Crypter). Sự kết hợp đó cộng với một số tính năng được thêm vào giúp cho các Protector bảo vệ các đoạn mã payload của phần mềm, mã độc. Vì vậy, một nhà nghiên cứu, phân tích mã độc sẽ phải đối mặt với các lớp bảo vệ xung quanh payload, làm cho kỹ thuật dịch ngược trở nên khó khăn.

Một cách tiếp cận hoàn toàn khác, cũng nằm trong phạm vi của những Protector, đó là ảo hóa mã (code virtualization), sử dụng một tập lệnh ảo tùy chỉnh và khác nhau mỗi khi bạn sử dụng nó để bảo vệ ứng dụng của mình. Những Protector kiểu này cũng được sử dụng ở các phiên bản thương mại có trả phí trong ngành công nghiệp game chống các hành vi vi phạm bản quyền. Nhưng bản thân kỹ thuật này cũng đã xâm nhập vào các công đoạn tạo ra phần mềm độc hại của nhiều kẻ phá hoại, cụ thể hơn là được áp dụng trong ransomware (mã độc tống tiền). Phương pháp này cho phép ransomware hoạt động mà không cần giao tiếp với một máy chủ C & C  để sử dụng khóa mã hóa cho hành động mã hóa dữ liệu đòi tiền chuộc. Kỹ thuật bảo vệ này hiệu quả đến mức khóa mã hóa có thể được mã hóa cứng (hardcoded) vào ransomware. Một ví dụ là ransomware Locky Bart sử dụng WProtect, một dự án ảo hóa mã nguồn mở để bảo vệ các khóa mã hóa của mình.

Theo Pieter Arntz (Malwarebytes Labs

TIN LIÊN QUAN
  Trí tuệ nhân tạo hoàn toàn có thể bị đánh lừa Mạng nơ-ron hay mạng thần kinh nhân tạo đang được tung hô do đạt được hiệu suất siêu phàm trong nhiều lĩnh vực, nhưng chúng rất dễ bị đánh lừa. Bạn có thể tham khảo một demo về...
  Giới thiệu Như chúng ta đã biết, các mô hình học sâu (deep learning) gặp phải vấn đề là đói dữ liệu. Các mô hình này yêu cầu đào tạo, huấn luyện với hàng ngàn hoặc thậm chí hàng triệu điểm dữ liệu trước khi đưa ra dự đoán...
Đồng phạm của Rootkit Một rootkit không thể tự lây nhiễm vào các máy tính mục tiêu. Để lan truyền và lây lan một rootkit, những kẻ tấn công tạo ra một mối đe dọa hỗn hợp để khai thác một số lỗ hổng khác nhau và xâm nhập vào...