Phân hoạch bài toán chẩn đoán virus máy tính

Một phần của tài liệu luận án tiến sĩ toán học chuyên nghành ĐẢM BẢO TOÁN HỌC CHO MÁY TÍNH VÀ HỆ THỐNG TÍNH TOÁN đồ án TIẾP CẬN MÁY HỌC VÀ HỆ CHUYÊN GIA ĐỂ NHẬN DẠNG, PHÁT HIỆN VIRUS MÁY TÍNH (Trang 49)

Trong các bài toán nhận dạng mẫu, tri thức nguyên liệu của hệ có liên quan mật thiết với dạng thức dữ liệu (ví dụ dữ liệu thô ở mức bit) [8]. Dựa vào đặc trưng dữ liệu của các loại virus, bài toán chẩn đoán virus máy tính được phân thành năm bài toán con. Mỗi bài toán có tiếp cận khác nhau, dùng chẩn đoán các lớp virus khác nhau (Bảng 3.1), trình bày theo cấp độ học từđơn giản đến phức tạp như sau:

1. Bài toán 1: chẩn đoán lớp virus C-class lây trên lớp văn bản (7-bit ASCII text files) theo cơ chế học vẹt.

2. Bài toán 2: chẩn đoán lớp virus D-class (lây trên lớp tư liệu MS Office,

Document files) theo cơ chế học tương tự.

3. Bài toán 3: chẩn đoán lớp virus B-class (lây vào mẫu tin khởi động, Boot record) theo cơ chế học bằng chỉ dẫn.

4. Bài toán 4: chẩn đoán lớp virus E-class (lây trên lớp thi hành, Executable files) theo cơ chế học tình huống.

5. Bài toán 5: chẩn đoán lớp sâu trình, trojan horse A-class (lớp ứng dụng độc lập, Stand Alone program files) theo cơ chế học quy nạp.

Mỗi bài toán sử dụng CSDL virus đặc thù của lớp:

S = {SA, SB, SC, SD, SE}

Trong đó các SA, SB, SC, SD SE là tập virus mẫu của các lớp A-class, B- class, C-class, D-class và E-class; aObject, bObject, cObject, dObjecteObject là các điểm dữ liệu trong không gian chẩn đoán của mỗi bài toán, theo thứ tựđó.

Bảng 3.1: Các lớp virus cơ bản

tt Ký hiệu Tên lớp Mô tả Đặdc trữ liưệu ng Loại virus

1 A-class Stand Alone program Ứng dụng độc lập 16/32 bit Sâu, Trojan 2 B-class Boot record Mẫu tin khởi động 16 bit Boot virus 3 C-class ASCII text Văn bản 7 bit 7-bit ASCII text Sâu, File virus 4 D-class Document macro VBA Macro Mã lệnh VBA Macro virus 5 E-class Executable file Tập thi hành 16/32 bit File virus

3.2. Các độđo chất lượng chẩn đoán

Đểđánh giá hiệu quả chẩn đoán, đề tài sử dụng các độ đo chất lượng:

- Độ chính xác là tỷ lệ phát hiện chính xác virus (gọi đúng tên virus) có trong tập chẩn đoán so với số mẫu virus tương ứng đã cập nhật trong CSDL:

Malware detection = Detections/AssociatedVirusesInDatabase

- Độ dự báo là khả năng cảnh báo có virus trên tập kiểm tra (gọi không đúng tên hoặc chưa xác định tên virus cụ thể), tính bằng tỷ số giữa số cảnh báo với hiệu của số virus thử nghiệm và số lượng virus được phát hiện chính xác:

Proactive detection = Proactions/(VirusesInDatatest - Detections) - Độ tin cậy là tỷ số của số cảnh báo so với các mối nguy hiểm thật sự đang

tiềm ẩn trên tập dữ liệu chẩn đoán:

Reliability = (Detections+Proactions)/VirusesInDatatest

3.3. Cơ chế máy học chẩn đoán virus máy tính 3.3.1. Bài toán 1: Chẩn đoán lớp virus C-class 3.3.1. Bài toán 1: Chẩn đoán lớp virus C-class

3.3.1.1. Phát biểu bài toán

Virus text lây nhiễm bằng cách chèn hoặc tạo mới các câu lệnh script vào đối tượng. Gọi N là tập số nguyên dương, W={w1, w2, …, wn} là tập từ khóa các ngôn ngữ kịch bản (script language) được HĐH hỗ trợ, T là điểm chẩn đoán (cObject), V

là đối tượng lây, bài toán chẩn đoán lớp virus C-class được phát biểu như sau: T = {ti∀ i ÷ 1..c; c ∈ N}; t = {ai’, cr; ∀ i’÷ 32..127}

- 32 -

Trong đó: ai’, bj’: tập ký tự ASCII 7 bit của TV

c, m: kích thước (số dòng) của TV

cr = {#13, #10}: ký tự xuống dòng (crlf, carriage - line feed) Đối tượng T nhiễm virus V khi và chỉ khi V⊆ T.

3.3.1.2. Tổ chức cơ sở dữ liệu và trích chọn đặc trưng

Mỗi mẫu tin virus trong CSDL SC có dạng:

TextVirus = <Tên gọi, Kích thước, Ngày cập nhật, Phiên bản, Tập mã lệnh> Ý nghĩa các thuộc tính virus trong CSDL SC như sau:

- Tên gọi: tên virus (do chuyên gia đặt) - Kích thước: độ dài mã lệnh virus

- Ngày cập nhật: ngày bổ sung virus vào CSDL, cùng với thuộc tính Phiên bản

dùng phân loại bệnh mới hay cũ trong mô hình AMKBDở Bài toán 4. - Phiên bản: số hiệu phát hành CSDL

- Tập mã lệnh: nội dung virus đã mật hóa, tránh các AV phát hiện nhầm [17] Quá trình trích chọn đặc trưng được thực hiện như sau:

- Xác định đối tượng chẩn đoán T sao cho T - W≠∅.

- Tổ chức ma trận vector chuỗi XC(p, k) k dòng, mỗi dòng có tối đa p ký tự. - Ánh xạ các dòng dữ liệu của T vào ma trận XC.

3.3.1.3. Thuật toán chẩn đoán lớp C-class

Thuật toán c-Diagnose (Hình 3.1) tìm và xử lý chuỗi con V trong chuỗi mẹT

trên không gian X. CSDL có dạng SC = {V1, V2,…, Vn}. Với mỗi T, xác định:

Trường hợp 1: T ⊃Vi∀ (i =1 ..n), kết luận đối tượng T nhiễm virus Vi (tức là T = T0 ∪ V). Thực hiện các phép toán:

- Xác định vật chủ T0 bằng phép hiệu T0 = CT(Vi) = T \ Vi

∀ CT(Vi) là phần bù của Vi trong T - Loại bỏ virus: Vi←∅

Trường hợp 2: T = Vi∀ (i =1..n), kết luận đối tượng T là sâu trình Vi. Do sâu trình không có vật chủ nên thực hiện Vi←∅.

(1) i ←1

(2) found ← FALSE

(3) WHILE (i <= k) AND (NOT found) DO (4) IF (X[i]= V) THEN found ← TRUE (5) ELSE i ← i +1

(6) IF found THEN //phát hiện virus (7) IF i=1 THEN Delete(T) //xóa sâu trình

(8) ELSE Delete(T, i, m) //gỡ virus khỏi đối tượng

Hình 3.1:Thuật toán chẩn đoán lớp C-class

3.3.1.4. Phân tích, đánh giá thuật toán chẩn đoán lớp C-class

Bản chất của bài toán chẩn đoán C-class là học vẹt. Tri thức của hệ được chuyên gia cung cấp dưới dạng 〈Mẫu dữ liệu, Khẳng định virus〉. Các lệnh (1), (2), (3) và (6) nối tiếp nhau nên độ phức tạp của thuật toán là độ phức tạp lớn nhất của các lệnh này. Do các lệnh (1), (2), (4), (6), (7) và (8) đều có độ phức tạp O(1) nên độ phức tạp chủ yếu nằm ở vòng lặp while. Trường hợp xấu nhất, vòng lặp thực hiện k

lần, như vậy độ phức tạp của thuật toán là O(n).

Quá trình đánh giá kết quả bài toán C-class được thực hiện như sau:

• Chuẩn bị dữ liệu:

- Chọn ngẫu nhiên 2/3 mẫu virus khác biệt từ tập virus thử nghiệm - Cập nhật các virus này vào CSDL SC

- Trộn các mẫu virus vào tập Xđã có sẵn nhiều loại dữ liệu khác nhau

• Tiến hành thực nghiệm:

- Áp dụng thuật giải chẩn đoán C-class trên tập X

- Ghi nhận số virus phát hiện chính xác, số mẫu cảnh báo, số virus bị bỏ sót - Thay số liệu, lập lại thí nghiệm nhiều lần

• Đánh giá thuật toán:

- Tính toán độ chính xác, độ dự báo và độ tin cậy sau mỗi lần thí nghiệm - Tính giá trị trung bình các độđo chất lượng (Bảng 3.2)

- 34 -

Bảng 3.2: Kết quả thực nghiệm bài toán chẩn đoán lớp virus C-class

Lần thSửố nghi virus ệm cSậốp nh virus ật phát hiSố virus ện cSảốnh báo virus Sbốỏ virus sót Độxác (%) chính báo (%) Độ dự cĐộậy (%) tin

1 1564 1042 1035 31 498 99.33 5.86 68.16 2 1452 968 958 23 471 98.97 4.66 67.56 3 1572 1048 1040 32 500 99.24 6.02 68.19 4 1315 877 868 19 428 99.01 4.25 67.45 5 1389 926 914 20 455 98.70 4.21 67.24 Trung bình: 99.05 5.00 67.72

Thuật toán có độ chính xác cao (99.05%). Tỷ lệ lỗi do các mẫu virus thử nghiệm có sự ghép nối mã lệnh (phát hiện virus thứ nhất trước khi truy vấn trọn vẹn virus thứ hai). Tuy nhiên với tỷ lệ dự báo 5% (chủ yếu là gọi sai tên virus), thuật toán c-Diagnose khó đưa ra khẳng định dương khi chẩn đoán các virus mới (là các mẫu virus chưa cập nhật trong CSDL SC). Khi tập mẫu virus text đủ lớn, có thể bổ sung các mô hình học tiên tiến khác trên lớp dữ liệu văn bản text.

3.3.2. Bài toán 2: Chẩn đoán lớp virus D-class 3.3.2.1. Phát biểu bài toán 3.3.2.1. Phát biểu bài toán

D-class là lớp các virus macro lây vào tư liệu Microsoft Office, loại virus lợi dụng tập mã lệnh VBA (Visual Basic Application) để thực hiện các hoạt động lây nhiễm trên môi trường ứng dụng MSOffice [66]. Thông thường, các macro thi hành khi người dùng kích hoạt bằng lệnh Run. Không đợi (và không bao giờ đợi) ra lệnh, các virus macro tự thi hành nhờ các trigger thực thi tự động (như AutoExec) khi người dùng mở tư liệu MS Office.

Hình 3.2 phân loại các đối tượng chẩn đoán thuộc lớp tư liệu MSOffice. Phân loại này cho thấy chỉ đối tượng nào có macro mới có nguy cơ nhiễm virus macro. Trong mô hình học khám phá tương đồng, các hàm R nhận dạng có dạng:

(Xi = Vi) ^…^ (Xk= Vk)

Trong đó mỗi Xj là các biến, Vj là các giá trị có thể có của các biến này, các phép tuyển của những giá trị có thể có, hoặc tập của những giá trị này. Theo quy ước, khi một biến mang tất cả các giá trị có thể có của nó trong một hàm nhận dạng

thì nó có thểđược lược bỏ. Một hàm nhận dạng có trị TRUE đối với đối tượng chẩn đoán dObject khi các giá trị của các biến của dObject là một trong những hàm đó. Lúc đó ta nói rằng hàm nhận dạng được đối tượng dObject. Nếu không nhận dạng được đối tượng (hàm trả về trị FALSE), ta nói rằng hàm loại bỏ đối tượng này. Trong không gian chẩn đoán N đối tượng, khi hàm R nhận dạng nhiều hơn một đối tượng, tập con của các giá trị mà nó nhận dạng gọi là được nhận dạng bởi R. Ngược lại, cho một tập con các đối tượng, ta có thể tạo một hàm nhận dạng được phát sinh bởi tập con này bằng cách lấy phép tuyển các giá trị của các biến của chúng [9].

Ứng với mỗi đối tượng chẩn đoán dObject trong không gian SD, hệ sẽ xây dựng các hàm nhận dạng R sao cho có thể nhận dạng (và phân loại) các đối tượng có nhiễm virus macro hay không. Nếu có thì nhiễm virus macro đã biết nào (thuộc một trong các con Vj nào của nút “Virus macro”). Nếu không xác định được giá trị Vj cụ thể, có thể kết luận dObject nhiễm một loại virus macro mới. Cuối cùng, rút luật nhận dạng để bổ sung vào CSDL và CSTT của hệ.

3.3.2.2. Tổ chức cơ sở dữ liệu

Mẫu virus macro trong CSDL SD của bài toán D-class được tổ chức như sau:

MacroVirus = <Tên gọi, Ngày cập nhật, Phiên bản, Tập macro>

Trong đó thuộc tính Tập macro chứa danh sách các macro của virus. Lấy ví dụ, tập macro của virus Concept là chuỗi các macro name dạng:

“AutoOpen, PayLoad, Vclose, AutoExit”

Tư liệu Office

Có macro Không macro

Chờ thi hành Tự chạy

Người dùng Virus macro

- 36 -

Khi xử lý đối tượng (là virus mẫu hay đối tượng chẩn đoán), hệ sẽ trích ra danh sách các macro name của đối tượng rồi cập nhật vào CSDL (đối với mẫu virus) hoặc phân tích và phát hiện mối nguy hiểm tiềm ẩn (đối với đối tượng cần chẩn đoán). Bằng cách này, quá trình tổ chức không gian tìm kiếm và trích chọn đặc trưng tập mẫu virus (trên máy chuyên gia ở giai đoạn học) và đối tượng chẩn đoán (trên máy người dùng ở giai đoạn xử lý) là như nhau.

3.3.2.3. Tổ chức không gian tìm kiếm

Mục tiêu của quá trình trích chọn đặc trưng nhằm khẳng định các phát biểu “dObject là tư liệu MSOffice” và “dObject có macro tự chạy”. Đầu tiên, tiến hành phân loại đối tượng theo đặc trưng dữ liệu (DOC, XLS hay PPT) và xác định các định dạng con (sub-format) cho từng phiên bản MSOffice. Kế tiếp, đọc và phân tích danh sách macro cho từng khối (paragraph) dữ liệu 512-bytes của dObject (xem Phụ lục 2). Cuối cùng, ánh xạ các khối dữ liệu có macro vào không gian tìm kiếm.

Với mỗi đối tượng chẩn đoán dObject, không gian tìm kiếm được tổ chức dưới dạng ma trận vectơXD(idx, mCount, mList) như hình 3.3, trong đó:

- idx: số thứ tự paragraph

- mCount: số macro có trong paragraph (mCount>0) - mList: danh sách mCount macro của paragraph

Danh sách liên kết các macro của mỗi paragraph được tổ chức như sau: - mName: tên macro

- mType: có tự thi hành hay không (true/false)

- next: trỏđến macro kế (macro cuối cùng, next = nil)

idx mCount mList1 Macro1 mType next (…) MacroN mType nil

… … … … … … …

idxk mCountk mListk Macrok mType nil

3.3.2.4. Trích chọn đặc trưng

Tập hành vi macro là nguyên liệu xây dựng các hàm nhận dạng. Thuật giải trích chọn tập MacroSet của dObject từ không gian chẩn đoán XD như sau:

• Khởi tạo tập MacroSet rỗng

• Đối với mỗi phần tử thuộc ma trận chẩn đoán XD, thực hiện: - Duyệt mCount macro

- Nếu macro hiện tại là mới, đưa vào danh sách MacroSet (Hình 3.4).

Trong thuật toán trích chọn tập hành vi virus macro ở hình 3.4, các lệnh (1), (3) và (8) có độ phức tạp O(1). Độ phức tạp của thuật toán phụ thuộc vào các lệnh (2) và (4). Trung bình mỗi virus macro có khoảng 10 hành vi (và cũng từng ấy số hành vi nhiều nhất trong mỗi paragraph). Hơn nữa, kích thước của các đối tượng chẩn đoán có thể lên đến hàng trăm MB nên i>>j. Vì vậy, độ phức tạp của lệnh (4) xấp xỉO(1). Do đó độ phức tạp của thuật toán là O(n).

(1) MacroSet ← ∅

(2) FOR i = 1 TO SizeOf(X) DO (3) aMacro X[i].mList

(4) FOR j = 1 TO X[i].mCount DO

(5) IF (aMacro.Next<>nil) AND (Pos(aMacro.Name, MacroSet)=0) (6) THEN Insert(MacroSet, aMacro.Name)

(7) ENDIF

(8) aMacro aMacro.Next (9) ENDFOR

(10) ENDFOR

Hình 3.4:Thuật toán trích chọn tập hành vi chẩn đoán lớp D-class

3.3.2.5. Luật nhận dạng virus lớp D-class

Trong hệ MAV, các hàm R nhận dạng đối tượng chẩn đoán thuộc lớp tư liệu MSOffice được cài đặt như sau:

- 38 -

X1 = Tư liệu MSOffice (True/False)

X2 = Có macro (True/False)

X3 = Macro tự chạy (True/False)

X4 = Nhiễm virus macro (True/False)

X5 = Macro 1 (True/False)

X6 = Macro 2 (True/False) (…)

Hàm nhận dạng đối tượng dObject có chứa virus macro đã biết (là một trong n virus macro đã cập nhật) có dạng:

R: (X1= true) ^ (X2=true) ^ (X3 = true) ^ (X4 =true) ^ (X4+i =true) ∀ i = 1..n Luật nhận dạng virus macro Mđược phát biểu như sau:

Luật 1: IF dObject là tư liệu MSOffice

AND dObject có macro

AND Macro này thuộc loại tự chạy THEN dObject là nguy hiểm

Luật 2: IF dObject là nguy hiểm

AND Macro có tên là Macro i (i=1..n) THEN Đối tượng nhiễm virus macro M[i] Luật nhận dạng virus macro mớiđược phát biểu như sau:

Luật 3: IF dObject là nguy hiểm

AND dObject không chứa các macro tự tạo THEN dObject nhiễm virus macro mới

Luật thực thi khi chẩn đoán đối tượng nhiễm virus macro như sau:

Luật 4: IF dObject nhiễm virus macro M[i] OR dObject nhiễm virus macro mới AND Người dùng đồng ý xóa macro THEN Loại trừ macro của dObject

3.3.2.6. Thực nghiệm bài toán chẩn đoán lớp D-class

Áp dụng quy trình thực nghiệm nhưđối với bài toán C-class, kết quả nhận được trình bày trong bảng 3.3.

Bảng 3.3: Kết quả thực nghiệm bài toán chẩn đoán lớp virus D-class

Lần thSửố nghi virus ệm cSậốp nh virus ật phát hiSố virus ện cSảốnh báo virus Sbốỏ virus sót Độxác (%) chính báo (%) Độ dự cĐộậy (%) tin

1 4256 2837 2793 1378 85 98.45 94.19 98.00 2 4122 2748 2702 1325 95 98.33 93.31 97.70 3 3946 2631 2597 1286 63 98.72 95.33 98.40 4 3678 2452 2431 1185 62 99.14 95.03 98.31 5 4320 2880 2849 1411 60 98.92 95.92 98.61 Trung bình: 98.71 94.76 98.21

Kết quả này cho thấy mô hình học tương đồng của bài toán D-class dự báo được 94.76% mẫu virus macro trên tập dữ liệu thử nghiệm. Tỷ lệ thất bại do các mẫu dữ liệu có mật khẩu và các trường hợp macro virus chen vào các macro tự tạo. Hướng giải quyết là thiết lập bộ tinh chỉnh luật dưới dạng tùy chọn điều khiển trạng thái các mệnh đề “dObject không chứa các macro tự tạo” và “Đồng ý xóa macro”.

3.3.3. Bài toán 3: Chẩn đoán lớp virus B-class 3.3.3.1. Phát biểu bài toán 3.3.3.1. Phát biểu bài toán

Lớp B-class chứa các boot virus lây vào các MTKĐ trên sector đầu tiên của đĩa mềm khởi động (xem Phụ lục 1). Có hai vấn đề cần giải quyết là (i) nhận dạng các boot virus cũ và (ii) phát hiện các boot virus mới trên MTKĐ.

Dù được định dạng (format) dưới bất kỳ HĐH nào, các MTKĐ trên đĩa đều có nhiệm vụ tìm và tải các mô-đun khởi động sơ cấp của HĐH vào bộ nhớ rồi trao quyền để máy tính tiếp tục quá trình khởi động. Nếu một MTKĐ nào thực hiện các tác vụ lạ, nó không phải là MTKĐ hợp lệ và có thể là boot virus mới. Bài toán chẩn

Một phần của tài liệu luận án tiến sĩ toán học chuyên nghành ĐẢM BẢO TOÁN HỌC CHO MÁY TÍNH VÀ HỆ THỐNG TÍNH TOÁN đồ án TIẾP CẬN MÁY HỌC VÀ HỆ CHUYÊN GIA ĐỂ NHẬN DẠNG, PHÁT HIỆN VIRUS MÁY TÍNH (Trang 49)