Cài đặt và đánh giá thuật toán Kolmogorov

Một phần của tài liệu đồ án phát hiện và ngăn chặn quảng cáo độc hại dựa vào url (Trang 42 - 49)

Trong phần 3.1. Chúng ta đã thu được 4 tập dữ liệu dựa trên VirusTotal API. Bao gồm :

 Tập Dkm và tập Dkb là hai tập để sử dụng cho kiểm thử với thuật toán độ phức tạp Kolmogorov.

 Tập Dtb và tập Dtm là hai tập được sử dụng để đối chiếu với kết quả sau khi sử dụng thuật toán Kolmogorov lên tập Dt.

Đối với tập Dt, sử dụng thuật toán độ phức tạp Kolmogorov để chia tập Dt thành 2 tập con: tập Dtkm là tập gồm các URL độc hại, và tập Dtkb gồm các URL lành tính. Trong quá trình phân loại 2 tập này, ta cũng kết hợp sử dụng thuật toán nén Deflate.

Cuối cùng, ta đem đối chiếu hai kết quả trên, một kết quả sử dụng VirusTotal API và một kết quả sử dụng thuật toán Kolmogorov. Ta sẽ so sánh Dtb với Dtkb và Dtm

với Dtkm. Sau đó ta kiểm tra tỉ lệ URL âm tính giả là bao nhiêu (sử dụng thuật toán Kolmogorov cho kết quả là âm tính với độc hại, trong khi sử dụng VirusTotal API thì cho kết quả dương tính với độc hại), tỉ lệ dương tính giả là bao nhiêu (sử dụng thuật toán Kolmogorov cho kết quả là dương tính với độc hại, trong khi sử dụng VirusTotal API thì cho kết quả âm tính với độc hại).

Dưới đây là sơ đồ thuật toán mô tả quá trình kiểm thử hiệu quả thuật toán Kolmogorov trong phương pháp trên:

35 Dt Dtkb Dtkm fn ? fp ? tn ? tp ? Tỉ lệ phát hiện ? Đối chiếu Dtm và Dtkm Đối chiếu Dtmvà Dtkb Kolmogorov

Hình 3. 3 Mô tả đối chiếu giữa hai kết quả

Dưới đây là mã lệnh để đối chiếu kết quả giữa việc sử dụng VirusTotal API và phương pháp phát hiện dựa trên URL với thuật toán Kolmogorov.

Dưới đây là mã lệnh cài đặt thuật toán Kolmogorov :

oads = open('ads_Dt.txt', 'r') iads = oads.readlines()

# Nen file Dtm va Dtb theo thuat toan Deflate cua thu vien zlib dtm_compress = zlib.compress(dtm) dtb_compress = zlib.compress(dtb) deflate_list = [] count = 0 total = 0

36

for item in iads: total += 1

item_concat_mal_compress = zlib.compress(dtm + item) item_concat_ben_compress = zlib.compress(dtb + item) benign_compress = len(item_concat_ben_compress)- len(dtb_compress) malicious_compress = len(item_concat_mal_compress)- len(dtm_compress) result = (malicious_compress - benign_compress)*1.0/(malicious_compress + benign_compress) if result<0: count += 1 deflate_list.append(1) else: deflate_list.append(0)

Sau khi sử dụng thuật toán Kolmogorov trên Tập Dt, ta kiểm thử hiệu quả của phương pháp này, ta tính tỉ lệ âm tính giả và dương tính giả.

Mã lệnh kiểm thử phương pháp :

ctn = 0 ctp = 0

for i in range(len(api_virustotal_list)):

if api_virustotal_list[i] == 1 and deflate_list[i] == 0:

ctn += 1

elif api_virustotal_list[i] == 0 and deflate_list[i] == 1:

37 print "ctn : "+ str((ctn*1.0/len(api_virustotal_list))*100) + "%" print "ctp : "+ str((ctp*1.0/len(api_virustotal_list))*100) + "%"

38

Kết quả của phương pháp trên:

Sau tất cả các quá trình trên, bảng dưới đây thống kê tất cả tập URL, và kết quả của phép thử trên với URL quảng cáo:

 Thống kê tập dữ liệu được sử dụng :

Phân loại Số lượng

Dk Dkm 2 Dkb 98 Dt Dtm 1 Dtb 99 Dtkm 19 Dtkb 81 Bảng 3. 1 Thống kê tập dữ liệu

 Thống kê tỉ lệ âm tính giả và dương tính giả:

Tỉ lệ

FN 1%

FP 19% Tỉ lệ phát hiện 19%

39

Đánh giá hiệu quả :

Qua kết quả ở trên, so với những kết quả thử nghiệm được công bố [1], thì hiện tại phương pháp phát hiện quảng cáo độc hại dựa trên Kolmogorov phù hợp với phát hiện quảng cáo độc hại trên tập các URL quảng cáo. Dù phương pháp này đã được chứng minh đối với URL, nhưng sau quá trình thử nghiệm với quảng cáo thì phương pháp này hoàn toàn đúng với tất cả URL.

Tuy nhiên, khóa luận này vẫn còn hạn chế do không thể có nhiều thời gian để thu thập URL quảng cáo với số lượng lớn, và phương pháp này chưa có sự kết hợp với các phương pháp khác, nên phương pháp phát hiện đang còn rất nhiều hạn chế trong việc sử dụng để phát hiện quảng cáo độc hại.

40

KẾT LUẬN

Phương pháp phát hiện quảng cáo độc hại dựa vào URL, cụ thể sử dụng thuật toán độ phức tạp Kolmogorov, hiện tại đã phát huy hiệu quả. Do tỉ lệ phát hiện rất cao, nhưng cũng xấp xỉ so với kết quả trong những thử nghiệm đã được chứng minh [3], cho thấy nếu sử dụng phương pháp phát hiện này, sẽ làm tăng số lượng quảng cáo độc hại lên, trong khi rất nhiều trong số đó là quảng cáo lành tính. Chính vì vậy, tính đến thời điểm hiện tại, phương pháp này có thể phù hợp sử dụng trong phát hiện quảng cáo độc hại. Những kết quả đạt được khi sử dụng phương pháp này để phát hiện quảng cáo độc hại :

 Thử nghiệm được thuật toán Kolmogorov trong phát hiện quảng cáo độc hại dựa vào URL

 Đánh giá được hiệu quả của phương pháp phát hiện quảng cáo dựa trên URL, phương pháp này mới chỉ dừng lại ở phát hiện web độc hại.

Trong phạm vi của một khóa luận bậc đại học, khóa luận cơ bản đã đạt được yêu cầu đề ra. Tuy nhiên kết quả thực nghiệm vẫn còn khá nhiều thiếu sót đối với thực tế đề ra do hạn chế về thời gian. Trong thời gian tới, nếu có điều kiện, khóa luận sẽ cố gắng phát triển để hoàn thiện hơn, phù hợp với thực tế hơn.

Khóa luận này đã xây dựng thành công một modul để thử nghiệm hiệu quả của phương pháp phát hiện quảng cáo độc hại dựa vào URL. Chương trình có khả năng mở rộng thành một modul lớn hơn, được thử nghiệm trên bộ dữ liệu lớn hơn, sẽ cho kết quả chính xác hơn thậm chí là có thể giảm tỉ lệ dương tính giả xuống.

41

TÀI LIỆU THAM KHẢO

Tiếng Anh

[1] Hsing-Kuo Pao, Yan-Lin Chou,Yuh-Jye Lee , “Malicious URL Detection Based on

Kolmogorov Complexity Estimation”, IEEE/WIC/ACM International Conferences on

Web Intelligence and Intelligent Agent Technology, 2012, pp. 1-4, 5-10.

[2] Justin Ma, Lawrence K. Saul, Stefan Savage and Geoffrey M. Voelker, “Learning

to Detect Malicious URLs”, ACM Transactions on Intelligent Systems and

Technology, Vol. 2, 2011, pp. 9-11.

[3] Justin Ma, Lawrence K. Saul, Stefan Savage, Geoffrey M. Voelker, “Beyond

Blacklists: Learning to Detect Malicious Web Sites from Suspicious URLs”, 2009, pp.

1-7.

[4] Da Huang, Kai Xu, and Jian Pei, “Malicious URL Detection by Dynamically

Một phần của tài liệu đồ án phát hiện và ngăn chặn quảng cáo độc hại dựa vào url (Trang 42 - 49)