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 T và V
c, m: kích thước (số dòng) của T và V
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 đoán B-class được giải quyết theo hướng phân tích hành vi [12] như sau:
• Tổ chức hai CSDL dữ liệu: CSDL thứ nhất chứa thông tin về các boot virus đã cập nhật. CSDL thứ hai chứa các MTKĐ sạch phổ biến của các hệđiều hành.
• Cung cấp các tập miền (domain theory) mô tả hành vi đối tượng trong hai CSDL nói trên. Tập miền thứ nhất định nghĩa các hành vi cơ bản của boot virus. Tập miền thứ hai mô tả các tác vụ thực hiện chức năng cơ bản của MTKĐ của các HĐH. Các tập miền được biểu diễn dưới dạng luật.
- 40 -
• Tải đối tượng chẩn đoán bObject vào không gian quan sát đồ thị hóa.
• Phân tích hành vi, phân loại đối tượng chẩn đoán bObject:
- Áp dụng các thuật giải tìm kiếm và suy luận trên không gian quan sát. - Nếu dữ liệu phản ánh các mô tả của tập miền thứ nhất, thông báo tình trạng
nhiễm virus của bObject, xử lý bệnh, báo cáo kết quả, kết thúc.
- Nếu dữ liệu phản ánh các mô tả của tập miền thứ hai, kết luận về tình trạng an toàn của MTKĐ, kết thúc quá trình.
- Ngoài ra, thông báo về tình trạng khác thường của bObject (virus mới, device driver, sector hỏng, định dạng lạ…)
• Kết thúc quá trình, bổ sung thông tin đối tượng vào các CSDL tương ứng (boot virus lạ vào CSDL thứ nhất, MTKĐ sạch vào CSDL thứ hai).
3.3.3.2. Tạo lập cơ sở tri thức
Hành vi (act) là tập hợp các chỉ thị máy thực hiện một tác vụ, ví dụ đọc một cung đĩa chỉ định vào vùng nhớ ở địa chỉ xác định. Một cách đệ quy, hành vi được hình thành từ tập các hành vi khác (gọi là hành vi cơ bản – basic act). Tri thức chuyên gia được biểu diễn dưới dạng luật với ngữ nghĩa:
IF Hành vi p1 AND Hành vi p2 AND
(…) AND
Hành vi pn THEN Hành vi/Kết luận Q
Trong đó pi là hành vi cơ bản thứ i, Q là hành vi ở mức tổng quát. Trong một số trường hợp, Q là hành vi cơ bản của các hành vi tổng quát nào đó. Ở mức suy diễn cuối cùng, Q là kết luận về tình trạng của MTKĐ [62].
Về mặt tổ chức, các hành vi cơ sởđược xây dựng thành các lớp luật con. Các hành vi này là sự kiện trả lại giá trị luận lý, hoặc kết quả của biểu thức tính toán. Lấy ví dụ, khái niệm ‘Is a boot virus’được định nghĩa qua các hành vi cơ bản:
- Lấy kích thước bộ nhớ, và - Giảm kích thước bộ nhớ, và
- Đặt lại kích thước bộ nhớ cho hệđiều hành, và
- Tách vùng nhớ chứa virus ra khỏi phạm vi kiểm soát của hệ thống, và - Chuyển mã lệnh virus vào vùng nhớ này…
Tập tri thức hành vi boot virus được mô tả dưới dạng luật như sau:
Boot virus ← GetMemSize, DecMemSize, SetMemSize, SetMemVi, MovViCode GetMemSize ← ReadMem, GetValue
DecMemSize ← SetNewSize, WriteMem (…)
3.3.3.3. Tổ chức cơ sở dữ liệu