Phát hiện Website Defacement sử dụng công nghệ Deep Learning

Phát hiện Website Defacement sử dụng công nghệ Deep Learning

Thứ 2, ngày 30 tháng 12 năm 2019

Thời đại 4.0 hiện nay đang xoay quanh những câu chuyện cực kì nóng bỏng với việc phát triển các công nghệ tiên tiến. Tuy nhiên, song song với nó là những vấn nạn về tấn công trên không gian mạng, đe dọa an ninh an toàn thông tin của các công ty, doanh nghiệp lớn và của cả chính phủ.

Điển hình như cuộc tấn công vào sân bay Vietnam Airlines của 1937CN khiến lộ lọt hơn 400.000 dữ liệu tài khoản cá nhân và ảnh hưởng đến uy tín của hãng hàng không hàng đầu Việt Nam này.

H1.Trang chủ Vietnam Airlines bị tấn công Deface

Hình thức tấn công ở đây các Hacker sử dụng là deface trang web đích, tức thay đổi giao diện theo nội dung mà hacker muốn truyền tải. Điều này đa phần sẽ gây tác động xấu đến trang web, ảnh hưởng đến chất lượng và uy tín của các doanh nghiệp, chính phủ bị tấn công.

Sử dụng Deep Learning vào bài toán phát hiện Website bị tấn công Deface.

Trên thị trường hiện nay có rất nhiều công cụ giúp monitor một trang web nhưng đa phần là theo dõi và cảnh báo sự thay đổi của mã nguồn, nội dung các thẻ HTML mà chưa có công cụ, ứng dụng nào phát hiện chính xác tấn công deface theo hướng phân tích và bóc tách hình ảnh.

Vì vậy, sử dụng Computer Vision hay cụ thể hơn là sử dụng Convolutional Neural Networks (CNN) đang là một trong những phương pháp mới cho giải pháp phát hiện và dự đoán các trang web bị tấn công deface trong thời điểm hiện nay.

H2. Sử dụng Convolutional Neural Networks.

Tiền xử lý dữ liệu

Sử dụng một Module Crawler thu thập một tập dữ liệu chia thành 2 folders: defaced và clean. Từ hai folder này ta tiếp tục chia tiếp thành 4 folder: defaced_training, defaced_test, clean_training, clean_test để training, validation và testing. Cuối cùng là công đoạn convert dữ liệu ảnh thành một numpy array (100,100,3).

H3.Tiền xử lý dữ liệu

Để thuận tiện hơn với việc training dữ liệu, export dữ liệu của mảng numpy thành .h5 file sử dụng công cụ h5py.

H4. Function chính cho việc chuẩn bị dữ liệu training

Việc tiếp theo là lựa chọn cấu trúc CNN cho bài toán. Hiện nay, có ba cấu trúc nổi bật thường được sử dụng đó là: AlexNET, LeNET5 và VGGNET. Với các tập dữ liệu hiện có và áp dụng thuật toán tối ưu Adam phù hợp thì VGGNET là cấu trúc được chọn với độ chính xác cao tuyệt đối.

H5. Cấu trúc của VGGNET

Tiếp theo là quá trình chọn lựa Hyper-Parameters bằng việc sử dụng Hyperas để tối ưu để Hyper-Parameter.

Để sử dụng Hyperas cần định nghĩa 2 function data() và model(). Function data() nhằm mục đích load dataset, thực hiện training và validate dữ liệu đồng thời model() để định nghĩa các model và hyper-parameter cần sử dụng đến.

H6. Function data()
H7. Function model()

Sau khi đã có 2 function cần thiết, thực hiện gọi hàm optim.optimize() từ Hyperas để thực hiện training nhiều lần để tìm ra model và Hyper-Parameter tốt nhất .

H8. function optim.optimize()

Từ đây là có thể đưa ra một model cuối cùng gồm cấu trúc VGG, Dense Layer (Fully Connected Layer) và một Hyper-Parameters sử dụng Drop-Out layers. Sau khi thực hiện training và validate, thực hiện lưu model bằng package H5py. để deploy qua API.

H9. Model cuối cùng

Xây dựng API và Portal

Portal sau  khi hoàn thiện thực hiện 2 mục đích là Detection và Monitor and Alert.

Detection Module

Detection module sử dụng các URL được nhập từ API và phát hiện trang web có bị Deface hay không. Sau khi nhận được URL, module này sẽ sử dụng Selenium để mở đến trang đích, chụp lại ảnh màn hình và thực hiện tiền xử lý (thu nhỏ ảnh và convert qua Base64).

H10. Detection Module
H11. Thực hiện Screenshot lại trang web

Sau khi thực hiện screenshot thành công, đưa hình ảnh vào tiền xử lý và chuẩn hóa dữ liệu.

H12. Convert ảnh thành base64

Cuối cùng, model nhận được array và đưa ra dự đoán dựa vào website có bị deface hay không.

H13. Module Prediction

Sử dụng model từ Deep Learning để normalized lại các dữ liệu đó và đưa ra dự đoán cuối cùng.

H14.Ví dụ về Report của một trang web

Monitor and Alert

User thực hiện nhập URL, email người dùng muốn gửi cảnh báo đến với một khoảng thời gian nhất định.

H15. Monitor và Alert

Sau khi API nhận được thông tin muốn monitor, sử dụng Cronjob để gửi request đến API kiểm tra xem URL này có bị Deface hay không và trả thông tin lại cho khách hàng. Sử dụng package cron của Golang để thực hiện Cronjob và SMTP để gửi thông tin qua Gmail SMTP Server.

H16. Nếu trang web bị tấn công sẽ có cảnh báo về email.