MỞ ĐẦU Trong bối cảnh hiện nay, các phần mềm độc hại được tạo ra và phát triển với số lượng ngày càng tăng về số lượng cũng như biến thé. Chúng được áp dụng nhiều kỹ thuật mới và ngày càng tinh vi hơn nhằm qua mặt các hệ thống phòng chống mã độc tân tiến. Tuy nhiên hầu hết các hệ thống này hiện nay đều dựa trên cơ sở đặc trưng của các mẫu mã độc đã được phát hiện và phân tích. Các nhà phát triển mã độc có thê lợi dụng điều này dé phat triển mẫu mã độc khai thác các lỗ hồng Zero-day (0- day) hoặc chỉnh sửa mẫu mã độc cũ nhằm tạo ra biến thê mới với những dấu hiệu hoàn toàn khác nhăm đánh lừa các hệ thống dang này.
Có nhiều nghiên cứu cho thấy việc sử dụng phân đoạn mã lệnh có khả năng phát hiện được các mẫu mã độc mới mà vẫn đạt hiệu quả cao Luận văn tập trung vào việc tim hiểu các kỹ thuật phân tích mã độc ở dạng tập tin Portable Executable (PE) trên hệ điều hành Windows với kiến trúc dòng x86, xây dựng bộ đặc trưng dựa trên phân đoạn mã lệnh, xây dựng mô hình máy học dé phát hiện được các loại mã độc không xác định. Đồng thời, nhóm tác giả xây dựng một ứng dụng phân tích và phát hiện mã độc sử dụng mô hình máy học. Các công trình nghiên cứu đã công bố Bài toán phát hiện phần mềm độc hại sử dụng các thuật toán máy học không phải là van dé mới. Đối với bài toán “phát hiện phần mềm độc hại không xác định” theo hướng tiếp cận là sử dụng “kỹ thuật phân tích chuỗi mã lệnh” đã được các nhà nghiên cứu công bố một số giải pháp khả thi.
Santos !"! và các cộng sự sử dụng đặc trưng term-frequency (TF) cho mỗi mã lệnh và thuật toán học máy bán giám sát Learning with Local and Global Consistency — LLGC. Sun, Zhi ”! và các cộng sự sử dung đặc trưng term-frequency-inverse document frequency (TF-IDF) kết hợp phương pháp chọn ra k cặp mã lệnh có tần suât xuât hiện nhiêu nhât đê huân luyện với các thuật toán máy học kinh điên. Manavi, Farnoush "! và các cộng sự xây dựng ma trận kề biểu diễn các cặp lệnh n-gram (với n = 2) và áp dụng thuật toán tiền hóa (Evolutionary algorithms) trên đặc trưng thu được. Anh Viet Phan '! và các cộng sự xây dựng Control Flow Graph (CFG) để phân lớp các chương trình vào 4 bai toán khác nhau, sử dung Convolutional Neural Network (CNN).
Cac van dé cần giải quyết và điểm mới của đề tài Đề tài tập trung giải quyết các vấn đề sau: - Xay dựng bộ dữ liệu mã độc trích xuất từ bộ di liệu BIG2015 với định dạng đơn giản và gọn nhẹ hơn. - _ Xây dung Control Flow Graph với một số cải tiến dé đảm bảo luồng chạy thông suốt của chương trình. - Đánh giá khả năng của nhiều loại phương pháp máy học trên các đặc trưng mới xây dựng. - Hién thực ứng dụng với tính năng tự động huấn luyện và chọn lọc đặc trưng.
CÁC LÝ THUYÉT VÀ KIÊN THỨC LIÊN QUAN 2. Máy học Machine Learning là một lĩnh vực nhỏ của Khoa Học Máy Tính, và là tập con của trí tuệ nhân tạo - Artificial Intelligence (AI), cung cấp cho máy tính khả năng học mà không cần lập trình rõ ràng. Ngày nay machine learning đã có nhiều ứng dụng thực tế trong đời sống như giáo dục, y tế, tài chính, hệ thống khuyến nghị, công nghệ tri thức, Internet kết nối vạn vật — IoT,. Học máy không giám sát Hoc máy không giám sat - Unsupervised Learning là thuật toán học máy không biết được nhãn mà chỉ có dữ liệu đầu vào.
Thuật toán học máy không giám sát sẽ dựa vào cấu trúc của dữ liệu đề thực hiện một công việc nào đó, ví dụ như phân nhóm (clustering) hoặc giảm số chiều của dữ liệu (dimension reduction) dé thuận tiện trong việc lưu trữ và tính toán. - Clustering: Clustering ding dé phân nhóm toàn bộ dữ liệu đầu vào thành các nhóm nhỏ dựa trên sự liên quan giữa các dữ liệu trong mỗi nhóm. - Association: Association dùng dé khám pha ra một quy luật dựa trên nhiều dữ liệu cho trước, thường được sử dụng trong các hệ thống khuyến nghị. Học máy bán giám sát Hoc máy ban giám sát — Semi-Supervised Learning là thuật toán học máy lai giữa học may có giám sát va học máy không giám sát.
Trong loại thuật toán nay, chỉ một phần trong dữ liệu đầu vào được gán nhãn. Học củng cố Học máy củng có - Reinforcement Learning là thuật toán học máy có khả năng giúp hệ thống tự động xác định được hành vi dựa trên hoàn cảnh dé dat được lợi ích cao nhất (maximizing the performent). Hiện tại, học máy củng cô chủ yêu được áp dụng vào Lý Thuyết Trò Chơi - Game Theory. Học máy có giám sát Học máy có giám sát - Supervised Learning là thuật toán dự đoán đầu ra của một đữ liệu dựa trên các cặp (dữ liệu, nhãn) đã biết từ trước.
Học máy có giám sắt là nhóm phổ biến nhất trong các thuật toán học máy. 16 Thuật toán hoc máy có giám sat còn được tiếp tục chia nhỏ ra thành hai loại chính. - - Thuật toán phân loại: Phân loại — Classification dùng trong trường hợp các nhãn của dữ liệu đầu vào được chia thành một số hữu hạn nhóm, ví dụ như true hoặc false, 0 hoặc 1 hoặc 2. - _ Thuật toán hồi quy: Hồi quy — Regression dùng trong trường hợp các nhãn của dữ liệu đầu vào không thuộc hữu hạn nhóm mà là các giá tri thực cụ thể.
Đề tài sử dụng hai nhãn dữ liệu là 0 cho các mẫu mã sạch và 1 cho các mẫu mã độc. Với bài toán phát hiện mã độc cần thiết phải kết quả mang tính chất rõ ràng và chính xác nên các thuật toán học máy có giám sát được lựa chọn sử dụng cho đề tài này. Thuật toán phân lớp trong máy học 2. Khái niệm và các thuật toán phân lớp Bài toán phân lớp — Classification thuộc loại hoc máy có giám sát.
Một bai toán được giải quyết bang thuật toán phân lớp khi số lượng nhãn của dit liệu đầu vào là hữu hạn, ví dụ như true hoặc false, hay 0 hoặc 1 hoặc 2. Có nhiều bải toán phân lớp dé liệu như phân lớp nhị phân — binary, phan lớp đa lớp — multiclass, phân lớp đa biến — multivariate. Đối với đề tài này, nhóm tác giả sử dung bai toán phân lớp nhị phân với mục đích gắn nhãn dữ liệu vào 2 lớp khác nhau (bao gồm nhóm mã sạch và nhóm mã độc). Các thuật toán phân lớp được sử dụng trong đề tài: 2.
K-nearest neighbor K-nearest neighbor (KNN) là một trong những thuật toán may hoc có giám sát đơn giản nhất mà vẫn hiệu quả trong một vải trường hợp trong học máy. Khi huấn luyện, thuật toán này không học một điều gì từ dữ liệu training, mọi tính toán được thực hiện khi nó cần dự đoán kết quả của dữ liệu mới. KNN có thể áp dụng được vào cả hai loại của bài toán máy học có giám sát là classification và regression. KNN còn được gọi là một thuật toán Instance-based hay Memory-based learning.
KNN có ưu điểm là độ phức tạp tính toán của quá trình huấn luyện là bằng 0, việc dự đoán kết quả của dữ liệu mới rất đơn giản. Tuy nhiên, KNN rất nhạy cảm với nhiễu khi K nhỏ, việc tính khoảng cách tới từng điểm đữ liệu trong tập training 17 sẽ tôn rât nhiêu thời gian, đặc biệt là với các cơ sở đữ liệu có sô chiêu lớn và có nhiêu điêm dữ liệu. Với K cảng lớn thì độ phức tạp cũng sẽ tăng lên. Ngoài ra, việc lưu toàn bộ dữ liệu trong bộ nhớ cũng ảnh hưởng tới hiệu năng của KNN.
Support Vector Machine Support Vector Machine (SVM) là một thuật toán học có giám sát nôi tiếng, có thể sử dụng cho cả việc Classification va Regression. Machine là bài toán đi tìm mặt phân cách hay siêu phang (hyperplane) dé phân tách dữ liệu thành các lớp riêng biệt, sao cho khoảng cách từ các điểm đữ liệu đến siêu phẳng tìm được là lớn nhất, đồng nghĩa với việc các điểm đữ liệu an toàn nhất so với mặt phân cách. Trong quá trình huấn luyện SVM, có vô số các mặt phân cách giúp phân biệt các lớp. Với mỗi mặt phân cách, ta có một bộ phân lớp, Khoảng cách gần nhất từ một điểm dữ liệu tới mặt phân cách ấy được gọi là biên (margin) của bộ phân lớp đó.
Với các bài toán mà dữ liệu gần như có thé phân tách tuyến tinh (linearly separable) hoặc phân tách phi tuyến tính (nonlinear separable), có những cải tiến khác của SVM để thích nghỉ với dữ liệu đó. Logistic Regression Logistic Regression là thuật toán học máy được vay mượn từ xác suất thông kê, được sử dụng dé tinh khả năng phân loại [0,1] với đầu vào dữ liệu cụ thé, trong đó thuật toán được biéu diễn dựa trên hàm Logistic (hàm sigmoid của logarit tự nhiên). Mặc dù có tên là Regression, Logistic Regression lại được sử dụng nhiều trong các bài toán phân lớp. Mặc dù Logistic Regression không cần có giả thiết dữ liệu hai lớp là linearly separable, nhưng mô hình này chỉ phù hợp với loại dữ liệu mà hai lớp là gần với linearly separable.
Logistic Regression không làm việc được với loại dữ liệu phi tuyến (non-linear). Multi-layer Perceptron Multi-layer Perceptron (MLP) là mang nơ-ron nhân tạo — (neural network) có nhiều lớp an (hidden layers) ở giữa. Một neuron nhân tao (còn được gọi là percepton) là một hàm biến đồi toán học nhận một hoặc nhiều đầu vào đã được nhân với các giá tri gọi là "weights", cộng các giá tri đó lại với nhau thành một giá trị duy nhất. Sau đó giá trị này được đưa vào một hàm phi tuyến (được gọi là activation function) và kết quả của hàm này chính là đầu ra của neuron.
18 Người ta đã chứng minh được rằng, luôn luôn tồn tại một Neural Network có khả năng xấp xi hầu hết các hàm liên tục với chỉ một hidden layer (với số hidden units đủ lớn va nonlinear activation function phù hợp). Tuy nhiên trên thực tế, việc tìm ra số lượng hidden units và nonlinear activation function nói trên nhiều khi bất khả thi. Thay vào đó, thực nghiệm chứng minh rằng Neural Networks với nhiều hidden layers kết hợp với các nonlinear activation function (đơn giản như ReLU) có khả năng xấp xi (khả năng biểu diễn) đữ liệu training tốt hơn.