HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
---------------------------------------
HUỲNH VĂN THỊNH
NGHIÊN CỨU GIẢI PHÁP
PHÁT HIỆN TẤN CÔNG WEBSITE
DỰA VÀO DẤU HIỆU BẤT THƯỜNG
LUẬN VĂN THẠC SĨ KỸ THUẬT
(Theo định hướng ứng dụng)
TP HỒ CHÍ MINH – 2017
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
---------------------------------------
HUỲNH VĂN THỊNH
NGHIÊN CỨU GIẢI PHÁP
PHÁT HIỆN TẤN CÔNG WEBSITE
DỰA VÀO DẤU HIỆU BẤT THƯỜNG
Chuyên ngành: Hệ thống thông tin
Mã số: 60.48.01.04
LUẬN VĂN THẠC SĨ KỸ THUẬT
(Theo định hướng ứng dụng)
NGƯỜI HƯỚNG DẪN KHOA HỌC:
TS. NGUYỄN HỒNG SƠN
TP HỒ CHÍ MINH – 2017
i
LỜI CAM ĐOAN
Tôi cam đoan đây là công trình nghiên cứu của riêng tôi.
Các số liệu, kết quả nêu trong luận văn là trung thực và chưa từng được ai công
bố trong bất kỳ công trình nào khác.
TP Hồ Chí Minh, ngày 22 tháng 5 năm 2017
Học viên thực hiện luận văn
Huỳnh Văn Thịnh
ii
LỜI CẢM ƠN
Trước tiên, tôi xin chân thành cảm ơn Thầy TS. Nguyễn Hồng Sơn đã tận tình
hướng dẫn và tạo mọi điều kiện thuận lợi để tôi hoàn thành tốt luận văn này. Tôi cũng
xin gửi lời cảm ơn đến Quý Thầy Cô tại Học Viện Công Nghệ Bưu Chính Viễn Thông
cơ sở Thành phố Hồ Chí Minh đã tận tình giảng dạy và trang bị cho tôi những kiến
thức quý báu trong quá trình tham gia học tập tại Trường.
Tôi chân thành biết ơn sâu sắc đến gia đình và bạn bè đã động viên và giúp đỡ
tôi hoàn thành khóa học này.
TP Hồ Chí Minh, ngày 22 tháng 5 năm 2017
Học viên thực hiện luận văn
Huỳnh Văn Thịnh
iii
MỤC LỤC
Lời cam đoan ................................................................................................................i
Lời cảm ơn ................................................................................................................. ii
Danh mục các thuật ngữ, chữ viết tắt .......................................................................... v
Danh sách bảng ..........................................................................................................vi
Danh sách hình vẽ .................................................................................................... vii
MỞ ĐẦU ..................................................................................................................... 1
CHƯƠNG 1 – CƠ SỞ LÝ THUYẾT ......................................................................... 3
1.1 Ứng dụng web ................................................................................................... 3
1.1.1 Khái niệm ................................................................................................... 3
1.1.2 Vấn đề bảo mật ứng dụng web ................................................................... 4
1.2 Giao thức HTTP ................................................................................................ 6
1.2.1 HTTPs ........................................................................................................ 9
1.2.2 Các kỹ thuật lảng tránh HTTP ................................................................... 9
1.3 Ngôn ngữ PHP ................................................................................................10
1.4 Các rủi ro bảo mật cho ứng dụng web ............................................................11
1.4.1 Chèn mã ...................................................................................................12
1.4.2 Phá vỡ xác thực và quản lý phiên làm việc ..............................................12
1.4.3 Thực thi mã lệnh xấu................................................................................13
1.4.4 Tham chiếu đối tượng trực tiếp không an toàn ........................................14
1.4.5 Sai sót cấu hình bảo mật ..........................................................................15
1.4.6 Phơi bày dữ liệu nhạy cảm .......................................................................15
1.4.7 Thiếu chức năng điều khiển truy cập .......................................................16
1.4.8 Giả mạo yêu cầu .......................................................................................17
1.4.9 Sử dụng thành phần đã tồn tại lỗ hổng.....................................................17
1.4.10 Chuyển hướng và chuyển tiếp không kiểm tra ......................................18
1.5 Kỹ thuật nhận diện tấn công ứng dụng web....................................................19
CHƯƠNG 2 – XÂY DỰNG CÔNG CỤ PHÁT HIỆN TẤN CÔNG WEBSITE ....22
2.1 Các Profile .......................................................................................................22
iv
2.1.1 Profile 1 – Cấu trúc yêu cầu .....................................................................23
2.1.2 Profile 2 – Các giá trị của yêu cầu ...........................................................24
2.1.3 Profile 3 – Phản hồi của máy chủ ............................................................26
2.1.4 Profile 4 – Cấu trúc phiên ........................................................................27
2.1.5 Profile 5 – Hồ sơ người dùng ...................................................................29
2.1.6 Profile 6 – Tổng quan hệ thống ................................................................30
2.2 Đánh giá profile...............................................................................................32
2.3 Đề xuất profile.................................................................................................38
2.4 Nguồn dữ liệu huấn luyện ...............................................................................40
2.5 Profile Các yêu cầu của người dùng ...............................................................41
2.6 Xây dựng công cụ nhận dạng bất thường .......................................................42
CHƯƠNG 3 – THỰC NGHIỆM VÀ ĐÁNH GIÁ ...................................................51
3.1 Thực nghiệm ...................................................................................................51
3.2 Kết quả thực nghiệm và đánh giá....................................................................57
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ................................................................61
TÀI LIỆU THAM KHẢO .........................................................................................62
Phụ lục 1. Danh sách mã trạng thái HTTP ................................................................65
Phụ lục 2. Định dạng nhật ký chung .........................................................................67
Phụ lục 3. Định dạng nhật ký kết hợp .......................................................................69
v
DANH MỤC CÁC THUẬT NGỮ, CHỮ VIẾT TẮT
Viết tắt
ASP
CMS
CSRF
DDoS
FQDN
HIDS
HQL
HTML
HTTP
ICD
IDS
IIS
JSP
LDAP
NFA
NIDS
OWASP
PHP
RBID
SQL
SSL
TCP
URL
URI
XML
XSS
Tiếng Anh
Tiếng Việt
Ngôn ngữ lập trình ASP
Hệ quản trị nội dung
Giả mạo yêu cầu
Tấn công từ chối dịch vụ phân tán
Địa chỉ tên miền đầy đủ
Hệ thống phát hiện xâm nhập trên
máy chủ
Ngôn ngữ truy vấn hibernate
Ngôn ngữ đánh dấu siêu văn bản
Giao thức truyền tải siêu văn bản
Sự phân bố ký tự lý tưởng
Hệ thống phát hiện xâm nhập
Dịch vụ máy chủ web chạy trên nền
hệ điều hành Windows
Java Server Pages
Ngôn ngữ lập trình JSP
Lightweight Directory Access
Giao thức truy cập nhanh các dịch
Protocol
vụ thư mục
Non-deterministic finite automaton Ôtômát hữu hạn không đơn định
Network-based Intrusion Detection Hệ thống phát hiện xâm nhập trên
System
mạng
Open Web Application Security
Dự án mở về bảo mật ứng dụng
Project
Web
Hypertext Preprocessor
Ngôn ngữ lập trình PHP
Rule-based Intrusion Detection
Phát hiện xâm nhập dựa vào các luật
Structured Query Language
Ngôn ngữ truy vấn cấu trúc
Secure Sockets Layer
Giao thức bảo mật SSL
Transmission Control Protocol
Giao thức điều khiển truyền vận
Uniform Resource Locator
Định vị tài nguyên thống nhất
Uniform Resource Identifier
Định dạng tài nguyên thống nhất
eXtensible Markup Language
Ngôn ngữ đánh dấu mở rộng
Cross-Site Scripting
Thực thi mã lệnh xấu
Active Server Pages
Content Management System
Cross-Site Request Forgery
Distributed Denial of Service
Fully Qualified Domain Name
Host-based Intrusion Detection
System
Hibernate Query Language
Hyper Text Markup
Hypertext Transfer Protocol
Idealized Character Distribution
Intrusion Detection System
Internet Information Services
vi
DANH SÁCH BẢNG
Bảng 2.1. Các mô hình của profile 1 – Cấu trúc yêu cầu
23
Bảng 2.2. Các mô hình của profile 2 – Các giá trị của yêu cầu
24
Bảng 2.3. Các mô hình của profile 3 – Phản hồi của máy chủ
26
Bảng 2.4. Các mô hình của profile 4 – Cấu trúc phiên
27
Bảng 2.5. Các mô hình của profile 5 – Hồ sơ người dùng
30
Bảng 2.6. Các mô hình của profile 6 – Tổng quan hệ thống
31
Bảng 2.7. Đánh giá profile 1 – Cấu trúc yêu cầu
33
Bảng 2.8. Đánh giá profile 2 – Các giá trị của yêu cầu
34
Bảng 2.9. Đánh giá profile 3 – Phản hồi máy chủ
35
Bảng 2.10. Đánh giá profile 4 – Cấu trúc phiên
36
Bảng 2.11. Đánh giá profile 5 – Hồ sơ người dùng
37
Bảng 2.12. Đánh giá profile 6 – Tổng quan hệ thống
38
Bảng 2.13. Profile đề xuất – Các yêu cầu của người dùng
40
Bảng 2.14. Ví dụ thống kê về từng thuộc tính của mỗi URL
45
Bảng 3.1: Thống kê mẫu dữ liệu trong tập dữ liệu kiểm tra
cho các trường hợp thử nghiệm khác nhau trên tập dữ liệu 1
52
Bảng 3.2. Thống kê mẫu dữ liệu trong tập dữ liệu kiểm tra
trường hợp 3.5 trên tập dữ liệu 1
53
Bảng 3.3. Thống kê mẫu dữ liệu trong tập dữ liệu kiểm tra trên tập dữ liệu 2
56
Bảng 3.4. Kết quả dự báo lớp thực hiện trong trường hợp 3.1 trên tập dữ liệu 1 57
Bảng 3.5. Kết quả dự báo lớp thực hiện trong trường hợp 3.2 trên tập dữ liệu 1 57
Bảng 3.6. Kết quả dự báo lớp thực hiện trong trường hợp 3.3 trên tập dữ liệu 1 57
Bảng 3.7. Kết quả dự báo lớp thực hiện trong trường hợp 3.4 trên tập dữ liệu 1 58
Bảng 3.8. Kết quả dự báo lớp thực hiện trong trường hợp 3.5 trên tập dữ liệu 1
và trên tập dữ liệu 2
58
vii
DANH SÁCH HÌNH VẼ
Hình 1.1. Mô hình hoạt động của ứng dụng web
3
Hình 1.2. Mô hình hoạt động chi tiết của ứng dụng web
4
Hình 1.3. Các bước tấn công vào ứng dụng web
5
Hình 1.4. Kỹ thuật phát hiện tấn công ứng dụng web
19
Hình 2.1. Thông tin chi tiết một lỗ hổng đối với WordPress Plugin
Apptha Slider Gallery v1.0 ngày 09/3/2017 bị tấn công SQL Injection
39
Hình 2.2. Ví dụ một phần tử trong nhật ký truy cập của máy chủ web
41
Hình 2.3. Mô hình chức năng nhận dạng bất thường sử dụng
profile “Các yêu cầu của người dùng”
43
Hình 2.4. Mô hình chi tiết giai đoạn dự báo lớp
50
Hình 3.1. Giao diện công cụ thực nghiệm
51
Hình 3.2. Tiền xử lý dữ liệu huấn luyện
53
Hình 3.3. Tiền xử lý dữ liệu kiểm tra
54
Hình 3.4. Sử dụng dữ liệu huấn luyện để dựng mô hình
54
Hình 3.5. Sử dụng mô hình sau khi huấn luyện để dự báo lớp
cho dữ liệu kiểm tra
55
Hình 3.6. Tỉ lệ dự đoán đúng và dự đoán sai trong các trường hợp khác nhau
trên tập dữ liệu 1
59
Hình 3.7. Tỉ lệ dự đoán đúng và dự đoán sai của từng loại tấn công
trong trường hợp 3.5 trên tập dữ liệu 1 và trên tập dữ liệu 2
59
1
MỞ ĐẦU
Ngày nay, số lỗ hổng bảo mật được tìm thấy trong các ứng dụng cao hơn nhiều
so với số lỗ hổng được tìm thấy trong các hệ điều hành. Các cuộc tấn công nhằm vào
các ứng dụng web đang khai thác các lỗ hổng ở lớp ứng dụng và không phải ở lớp
truyền tải hoặc lớp mạng như các cuộc tấn công thông thường trong quá khứ. Đồng
thời, số lượng và mức độ tác động của các lỗ hổng bảo mật trong các ứng dụng như
vậy ngày càng tăng cao.
Không có nghi ngờ rằng bảo mật ứng dụng web là một chủ đề phổ biến và có
giá trị. Nó liên quan đến tất cả: Các doanh nghiệp mà doanh thu tăng từ thương mại
điện tử trên Internet, những người dùng tin tưởng các ứng dụng web với các thông tin
nhạy cảm, và các tội phạm có thể kiếm nhiều tiền bằng cách đánh cắp các dữ liệu
thanh toán hoặc xâm nhập vào các tài khoản ngân hàng. Danh tiếng đóng một vai trò
quan trọng, hầu như không ai muốn kinh doanh với một website không an toàn, rất ít
tổ chức muốn tiết lộ các chi tiết về các lỗ hổng bảo mật riêng của họ hoặc tình trạng
bị xâm nhập. Vì thế, nghiên cứu giải pháp phát hiện tấn công cho ứng dụng web luôn
là một chủ để cần thiết. Theo thống kê của w3techs.com [20] cho thấy rằng PHP
chiếm 81,9% trong tất cả các website sử dụng ngôn ngữ lập trình server-side. Viết
ứng dụng PHP là khá dễ dàng, nhưng số đông các lập trình viên lại bỏ qua khía cạnh
an ninh hoặc quan tâm không đúng mức. Hiện tại, ngôn ngữ lập trình PHP được hỗ
trợ trong hầu hết các máy chủ web của nhiều nhà cung cấp dịch vụ web hosting, vì
thế viết công cụ phát hiện tấn công cho ứng dụng web bằng PHP là một lợi thế lớn.
Đề tài này tập trung nghiên cứu và xây dựng công cụ phát hiện tấn công cho
ứng dụng web PHP dựa vào dấu hiệu bất thường và công nghệ học máy, bằng cách
xây dựng profile và sử dụng các mô hình positive (các mô hình học các hành vi bình
thường).
2
Theo tìm hiểu, các công trình nghiên cứu hiện tại trong và ngoài nước theo
hướng tiếp cận của đề tài chỉ dừng lại ở mức cơ bản “đề xuất một số mô hình phát
hiện”.
Về ý nghĩa khoa học, kết quả nghiên cứu có thể làm tài liệu tham khảo, tài liệu
kỹ thuật cho việc xây dựng hệ thống nhận dạng bất thường, phát hiện xâm nhập cho
các ứng dụng web.
Về ý nghĩa thực tiễn, sản phẩm đạt hiệu quả cao sẽ là cơ sở để xây dựng hệ
thống đảm bảo an toàn thông tin cho cho các ứng dụng web.
Luận văn này được chia thành ba chương: chương 1 trình bày các cơ sở lý
thuyết, chương 2 trình bày các bước xây dựng công cụ phát hiện tấn công, và tiếp
theo là chương 3 trình bày cách thức và kết quả thực nghiệm từ công cụ được xây
dựng. Sau cùng luận văn kết thúc qua một số tổng kết trong phần kết luận và hướng
phát triển.
3
CHƯƠNG 1 – CƠ SỞ LÝ THUYẾT
Chương này trình bày các Giai đoạn dựng mô hình:
Sử dụng tệp tin có phần mở rộng là *.train để xử lý, tệp tin kết quả có phần
mở rộng là *.model.
Hình 3.4: Sử dụng dữ liệu huấn luyện để dựng mô hình
Theo báo cáo trong [8] thì nhận dạng bất thường dựa vào sự phân bố ký tự lý
tưởng ICD trong mô hình Attribute character distribution là không được tốt. Trong
quá trình dựng mô hình (huấn luyện) và dự báo lớp (phát hiện), để tăng cường hiệu
quả cho ICD, theo [4], với chuỗi giá trị của thuộc tính đầu vào, các ký tự chữ số sẽ
chuyển thành N, các ký tự chữ cái sẽ chuyển thành A, các ký tự khác sẽ được giữ
nguyên. Ví dụ với chuỗi đầu vào là “Pass-word-123@” thì sẽ chuyển thành “AAAAAAAA-NNN@”.
Trong mô hình Value length, chiều dài giá trị của thuộc tính có thể xem xét ở
hai khả năng: Thứ nhất là tính các ký tự trong chuỗi, ví dụ chuỗi “password” trong
trường hợp này có chiều dài bằng 8 - tương ứng tập ký tự {p, a, s, s, w, o, r, d}; Thứ
hai là chỉ giữ lại số ký tự duy nhất trong chuỗi, ví dụ chuỗi “password” trong trường
hợp này có chiều dài bằng 7 - tương ứng tập ký tự {p, a, s, w, o, r, d}, vì có hai ký tự
“s” chỉ cần tính là một. Trong thực nghiệm này thì sử dụng trường hợp thứ nhất.
55
+ Giai đoạn dự báo lớp:
Sử dụng tệp tin mô hình có phần mở rộng là *.model và tệp tin cần kiểm tra
có phần mở rộng là *.test để xử lý. Sau giai đoạn này thì tệp tin kết quả có phần mở
rộng là *.predict.
Hình 3.5: Sử dụng mô hình sau khi huấn luyện để dự báo lớp cho dữ liệu kiểm tra
- Với Tập dữ liệu 2
Đây là tập dữ liệu được thu thập từ nhật ký web thực tế của website
hoinongdankhanhhoa.org.vn, một website được triển khai bởi tác giả luận văn nên sẽ
có nhiều thuận lợi hơn cho việc hiểu, phân tích và đánh giá trong quá trình thử
nghiệm. Việc thực nghiệm trên tập dữ liệu này cũng tương tự như Tập dữ liệu 1.
Dữ liệu dùng để huấn luyện: Là một tệp tin nhật ký truy cập web chứa các yêu
cầu (request) thu thập được trong vòng một tháng của Hội Nông dân tỉnh Khánh Hòa
tại địa chỉ với hơn 40000 truy vấn đến 3 chương
trình là index.php, component/sendmail/home.php và /component/print/home.php.
Dữ liệu dùng để kiểm tra: Là một tệp tin nhật ký web có chứa 200 yêu cầu,
100 yêu cầu đầu là các truy vấn bình thường được trích xuất từ các yêu cầu thu thập
được trong tháng tiếp theo của website 100 truy
vấn sau chứa các loại tấn công khác nhau bao gồm: SQL Injection, XSS, Directory
Traversal, Buffer Overflow và các tấn công khác mà không nhận thức được tính lôgic
của chương trình (Duplicated Attribute, Missing Attribute, Attribute Order, Missing
Path) được thu thập từ nhiều nguồn khác nhau bao gồm:
56
/> /> và một số tấn công được trích xuất từ tập
Anomalous Traffic (Test) của tập dữ liệu 1.
Bảng 3.3: Thống kê mẫu dữ liệu trong tập dữ liệu kiểm tra
trên tập dữ liệu 2
Yêu cầu
Số lượng
Bình thường
Tấn công
100
SQL Injection
20
XSS
20
Directory Traversal
10
Buffer Overflow
10
Duplicated Attribute
10
Missing Attribute
10
Attribute Order
10
Missing Path
10
Tổng cộng 200
+ Giai đoạn tiền xử lý:
Tiền xử lý dữ liệu đầu ra để sử dụng cho giai đoạn dựng mô hình: Sử dụng tệp
tin “hoinongdankhanhhoa.org.vn-Training.log” để xử lý. Sau khi xử lý thì giữ lại
được hơn 500 yêu cầu hợp lệ, tệp tin kết quả có phần mở rộng là *.train.
Tiền xử lý dữ liệu đầu ra để sử dụng cho giai đoạn dự báo lớp: Sử dụng tệp tin
“hoinongdankhanhhoa.org.vn-Test.log” để xử lý, tệp tin kết quả có phần mở rộng là
*.test.
+ Giai đoạn dựng mô hình:
Sử dụng tệp tin có phần mở rộng là *.train để xử lý, tệp tin kết quả có phần
mở rộng là *.model.
57
+ Giai đoạn dự báo lớp:
Sử dụng tệp tin mô hình có phần mở rộng là *.model và tệp tin cần kiểm tra
có phần mở rộng là *.test để xử lý, tệp tin kết quả có phần mở rộng là *.predict.
3.2 Kết quả thực nghiệm và đánh giá
Trong tệp tin kết quả, các yêu cầu được gán nhãn bằng 0 là các yêu cầu bình
thường, ngược lại, các yêu cầu lớn hơn 0 là bất thường.
Bảng 3.4: Kết quả dự báo lớp thực hiện
trong trường hợp 3.1 trên tập dữ liệu 1
Dự đoán đúng
Yêu cầu
TP
Bình thường
TN
776
Dự đoán sai
FP
FN
224
Tấn công
827
Tỉ lệ
173
80.15%
19,85%
TP: True Positive, TN: True Negative, TN: False Positive, FN: False Negative
Bảng 3.5: Kết quả dự báo lớp thực hiện
trong trường hợp 3.2 trên tập dữ liệu 1
Dự đoán đúng
Yêu cầu
TP
Bình thường
TN
389
Dự đoán sai
FP
FN
111
Tấn công
412
Tỉ lệ
88
80,1%
19,9%
Bảng 3.6: Kết quả dự báo lớp thực hiện
trong trường hợp 3.3 trên tập dữ liệu 1
Dự đoán đúng
Yêu cầu
TP
Bình thường
TN
554
Dự đoán sai
FP
FN
146
Tấn công
246
Tỉ lệ
80%
54
20%
58
Bảng 3.7: Kết quả dự báo lớp thực hiện
trong trường hợp 3.4 trên tập dữ liệu 1
Dự đoán đúng
Yêu cầu
TP
Bình thường
Dự đoán sai
TN
FP
230
FN
70
Tấn công
576
Tỉ lệ
124
80,6%
19,4%
Bảng 3.8: Kết quả dự báo lớp thực hiện
trong trường hợp 3.5 trên tập dữ liệu 1 và trên tập dữ liệu 2
Trường hợp 3.5
Tập dữ liệu 2
trên tập dữ liệu 1
Yêu cầu
Dự đoán đúng
TP
Bình thường
TN
79
Dự đoán sai
FP
FN
21
Dự đoán đúng
TP
TN
95
Dự đoán sai
FP
FN
5
SQL
Injection
18
2
8
12
XSS
16
4
11
9
Directory
Traversal
10
0
10
0
Buffer
Overflow
10
0
5
5
10
0
10
0
Missing
Attribute
10
0
10
0
Attribute
Order
10
0
10
0
Missing
Path
10
0
10
0
Tấn
công Duplicated
Attribute
Tỉ lệ
86,5%
13,5%
84%
16%
59
Trường hợp 3.5
Trường hợp 3.4
Trường hợp 3.3
Trường hợp 3.2
Trường hợp 3.1
0
20
Dự đoán đúng (%)
40
60
80
100
Dự đoán sai (%)
Hình 3.6: Tỉ lệ dự đoán đúng và dự đoán sai trong các trường hợp khác nhau
trên tập dữ liệu 1
Missing Path
Missing Path
Attribute Order
Attribute Order
Missing Attribute
Missing Attribute
Duplicated Attribute
Duplicated Attribute
Buffer Overflow
Buffer Overflow
Directory Traversal
Directory Traversal
XSS
XSS
SQL injection
SQL Injection
0
20
Dự đoán đúng (%)
40
60
80 100 120
Dự đoán sai (%)
a) Trường hợp 3.5 trên tập dữ liệu 1
0
20
Dự đoán đúng (%)
40
60
80 100 120
Dự đoán sai (%)
b) Tập dữ liệu 2
Hình 3.7: Tỉ lệ dự đoán đúng và dự đoán sai của từng loại tấn công
trong trường hợp 3.5 trên tập dữ liệu 1 và trên tập dữ liệu 2
60
Dựa vào các kết quả thực nghiệm ở trên, chúng ta có thể có một số nhận xét
như sau:
- Profile “Các yêu cầu của người dùng” có thể phát hiện được nhiều loại tấn
công khác nhau như SQL Injection, XSS, Directory Traversal, Buffer Overflow và
các tấn công khác mà không nhận thức được tính lôgic của chương trình.
- Các tấn công mà không nhận thức được tính lôgic của chương trình bao gồm
Duplicated Attribute, Missing Attribute, Attribute Order, Missing Path được dự báo
rất chính xác.
- Trong trường hợp 3.5 trên tập dữ liệu 1 thì phát hiện các dạng tấn công SQL
Injection, XSS, Directory Traversal, Buffer Overflow cho kết quả tốt hơn. Nguyên
nhân chính dẫn đến kết quả này là do sự phân bố chiều dài giá trị thuộc tính của tập
dữ liệu 1 là ngắn và đều hơn so với tập dữ liệu 2.
- Tỉ lệ true positive là rất cao, với tập dữ 2 thì kết quả của tỉ lệ này tốt hơn so
với trường hợp 3.5 trên tập dữ liệu 1.
- Kết quả dự báo lớp đúng trên tập dữ liệu 1 là khá tốt trên 80%. Một số nghiên
cứu gần đây tiến hành thực nghiệm trên tập dữ liệu này như [16] sử dụng n-gram cho
kết quả đúng trung bình là 82.342%; các thực nghiệm trong [6] sử dụng các thuật toán
K-means, K-means + ID3, ID3, Random Forest lần lượt cho các kết quả gần 75%,
gần 90%, gần 80%, gần 95%.
- Với tập dữ liệu 2 thì các nhận diện sai chủ yếu liên quan đến tấn công SQL
Injection.
- Dữ liệu dùng để huấn luyện (kết quả của tiền xử lý) không nên quá lớn trên
20000 yêu cầu, thời gian huấn luyện sẽ lâu.
61
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
Luận văn đã trình bày khá đầy đủ giải pháp phát hiện tấn công website dựa
vào dấu hiệu bất thường theo hướng sử dụng profile.
Kết quả luận văn đạt được:
- Luận văn đã trình bày tổng quan về vấn đề phát hiện tấn công website dựa
vào dấu hiệu bất thường như: Vấn đề bảo mật ứng dụng web, các rủi ro bảo mật cho
ứng dụng web, các kỹ thuật nhận diện tấn công ứng dụng.
- Luận văn đã tìm hiểu về các profile có thể được sử dụng trong một chương
trình phát hiện xâm nhập dựa vào dấu hiệu bất thường, đánh giá và đề xuất một profile
phù hợp để tiến hành xây dựng công cụ phát hiện tấn công.
- Luận văn đã tìm hiểu về nguồn dữ liệu để huấn luyện là sử dụng nhật ký web.
- Một công cụ phát hiện tấn công cho ứng dụng web PHP dựa vào dấu hiệu
bất thường, bằng cách sử dụng profile đã đề xuất và sử dụng các mô hình học các
hành vi bình thường được xây dựng.
Hướng phát triển tiếp theo:
- Nghiên cứu cải thiện khả năng phát hiện của profile “Các yêu cầu của người
dùng” bằng cách điều chỉnh trọng số và ngưỡng của các mô hình trong profile.
- Nghiên cứu kết hợp với các profile khác.
- Xây dựng công cụ tích hợp vào các ứng dụng web phổ biến như: Joomla,
Wordpress, Drupal, NukeViet…
- Nghiên cứu triển khai trên các ứng dụng web viết bằng các ngôn ngữ lập
trình khác như: ASP.net, Java…
62
TÀI LIỆU THAM KHẢO
[1]
Anup K. Ghosh, Aaron Schwartzbard, and Michael Schatz (1999), “Learning
program behavior profiles for intrusion detection” In Proceedings of the
Workshop on Intrusion Detection and Network Monitoring, Berkeley.
[2]
Christopher Kruegel, Giovanni Vigna, William Robertson (2005), “A multimodel approach to the detection of web-based attacks” Computer Networks,
Volume 48, Issue 5, pp. 717-738.
[3]
Christopher Kruegel, Giovanni Vigna (2003), “Anomaly Detection of Webbased Attacks” Proceedings of the 10th ACM conference on Computer and
communications security, pp. 251-261.
[4]
Corona, I., Ariu, D. & Giacinto G. (2009), “HMM-Web: A Framework for
the Detection of Attacks Against Web Applications” In: IEEE International
Conference on Communications, ICC’09, IEEE, pp. 1-6.
[5]
Dafydd Stuttard, Marcus Pinto (2011), The Web Application Hacker's
Handbook Second Edition Finding and Exploiting Security Flaws, Wiley
Puslishing.
[6]
Eiei Han (2015) “Analyzing And Classifying Web Application Attacks”
International Journal of Advances in Electronics and Computer Science,
Volume 2, Issue 4, pp. 14-17.
[7]
Fielding, et al. (1999), RFC 2616: Hypertext Transfer Protocol – HTTP/1.1,
Available: />
[8]
Kenneth L. Ingham, and Hajime Inoue (2007), “Comparing Anomaly
Detection Techniques for HTTP” RAID 2007: Recent Advances in Intrusion
Detection, pp. 42-62.
[9]
Nanhay Singh, Achin Jain, Ram Shringar Raw and Rahul Raman (2014),
“Detection of Web-Based Attacks by Analyzing Web Server Log Files” In:
Advances in Intelligent Systems and Computing, Volume 243, pp. 101-109.
63
[10] OWASP Top Ten Project (2013), OWASP Top 10 - 2013 The Ten Most
Critical Web Application Security Risks, Available:
/>[11] Roger Meyer (2008), Detecting Attacks on Web Applicationsfrom Log Files,
SANS Institute, Available: />[12] Ryan C. Barnett (2013), The Web Application Defender’s Cookbook Battling
Hackers and Protecting Users, Wiley Puslishing.
[13] Snigdha Agrawal, Priya Gupta (2015), “Detection and Implementation of
Web-based Attacks using Attribute Length Method” International Journal of
Computer Applications (0975 – 8887), Volume 120 - Number 3, pp. 25-29.
[14] Wenke Lee, Salvatore J. Stolfo, Kui W. Mok (1999), “A data mining
framework for constructing features and models for intrusion detection
systems” Computer Science Department, Columbia University.
[15] Wenke Lee and Salvatore J. Stolfo (2000), “A framework for constructing
features and models for intrusion detection systems” Information and System
Security, pp. 227-261.
[16] Zhaoxuan Zhang, Roy George, Khalil Shujaee (2016), “Efficient Detection of
Anomolous HTTP Payloads in Networks” Department of Computer and
Information Science, Clark Atlanta University Atlanta.
Website
[17] truy cập ngày 16/10/2016
[18] truy nhập ngày 16/10/2016
[19] truy nhập ngày 10/10/2016
[20] , truy nhập ngày 10/10/2016
[21] truy nhập ngày
01/03/2017
[22] truy nhập ngày 01/03/2017
64
[23] />L/guide/c-logs.html, truy nhập ngày 01/03/2017
[24] truy nhập ngày
10/10/2016
65
PHỤ LỤC 1.
DANH SÁCH MÃ TRẠNG THÁI HTTP
Danh sách mã trạng thái HTTP được trình bày chi tiết trong [12]:
Mã trạng thái HTTP
(HTTP Status Codes)
Mô tả
100
Informational
100
Continue
101
Switching Protocols
102
Processing
200
Success
200
OK
201
Created
202
Accepted
203
Non-Authoritative Information
204
No Content
205
Reset Content
206
Partial Content
207
Multi-Status
208
Already Reported
226
IM Used
300
Redirection
300
Multiple Choices
301
Moved Permanently
302
Found
303
See Other
304
Not Modified
305
Use Proxy
307
Temporary Redirect
308
Permanent Redirect
66
400
Client errors
400
Bad Request
401
Unauthorized
402
Payment Required
403
Forbidden
404
Not Found
405
Method Not Allowed
406
Not Acceptable
407
Proxy Authentication Required
408
Request Timeout
409
Conflict
410
Gone
411
Length Required
412
Precondition Failed
413
Request Entity Too Largeq
414
Request-URI Too Long
415
Unsupported Media Type
416
Request Range Not Satisfiable
417
Expectation Failed
500
Server errors
500
Internal Server Error
501
Not Implemented
502
Bad Gateway
503
Service Unavailable
504
Gateway Timeout
505
HTTP Version Not Supported
67
PHỤ LỤC 2.
ĐỊNH DẠNG NHẬT KÝ CHUNG
Định dạng nhật ký chung (CLF - Common Log Format) là một định dạng
chuẩn để ghi lại các yêu cầu được xử lý bởi các máy chủ web. Nó có thể được tạo ra
bởi nhiều máy chủ web khác nhau, và đọc được bởi nhiều chương trình phân tích nhật
ký. CLF có định dạng như sau [21]:
remotehost rfc931 authuser [date] "request" status bytes
Ý nghĩa của các thuộc tính khác nhau được giải thích trong danh sách dưới
đây [21], [22]:
remotehost: Đây là địa chỉ IP của máy khách mà đã yêu cầu phục vụ. Nếu
một chỉ thị HostnameLookups được bật, máy chủ sẽ cố gắng phân giải và ghi nhật ký
hostname để thay thế. Ngoài ra, nếu một máy chủ proxy tồn tại giữa máy khách và
máy chủ, thì đây sẽ là địa chỉ của proxy, chứ không phải là IP của máy khách ban
đầu.
rfc931: RFC 1413 nhận diện máy khách. Thông tin này không có độ tin cậy
cao và một số máy chủ, chẳng hạn như máy chủ HTTP Apache, không ghi lại thông
tin này trừ khi được chỉ thị rõ ràng để làm như vậy.
authuser: Định danh người dùng của người yêu cầu tài nguyên, được xác định
bằng xác thực HTTP. Nếu mã trạng thái của yêu cầu là 401, thì không nên tin tưởng
giá trị này vì máy khách chưa được xác thực.
date: Ngày và giờ máy chủ hoàn tất xử lý yêu cầu. Một ví dụ về định dạng
mặc định cho máy chủ HTTP Apache là:
[05/Jan/2016:08:09:03 +0100]
request: Dòng yêu cầu chính xác như đến từ máy khách. Đầu tiên, phương
thức được sử dụng bởi máy khác được ghi lại. Tiếp theo, tài nguyên yêu cầu được ghi