CHƯƠNG 1 TỔNG QUAN VỀ MÃ ĐỘC VÀ PHÂN TÍCH MÃ ĐỘC
2.3. Phương pháp phát hiện mã độc dựa trên meta-data của tệp tin bằng kỹ
2.3.2. Thuật toán Quinlan
Giới thiệu
Thuật tốn Quinlan quyết định thuộc tính phân hoạch bằng cách xây dựng các vector đặc trưng cho mỗi giá trị của từng thuộc tính dẫn xuất và thuộc tính mục tiêu [31].
Mơ tả thuật tốn
Bước 1: Phát hiện thuộc tính dẫn xuất và thuộc tính mục tiêu Thuộc tính mục tiêu: là thuộc tính quan tâm.
Thuộc tính dẫn xuất: là thuộc tính quan sát.
Bước 2: Với mỗi thuộc tính dẫn xuất A, tính vector đặc trưng
VA(j) = (T(j, r1), T(j , r2) , …, T(j , rn) )
T(j, ri) = (tổng số phần tử trong phân hoạch có giá trị thuộc tính dẫn xuất A là j và có giá trị thuộc tính mục tiêu là ri) / (tổng số phần tử trong phân hoạch có giá trị thuộc tính dẫn xuất A là j).
r1, r2, …, rn là các giá trị của thuộc tính mục tiêu.
Bước 3: Chọn thuộc tính có nhiều vector đơn vị nhất để phân hoạch.
Vector đơn vị là vector có duy nhất một thành phần có giá trị 1 và những thành phần khác có giá trị 0.
Thuật toán quy nạp cây ID3 (gọi tắt là ID3) là một thuật toán học đơn giản nhưng được ứng dụng rộng rãi trong nhiều lĩnh vực và cho kết quả tốt. ID3 biểu diễn các khái niệm ở dạng các cây quyết định, ở dạng biểu diễn này cho phép xác định phân loại của một đối tượng bằng cách kiểm tra các giá trị của đối tượng trên một số thuộc tính nào đó. Thuật tốn ID3 là học cây quyết định từ một tập các ví dụ rèn luyện (training example) hay là dữ liệu rèn luyện (training data).
Mơ tả thuật tốn ID3
Thuật toán ID3 được phát biểu bởi Quinlan (trường đại học Syney, Australia) và được công bố vào cuối thập niên 70 của thế kỷ 20 [32]. ID3 được xem như là một cải tiến của CLS với khả năng lựa chọn thuộc tính tốt nhất để tiếp tục triển khai cây tại mỗi bước.
Trong ID3, chúng ta cần xác định thứ tự của thuộc tính cần được xem xét tại mỗi bước. Với các bài tốn có nhiều thuộc tính và mỗi thuộc tính có nhiều giá trị khác nhau, việc tìm được nghiệm tối ưu thường là khơng khả thi. Thay vào đó, một phương pháp đơn giản thường được sử dụng là tại mỗi bước, một thuộc tính tốt nhất sẽ được chọn ra dựa trên một tiêu chuẩn. Với mỗi thuộc tính được chọn, ta chia dữ liệu vào các nút con (child node) tương ứng với các giá trị của thuộc tính đó rồi tiếp tục áp dụng phương pháp này cho mỗi nút con. Việc chọn ra thuộc tính tốt nhất ở mỗi bước được gọi là cách chọn tham lam (greedy). Cách chọn này có thể khơng phải là tối ưu, nhưng là cách sẽ gần với cách làm tối ưu. Ngoài ra, cách làm này khiến cho bài toán cần giải quyết trở nên đơn giản hơn. Sau mỗi câu hỏi, dữ liệu được phân chia vào từng nút con tương ứng với các câu trả lời cho câu hỏi đó. Câu hỏi ở đây chính là một thuộc tính, câu trả lời chính là giá trị của thuộc tính đó. Để đánh giá chất lượng của một cách phân chia, chúng ta cần đi tìm một phép đo.
Trước hết, thế nào là một phép phân chia tốt. Một phép phân chia là tốt nhất nếu dữ liệu trong mỗi nút con hồn tồn thuộc vào một class. Khi đó nút con này có thể được gọi là một nút lá (leaf node), tức ta không cần phân chia thêm nữa. Nếu dữ liệu trong các nút con vẫn lẫn vào nhau theo tỉ lệ lớn, ta coi
�=
1
rằng phép phân chia đó chưa thực sự tốt. Từ nhận xét này, ta cần có một hàm số đo độ tinh khiết (purity), hoặc độ vẩn đục (impurity) của một phép phân chia. Hàm số này sẽ cho giá trị thấp nhất nếu dữ liệu trong mỗi nút con nằm trong cùng một class (tinh khiết nhất), và cho giá trị cao nếu mỗi nút con có chứa dữ liệu thuộc nhiều class khác nhau.
Entropy đo tính thuần nhất của tập dữ liệu
Entropy dùng để đo tính thuần nhất của một tập dữ liệu. Entropy của một tập S được tính theo cơng thức:
Entropy(S) = −�+ ���2(�+) −�− ���2(�−)
Trong trường hợp các mẫu dữ liệu có hai thuộc tính phân lớp “yes” (+), “no” (-), Ký hiệu P+ là để chỉ tỉ lệ các mẫu có giá trị của thuộc tính quyết định là “yes”, và P- là tỷ lệ các mẫu có giá trị của thuộc tính quyết định là “no” trong tập S.
Trường hợp tổng quát, đối với tập con S có n phân lớp thì ta có cơng thức sau:
Entropy(S) = ∑� (−�� ���2(��))
Trong đó Pi là tỷ lệ các mẫu thuộc lớp I trên tập hợp S các mẫu kiểm tra. Các trường hợp đặc biệt:
Nếu tất cả các mẫu thành viên trong tập S đều thuộc cùng một lớp thì Entropy(S) = 0.
Nếu trong tập S có số mẫu phân bố đều nhau vào các lớp thì Entropy(S) = 1.
Giá trị Gain của thuộc tính A trong tập S ký hiệu là Gain(S,A) và được tính theo cơng thức sau:
Gain(S,A)=Information(A)–Entropy(A)= Entropy(S) - ∑ |��| Trong đó: �! ) ∈�����(� |�| Entropy(��)
S là tập hợp ban đầu với thuộc tính A. Các giá trị của v tương ứng là các giá trị của thuộc tính A.
Sv bằng tập hợp con của tập S mà có thuộc tính A mang giá trị v. |Sv| là số phần tử của tập Sv.
|S| là số phần tử của tập S.
Trong quá trình xây dựng cây quyết định theo thuật tốn ID3 tại mỗi bước triển khai cây, thuộc tính được chọn để triển khai là thuộc tính có giá trị Gain lớn nhất.
Thuật toán ID3 xây dựng cây quyết định
Bước 1: Chọn A <= thuộc tính quyết định “tốt nhất” cho nút kế tiếp. Bước 2: Gán A là thuộc tính quyết định cho nút.
Bước 3: Với mỗi giá trị của A, tạo nhánh con mới của nút. Bước 4: Phân loại các mẫu huấn luyện cho các nút lá.
Bước 5: Nếu các mẫu huấn luyện được phân loại hồn tồn thì Kết Thúc. Ngược lại, lặp với các nút lá mới tại Bước 1.
2.3.4. Thuật toán C4.5
Giới thiệu
C4.5 được xem là phiên bản nâng cấp của ID3 với khả năng xử lý được cả dữ liệu đinh lượng dạng liên tục (continuous data) và cả dữ liệu định tính, và là thuật tốn Decision tree tiêu biểu. C4.5 sử dụng thêm cơng thức Gain ratio để khắc phục các khuyết điểm của Information Gain của ID3 trong việc lựa chọn cách phân nhánh tối ưu
Thuật toán C4.5 được phát triển từ thuật toán CLS và ID3 vào năm 1993 [33]. Với những đặc điểm C4.5 là thuật toán phân lớp dữ liệu dựa trên cây quyết định hiệu quả và phổ biến trong những ứng dụng khai phá cơ sở dữ liệu có kích thước nhỏ. C4.5 sử dụng cơ chế lưu trữ dữ liệu thường trú trong bộ nhớ, chính đặc điểm này làm C4.5 chỉ thích hợp với những cơ sở dữ liệu nhỏ, và cơ chế sắp xếp lại dữ liệu tại mỗi nút trong quá trình phát triển cây quyết định. C4.5 cịn cho phép biểu diễn lại cây quyết định dưới dạng một danh sách sắp thứ tự các luật if-then (một dạng quy tắc phân lớp dễ hiểu). Kỹ thuật này cho phép làm giảm bớt kích thước tập luật và đơn giản hóa các luật mà độ chính xác so với nhánh tương ứng cây quyết định là tương đương.
Thuật toán C4.5 xây dựng cây quyết định
Bước 1: Kiểm tra case cơ bản
Bước 2: Với mỗi thuộc tính A, tìm thơng tin nhờ việc tách thuộc tính A. Bước 3: Chọn a_best là thuộc tính mà độ đo lựa chọn thuộc tính “tốt nhất”
Bước 4: Dùng a_best làm thuộc tính cho node chia cắt cây.
Bước 5: Đệ quy trên danh sách phụ được tạo ra bởi việc phân chia theo a_best, và thêm các node này như là con của node.
Gain Entropy làm độ đo lựa chọn thuộc tính tốt nhất
Phần lớn các hệ thống đều cố gắng để tạo ra một cây càng nhỏ càng tốt, vì những cây nhỏ hơn thì dễ hiểu hơn và dễ đạt được độ chính xác dự đốn cao hơn. Do khơng thể đảm bảo được sự cực tiểu của cây quyết định, C4.5 dựa vào nghiên cứu tối ưu hóa, và sự lựa chọn cách phân chia mà có độ đo lựa chọn thuộc tính đạt giá trị cực đại.
�=
1
I(S) = -∑�
��(�� � ��� ��( ,, ) �� �)
Với S là tập cần xét sự phân phối lớp.
Sau khi S được phân chia thành các tập con S1, S2,…, St bởi test B thì
Information Gain được tính bằng:
G(S,B) = I(S) -∑�
��
( )
�=1 |
� | � ��
Test B sẽ được chọn nếu có G(S, B) đạt giá trị lớn nhất.
Tuy nhiên có một vấn đề khi sử dụng G(S,B) ưu tiên test có số lượng lớn kết quả, ví dụ G(S,B) đạt cực đại với test mà từng Si chỉ chứa một case đơn. Tiêu chuẩn gain ratio giải quyết được vấn đề này bằng việc đưa vào thông tin tiềm năng (potential information) của bản thân mỗi phân hoạch:
P(S, B) = ∑� | |�� ��� (| |) .�� �=1 � �
Test B sẽ được chọn nếu có tỉ số giá trị gain ratio = G(S, B) / P(S, B) lớn nhất.
2.3.5. Thuật toán RandomForest
Giới thiệu về thuật toán Random Forest (RDF)
RDF được đề xuất bởi Breiman vào năm 2001. Đây là thuật tốn phân loại có kiểm định dựa trên cây quyết định và kỹ thuật bagging và bootstrapping đã được cải tiến. Bootstrapping là một phương pháp rất nổi tiếng trong thống kê được giới thiệu bởi Efron vào năm 1979 [34]. Phương pháp này được thực hiện như sau: từ một quần thể ban đầu lấy ra một mẫu L
= (x1, x2,..,xn) gồm n thành phần để tính tốn các tham số mong muốn. Trong các bước tiếp theo lặp lại b lần tạo ra mẫu Lb cũng gồm n phần từ L bằng cách lấy lại mẫu với sự thay thế các thành phần trong mẫu ban đầu sau đó tính tốn các tham số mong muốn (Đồng Thị Ngọc Lan, 2011) [35]. Phương pháp Bagging được xem như là một phương pháp tổng hợp kết quả có được từ các bootstraping sau đó huấn luyện mơ hình từ các mẫu ngẫu nhiên này và cuối cùng đưa ra dự đoán phân loại dựa vào số phiếu bầu cao nhất của lớp phân loại (Đồng Thị Ngọc Lan, 2011) [35]. Cây quyết định là một sơ đồ phát triển có cấu
của mẫu được đưa vào kiểm tra trên cây 125 quyết định. Mỗi mẫu tương ứng có một đường đi từ gốc-tức là dữ liệu đầu vào đến lá-tức là các kết quả phân loại dự đoán đầu ra, biểu diễn dự đoán giá trị phân lớp mẫu đó. Mỗi sơ đồ cây trong tập mẫu được tạo thành từ tập hợp các điểm ảnh huấn luyện được lựa chọn ngẫu nhiên để huấn luyện mơ hình phân loại RDF (mỗi tập mẫu bootstrap sẽ cho ra một tree và ntree tương ứng với nbootstrap). Khi một tập mẫu được rút ra từ tập huấn luyện (bootstrap) với sự thay thế có hồn lại, thì theo ước tính có khoảng 1/3 các phần tử khơng nằm trong mẫu này và vì thế chúng khơng tham gia vào quá trình huấn luyện (Breiman L., 2001, 2007) [36], [37]. Điều này có nghĩa là chỉ có khoảng 2/3 các phần tử trong tập huấn luyện tham gia vào trong các tính tốn để phân loại (in of bag), và 1/3 các phần tử này dùng để kiểm tra sai số được gọi là dữ liệu out-of-bag (OOB). Dữ liệu out-of-bag được sử dụng để ước lượng sai số tạo ra từ việc kết hợp các kết quả phân loại riêng lẻ sau đó được tổng hợp trong mơ hình RDF cũng như dùng để ước tính các biến quan trọng (variable important) bằng chức năng Importance..
Mơ tả thuật tốn Random Forest
Chúng ta có thể nghĩ đến một ví dụ đơn giản trong cuộc sống, giả sử tơi muốn tìm hiểu một địa danh cho chuyến du lịch sắp tới, tôi sẽ đi hỏi một người bạn để tham khảo ý kiến. Nhưng, ý kiến của người bạn này có thể khơng khách quan cho lắm. Tôi liền đi hỏi thêm một vài người nữa, và tổng hợp lại để cho ra quyết định đi hay khơng.
Nếu coi mỗi ý kiến của những người góp ý là một cây quyết định, thì chúng ta đã có hình dung mơ hồ về Random Forest rồi. Random Forest hoạt động bằng cách đánh giá nhiều Cây quyết định ngẫu nhiên, và lấy ra kết quả
- Chia các node con theo node tốt nhất vừa tìm được - Lặp lại bước 1-3 cho đến khi đạt đến k node
- Lặp lại bước 1-4 để tạo ra “n” cây
Sau các bước trên, chúng ta đã tạo ra được một Random Forest, vậy nó hoạt động như thế nào để dự đoán?
Để biểu diễn dự đoán sử dụng Random Forest đã huấn luyện, ta sử dụng các bước bên dưới:
- Lấy các test features và sử dụng các Cây quyết định đã tạo ra để dự đốn kết quả, lưu nó vào một danh sách.
- Tính tốn số lượng vote trên tồn bộ Forest cho từng kết quả.
- Lấy kết quả có số lượng vote lớn nhất làm kết quả cuối cho mơ hình.
Hình 2.11. Mơ phỏng sự phân tách trong cây quyết địnhƯu điểm của thuật toán Random Forest Ưu điểm của thuật toán Random Forest
Trong thuật toán Decision Tree, khi xây dựng cây quyết định nếu để độ sâu tùy ý thì cây sẽ phân loại đúng hết các dữ liệu trong tập training dẫn đến mơ hình có thể dự đốn tệ trên tập validation/test, khi đó mơ hình bị overfitting, hay nói cách khác là mơ hình có high variance.
Thuật tốn Random Forest gồm nhiều cây quyết định, mỗi cây quyết định đều có những yếu tố ngẫu nhiên: Lấy ngẫu nhiên dữ liệu để xây dựng cây quyết định, lấy ngẫu nhiên các thuộc tính để xây dựng cây quyết định.
Do mỗi cây quyết định trong thuật tốn Random Forest khơng dùng tất cả dữ liệu training, cũng như khơng dùng tất cả các thuộc tính của dữ liệu để xây dựng cây nên mỗi cây có thể sẽ dự đốn khơng tốt, khi đó mỗi mơ hình cây quyết định khơng bị overfitting mà có thế bị underfitting, hay nói cách khác là mơ hình có high bias. Tuy nhiên, kết quả cuối cùng của thuật toán Random Forest lại tổng hợp từ nhiều cây quyết định, thế nên thông tin từ các cây sẽ bổ sung thông tin cho nhau, dẫn đến mơ hình có low bias và low variance, hay mơ hình có kết quả dự đốn tốt.
Ý tưởng tổng hợp các cây quyết định của thuật toán Random Forest giống với ý tưởng của The Wisdom of Crowds được đề xuất bởi by James Surowiecki vào năm 2004 [38]. The Wisdom of Crowds nói rằng thơng thường tổng hợp thơng tin từ 1 nhóm sẽ tốt hơn từ một cá nhân. Ở thuật toán Random Forest ta cũng tổng hợp thơng tin từ 1 nhóm các cây quyết định và kết quả cho ra tốt hơn thuật toán Decision Tree với 1 cây quyết định.
2.4. Kết luận chương 2
Chương 2 trình bày được khái niệm về siêu dữ liệu, cấu trúc dữ liệu của tệp tin thực thi trên hệ điều hành Windows. Qua đó làm sáng tỏ mối liên hệ giữa dữ liệu cần sử dụng làm siêu dữ liệu với các trường, cấu trúc của tệp tin thực thi.
Trong chương này cũng đã trình bày chi tiết về các kỹ thuật áp dụng trong cây quyết định, ưu nhược điểm, tính thực tế và khả năng triển khai từ đó làm cơ
CHƯƠNG 3. TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ3.1. Triển khai giải pháp 3.1. Triển khai giải pháp
3.1.1. Giới thiệu giải pháp
Yêu cầu đặt ra cần xây dựng cây quyết định phát hiện mã độc dựa vào dữ liệu meta-data của tệp tin giúp xác định một tệp tin có phải là mã độc hay khơng.
Ta có thể nghĩ đến giải pháp tương tự như virustotal hay nhiều cơ sở dữ liệu khác có thể phát hiện họ mã độc. Với cơ sở dữ liệu rất lớn và tích hợp nhiều nhà phát triển đây là một giải pháp khơn ngoan, nhưng lại khó giải quyết với những mẫu mã độc mới.
Việc cần thiết của ứng phó sự cố là tính tức thời, ta khơng thể phụ thuộc vào một giải pháp của hãng thứ 3 quá nhiều. Nếu mã độc có sức lây lan cao vào nhanh hay tấn cơng APT thì việc cần xác định nhanh thơng tin về mã độc là việc hết sức cần thiết.
Việc này thật sự cần thiết cho nhà phân tích có thêm thơng tin để có thể rút ngắn thời gian phân tích mã độc, đưa ra biện pháp ứng phó sự cố. Đối với nhà phát triển phần mềm chống mã độc, đây cũng là một hướng tiếp cận cho phép