• Thứ Năm, 11/11/2004 11:48 (GMT+7)

    D32 và kỹ thuật nhận dạng virus mã hóa


    Để ngăn các chuyên gia anti-virus phát hiện mã nhận dạng (ID-virus), các hacker gần đây đã tăng cường các biện pháp mã hóa nhằm tạo nhiều thể hiện (instance) khác nhau của virus. Các mẫu virus mã hóa sẽ nhanh chóng thay thế các mẫu virus đã được anti-virus (AV) nhận dạng với nhiều thể hiện khác nhau về kích thước, thuật toán giải mã... Bằng cách này, hacker có thể dễ dàng "qua mặt" các AV mà không cần thiết kế thêm mẫu virus mới.

    Một trong những mánh lới được các hacker ưa chuộng hiện nay là sử dụng các trình nén tự giải (self-extractor) như UPX, PETITE, ASPACK... vốn rất phổ biến trên Internet. Tương tự kịch bản ký sinh tệp thi hành của F-virus, nguyên tắc hoạt động của các công cụ nén tự giải được minh họa như sau:

    1. Giai đoạn nén:

    Phân tích header đối tượng

     Định vị các tham số cần thiết (con trỏ lệnh, ngăn xếp, dữ liệu, bộ nhớ...)

     Nén mã lệnh và dữ liệu

     Chèn thủ tục giải nén vào đối tượng

     Thay con trỏ lệnh bằng con trỏ đến thủ tục giải nén

     Điều chỉnh header đối tượng. Ghi file. Đóng file

    2. Giai đoạn giải nén:

     

    Hình 1: Trước khi mã hóa nén, IP trỏ đến thủ tục kích hoạt ứng dụng trong phân khu Code.

     Thi hành thủ tục giải nén mã lệnh và dữ liệu

     Tái định vị các tham số (con trỏ lệnh, ngăn xếp, dữ liệu gốc...)

     Thiết lập môi trường (bộ nhớ mã lệnh, ngăn xếp, dữ liệu...)

     Trao quyền cho con trỏ lệnh gốc

    Ngoài việc giảm thiểu kích thước đối tượng nén, các công cụ này còn "biếu không" thuật toán giải mã (decode) cài vào thủ tục kích hoạt ứng dụng. Do thuật toán giải nén thực thi như nhau cho mọi đối tượng thi hành nên các virus sử dụng cùng công cụ nén đều có chung mã nhận dạng (ID-virus là tập con của tập Decode). Vấn đề càng phức tạp khi khá nhiều ứng dụng cũng sử dụng self-extractor khiến AV không thể phân biệt giữa virus nén và các ứng dụng có gắn thủ tục tự giải nén. Điều này lý giải sự nhầm lẫn của các AV trong thời gian gần đây: trong khi các virus ung dung bước qua hàng rào cảnh giới thì các ứng dụng sạch bị chặn lại ở chốt kiểm soát. Nếu chẳng may bị phát hiện, các hacker chỉ cần đổi công cụ nén cho virus là mọi việc lại đâu vào đấy.

    Hình 2: Sau khi mã hóa, các thành phần của ứng dụng được nén chặt (cData, cStack, cCode). cIP được thiết lập để trỏ đến thủ tục Decode. Giải nén hoàn tất, Decode thiết lập IP về giá trị ban đầu và trao quyền cho ứng dụng.

     

    Để giải quyết bài toán nhận dạng virus mã hóa, một số AV thỏa hiệp với các nhà cung cấp trình nén tự giải để có chìa khóa giải mã. Thoạt đầu giải pháp này tỏ ra khá hiệu quả nhưng về sau gặp nhiều khó khăn vì các hacker đã tìm ra vị trí và độ dài xâu giải mã. Kết quả là AV không thể giải mã thân virus do ID-Decode đã bị thay đổi

    Khi nghiên cứu quá trình cải tiến độ chính xác của bài toán tính "khoảng cách" các điểm mô tả dữ liệu chẩn đoán trong bài "D32 với kỹ thuật nhận dạng virus hướng tiếp cận Máy học" (TGVT A số 09/2004, trang 142), chúng tôi đã rút ra một số quy luật cơ bản cho phép nhận dạng và phân biệt khá chính xác đối tượng chẩn đoán để phân bổ vào một trong hai lớp chắc chắn sạch và có thể nhiễm.

     

     

    CẬP NHẬT D32

     

     

     

    Cập nhật D32 (25-9-2004). Phiên bản này cập nhật trojan WebMoney.gen.trj.W32 chuyên đánh cắp banking service account của người sử dụng. Đây là loại "thám báo" trong lĩnh vực giao dịch tài chính ngân hàng đầu tiên được phát hiện ở Việt Nam. Ngoài ra D32 (25-09-04) còn cập nhật các sâu trình Lovgate.p.worm.W32, Lovgate.px.worm.W32, Lovgate.pz.worm.W32, trojan Backdoor.cct.trj.W32 và virus Maya4608.W32. Lovgate hiện lây lan rất mạnh với nhiều biến thể. Chúng thường giả mạo địa chỉ email người gửi để phát tán thư kèm file đính kèm virus nén theo định dạng ZIP với nội dung:
    "It's the long-awaited film version of the Broadway hit. The message sent as a binary attachment".

     

    Các phần tử trong lớp thứ hai sẽ được tiếp tục phân tích để loại dần mức độ nghi ngờ. Phần tử đáng ngờ nhất sẽ được khám xét tỉ mỉ để có kết luận sau cùng. Để nhận dạng các loại sâu trình mã hóa không phụ thuộc vào thuật toán giải mã, D32 bổ sung các thuộc tính mở rộng không phụ thuộc vào thuật toán giải mã đối tượng. Tuy chưa áp dụng hoàn toàn cho tất cả các lớp virus, phương pháp này cũng mở ra nhiều triển vọng cho bài toán nhận dạng virus đã cập nhật nói chung và nhận dạng biến thể virus mới nói riêng. Trong danh sách virus của D32, các biến thể virus này được ký hiệu bằng "chữ lót" x (hoặc vx). D32 dự đoán một ngày không xa, các hacker có thể sẽ thay đổi thuật toán mã hóa của các dòng sâu trình này. Điểm mấu chốt của vấn đề nằm ở chỗ dù được mã hóa bằng thuật toán nào, sâu trình vẫn phải tự giải mã trước khi thực hiện các thao tác tiếp theo. Mục tiêu của bài toán phân hoạch của D32 là rút cho được các thuộc tính điều khiển quá trình tự giải mã này.

    Giới thiệu kỹ thuật nhận dạng chống mã hóa, chúng tôi muốn chia sẻ kinh nghiệm của D32 trong quá trình nghiên cứu và triển khai đề tài anti-virus thông minh. Chúng tôi rất mong người sử dụng máy tính hãy gửi mẫu virus mới (kể cả các virus có chữ lót "x" hoặc "vx") cho D32. Đây là yếu tố rất quan trọng, ảnh hưởng trực tiếp đến chất lượng các luật rút ra từ quá trình khai khoáng dữ liệu (Data Mining) trên cơ sở dữ liệu virus.

    Cần Thơ, tháng 9-2004
    Trương Minh Nhật Quang

    ID: A0410_130