Phân hoạch bài toán nhận dạng mẫu, tri thức nguyên liệu cuae hệ có liên quan mật thiết với dạng thức dữ liệu
Trang 1Cơ chế máy học chẩn đoán virus máy tính
3.1 Phân hoạch bài toán chẩn đoán virus máy tính
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:
Trang 2Bảng 3.1: Các lớp virus cơ bản
tt Ký hiệu Tên lớp Mô tả Đặc trưng dữ liệu 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.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}
V = {vj ∀ j ÷1 m; m ∈ N}; v = {bj’, cr; ∀ j’÷ 32 127}
Trang 3Trong đó: 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 ← ∅
Trang 4(1) i ←1
(3) WHILE (i <= k) AND (NOT found) DO
(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)
Trang 5Bả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 thử nghiệm Số virus cập nhật Số virus phát hiện Số virus cảnh báo Số virus Số virus bỏ sót Độ chính xác (%) báo (%) Độ dự cậy (%) Độ tin
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
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 = V k) 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
Trang 6thì 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
Hình 3.2: Phân loại tư liệu MSOffice
Trang 7Khi 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
Hình 3.3: Không gian chẩn đoán dữ liệu lớp D-class
Trang 83.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)
(2) FOR i = 1 TO SizeOf(X) DO
(5) IF (aMacro.Next<>nil) AND (Pos(aMacro.Name, MacroSet)=0)
(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:
Trang 9X 1 = Tư liệu MSOffice (True/False)
X 2 = Có macro (True/False)
X 3 = Macro tự chạy (True/False)
X 4 = Nhiễm virus macro (True/False)
R: (X 1= 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 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]
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
Trang 10Bả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 thử nghiệm Số virus cập nhật Số virus phát hiện Số virus cảnh báo Số virus Số virus bỏ sót Độ chính xác (%) báo (%) Độ dự cậy (%) Độ tin
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
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
Trang 11• 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
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à
Trang 12- Đặ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
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:
Trang 13NẾU Code = $8B //mã chỉ thị MOV
Và NextCode = $07 //mã chỉ thị MOV AX,[BX]
- 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 đoá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
Trang 14• 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 đoá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 đoán các MTKĐ khác trong tương lai
Begin
Hình 3.5: Cây chỉ thị nhị phân tìm kiếm
Trang 153.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 2 i = 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 đoá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 toán chẩn đoán lớp virus B-class
Lần thử nghiệm Số virus cập nhật Số virus phát hiện Số virus cảnh báo Số virus Số virus bỏ sót Độ chính xác (%) báo (%) Độ dự cậy (%) Độ tin
Trang 16Kết quả thực nghiệm (bảng 3.4) cho thấy bài toá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 toá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 toán 4: Chẩn đoán lớp virus E-class
3.3.4.1 Phát biểu bài toá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 toá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 đoá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 đoán truyền thống và chẩn đoá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 toán chẩn đoá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)