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 đố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 đố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 tố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 tố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 đố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 tố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 tốn trích chọn tập hành vi chẩn đố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 đố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 đố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 tốn chẩn đốn lớp D-class
Áp dụng quy trình thực nghiệm nhưđối với bài tố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 tốn chẩn đố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 tố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 tốn 3: Chẩn đốn lớp virus B-class 3.3.3.1. Phát biểu bài tốn 3.3.3.1. Phát biểu bài tố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 tốn chẩn đố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 đố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 đố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 tồn của MTKĐ, kết thúc quá trình.
- Ngồ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 tố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 số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
Khác với các virus phổ biến lưu mã lệnh trong tổ chức file, boot virus chèn mã lệnh vào MTKĐ trên sector đầu tiên của đĩa (xem Phụ lục 2, Cấu trúc mẫu tin khởi động). Các mẫu tin boot virus trong CSDL SB cĩ dạng:
BootVirus = <Tên gọi, Kích thước, Ngày cập nhật, Phiên bản, Tập chỉ thị> Thuộc tính Kích thước nhận các giá trị là bội số của độ dài sector (512 byte). Thuộc tính Tập chỉ thị chứa mã thi hành của boot virus, gồm hai phần mã nhảy 3- byte (nhảy ngang qua bảng thơng sốđĩa) và mã kích hoạt. Do mỗi sector đĩa dài 512 byte nên lệnh nhảy đầu MTKĐ chỉ cĩ thể là nhảy gần (jump short) dưới 128 byte (mã E8) hoặc trên 128 byte (mã E9). Địa chỉ offset phần mã kích hoạt được định vị ngay sau lệnh nhảy bằng cách cộng thêm 2 (đối với E8) hoặc 3 byte (đối với E9) vào byte thứ hai của mã nhảy (ví dụ mã nhảy E85890, offset mã kích hoạt là 5A).
3.3.3.4. Trích chọn đặc trưng
Mục tiêu của bước này nhằm tái hiện các hành vi của đối tượng trong thế giới thực. Đầu tiên, sử dụng một bảng tra chỉ thị dạng <Mã chỉ thị, Độ dài> để dịch ngược các lệnh thi hành từ Tập chỉ thị. Kế tiếp, phân tích nội dung mã lệnh của đối tượng để xây dựng tập các tiền đề trong luật. Cuối cùng, tổ chức tập luật kết quả cho bước phân tích hành vi tiếp theo.
Bảng tra chỉ thị dùng để cung cấp thơng tin thơng dịch (interpreter) ý nghĩa mã lệnh và định vị offset mã lệnh tiếp theo trong chuỗi mã thi hành của đối tượng. Ví dụ luật GetMemSize mơ tả hành vi Lấy kích thước bộ nhớ như sau:
- 42 -
NẾU Code = $8B //mã chỉ thị MOV
Và NextCode = $07 //mã chỉ thị MOV AX,[BX]
Và BX = $0413 //BX: index register
Và DS = 0 //DS: segment register
THÌ Lấy kích thước bộ nhớ
Với cách tổ chức này, tập tri thức mơ tả hành vi của boot virus là rất phong phú. Trong ví dụ trên, luật này chỉ mới mơ tả các hành vi:
- Cĩ sử dụng AX làm ValueRegister mà chưa xét các BX, CX, DX, SI, DI… - Cĩ sử dụng BX làm IndexRegister mà chưa xét SI, DI, BP…
- Cĩ sử dụng DS làm SegmentRegister mà chưa xét ES, SS…
Tương tự, một tập tri thức hành vi của các MTKĐ sạch cũng được xây dựng làm cơ sởđối chiếu cho quá trình chẩn đốn bObject.
3.3.3.5. Xây dựng khơng gian trạng thái
Trong kiến trúc IBM-PC, MTKĐ được ROM-BIOS nạp vào địa chỉ (0000:$7C00) nên các địa chỉ tham chiếu trong MTKĐđều được xác định tuyệt đối. Để phát hiện các hành vi của boot virus trong bộ nhớ ở chế độ thực, một máy ảo (virtual machine) [13] được sử dụng với các đặc tính kỹ thuật cơ bản như sau:
• Bộ chỉ thị: bộ chỉ thị của máy ảo tương thích với bộ chỉ thị của máy PC dùng họ vi xử lý 80x86/Pentium trong chếđộ thực (khơng gồm các chỉ thị ở mức hệ điều hành, vốn chưa sử dụng trong quá trình khởi động máy).
• Bộ xử lý lệnh: tương thích với cơ chế lấy/phân tích lệnh của bộ vi xử lý Intel 80x86/Pentium trong chếđộ thực. Các chỉ thị của bộ xử lý lệnh được chia làm hai nhĩm: các lệnh tuần tự và các lệnh nhảy. Khi gặp lệnh nhảy, một hàm lượng giá đặc biệt sẽđược triệu gọi để lựa chọn hướng xử lý tiếp theo.
• Bộ nhớ làm việc: bao gồm bộ nhớ cho trình và bộ nhớ dữ liệu.
• Bộ nhớ cho trình là khơng gian trạng thái của mơtơ suy diễn trên máy thực. Để bảo vệ máy thực, một hàm ánh xạ chuyển đổi địa chỉ tương đối trên máy ảo thành địa chỉ luận lý tương ứng trên máy thật. Bộ nhớ cho trình cũng chứa các biến bộ nhớ “thanh ghi” và “cờ hiệu” giống như cách tổ chức của CPU.
• Bộ nhớ dữ liệu được tổ chức dưới dạng ngăn xếp. Dữ liệu của các chương trình con (địa chỉ lệnh đang thực hiện, địa chỉ trỏ đến lệnh sẽ thực thi, địa chỉ trở về…) sẽđược xếp chồng vào ngăn xếp của máy ảo theo nguyên tắc LIFO.
Khơng gian trạng thái được tổ chức dưới dạng cây nhị phân [14] như sau: - Nút gốc đặc tả sự kiện kích hoạt điểm vào lệnh đầu tiên
- Nhánh đặc tả tình huống thực hiện các lệnh tuần tự
- Nút con đặc tả các biến cố rẽ hướng thực hiện của các lệnh nhảy
- Nút lá đặc tảđiểm dừng (khi kết thúc chẩn đốn hoặc phát hiện boot virus) Đối với các lệnh lặp, xử lý chu trình như một lệnh đơn tuần tự với cây nhị phân cục bộ trong lịng chu trình (Hình 3.5).
3.3.3.6. Cơ chế phân tích
Dựa vào các tập luật mơ tả hành vi để phát hiện các thao tác của boot virus, quá trình lần vết trên cây thực hiện theo phương pháp tìm kiếm với tri thức bổ sung [63]. Khi duyệt cây, hành vi của bObject được thu thập dần vào danh sách tác vụ. Mỗi lần cập nhật hành vi, bộ phân tích sẽđánh giá danh sách này đã hội đủ các hành vi kết luận (đạt đến mức khái niệm) hay chưa để quyết định duyệt tiếp hay dừng. Khi duyệt đến nút (biến cố rẽ nhánh), bộ xử lý lệnh máy ảo sẽ gọi một hàm lượng giá “thanh ghi cờ” để quyết định hướng rẽ nhánh thực hiện (Hình 3.6).
Nếu phát hiện virus mới, hệ sẽ tự trích chọn đặc trưng của MTKĐ nhiễm rồi bổ sung vào CSDL để chẩn đốn các MTKĐ khác trong tương lai.
Begin
- 44 -
3.3.3.7. Đánh giá độ phức tạp và kết quả thực nghiệm
Giả sử cây chỉ thị nhị phân cĩ n nút. Do chỉ duyệt trên một nhánh nào đĩ của cây nhị phân nên mỗi lần duyệt, số nút giảm đi một nửa. Trong trường hợp xấu nhất, thuật giải tìm kiếm phải thực hiện i lần sao cho 2i = n, tức là i = logn. Do đĩ, độ phức tạp của thuật giải xử lý lệnh của máy ảo cĩ độ phức tạp là O(logn).
Trong thực nghiệm, máy ảo chẩn đốn B-class của MAV cĩ: - Bộ nhớ làm việc 64 KB RAM
- 256 vector ngắt 4-byte đặt tại địa chỉ 0000:0000 của máy ảo - 512 byte thơng tin điều khiển của máy ảo, timer cục bộ…
- Các biến nhớ đĩng vai trị của các thanh ghi gồm cờ nhớ, AX, BX, CX, DX, CS, ES, DS, SS, SP, BP, DI, SI và IP.
- Bộ chỉ thị và bộ xử lý lệnh tương thích CPU 80x86/Pentium
Để máy ảo hoạt động trên HĐH Windows32, MAV xây dựng thêm một hàm ánh xạđịa chỉ bộ nhớ giữa hai cơ chếđịnh vị địa chỉ tương đối (segment:offset) của MSDOS và định vịđịa chỉ bộ nhớ phẳng (flat memory) của Windows 32.
Bảng 3.4: Kết quả thực nghiệm bài tốn chẩn đốn lớp virus B-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 180 120 118 55 7 98.33 88.71 96.11 2 174 116 114 51 9 98.28 85.00 94.83 3 184 123 119 57 8 97.01 87.69 95.65 4 168 112 110 49 9 98.21 84.48 94.64 5 178 119 116 53 9 97.75 85.48 94.94 Trung bình: 97.92 86.27 95.24 Hình 3.6: Hàm bổ sung tri thức Heuristic function (1) (2) (3)
Kết quả thực nghiệm (bảng 3.4) cho thấy bài tốn B-class cĩ độ tin cậy trên 95%. Các trường hợp nhầm tên do các virus sử dụng cùng tập lệnh khởi động nhưng điểm vào lệnh khác nhau. Các mẫu thất bại do virus sử dụng kỹ thuật mã hĩa phức tạp (số vịng lặp giải mã lớn gây tràn ngăn xếp máy ảo). Chỉ sử dụng tập miền, bài tốn B-class cĩ thể dự báo boot virus khơng cần CSDL virus mẫu. Tuy nhiên nhược điểm của phương pháp này là phức tạp trong cài đặt.
3.3.4. Bài tốn 4: Chẩn đốn lớp virus E-class 3.3.4.1. Phát biểu bài tốn 3.3.4.1. Phát biểu bài tốn
Lớp E-class chứa các file virus lây vào tập thi hành (COM, EXE…)[5]. Với mỗi đối tượng eObject, nhiệm vụ của bài tốn là (i) nhận dạng các file virus đã biết và (ii) dự báo khả năng eObject nhiễm một loại file virus lạ nào đĩ.
Nhiệm vụ thứ nhất sử dụng mẫu nhận dạng virus do chuyên gia cập nhật thủ cơng [46]. Nhiệm vụ thứ hai được giải quyết bằng mơ hình kết hợp CSDL (chứa thơng tin đối tượng chẩn đốn) và CSTT (chứa tập luật nhận dạng virus). Mơ hình
AMKBD (Association Model of Knowledge Base and Database) [55] cho phép phối hợp linh hoạt các phương pháp chẩn đốn truyền thống và chẩn đốn dựa trên luật để giải quyết đồng thời hai nhiệm vụ cơ bản của bài tốn chẩn đốn E-class.
3.3.4.2. Tổ chức cơ sở dữ liệu virus, trích chọn đặc trưng
Cơ sở dữ liệu SE chứa các mẫu tin mơ tả file virus dạng:
FileVirus = <Tên gọi, Kích thước, Ngày cập nhật, Phiên bản, Tập hành vi> Trong đĩ thuộc tính Kích thước chứa độ dài phần mã lệnh virus ghép vào chủ thể, Tập hành vi chứa các độ dời kỹ thuật của virus và nội dung mã lệnh virus ở điểm vào lệnh IP (instruction pointer) của file EXE (Phụ lục 1). Độ dời kỹ thuật là khoảng cách tương đối của virus so với cuối file (đối với loại virus ghép đuơi), đầu file (đối với loại chèn đầu) hoặc cả hai (đối với loại định vị buffer). Điểm vào lệnh IP và chuỗi mã lệnh virus được tựđộng trích chọn nhờ các thủ tục phân tích header file thi hành trong giai đoạn học (xem Phụ lục 2, Các định dạng tập tin thi hành).
- 46 -
3.3.4.3. Xây dựng cơ sở tri thức
Ngồi CSDL virus SE sẵn cĩ, thơng tin ban đầu về đối tượng chẩn đốn là