Đánh giá hiệu quả thuật toán

Một phần của tài liệu (Luận văn thạc sĩ) nâng cao hiệu quả phát hiện mã độc sử dụng các kỹ thuật học máy001 (Trang 34)

Trong thực tế, chúng ta cần áp dụng nhiều thuật toán học máy để chọn ra mô hình phù hợp nhất cho bài toán của mình. Vấn đề đặt ra là làm thế nào để đạt được một đánh giá đáng tin cậy về hiệu quả của mô hình và chọn ra mô hình phù hợp. Ngoài các thuật toán học máy thì hiệu quả của mô hình còn phụ thuộc vào một số yếu tố khác như sự phân phố của lớp (class distribution), chi

phí của việc phân lớp sai (Cost of misclassification), kích thước của tập huấn luyện (Size of the training set), kích thước của tập kiểm thử (Size of the testing set). Trong phần này tôi sẽ trình bày một số phương pháp đánh giá hiệu quả của thuật toán như: ma trận nhầm lẫn (Confusion maxtrix), hold-out, kiểm tra chéo (Cross-validation), Stratified sampling

2.4.1. Ma trận nhầm lẫn (Confusion maxtrix):

Ma trận nhầm lẫn chỉ được sử dụng đối với các bài toán phân loại, không thể áp dụng với các bài toán hồi quy, ví dụ ma trận nhầm lẫn như sau:

Lớp Lớp được dự đoán bởi hệ thống

Thuộc Không thuộc

Phân lớp thực sự (đúng) Thuộc

Không thuộc

Các thông tin trong ma trận nhầm lẫn ta có các thông tin như:

( ): Số lượng mẫu thuộc lớp dương được phân chính

xác vào lớp dương

( ): Số lượng mẫu không thuộc lớp dương bị phân loại

nhầm vào lớp dương

(True negative): Số lượng các mẫu không thuộc lớp dương được phân loại đúng

( ): Số lượng mẫu thuộc lớp dương được phân vào lớp

âm (phân loại sai).

Từ đây độ chính xác của mô hình được tính như sau:

o Precision đối với lớp : bằng tổng số các mẫu thuộc lớp được phân loại chính xác chia cho tổng số các mẫu được phân loại vào lớp

Precision( ) =

o Recall đối với lớp bằng tổng sổ các mẫu thuộc lớp được phân loại chính xác tổng số các mẫu thuộc lớp

Recall( ) =

O F1: tiêu chí đánh giá là sự kết hợp của 2 tiêu chí đánh giá Precision và Recall:

=

=

là một trung bình điều hòa của các tiêu chí Precision và Recall. có xu hướng lấy giá trị gần với giá trị nào nhỏ hơn giữa 2 giá trị Precision và Recall. có giá trị lớn nếu cả 2 giá trị Precision và Recall đều lớn.

2.4.2. Phương pháp Hold-out

Toàn bộ tập mẫu D được chia thành 2 tập con không giao nhau, tập huấn luyện D_train để huấn luyện mô hình, tập kiểm thử D_test để đánh giá hiệu quả của mô hình đã học vì vậy D = D_train ᴗ D_test và thường |D_train| >> |D_test|. Các yêu cầu đặt ra đối với phương pháp Hold-out như sau:

 Bất kỳ mẫu nào thuộc vào tập kiểm thử D_test đều không được sử dụng vào quá trình huấn luyện mô hình.

 Bất kỳ mẫu nào được sử dụng trong quá trình huấn luyện hệ thống D_train đều không được sử dụng vào đánh giá mô hình.

 Các mẫu kiểm thử trong tập D_test cho phép đánh giá một cách khách quan về hiệu quả của mô hình.

Các tỷ lệ thường gặp khi phân chia dữ liệu để huấn luyện và kiểm thử mô hình là: ||D_train| = (2/3) và |D_test| = (1/3).

2.4.3. Lấy mẫu phân tầng (Stratified sample)

Đối với các tập mẫu có kích thước nhỏ hoặc không cân xứng, các tập mẫu trong tập huấn luyện và kiểm thử có thể không phải là đại diện. Ví dụ, có rất ít hoặc không có các mẫu đối với một số lớp do đó mục đích phân bố lớp trong tập huấn luyện và trong tập kiểm thử phải xấp xỉ như trong toàn bộ các mẫu trong tập D. Lấy mẫu phân tầng là một phương pháp để cân xứng về phân bố phân lớp và đảm bảo tỷ lệ phân bố giữa các lớp trong tập huấn luyện và kiểm thử phải xấp xỉ nhau. Phương pháp lấy mẫu phân tầng không áp dụng

được cho bài toán học máy dự đoán/hồi quy do đầu ra của mô hình là một giá trị số, không phải là nhãn của lớp.

2.4.4. Kiểm tra chéo (Cross-validation)

Để tránh việc trùng lặp giữa các tập kiểm thử do một số mẫu cùng xuất hiện trong các mẫu kiểm thử khác nhau ta sử dụng một số phương pháp như sau:

Kiểm tra chéo k-fold (k-fold cross-validation): toàn bộ các mẫu D được chia thành k tập con không giao nhau (gọi là “fold”) có kích thước xấp xỉ nhau. Mỗi lần trong số k lần lặp, một tập con được sử dụng làm tập kiểm thử và k-1 tập con còn lại được sử dụng làm tập huấn luyện. K giá trị lỗi (mỗi giá trị tương ứng với một fold) được tính trung bình cộng để thu được giá trị tổng thể. Các tùy chọn thông thường của k là 10 hoặc 5, mỗi tập con (fold) được lấy mẫu xấp xỉ phân bố lớp trước khi áp dụng quá trình đánh giá kiểm tra chéo và phương pháp này phù hợp khi các mẫu D vừa và nhỏ.

CHƢƠNG 3: PHƢƠNG PHÁP ÁP DỤNG HỌC MÁY VÀO PHÂN TÍCH MÃ ĐỘC

Chương này sẽ tập trung đề cập đến việc lựa chọn phương pháp trích xuất đặc trưng từ tiêu đề (header) và từ tải (payload) của gói tin mạng trên cơ sở áp dụng cùng một thuật toán học máy có giám sát Oneclass SVM vào việc phát hiện và phân loại mã độc.

3.1. Mô hình đề xuất thực hiện gồm các bƣớc sau:

Hình 3.1: mô hình phân tích mã độc

o Bước 1: Thu thập (capture) dữ liệu mạng chứa gói tin độc hại ta thu được các file .pcap.

o Bước 2: Xử lý file .pcap để lấy ra nội dung text từ header và từ payload. o Bước 3: Trích chọn đặc trưng:

 Từ header: lấy ra thông tin về địa chỉ ip, giao thức, thời gian, độ dài gói tin... tương tự như trong các bài báo [14-15]

 Từ payload: sử dụng phương pháp n-gram [4] để biểu diễn các ký tự từ payload và tính tần suất xuất hiện. Trong phạm vi của nghiên cứu này tôi sử dụng kích thước 2-gram.

o Bước 4: Sau khi thu được các đặc trưng ở bước 3, tôi thực hiện lựa chọn đặc trưng phù hợp từ header và giảm số lượng đặc trưng từ payload. o Bước 5: Từ các đặc trưng đã lựa chọn ở bước 4 chúng ta đưa chúng vào

xây dựng mô hình học máy, trong phần này tôi sử dụng thuật toán One- class SVM theo phương pháp của tác giả Schölkopf.

o Bước 6: Sau khi hoàn thành xây dựng mô hình thì đưa dữ liệu thực nghiệm vào để đánh giá kết quả.

3.2. Thu thập và tiền xử lý xử liệu dữ liệu3.2.1. Thu thập dữ liệu gói tin mạng 3.2.1. Thu thập dữ liệu gói tin mạng

Trong phạm vi của nghiên cứu này tôi không thực hiện thu thập (capture) thông tin gói tin mạng bằng các công cụ như tcpdump, STA , IDS/IPS … mà sử dụng dữ liệu nguồn đã được thu thập là các tệp tin .pcap từ cơ sở dữ liệu CICDS2017 [12]. Ví dụ, nội dung thông tin file .pcap được xem bằng công cụ wireshark như sau:

Hình 3.2: thông tin gói tin http

Hình 3.3: thông tin header của giao thức http

Ví dụ thông tin về payload của loại tấn công shell-code http như sau:

Hình 3.4: thông tin payload trong gói tin http

3.2.2. Trích chọn đặc trưng trong header của gói tin

Với đầu vào là các file .pcap được trích xuất ra các đặc trưng trong header giống như trong các bài báo [14-15] gồm: địa chỉ IP nguồn, địa chỉ IP đích, cổng nguồn, cổng đích, giao thức, độ dài gói tin (length), thời gian…Kết quả đầu ra của việc trích xuất các đặc trưng trong header thu được một danh sách các file .csv chứa thông tin như trên, ví dụ nội dụng file .csv như sau:

3.2.3. Trích chọn đặc trưng từ payload gói tin

Từ file .pcap thu được, tôi đã lập trình để trích xuất ra payload của các gói tin tương tự như trong bài báo [4], trong phạm vi của nghiên cứu này tôi trích xuất payload của gói tin theo giao thức http. Thông tin nội dung file payload sau khi được lập trình để trích xuất ra nội dung file .text có dạng như sau:

Hình 3.6: nội dung payload được trích xuất từ file .pcap

Từ nội dung payload được trích xuất ra tôi đã lập trình để chuyển đổi nội dung trong payload theo phương pháp 2-gram và tính tần suất xuất hiện của các 2-gram để thu được tập hợp các vector. Vector gồm có hàng chứa thông tin về các 2-gram và cột chứa giá trị tần suất xuất hiện của các 2-gram. Thống tin về 2-gram và cách tính tần số xuất hiện như sau:

3.2.3.1. Khái niệm n-gram

Một n-gram là một dãy các byte liền nhau có độ dài bằng n. Ví dụ một dãy các byte liền nhau trong payload được trích xuất là “AB C0 EF 12” thì dãy các n-gram byte thu được là:

Hình 3.7: mô tả biểu diễn byte theo n-gram

Có thể thấy rằng với độ dài n càng cao thì kích thước đặc trưng càng lớn. Đối với mỗi byte có 8 bit thì không gian đặc trưng của 1-gram là = 256 và 2-gram là Trong phạm vi của luận văn này tôi tập trung vào 2-gram.

3.2.3.2 Tính tần số xuất hiện

Sau khi thu được các 2-gram, tôi thực hiện tính tần số xuất hiện của mỗi 2-gram khác nhau trên từng dữ liệu mẫu. Các kết quả này sẽ được lưu vào vector đặc trưng trước khi đưa vào mô hình học để chọn ra những đặc trưng tốt nhất. Công thức để tính tần số xuất hiên (turm frequency -TF) như sau:

TF(T,D) = ( ) * ( ) +

Tần số xuất hiện của một mã 2-gram byte trong tập mẫu (file payload được trích xuất đưa về dạng text) được tính bằng thương của số lần xuất hiện 2-gram byte đó trong tập mẫu và số lần xuất hiện nhiều nhất của một 2-gram byte bất kỳ trong tập mẫu đó.

 ( ): số lần xuất hiện của 2-gram byte T trong tập mẫu D

 * ( ) + : tổng số lần xuất hiện của các 2-gram trong tập mẫu

Kết quả sau khi lập trình tính tần suất xuất hiện của 2-gram byte tôi thu được vector đặc trưng có dạng như sau:

Hình 3.8: payload được trích xuất theo phương pháp 2-gram

3.3. Lựa chọn đặc trƣng

3.3.1. Lựa chọn đặc trưng từ header

Do số lượng đặc trưng từ header ít nên tôi lựa chọn ra các đặc trưng điển hình nhất giống như trong các bài báo [14-15] gồm: thông tin về dung lượng gói tin gửi, dung lượng gói tin nhận, giao thức, thời gian và loại mã độc.

3.3.2. Lựa chọn đặc trưng từ payload

Theo bài báo số [4] thì trong học máy có thể nhận thấy rằng khi số lượng đặc trưng lớn sẽ gặp khó khăn trong việc xử lý cũng như chất lượng mô hình. Các véc tơ đặc trưng trong phương pháp này có số chiều rất lớn lên đến gần hai triệu chiều, tương ứng với số điểm dữ liệu rất lớn vì vậy nếu thực hiện lưu trữ và tính toán trực tiếp trên dữ liệu có số chiều lớn như vậy sẽ gặp khó khăn cả về việc lưu trữ, tài nguyên và tốc độ tính toán. Do đó giảm số chiều dữ liệu là bước quan trọng trong nhiều bài toán học máy, trong phần tiếp theo bên dưới tôi sẽ giới thiệu khái niệm về giảm số chiều và lựa chọn đặc trưng Giảm số chiều (demension reduction) là việc đi tìm một hàm số, hàm số này lấy đầu vào là một điểm dữ liệu ban đầu với D rất lớn và tạo ra một điểm dữ liệu mới có số chiều K < D. Có một số thuật toán thực hiện giảm chiều dữ liệu như thuật toán phân tích thành phần chính (PCA), phân tích phân biệt tuyến tính (LDA) ... nhưng trong phạm vi của luận văn này tôi chọn thuật toán PCA. Cách đơn giản nhất để giảm chiều dữ liệu từ D về K<D là chỉ giữ lại K phần tử quan trọng nhất. Tuy nhiên, việc làm này chắc chắn chưa phải tốt nhất vì chúng ta chưa biết xác định thành phần nào là quan trọng hơn. Hoặc trong trường hợp xấu nhất, lượng thông tin mà mỗi thành phần mang là như nhau, bỏ đi thành phần nào cũng dẫn đến việc mất một lượng thông tin lớn. Tuy nhiên, nếu chúng ta có thể biểu diễn các vector dữ liệu ban đầu trong một hệ cơ sở mới mà trong hệ cơ sở mới đó, tầm quan trọng giữa các thành phần là khác nhau rõ rệt, thì chúng ta có thể bỏ qua những thành phần ít quan trọng nhất.

Lấy một ví dụ về việc có hai camera đặt dùng để chụp một con người, một camera đặt phía trước người và một camera đặt trên đầu. Rõ ràng là hình ảnh thu được từ camera đặt phía trước người mang nhiều thông tin hơn so với hình ảnh nhìn từ phía trên đầu. Vì vậy, bức ảnh chụp từ phía trên đầu có thể được bỏ qua mà không có quá nhiều thông tin về hình dáng của người đó bị mất. PCA chính là phương pháp đi tìm một hệ cơ sở mới sao cho thông tin

của dữ liệu chủ yếu tập trung ở một vài toạ độ, phần còn lại chỉ mang một lượng nhỏ thông tin và để cho đơn giản trong tính toán, PCA sẽ tìm một hệ trực chuẩn để làm cơ sở mới.

3.4. Xây dựng mô hình học máy

Sau khi xây dựng được tập đặc trưng dựa vào 02 phương pháp đã trình bày ở trên, bước tiếp theo ở gian đoạn này là đưa các giá trị tần số xuất hiện của các đặc trưng 2-gram byte được trích xuất từ payload đã được chọn trên tập mẫu ban đầu và các đặc trưng được chọn từ header của gói tin ở trên vào các thuật toán học máy để xây dựng mô hình dự đoán. Các dữ liệu mẫu được gán nhãn thành 2 lớp mã độc. Giai đoạn này sử dụng các véc tơ đặc trưng thu được từ 02 phương pháp ở trên như là dữ liệu huấn luyện đầu vào cho các thuật toán phân lớp dữ liệu [9] [10] có thể áp dụng như: máy véc tơ hỗ trợ (SVM), k láng giềng, rừng ngẫu nhiên (random forest), Naive Bayes (NB), cây quyết định (DT)... Trong phạm vi của nghiên cứu này tôi lựa chọn thuật toán phân lớp tiêu biểu nhất là One-class SVM để xây dựng mô hình dự đoán phát hiện và phân loại mã độc, đồng thời kết quả của 2 phương pháp trích xuất đặc trưng từ header và từ payload bằng phương pháp 2-gram sẽ được so sánh đánh giá trên cùng thuật toán One-class SVM.

3.5. Thực nghiệm và đánh giá kết quả

3.5.1. Dữ liệu thực nghiệm

Dữ liệu thực nghiệm được lấy gồm 168186 mẫu lành tính và 44202 mẫu chứa mã độc được thu thập từ [11] đã được đánh nhãn và từ [12] chứa file .pcap. Đối với dữ liệu thu thập từ [11-12] có tỷ lệ phân bố như sau:

Loại mã độc Ransomware Charger Jisut Wannalocker Benign

Số lượng mẫu 39955 1861 2786 168186

Môi trường thực nghiệm

CPU: Intel(R) Core(TM) i3-3220 CPU @ 3.30 GHZ, RAM: 06 GB

System type: 64-bit Operating system, x64-based processor

Operate system: Ubuntu 18.04 Ngôn ngữ sử dụng Python

Công cụ lập trình

(IDE) PyCharm –JetBrain comminity 2019.01 Thư viện và các gói

cài đặt chính Scikit-learn, scipy, numpy, matplotlib, pandas

3.5.3. Đánh giá hiệu quả thuật toán

Trong phạm vi của luận văn này tôi áp dụng phương pháp ma trận nhầm lẫn (confusion maxtrix) đã được trình bày ở mục 3.4.1 ở trên để đánh giá hiệu quả của mô hình học máy.

3.5.4. Kết quả thực nghiệm

Đối với phương pháp trích xuất đặc trưng 2-gram dựa trên payload của gói tin: Trên toàn bộ không gian đối với phương pháp trích rút các đăng trưng 2-gram bytes ta sẽ thu được 3765 đặc trưng, sau đó tôi áp dụng thuật toán PCA để giảm số chiều và chọn ra được 100 đặc trưng cho kết quả tốt nhất. Trong tổng số mẫu 212788 được đưa chia thành 02 file độc lập theo tỷ lệ 70:30, 70% dùng cho dữ liệu huấn luyện và 30% dùng cho dữ liệu kiểm thử. Đối với phương pháp trích xuất thông tin từ header, do số lượng đặc trưng ít, gồm 43 đặc trưng, tôi lựa chọn ra 04 đặc trưng tiêu biểu nhất cho dữ liệu gói tin gồm: tổng số gói tin gửi đi, tổng số gói tin nhận được, thời gian và loại mã độc. Việc thực nghiệm được được thực hiện kiểm thử nhiều lần đối với 02 tập dữ liệu thu được theo 02 phương pháp ở trên và các kết quả được đánh giá dựa trên phương pháp ma trận nhầm lẫn trong đó coi lớp dương là

Một phần của tài liệu (Luận văn thạc sĩ) nâng cao hiệu quả phát hiện mã độc sử dụng các kỹ thuật học máy001 (Trang 34)