SVM với tuyến tính

Một phần của tài liệu Kỹ thuật phân lớp dữ liệu và ứng dụng trong phát hiện mã độc (Trang 50 - 63)

Hình thức đơn giản của việc phân lớp là phân lớp nhị phân: phân biệt giữa các đối tƣợng thuộc về một trong hai lớp; lớp dƣơng (+1) hoặc lớp âm (-1). SVMs sử dụng hai khái niệm để giải quyết vấn đề này đĩ là phân lớp biên rộng và hàm kernel. Ý tƣởng của phân lớp biên rộng là cĩ thể đƣợc minh họa bởi sự phân lớp của các điểm trong khơng gian hai chiều. Một cách đơn giản là để phân lớp của các điểm này là sử dụng một đƣờng thẳng để phân tách các điểm nằm ở một bên là dƣơng cịn các điểm bên kia là âm. Nếu hai đƣờng thẳng phân chia tốt thì ta cĩ thể phân tách khá xa hai tập dữ liệu. Đây là ý tƣởng về sự phân chia biên rộng. Ta cĩ một tập huấn luyện D gồm n điểm cĩ dạng.

i i 1

P D {( xi , yi ) |

xi R

, y { 1,1}}n

Với yi mang giá trị 1 hoặc −1, xác định lớp của điểm xi. Mỗi xi là một vectơ thực p- chiều. Ta cần tìm siêu phẳng cĩ lề lớn nhất chia tách các điểm cĩ yi = 1 và các điểm cĩ yi=-1. Mỗi siêu phẳng đều cĩ thể đƣợc viết dƣới dạng một tập hợp các điểm x thỏa mãn.

Siêu phẳng với lề cực đại cho một SVM phân tách dữ liệu thuộc hai lớp. Các ví dụ nằm trên lề đƣợc gọi là các vectơ hỗ trợ.

w.x - b = 0

Với. Kí hiệu cho tích vơ hƣớng và w là một vectơ pháp tuyến của siêu phẳng. Tham số b xác định khoảng cách giữa gốc tọa độ và siêu phẳng theo hƣớng vectơ pháp || w || tuyến w.

Chúng ta cần chọn w và b để cực đại hĩa lề, hay khoảng cách giữa hai siêu mặt song song ở xa nhau nhất cĩ thể trong khi vẫn phân chia đƣợc dữ liệu. Các siêu mặt ấy đƣợc xác định bằng

Để ý rằng nếu dữ liệu huấn luyện cĩ thể đƣợc chia tách một cách tuyến tính, thì ta cĩ thể chọn hai siêu phẳng của lề sao cho khơng cĩ điểm nào ở giữa chúng và sau đĩ tăng khoảng cách giữa chúng đến tối đa cĩ thể. Bằng hình học, ta tìm đƣợc

khoảng cách giữa hai siêu phẳng là 2 || w || . Vì vậy ta muốn cực tiểu hĩa giá trị ||w||.

Để đảm bảo khơng cĩ điểm dữ liệu nào trong lề, ta thêm vào các điều kiện sau, với

mỗi i ta cĩ: hoặc

w.x - b 1 cho xi thuộc lớp thứ nhất w.x - b 1 cho xi thuộc lớp thứ hai Cĩ thể viết gọn lại nhƣ sau với mọi 1 i n :

yi(w . xi – b) 1, (1) Tĩm lại, ta cĩ bài tốn tối ƣu hĩa sau:

Cực tiểu hĩa (theo w,b)

với điều kiện ( với mọi i=1,…, n) yi(w . xi – b) 1.

Dạng ban đầu

Bài tốn tối ƣu ở mục trên tƣơng đối khĩ giải vì hàm mục tiêu phụ thuộc vào

2

2

ax

||w||, là một hàm cĩ khai căn. Tuy nhiên cĩ thể thay ||w|| bằng hàm mục tiêu 1 || w || 2

(hệ số 1/2 để tiện cho các biến đổi tốn học sau này) mà khơng làm thay đổi lời giải (lời giải của bài tốn mới và bài tốn ban đầu cĩ cùng w và b). Đây là một bài tốn quy hoạch tồn phƣơng. Cụ thể hơn:

Cực tiểu hĩa ( theo w,b)

1 || w ||2 với điều kiện ( với mọi i=1,….,n)

yi (w . xi – b) 1

Bằng cách thêm các nhân tử Lagrange , bài tốn trên trở thành

min m 1 || w ||2 n y w.x b 1 w,b 0 2 i i i i 1 nghĩa là ta cần tìm một điểm yên ngựa. Khi đĩ, tất cả các điểm khơng nằm trên lề, nghĩa là yi (w . xi – b)-1 > 0 đều khơng ảnh hƣởng đến giá trị hàm mục tiêu vì ta cĩ thể chọn i bằng khơng.

Cĩ thể giải bài tốn này bằng các kỹ thuật thơng thƣờng cho quy hoạch tồn phƣơng. Theo điều kiện Karush–Kuhn–Tucker, lời giải cĩ thể đƣợc viết dƣới dạng tổ hợp tuyến tính của các vectơ luyện tập

n

w i y i xi i

1 Chỉ cĩ một vài

i nhận giá trị lớn hơn 0. Các điểm xi tƣơng ứng là các vectơ hỗ trợ nằm trên lề và thỏa mãn yi (w . xi – b) = 1. Từ điều kiện này, ta nhận thấy

T

w . xi – b = 1/yi = yi b = w . xi - yi

từ đĩ ta suy ra đƣợc giá trị b. Trên thực tế, một cách thức tốt hơn để tính b là tính giá trị trung bình từ tất cả NSV vectơ hỗ trợ:

Dạng đối ngẫu b 1 N SV N SV ( w.xi i 1 yi )

Nếu viết điều kiện phân loại dƣới dạng đối ngẫu khơng điều kiện thì sẽ dễ

dàng nhận thấy siêu phẳng với lề lớn nhất, và do đĩ nhiệm vụ phân loại, chỉ phụ

thuộc vào các điểm luyện tập nằm trên lề, cịn gọi là các vectơ hỗ trợ.

n

Vì ||w||2 = w . w và w =

i

i y i x i

ta nhận thấy bài tốn đối ngẫu của SVM

1 là chính là bài tốn tối ƣu hĩa

sau:

Cực đại hĩa ( theo

i ) ~ n 1 n 1 L( ) i 2 i j yi y j xi x j i 2 i j yi y j k ( xi , x j ) i j i i j i 1 , 1 ,

i 0 , và điều kiện sau ứng với việc cực tiểu hĩa theo b

n

i yi = 0

i

1

Ở đây hàm hạt nhân đƣợc định nghĩa là k(xi,xj) = xi . xj . Sau khi giải xong, cĩ thể tính w từ các giá trị tìm đƣợc nhƣ sau:

w = i yi xi i

CHƢƠNG 3

ỨNG DỤNG KỸ THUẬT PHÂN LỚP TRONG PHÁT HIỆN MÃ ĐỘC

Chƣơng này sẽ xây dựng các thực nghiệm để đánh giá và so sánh hiệu quả của hai thuật tốn phân lớp: Decision Tree và SVM trong việc phát hiện mã độc hại.

3.1. Mơ hình bài tốn.

Khai phá dữ liệu đang ngày càng đƣợc ứng dụng nhiều hơn trong việc phát hiện mã độc. Trong đĩ, các thuật tốn phân lớp thƣờng đƣợc sử dụng nhằm xây dựng các mơ hình phát hiện mã độc, để dự đốn và phát hiện các mã độc mới. Mơ hình bài tốn phân lớp trong phát hiện mã độc dựa trên 5 bƣớc cơ bản: bƣớc đầu tiên là thu thập các tập dữ liệu mã độc, và tập thơng thƣờng (trong luận văn này chỉ quan tâm đến các chƣơng trình độc hại dạng PE). Tiếp theo các các cuộc gọi hàm API phổ biễn nhất sẽ đƣợc trích rút từ các tập chƣơng trình và cuối cùng là sử dụng các thuật tốn phân lớp để xây dựng ra các bộ phân lớp.

Hình 3.1. Các bƣớc xây dựng mơ hình phát hiện mã độc

3.1.1. Thu thập dữ liệu

Để xây dựng các mơ hình phát mã độc, luận văn này sử dụng tập dữ liệu 210 mã độc tại http://vx.netlux.org và 300 chƣơng trình bình thƣờng (khơng phải mã độc) trong thƣ mục system 32 của hệ điều hành windows XP.

Chọn lựa thuộc tính Tiền xử lý dữ liệu

Xây dựng bộ phân lớp Thu thập dữ liệu trên mạng

3.1.2 Tiền xử lý dữ liệu

Mục đích của các bƣớc dƣới đây là để trích rút ra các hàm API đƣợc sử dụng trong các tập chƣơng trình

Bƣớc 1: Giải nén các phần mềm độc hại

Việc đĩng gĩi đã trở thành cơng việc ƣa thích đối với những kẻ viết ra các phần mềm độc hại nhằm tạo ra các thay đổi trong mã phần mềm độc hại, để tạo ra nhiều biến thể của mỗi phần mềm độc. Điều này tạo ra phần mềm độc hại hồn tồn mới cĩ logic sử dụng các kỹ thuật che dấu khác nhau để tránh bị phát hiện. Việc xác định khâu đĩng gĩi chính là một việc quan trọng để thực hiện các giải nén tồn bộ phần mềm nhằm xác định chính xác các thơng tin của các tệp thực thi. Luận văn đã sử dụng một chƣơng trình viết bằng JAVA để cho phép tự động hĩa chƣơng trình đĩng gĩi đƣợc sử dụng bằng phần mềm độc hại và sau đĩ giải nén nĩ cho cơng việc phân tích.

Bƣớc 2: Trích rút các cuộc gọi hàm API

Bƣớc này sử dụng một cơng cụ dịch ngƣợc phần mềm phổ biến nhất là Disassembler Pro (IDA Pro) [9] vì nĩ cĩ thể dịch ngƣợc tất cả các loại file khơng thực thi và các file thực thi (chẳng hạn nhƣ ELF, EXE, PE,...). Nĩ sẽ tự động nhận dạng ra các cuộc gọi API cho các trình biên dịch khác nhau. IDA Pro tải các tập tin đƣợc chọn vào bộ nhớ để phân tích những phần cĩ liên quan của chƣơng trình. IDA Pro tạo ra các file IDA cơ sở dữ liệu đƣa vào một tập tin duy nhất IDB (.idb) sau đĩ thực hiện trích xuất các thơng tin từ dạng nhị phân.

IDA Pro cung cấp quyền truy cập vào các nguồn tài nguyên nội bộ của mình thơng qua một API mà cho phép ngƣời dùng viết bổ sung các plugin đƣợc thực hiện bởi IDA. Luận văn đã sử dụng idapython [10] plugin để tự động tháo gỡ để tạo ra các cơ sở dữ liệu IDB hợp nhất. Các plugin ida2sql thƣờng cho phép đƣa ra ra cơ sở dữ liệu MySQL để phân tích nhị phân tốt hơn.

Basic _blocks, callgraph, control_flow_graph, data, expression_substitution, expression_tree, functions, instructions, metainformation, modules, operand_expressions, operand_strings, operand_tuple, sections) [11] cho các tệp thực thi nhị phân. Mỗi một phần sẽ bao gồm các thơng tin khác nhau về nội dung nhị phân, ví dụ bảng functions chứa tất cả các API nhận biết đƣợc thực các cuộc gọi hệ thống và các tên hàm khơng đƣợc nhận biết đƣợc và chiều dài (từ vị trí bắt đầu đến vị trí kết thúc cuối của hàn). Bảng Intrusions gồm các mã lệnh (OP) và địa chỉ của chúng, các địa chỉ khối. Danh sách các API đƣợc trích ra từ bảng functions. Tài liệu tham khảo từ Microsoft - (MSDN) [12] đƣợc sử dụng xác định các hàm API windows. Chƣơng trình dựa trên Java là thực hiện để so sánh và kết hợp các API từ MSDN và các cuộc gọi API đƣợc tạo ra trong cơ sở dữ liệu cho các phần mềm độc hại mẫu. Để liệt kê tất cả các cuộc gọi API cĩ liên quan đến mã độc hại, việc thu thập đƣợc thực hiện bằng cách sử dụng máy opcodes nhƣ các lệnh Jump và lệnh call nhƣ là một kiểu hàm

3.1.3 Lựa chọn thuộc tính

Trích chọn thuộc tính (Feature Selection, Feature Extraction) là nhiệm vụ rất quan trọng trong giai đoạn tiền xử lý dữ liệu khi triển khai các mơ hình khai phá dữ liệu. Một vấn đề gặp phải là các tập dữ liệu dùng để xây dựng các mơ hình khai phá dữ liệu thƣờng chứa nhiều thơng tin khơng cần thiết (thậm chí gây nhiễu) cho việc xây dựng mơ hình. Chẳn hạn, một tập dữ liệu gồm hàng trăm thuộc tính mỗi thuộc tính tƣơng ứng với một hàm API đƣợc trích rút, tuy nhiên khi xây dựng một mơ hình khái phá dữ liệu chỉ một số hàm cĩ tác động đến quá trình phân lớp. Nếu ta sử dụng tất cả các thuộc tính (hàng trăm, hàng ngàn) để xây dựng mơ hình thì ta cần bộ xử lý CPU phải đủ lớn, nhiều bộ nhớ trong quá trình học mơ hình, thậm chí các thuộc tính khơng cần thiết đĩ làm giảm độ chính xác của mơ hình và gây khĩ khăn trong việc phát hiện tri thức.

Luận văn này sử dụng phƣơng pháp trích chọn các thuộc tính là các hàm API của Pujari [8].

Luận văn đã sử dụng tần xuất xuất hiện để lựa chọn các cuộc gọi API cĩ liên quan. Mục đích là để xác định một bộ các cuộc gọi API phổ biến nhất trong các phần mềm độc hại và tƣơng tự nhƣ một bộ các cuộc gọi API khác cũng phổ biến đối với các phần mềm khơng phải độc hại. Gọi D là tập huấn luyện cĩ chứa một tập hợp các phần mềm khơng độc hại B và tập các phần mềm độc hại V: D = B ∪ V. Pujari et al. [13] đề xuất một phƣơng pháp trích rút các hàm API dựa trên tần xuất suất hiện của các n-gram (Ng), Ng là tổ hợp các hàm API cùng đƣợc trích rút cùng lúc. Cho n-gram Ng, (Ng, P) là 1 nếu Ng cĩ mặt trong P và 0 nếu ngƣợc lại. Ngồi ra, tần xuất của Ng trong P tƣơng ứng với một lớp C là:

Nĩi cách khác, các tần xuất này là một trong số chƣơng trình thực thi trong C cĩ chứa Ng. Hình 3.2 là một biểu đồ mơ tả việc lựa chọn các cuộc gọi API cĩ liên quan sử dụng DCFS.

Hình 3.2 Quá trình trích rút các hàm API

Sau quá trình trích rút thì tập dữ liệu đƣợc trình bày dƣới định dạng để sử dụng cho phân mềm Weka:

@attribute 8:9:3:9: real @attribute 2:13:2:11: real @attribute 4:2:2:1: real @attribute 4:2:3:2: real @attribute 45:3:3:2: real @attribute 4:3:5:3: real @attribute 3:0:11:3: real

Các API trong các tệp Virus, Worms Troyja Horse

Các hàm Windows API trong các tập bình

thƣờng

Tính tần suất xuất hiện của các n-gram API

Kết hợp hai phần để đƣợc tập dữ liệu, các n-gram trùng nhau sẽ bị loại bỏ Chọn k hàm cĩ tần suất cao nhất Chọn k hàm cĩ tần suất cao nhất Sắp xếp các hàm theo thứ tự giảm dần của tần suất Sắp xếp các hàm theo thứ tự giảm dần của tần suất

Tính tần suất xuất hiện của các API n-gram

Chọn đƣợc các n-gram API phù hợp

Chọn đƣợc các n-gram API phù hợp

@attribute 1:4:1:15: real @attribute 3:0:11:2: real @attribute 3:2:15:2: real @attribute 3:1:3:3: real @attribute 3:3:3:11: real @attribute 3:0:3:13: real @attribute 25:3:3:28: real

@attribute class {trojan,benign} @data 1,1,1,1,1,0,0,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,0,1,1,1,1,1,0, 1,0,0,1,0,0,0,0,1,1,0,1,0,0,0,1,0,0,1,1,0,0,0,1,0,1,1,1,0,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1, 0,0,1,0,0,1,0,0,0,0,0,1,0,0,0,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,1,0,0,0,1,0, 0,1,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,1,0,1,1,1,1,1,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,1,1,0, 0,1,1,1,0,0,1,0,1,0,1,1,0,0,1,0,0,0,0,1,1,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,1,0, 1,0,1,0,0,1,1,1,1,1,1,0,1,0,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1, 1,1,0,0,0,0,1,0,0,1,0,0,0,0,0,1,1,0,0,0,1,0,0,1,0,1,0,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,1,1,1,0,0,1,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1, 0,0,0,0,1,1,0,0,1,0,0,0,1,1,0,0,0,0,0,0,1,0,0,0,1,1,0,0,1,1,1,1,1,0,0,0,0,0,0,1,1,0,0,1, 0,0,0,1,0,1,0,0,0,0,1,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0, 1,1,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,0,1,1,0,0,0,0,1,0,1,0,1,0,0,0,0,0,0,0,1,0,1,0,0, 0,0,1,0,0,0,0,0,0,0,0,0,1,1,0,1,0,0,0,benign 1,1,1,1,1,0,0,0,1,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0, 1,0,0,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,1,0,1,0,1,0,0,0,0,0,0,1,0,1,1,0,0,0,1, 0,0,1,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,1,1,1,1,0,0,0, 1,0,1,1,1,0,0,0,1,1,0,1,0,0,1,0,0,0,0,0,0,1,1,1,1,0,1,1,0,1,1,0,0,0,0,0,1,1,1,0,1,1,0,0, 0,1,0,1,0,1,0,0,1,1,1,1,0,1,1,0,0,0,0,1,1,0,1,0,1,0,1,0,0,0,1,1,0,1,0,0,0,1,1,0,0,0,0,0, 1,0,1,0,1,0,1,1,1,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,1,1,0,0,0,1,0,1,1, 0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,0,1,0,0,0,1,1,0,0,0,0,0,1,1,0, 0,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,1,0,1,1,1,0,0,0,0,0,1,0,0,1,1,1,0,0,1,1,1,0,

0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,1,1,0,0,1,0,1,0,1,0,0,0,1,1,1,1,1,0,0, 0,1,0,1,0,0,0,0,1,1,0,1,0,0,1,0,0,0,0,0,0,0,1,1,0,1,0,0,0,0,1,0,0,1,0,0,0,0,0,1,1,0,1,0, 0,0,0,0,0,0,0,0,0,1,0,1,0,1,0,0,1,1,0,0,0,1,1,1,1,0,0,0,0,1,1,0,0,1,0,0,0,1,0,0,0,0,1,1, 1,1,0,1,0,0,0,1,0,0,1,0,0,1,1,0,1,0,1,benign

3.1.4. Xây dựng bộ phân lớp

Quá trình chi tiết để xây dựng bộ phân lớp phát hiện mã độc cĩ thể mơ tả nhƣ sau:

Hình 3.3 Chi tiết quá trình xây dựng mơ hình phát hiện mã độc

Các tệp mã độc Các tệp PE System 32 Phân lớp SVM Tệp PE bất kỳ Khơng cĩ mã độc Mã độc Danh sách các cuộc gọi hàm API So sánh các hàm và phân tích Thƣ viện Windows MSDN Chọn các dcác n-gram API

ChạyIda2sql Cơ sở dữ liệu

MySQL Tạo các tệp .idb Dịch ngƣợc bằng IDA Pro Xác định các trình đĩng gĩi và giải nén

Dữ liệu huấn luyện

Quá trình huấn luyênh Kiểm thử Chọn các n-gram API sử dụng DCFS Worms API Virus API

Luận văn thực hiện các thực nghiệm để xây dựng các mơ hình phát hiện mã độc dựa trên các thuật tốn phân lớp Decision Tree, Support vector Machine. Đánh giá hiệu quả các thuật tốn lên hai khía cạnh thời gian và độ chính xác của thuật tốn trong việc phân lớp.

Mỗi thực nghiệm cĩ hai bƣớc là huấn luyện và đánh giá. Bƣớc huấn luyện là giúp để xây mơ hình phân lớp cĩ độ chính xác tốt nhất từ các tập dữ liệu học. Bƣớc đánh giá sử dụng tập dữ liệu kiểm thử để đánh giá độ chính xác của các mơ hình đã đƣợc xây dựng. Mục đích chính của các mơ hình là để phân lớp tập dữ liệu vào trong một trong kiểu mã độc Trojan, Virus, Wor m hoặc kiểu Begin (khơng phải mã độc). Tập dữ liệu thực nghiệm bao gồm 500 bản ghi, 4 thuộc tính và 4 lớp khác nhau đã mơ tả ở trên.

Luận văn đã sử dụng phần mềm WEKA(Waikato Enviroment for krowledge Analysis) đƣợc cài đặt trên máy tính với cấu hình là hệ điều hành window 7 32 bit, bộ sử lý core I3 2.4 Ghz, Bộ nhớ ram 2.0 Gb. Các thực nghiệm đƣợc xây dựng với các thuật tốn phân lớp Decision Tree (C4.5), Support vector Machine (SVM).Trong các thực nghiệm đã sử dụng phƣơng pháp đánh giá 10-folds cross valiation để dánh giá các thuật tốn trên. Kết quả các thực nghiệm đƣợc trình bày trong các phần sau.

3.2. Tiến hành thực nghiệm

Một phần của tài liệu Kỹ thuật phân lớp dữ liệu và ứng dụng trong phát hiện mã độc (Trang 50 - 63)

Tải bản đầy đủ (PDF)

(69 trang)