6. Bố cục của luận án
3.4. Thực nghiệm và đánh giá
3.4.1. Bộ dữ liệu thực nghiệm
Để đánh giá kết quả hoạt động của đặc trưng đề xuất, tập dữ liệu chứa 8911 mẫu tệp thực thi chạy thành cơng từ V-Sandbox bao gồm 5023 IoT Botnet và 3888 mẫu lành tính đa nền tảng kiến trúc vi xử lý (gồm MIPS, ARM, x86, PowerPC,…) đã được thu thập và sử dụng cho thực nghiệm. Các mẫu mã độc được thu thập từ ba nguồn chính từ IoTPOT [43], Virustotal [99] và VirusShare [109]. Các mẫu lành tính được trích xuất từ hình ảnh phần sụn của các thiết bị IoT giới hạn tài nguyên trên mạng như bộ định tuyến khơng dây (Router Wifi), camera IP, TV smart box,… Mơ tả về các mẫu trong tập dữ liệu được mơ tả trong Bảng 3.1.
Bảng 3.1 Mơ tả chi tiết về Dataset
Loại Số lượng
Mirai 1510
Bashlite 2786
Mã độc IoT Botnet khác
(Tsunami, Spike, Dofloo, MrBlack,…)
727
3.4.2. Triển khai thử nghiệm
Để thử nghiệm, nghiên cứu sinh sử dụng máy tính với CPU Intel Xeon E5-2689 2.6 GHz với 16GB RAM, ở cứng cĩ dung lượng lưu trữ 2 TB. Mơi trường ảo hĩa V- Sandbox được cài đặt theo mã nguồn được nghiên cứu sinh chia sẻ tại Github [100]. Các thuật tốn nhúng đồ thị được tham khảo mã nguồn được tác giả chia sẻ tại Github gồm: FEATHER [110], LDP [111] và Graph2vec [112]. Các thuật tốn học máy được thử nghiệm như SVM, KNN, Decision Tree, Random Forest,… được cài đặt thơng qua ngơn ngữ Python với sự hỗ trợ từ thư viện Scikit-learn [113]. Với các giá trị đặc trưng được trích xuất từ đồ thị DSCG, các vetor đặc trưng được đưa vào các bộ học máy phở biến như SVM, KNN, Decision Tree, Random Forest,… để huấn luyện và đánh giá khả năng phân loại của đặc trưng được đề xuất. Các thuật tốn học máy kể trên được nghiên cứu sinh lựa chọn để thử nghiệm với hai lý do chính. Thứ nhất, dựa trên kết quả khảo sát các nghiên cứu về phát hiện mã độc IoT Botnet bằng trí tuệ nhân tạo tại mục 1.3.4, các nhà nghiên cứu trong và ngồi nước thường sử dụng các thuật tốn học máy này và cho kết quả mơ hình phát hiện với độ chính xác tương đối cao. Thứ hai, để cĩ cơ sở đánh giá hiệu quả của đặc trưng đề xuất với các đặc trưng của các tác giả khác đã cơng bố, nghiên cứu sinh lựa chọn bộ dữ liệu thử nghiệm và thuật tốn học máy cĩ đặc điểm tương đồng để đánh giá.
Trong quá trình tiến hành huấn luyện và đánh giá khả năng phân loại của đặc trưng được trích rút từ đồ thị DSCG, nghiên cứu sinh đồng thời tiến hành điều chỉnh các tham số chính của các mơ hình học máy ở trên để tìm ra mơ hình phù hợp nhất cĩ thể. Các tham số chính mà nghiên cứu sinh tiến hành điều chỉnh được mơ tả như trong Bảng
3.2. Các tham số cịn lại thì sử dụng theo mặc định.
Bảng 3.2 Các tham số mơ hình học máy được điều chỉnh
Thuật tốn Tham số Mơ tả
KNN
n_neighbors Số lượng điểm gần nhất được sử dụng để phân lớp weights Hàm đánh trọng số các điểm được sử dụng trong
dự đốn nhãn
n_jobs Số lượng tác vụ sẽ chạy xử lý song song Decision Tree randoom_state Khởi tạo quá trình lấy mẫu ngẫu nhiên
Thuật tốn Tham số Mơ tả
criterion Độ đo lựa chọn thuộc tính phân loại splitter Tiêu chuẩn phân chia tại mỗi nút Random
Forest
n_estimators Số lượng cây trong tập hợp cây quyết định (forest) random_state Khởi tạo quá trình lấy mẫu ngẫu nhiên
n_jobs Số lượng tác vụ sẽ chạy xử lý song song
SVM
random_state Khởi tạo quá trình lấy mẫu ngẫu nhiên probability Lựa chọn ước tính xác suất
C Tham số chính quy hĩa (regularization)
gama Tham số của hàm Radial Basic Function (RBF) Các tham số được nghiên cứu sinh tinh chỉnh trong quá trình thử nghiệm được minh họa trong mã nguồn như trong Hình 3.6.
Hình 3.6 Các kịch bản thử nghiệm điều chỉnh tham số các mơ hình học máy
Do số lượng mẫu mã độc IoT Botnet cho thiết bị IoT hạn chế tài nguyên thu thập được cịn ít nên để tránh hiện tượng Overfitting và kiểm tra khả năng phát hiện các biến thể mới của mã độc IoT Botnet thì cần một phương án chia tập dữ liệu thử nghiệm thành SEED = 42 ALGO = [‘KNN’, ‘DT’, ‘RF’, ‘SVM’] CLF NAME = { ‘KNN’: ‘K-Nearest Neighbors’, ‘DT’: ‘Decision Tree’, ‘RF’: ‘Random Forest’, ‘SVM’: ‘SVM’, } CLASSIFIERS = { ‘KNN’: KneighborsClassifier(n_jobs=-1), ‘DT’: DecisionTreeClassifier(random_state=SEED), ‘RF’: RandomForestClassifier(random_state=SEED, n_jobs=-1), ‘SVM’: SVC(random_state=SEED, probability=True), } HYPER_GRID = {
‘KNN’: {“n_neighbors”: [10, 100, 1000], “weights”: [“uniform”, “distance”]}, ‘DT’: {“criterion”: [“gini”, “entropy”], “splitter”: [“best”, “random”]},
‘RF’: {“n_estimators”: [10, 100, 1000]},
‘SVM’: {“C”: np.logspace(-1, 1, 3), “gamma”: np.logspace (-1, 1, 3)}, }
các tập nhỏ hơn để huấn luyện và đánh giá hiệu quả hơn (validation). Nghiên cứu sinh đã sử dụng 3 kịch bản phân chia tập dữ liệu thử nghiệm như sau để huấn luyện và đánh giá đặc trưng đề xuất. Với kịch bản đầu tiên, tập huấn luyện bao gồm mã độc Bashlite, mã độc IoT Botnet khác và tệp lành tính; tập kiểm thử bao gồm chủ yếu mã độc Mirai và tệp lành tính. Mục tiêu của kịch bản đầu tiên là kiểm tra khả năng phát hiện họ mã độc IoT Botnet mới (Mirai) của phương pháp đề xuất khi mà tập huấn luyện chỉ chứa chủ yếu họ mã độc IoT Botnet đã xuất hiện trước đĩ theo thời gian. Tương tự, mục tiêu của kịch bản thứ 2 nhằm kiểm tra, đánh giá khả năng phát hiện các biến thể khác nhau của mã độc IoT Botnet khi mà tập huấn luyện chỉ tập trung vào 2 họ mã độc IoT Botnet chính là Bashlite và Mirai. Mục tiêu của kịch bản thứ 3 nhằm kiểm tra, đánh giá khả năng phát hiện các mẫu mã độc IoT Botnet đã xuất hiện trước đĩ (Bashlite) dựa trên việc huấn luyện với họ mã độc xuất hiện sau (Mirai) và một số các biến thể các họ mã độc khác. Bên cạnh đĩ, kịch bản thứ 3 cũng phục vụ việc kiểm tra, đánh giá khả năng Overfiting của phương pháp đề xuất.
Bảng 3.3 Kịch bản phân chia tập dữ liệu thử nghiệm
Kich bản Tập huấn luyệnLoại Số lượng LoạiTập kiểm thửSố lượng
1 Bashlite 2786 Mirai 1510 Mã độc IoT Botnet khác 727 Lành tính (ngẫu
nhiên) 3088 Lành tính (ngẫunhiên) 800 2
Bashlite 2786 Mã độc IoT
Botnet khác 727
Mirai 1389
Lành tính (ngẫu
nhiên) 3088 Lành tính (ngẫunhiên) 800 3 Mirai 1510 Bashlite 2786 Mã độc IoT Botnet khác 727 Lành tính (ngẫu
nhiên) 3088 Lành tính (ngẫunhiên) 800