Phần đầu của thuật toán SID (xem Phụ lục 3) gồm các lệnh khởi tạo không gian tìm kiếm (dòng 1), tích hợp tri thức chẩn đoán cho CSTT (dòng 2) và phân lớp các điểm dữ liệu có thể nhiễm vào CLASS_1, các điểm sạch vào CLASS_2 (dòng 3). Phần thân chứa vòng lặp (dòng 4) quét các điểm dữ liệu trong CLASS_1. Ứng với mỗi điểm dữ liệu eObject, SID thực hiện các thao tác:
- Tìm trong CSDL thông tin vềđối tượng chẩn đoán (dòng 5).
- Nếu không thấy (dòng 6), kiểm tra virus (dòng 8), xử lý bệnh (dòng 9) và báo cáo (dòng 10). Sau đó cập nhật CSDL chẩn đoán (dòng 12, 13).
- Ngược lại, đây là đối tượng đã xử lý (dòng 11). Cần kiểm tra 3 trường hợp:
- 48 -
Hình 3.8:Lưu đồ chẩn đoán đối tượng E-class
Kiểm tra virus
Kết thúc
Đ
S
Dữ liệu không đổi kể từ lần kiểm tra gần đây với version cũ
Dữ liệu đã thay đổi kể từ lần kiểm tra gần đây với version cũ
Tìm eObject trong VerifyDB
eObject ∈ VerifyDB ? Dữ liệu đã thay đổi kể từ lần kiểm tra gần nhất cùng version Bắt đầu eObject Do virus ? Chất vấn Do user ? Xử lý bệnh Cập nhật CSDL Cô lập eObject Phát hiện ? Xử lý bệnh Cập nhật CSDL Kiểm tra virus Phát hiện ? Do virus ? Chất vấn Do user ? Xử lý bệnh Cập nhật CSDL Cô lập eObject Báo cáo Đ S Đ S Đ S Đ Đ S S S Đ Đ S Đ S Đ Cập nhật CSDL S Kiểm tra virus Phát hiện ? Đ S
• Trường hợp 1: Dữ liệu đã thay đổi kể từ lần kiểm tra cùng version gần nhất (dòng 15). Cảnh báo (dòng 16). Tương tác hội thoại, thu nhận tri thức:
- Do virus (dòng 17): xử lý bệnh, báo cáo, cập nhật, tăng trưởng CSTT - Do con người (dòng 22): cập nhật dữ liệu chẩn đoán
- Chưa xác định (dòng 24): khóa đối tượng, báo cáo, tăng trưởng CSTT
• Trường hợp 2: Dữ liệu không đổi kể từ lần kiểm tra gần đây với version cũ (dòng 30). Kiểm tra lại để phát hiện các virus mới cập nhật. Nếu phát hiện (dòng 32), xử lý virus và cập nhật lại thông tin chẩn đoán (dòng 36).
• Trường hợp 3: Dữ liệu đã thay đổi kể từ lần kiểm tra gần đây với version cũ (dòng 39). Kiểm tra lại (dòng 41), nếu phát hiện virus xử lý giống như trường hợp 2. Ngược lại, xử lý như trường hợp 1 (dòng 46, 47 đến dòng 58).
3.3.4.7. Các tác tử hoạt động
Các luật RS1 chỉ phát huy trong thời gian rất ngắn (khoảng vài miligiây của tiến trình xử lý), trong khi các luật RS2 có hiệu quả trong thời gian dài (từ vài giây đến hàng tháng, thậm chí hàng năm tùy theo tốc độ lây của virus và tần suất sử dụng hệ thống). Các tình huống phát sinh trong lớp luật RS1 thuộc loại “kiến thức tức thời” (instant knowledge), dễ bị phủ lấp bởi vô số các tình huống khác của hệ thống. Ngược lại, các thay đổi trên đối tượng thể hiện trong lớp luật RS2 thuộc loại “kiến thức dài lâu” (permanent knowledge) bền vững theo thời gian. Để thu thập thông tin cho CSDL VerifyDB, MAV sử dụng cơ chế đa tác tử (multi-agent mechanism) với hai tác tửVSA (Virus Scanning Agent) và VAA (Virus Autoprotect Agent) [56].
Hoạt động ở mức nền trước (foreground), VSA có nhiệm vụ quét virus, thu thập kiến thức dài lâu và giải thích các thay đổi của hệ thống dựa vào lớp luật RS2. Ở mức nền sau (background), VAA chạy thường trực [19] nhằm đón bắt các kiến thức tức thời (tình huống phát sinh trên đối tượng) dựa vào lớp luật RS1. Cả hai tác tử sử dụng chung động cơ suy diễn SID và tương tác nhau, tránh tranh chấp tiến trình hệ thống [37]. Ví dụ, trước khi VSA phát sinh tình huống WriteFile, nó gửi một thông điệp báo cho VAA yêu cầu bỏ qua tình huống này. Khi VAA xử lý xong một đối tượng, nó thông báo cho VSA không cần kiểm tra đối tượng đó (xem Phụ lục 3).
- 50 -
3.3.4.8. Kết quả thực nghiệm
Tập dữ liệu thực nghiệm X có 56100 mẫu thử với dung lượng tổng cộng 8.000.000 KB. Máy tính thử nghiệm sử dụng CPU Intel Celeron 2,4 GHz với 512 MB bộ nhớ, HĐH Windows XP Professional. Các bước thực hiện như sau:
- Đo thời gian chạy MAV nhiều lần trên tập X không sử dụng SID. Lúc này hệ hoạt động như một AV thông thường, tạm gọi là PreMAV.
- Đo thời gian chạy MAV nhiều lần trên tập X có sử dụng SID.
- Đo thời gian chạy của các AV thử nghiệm nhiều lần trên cùng tập X. - Tổng hợp, phân tích số liệu, đối chiếu kết quả.
Các anti-virus thử nghiệm gồm Norton Antivirus (Symantec, Mỹ) [89], ScanVirus (McAfee, Mỹ) [80] và BKAV (BKIS, Việt Nam) [93]. Phân tích số liệu phân bố chi phí thời gian thực hiện trên cùng bộ dữ liệu của các AV thử nghiệm (bảng 3.6 và biểu đồ ở hình 3.9), có thể thấy:
- Ngoại trừ MAV, đường biểu diễn của các hệ thử nghiệm (kể cả PreMAV) gần như là các đường thẳng bất biến theo thời gian. Điều này chứng tỏ các hệ trên chưa có khả năng học (các AV tốn thời gian không cần thiết cho việc quét đi quét lại tập dữ liệu đã từng thao tác).
- Đường biểu diễn của MAV giảm mạnh sau lần chạy đầu tiên. Ở các lần chạy sau, đường biểu diễn của hệ giảm chậm đến giá trị hằng số, chứng tỏ quá trình vận dụng kiến thức của MAV có xu hướng đạt đến trạng thái ổn định khi hệđã tích lũy đủ kiến thức cần thiết.
- Sử dụng SID, MAV phải tốn thời gian cho các lệnh select, insert và update
để tìm kiếm và tích lũy kiến thức. Nỗ lực này tốn 838 – 772 = 66 giây (chiếm 8.55% thời gian so với không sử dụng SID). Tuy nhiên phí tổn này rất đáng giá vì nó giúp MAV tiết kiệm thời gian đến 12 lần ở các lần chạy sau so với không sử dụng SID: ( ) ( ) 59 12,273 776 54 764 61 779 74 769 4 1 1 1 = ⎟ ⎠ ⎞ ⎜ ⎝ ⎛ + + + = ∑ = N i i i MAV Cost preMAV Cost N
Bảng 3.6:Thời gian chạy của các hệ anti-virus thử nghiệm trên cùng tập mẫu Anti-virus Lần 1 Lần 2 Lần 3 Lần 4 Lần 5 BKAV 245 248 247 248 246 PreMAV 772 769 779 764 766 MAV 838 74 61 59 59 NAV 1365 1347 1315 1317 1320 SCAN 1506 1450 1462 1488 1475
3.3.4.9. Đánh giá phương pháp chẩn đoán lớp virus E-class
Dựa vào nguyên lý nhận dạng hướng ý định (intention-based approach), bài toán E-class sử dụng thuật toán SID học tình huống trên tập dữ liệu quan sát bằng mô hình AMKBD. Công tác đánh giá bài toán được thực hiện theo quy trình sau:
Đầu tiên, gỡ các mẫu F-virus trong CSDL SE của MAV. Tiếp theo, cho virus nhiễm vào máy ảo VMWare Workstation ver 5.5.3 đã cài sẵn MAV trong trạng thái vô hiệu tác tử. Sau đó kích hoạt MAV, quét hệ thống và ghi nhận số cảnh báo (chưa biết tên chính xác). Cuối cùng, phục hồi CSDL SE cho MAV, đếm số tập tin được phát hiện nhiễm (biết tên virus chính xác), đối chiếu với số tập tin thực nhiễm và tính toán kết quả thực nghiệm (Bảng 3.7).
- 52 -
Bảng 3.7: Kết quả thực nghiệm bài toán chẩn đoán lớp virus E-class
Lần thSựốc nhi tập tin ễm cSậốp nh virus ật phát hiSố virus ện chính xác Số tập tin được cảnh báo Số tập nhiễm bị bỏ sót Độ chính xác (%) báo (%) Độ dự cĐộậy (%) tin 1 1792 112 107 1668 17 95.54 98.99 99.05 2 1578 108 100 1467 11 92.59 99.26 99.30 3 1625 100 95 1512 18 95.00 98.82 98.89 4 1723 110 105 1602 16 95.45 99.01 99.07 5 1682 105 98 1569 15 93.33 99.05 99.11 Trung bình: 94.38 99.03 99.09
Mặc dù có độ tin cậy cao nhưng phương pháp này cũng còn một số hạn chế: - Một số F-virus tự kết xuất sâu trình ra hệ thống đích, khiến thủ tục SID không
tìm thấy đối tượng mới trong CSDL VerifyDB nên bỏ sót mã độc.
- Khi tác tử canh phòng bị vô hiệu (stop/disable), hệ sẽ không phát hiện được các virus sử dụng kỹ thuật buffering và khôi phục trạng thái file sau khi nhiễm. - Khi hệ thống thay đổi, AMKBD sẽ gây bối rối cho người dùng ít kinh nghiệm. - Hệ thống đã nhiễm một loại file virus lạ trước khi cài đặt MAV.
Để khắc phục các hạn chế trên, có thể thực hiện các biện pháp sau: - Kết hợp bài toán E-class với bài toán chẩn đoán sâu trình.
- Thiết kế tác tử canh phòng dạng dịch vụ (service) chạy thường trực
- Hướng dẫn người dùng cập nhật thông tin cho CSDL VerifyDB sau khi nâng cấp phần mềm (chỉ phù hợp cho người dùng am hiểu).
3.3.5. Bài toán 5: Chẩn đoán lớp virus A-class 3.3.5.1. Lược sử vấn đề nhận dạng mã độc 3.3.5.1. Lược sử vấn đề nhận dạng mã độc
Lớp A-class chứa các virus có định dạng ứng dụng (Phụ lục 1 và 2). Ngoại trừ file virus đã được tách ra xử lý riêng trong bài toán E-class, lớp này chứa các đối tượng thực thi độc lập (stand alone program) thuộc các loại trojan horse/worm [67] như germs, dropper, injector, rootkit, intruder, zombie…, kể cả các ứng dụng độc hại nhưadware, spyware, pornware…, gọi chung là phần mềm độc (malware).
Nhận dạng malware là vấn đề mở của các anti-virus hiện nay [33]. Khác với file virus khi lây nhiễm luôn để lại dấu vết trên vật chủ, malware là tập thi hành độc lập nên rất khó phân biệt với các ứng dụng hợp thức. Để nhận dạng malware, các tiếp cận truyền thống thường dịch ngược (disassembe) mã đích (target code) để phân tích hành vi [43]. Tuy nhiên nếu đối tượng được mật hóa (encrypted) bằng các công cụ nén ứng dụng như Petite, Aspack, Pklite hoặc UPX (Ultimate Packer for eXecutables), việc nhận dạng mã độc sẽ rất khó khăn và phức tạp [65].
Thay vì phân tích thủ công từng chỉ thị mã độc, tiếp cận mô tảđặc điểm tổng quát hướng heuristic (heuristic-based generic description) [50] sử dụng máy ảo để giám sát quá trình thi hành mẫu chẩn đoán và ‘tóm lấy’ (capture) đoạn mã nhận dạng của virus khi quá trình tự giải mã (decryption) hoàn tất [69]. Ưu điểm của kỹ thuật này là không phụ thuộc vào thuật toán mã hóa/giải mã của công cụ nén. Tuy nhiên do cài đặt phức tạp, tiêu hao tài nguyên và chạy chậm nên kỹ thuật chẩn đoán sâu trình bằng máy ảo chỉ thích hợp cho các hệ thống có cấu hình đủ mạnh.
Các sâu trình mật hóa sử dụng một thủ tục khởi tạo để giải mã phần lớn chương trình của nó [58]. Việc mã hóa và giải mã có thể trải qua nhiều giai đoạn gối nhau: dữ liệu ở giai đoạn này là mã lệnh giải mã ở các giai đoạn sau. Do đó, ngoại trừ thủ tục khởi tạo (có kích thước rất nhỏ), phần lớn nội dung sâu trình đều được “đóng gói” dưới dạng dữ liệu mật hóa nhằm làm nản lòng các chuyên viên phân tích virus của các hãng bảo mật.
Trong bối cảnh các loại mã độc được sản xuất ồ ạt, cùng với sự xuất hiện ngày càng nhiều các phần mềm mật hóa phức tạp, việc phân tích ngữ nghĩa tập chỉ thị không còn hiệu quả. Trong các nghiên cứu gần đây, một số tác giảđề xuất hướng giải quyết bài toán nhận dạng malware bằng mô hình ‘epsilon-gamma-pi’ (exploit– data control–payload). Đầu tiên, phân tích sâu trình thành ba bộ phận có chức năng xác định [35], sau đó tách phần giống nhau cơ bản của các sâu trình (epsilon và pi) rồi tập trung xử lý phần gamma khác biệt (chiếm khối lượng lớn nhất của sâu trình).
Trong luận án này, ý tưởng xử lý mã độc như các luồng dữ liệu nguy hiểm
- 54 -
3.3.5.2. Phát biểu bài toán
Mục tiêu của bài toán chẩn đoán lớp A-class là (i) kiểm tra xem đối tượng
aObject có phải là malware hay không. Nếu không, hệ phải (ii) đưa ra dự báo
aObject có thể thuộc nhóm malware nào hay không, tỷ lệ mã độc là bao nhiêu. Gọi
wRate∈(0,1] là tỷ lệ mã độc của aObject, λ∈[0,1] là hằng số ngưỡng an toàn cho trước, bài toán được phát biểu như sau:
Vào: - Đối tượng chẩn đoán aObject - Cơ sở dữ liệu virus A-class (SA)
- Quy luật phân nhóm virus trong CSDL SA
Ra: - wRate = 1, kết luận aObject là known malware
- wRate≥λ, dự báo aObject là unknown malware
Ngoài CSDL virus SA, bài toán A-class còn sử dụng tập luật phân nhóm virus để phân hoạch trước các lớp dữ liệu khả dĩ mà aObject có thể thuộc về. Sau đó quá trình xử lý sẽ ước lượng độ đồng dạng dữ liệu của aObject so với từng virus trong các lớp dữ liệu đã phân hoạch để gán đối tượng vào một trong các lớp này. Phương pháp phân nhóm virus trong CSDL SA sẽđược trình bày trong Chương 4.
3.3.5.3. Tổ chức cơ sở dữ liệu virus
Giống như bài toán E-class, đối tượng chẩn đoán của bài toán A-class là các tập tin thi hành. Do đó các mẫu virus trong CSDL SA sẽ có dạng:
Malware = <Tên gọi, Kích thước, Ngày cập nhật, Phiên bản, Tập đặc trưng> Trong MAV, CSDL SA là một bảng dữ liệu 300 cột. Bốn thuộc tính đầu có công dụng giống như các bài toán C, D và E (dùng cho mô hình AMKBD). Thuộc tính Tập đặc trưngđược chia làm hai nhóm 40 cột và 256 cột.
- 40 cột đầu (kiểu word/dword) chứa đặc trưng thi hành nhưFileSize, FileType, FileAttribute, MachineWord, NumberOfSections… (xem Phụ lục 2). Phần này dùng cho quá trình phân nhóm virus ở giai đoạn học (Chương 4).
- 256 cột kế (kiểu word) chứa số lần xuất hiện của 256 từ máy 8-bit của virus:
3.3.5.4. Biểu diễn dữ liệu virus bằng mô hình không gian vectơ
Mô hình không gian vectơ (KGVT) dùng phân loại văn bản do Gerard Salton
và cộng sự đề xướng [30], về sau mở rộng cho phân loại ảnh [61][70]. Trong mô hình này, các từ phân biệt của văn bản được tổ chức thành các cột trên ma trận. Giá trị của các ô chứa số lần xuất hiện của từ tương ứng (gọi là tần suất của từ).
Xét virus như một tập dữ liệu ‘văn bản’, bài toán A-class biểu diễn các ‘từ
virus’, tìm độ tương đồng dữ liệu của đối tượng so với các nhóm virus, rồi ước lượng tỷ lệ xuất hiện từ virus trong đối tượng để dự báo virus mới. Đầu tiên, dữ liệu được tổ chức thành v từ phân biệt để có w = (w1, w2,…, wv). Kế tiếp, biểu diễn mỗi virus trong CSDL dưới dạng vectơ di = (wi1, wi2,…, wiv), trong đó wik là tần suất của từ thứ k trong bộ dữ liệu kiểm tra. Sau đó ánh xạ các vectơ virus vào ‘ma trận từ - tài liệu’ (word-document matrix) hai chiều. Mỗi hàng ứng với một bộ dữ liệu virus mẫu. Mỗi cột ứng với một từ duy nhất.
Theo Gerard Salton, có thể chọn từ đơn (single term) hoặc phức hợp (complex entities) nhưng phương án từđơn là tổng quát hơn. Như vậy có thể chọn
từ virus theo byte, word hay dword. Khi số bit của từ máy (machine word) càng cao thì số cột ma trận càng nhiều (256, 65.536 hay 4.294.967.296 cột). MAV sử dụng từ 8 bit (256 trạng thái), kiểu word (có thể lưu tối đa 65.536 tần suất từ).
3.3.5.5. Rút trích đặc trưng
Quá trình rút trích đặc trưng sử dụng nguyên lý Tần suất từ - Tần suất tài liệu nghịch đảo TF-IDF (Term Frequency-Inverse Document Frequency) [34]. Các từ phân biệt là các đặc trưng, TF-IDF là đại lượng đo lường sự xuất hiện của các từ này. Mục tiêu của bài toán là tính độđồng dạng mã độc giữa đối tượng chẩn đoán
aObject (ký hiệu M) và các nhóm virus f trong tập A. Đầu tiên, M được biểu diễn dưới dạng vectơ tần suất từF(M), trong đó mỗi thành phần F(M,w) biểu diễn số lần (0..65536) từw xuất hiện trong M. Tiếp theo, tính W(f,w) trọng số các từ trong từng tập f. Cuối cùng, chọn trong tập f (tập có tỷ lệ đồng dạng dữ liệu với M cao nhất) mẫu đại diện gần với M nhất, đối sánh hằng số ngưỡng λđể có kết luận cuối cùng.
- 56 -
Đại lượng FF(f,w) gọi là tần suất phân đoạn (fractional frequency) của từ w
trong số các virus có trong tập f, là số lần xuất hiện của từ w trong tập f chia cho tổng số từ có trong f : ∑ ∈ = f w w f F w f F w f FF ' ) ' , ( ) , ( ) , ( (3.1)
Đại lượng tần suất từTF (term frequency) được định nghĩa là:
TF(f, w)= ) , ( ) , ( w A FF w f FF (3.2) Trong đó A ⊇ f (A là nhóm virus cha của f trong bài toán phân cụm CSDL
virus), FF(A,w) là số lần từ w xuất hiện trong A. Gọi tần suất tài liệu (document frequency) DF(w) là đại lượng tính bằng số nhóm virus có từ w xuất hiện ít nhất 1 lần chia cho tổng số các tập dữ liệu (số con của A), trọng sốW(f,w) của các từ trong tập fđược tính theo công thức:
W(f,w) = ( )2 ) , ( w DF w f TF (3.3) 3.3.5.6. Ước lượng tỷ lệ mã độc
Nguyên lý TF-IDF ước lượng độđồng dạng dữ liệu (similarity measure) theo