Nghiên cứu phát hiện lỗ hổng bảo mật Web và thử nghiệmNghiên cứu phát hiện lỗ hổng bảo mật Web và thử nghiệmNghiên cứu phát hiện lỗ hổng bảo mật Web và thử nghiệmNghiên cứu phát hiện lỗ hổng bảo mật Web và thử nghiệmNghiên cứu phát hiện lỗ hổng bảo mật Web và thử nghiệmNghiên cứu phát hiện lỗ hổng bảo mật Web và thử nghiệmNghiên cứu phát hiện lỗ hổng bảo mật Web và thử nghiệmNghiên cứu phát hiện lỗ hổng bảo mật Web và thử nghiệmNghiên cứu phát hiện lỗ hổng bảo mật Web và thử nghiệmNghiên cứu phát hiện lỗ hổng bảo mật Web và thử nghiệmNghiên cứu phát hiện lỗ hổng bảo mật Web và thử nghiệmNghiên cứu phát hiện lỗ hổng bảo mật Web và thử nghiệmNghiên cứu phát hiện lỗ hổng bảo mật Web và thử nghiệmNghiên cứu phát hiện lỗ hổng bảo mật Web và thử nghiệmNghiên cứu phát hiện lỗ hổng bảo mật Web và thử nghiệm
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
Trang 2HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
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 VŨ VĂN THỎA
HÀ NỘI – 2019
Trang 3LỜI CAM ĐOAN
Tôi cam đoan đây là công trình nghiên cứu của riêng tôi Nội dung của luận văn có tham khảo và sử dụng các tài liệu, thông tin được đăng tải trên những tạp chí khoa học và các trang web được liệt kê trong danh mục tài liệu tham khảo Tất cả các tài liệu tham khảo đều có xuất xứ rõ ràng và được trích dẫn hợp pháp
Tôi xin hoàn toàn chịu trách nhiệm và chịu mọi hình thức kỷ luật theo quy định cho lời cam đoan của mình
Hà nội, ngày 28 tháng 01năm 2019
Người cam đoan
Nguyễn Thị Thái
Trang 4Em xin chân thành cảm ơn các Thầy, Cô giáo trong Học viện Công nghệ Bưu chính Viễn thông đã luôn nhiệt tình giúp đỡ và tạo điều kiện tốt nhất cho em trong suốt quá trình học tập tại trường
Xin chân thành cảm ơn các anh, các chị và các bạn học viên lớp Cao học – trong Học viện đã luôn động viên, giúp đỡ và nhiệt tình chia sẻ với em những kinh nghiệm học tập, công tác trong suốt khoá học
Em cũng xin chân thành cảm ơn các vị lãnh đạo và các bạn đồng nghiệp tại
cơ quan đã luôn tạo mọi điều kiện tốt nhất để em có thể hoàn thành tốt đẹp khoá học Cao học này
Em xin chân thành cảm ơn !
Hà Nội, ngày 28 tháng 01 năm 2019
Trang 5MỤC LỤC
LỜI CAM ĐOAN i
LỜI CẢM ƠN ii
DANH SÁCH CÁC HÌNH VẼ vi
DANH MỤC CÁC THUẬT NGỮ VIẾT TẮT vii
MỞ ĐẦU 1
CHƯƠNG 1: TỔNG QUAN VỀ TẤN CÔNG LỖ HỔNG BẢO MẬT WEBSITE 5 1.1 Tổng quan về công nghệ Web 5
1.1.1 Giới thiệu chung 5
1.1.2 Dịch vụ và cơ chế hoạt động Web 6
1.1.3 Công nghệ web 2.0 8
1.1.4 Công nghệ web 3.0 8
1.2 Một số phương thức tấn công lỗ hổng bảo mật website 10
1.2.1 Giới thiệu chung 10
1.2.2 Các phương thức tấn công lỗ hổng bảo mật website 11
1.2.3 Nhận xét và đánh giá 16
1.3 Một số nguyên nhân gây ra các lỗ hổng bảo mật website 16
1.3.1 Nguyên nhân do nền tảng xây dựng website 16
1.3.2 Nguyên nhân do hạ tầng cung cấp dịch vụ web 17
1.3.3 Nguyên nhân do người vận hành và sử dụng dịch vụ web 18
1.3.4 Nhận xét và đánh giá 18
1.4 Kết luận chương 1 19
Chương 2: NGHIÊN CỨU GIẢI PHÁP PHÁT HIỆN LỖ HỔNG BẢO MẬT WEBSITE 20
2.1 Tổng quan về phát hiện lỗ hổng bảo mật Website 20
2.1.1 Giới thiệu chung 20
2.1.2 Mô hình phát hiện lỗ hổng bảo mật Website 21
2.2 Giải pháp sử dụng công cụ phần mềm dò quét 24
2.2.1 Giới thiệu giải pháp 24
2.2.2 Một số phần mềm phát hiện lỗ hổng bảo mật Website 25
2.2.3 Nhận xét 29
Trang 62.3 Giải pháp sử dụng hệ thống phát hiện xâm nhập 29
2.3.1 Giới thiệu hệ thống phát hiện xâm nhập 29
2.3.2 Ứng dụng hệ thống IDS phát hiện lỗ hổng bảo mật Website 33
2.3.3 Nhận xét 37
2.4 Giải pháp sử dụng các kỹ thuật học máy 37
2.4.1 Giới thiệu về học máy 37
2.4.2 Ứng dụng các kỹ thuật học máy phát hiện lỗ hổng bảo mật Website 40
2.4.3 Nhận xét 43
2.4 Kết luận chương 2 43
Chương 3: THỬ NGHIỆM 44
3.1 Yêu cầu thử nghiệm 44
3.1.1 Đặt bài toán 44
3.1.2 Giới thiệu chung về Python 45
3.2 Kịch bản thử nghiệm 1: Thử nghiệm dò quét các cổng website đang mở 47
3.2.1 Bài toán thử nghiệm 1 47
3.2.2 Kết quả thử nghiệm 1 48
3.2.3 Đánh giá kết quả thử nghiệm 1 51
3.3 Kịch bản thử nghiệm 2: Thử nghiệm tấn công website bằng phương thức DDoS 51
3.3.1 Bài toán thử nghiệm 2 51
3.3.2 Kết quả thử nghiệm 2 52
3.3.3 Đánh giá kết quả thử nghiệm 2 55
3.4 Kịch bản thử nghiệm 3: Thử nghiệm phát hiện lỗ hổng bảo mật SQL Injection 56
3.4.1 Bài toán thử nghiệm 3 56
3.4.2 Kết quả thử nghiệm 3 57
3.4.3 Đánh giá kết quả thử nghiệm 3 62
3.5 Kịch bản thử nghiệm 4: Thử nghiệm kiểm tra lỗi trang website bằng phương pháp Google Hacking 62
3.5.1 Bài toán thử nghiệm 4 62
3.5.2 Kết quả thử nghiệm 4 62
3.5.3 Đánh giá kết quả thử nghiệm 4 65
Trang 73.6 Kịch bản thử nghiệm 5: Thử nghiệm đề xuất hệ thống IDS sử dụng Snort 66
3.6.1 Bài toán thử nghiệm 5 66
3.6.2 Kết quả thử nghiệm 5 67
3.6.3 Đánh giá kết quả thử nghiệm 5 70
3.7 Kết luận chương 3 70
KẾT LUẬN 71
DANH MỤC CÁC TÀI LIỆU THAM KHẢO 72
Trang 8DANH SÁCH CÁC HÌNH VẼ
Hình 1.1 Dịch vụ Web Service[10] 7
Hình 1.2 Cơ chế hoạt động của Web Service[10] 7
Hình 1.3 Các loại hình dịch vụ phổ biến trên nền web 2.0 [10] 8
Hình 1.4 Tiến trình phát triển công nghệ web (Nguồn Internet) 10
Hình 2.2: Sơ đồ thực hiện tấn công lỗ hổng cơ sở dữ liệu SQL trên web 25
Hình 2.3: Giao diện phần mềm Havaij quét lỗ hổng bảo mật web 26
Hình 2.4: Giao diện phần mềm Havij khai thác được tên và mật khẩu người dùng 27 Hình 2.5: Giao diện phần mềm WVS khai thác lỗ hổng bảo mật website 28
Hình 2.6: Giao diện khởi động file sqlmap.py 28
Hình 2.7: Các thành phần của hệ thống IDS [4] 30
Hình 2.7: Mô hình hệ thống HIDS 31
Hình 2.8: Mô hình hệ thống NIDS 31
Hình 2.9: Mô hình hệ thống IDS phát hiện lỗ hổng bảo mật 36
Hình 2.10: Mô hình tấn công SQLi sử dụng chèn tham số 41
Hình 2.11: Mô hình phát hiện tấn công SQLi sử dụng SVM ……… 43
Hình 3.4: Giao diện trang website trước khi bị tấn công 52
Hình 3.7: Kết quả phát hiện lỗi trang web có tổn thương SQL Injection 58
Hình 3.11: Trang giao diện truy xuất được tên và mật khẩu trong Database 61
Hình 3.12: Hiển thị những trang website bị lỗi truy xuất hình ảnh 64
Hình 3.13: Trang website bị lỗi truy xuất hình ảnh 65
Hình 3.14: Website bị lỗi truy xuất hình ảnh 65
Hình 3.15: Mô hình thử nghiệm hệ thống IDS sử dụng Snort 66
Hình 3.16: Cài đặt Snort (Bước 1) 67
Hình 3.17: Cài đặt Snort (Bước 2) 68
Hình 3.18: Cài đặt Snort (Bước 3) 68
Hình 3.19: Cài đặt Snort (Bước 4) 69
Hình 3.20: Cài đặt Snort (Bước 5) 69
Hình 3.21: Kết quả thực hiện Snort 70
Trang 9DANH MỤC CÁC THUẬT NGỮ VIẾT TẮT
APT Advanced Persistent Threat Mối đe dọa nâng cao
DDoS Distribute Denial of Service Tấn công từ chối dịch vụ phân tán DMZ Demilitarized Zone Vùng nhận dạng
DoS Denial of Service Tấn công từ chối dịch vụ
HTTP Hyper Text Transfer Protocol Giao thức truyền tải siêu văn bản IDS Intrusion detection system Hệ thống phát hiện xâm nhập
IPS Intrusion Prevention system Hệ thống ngăn chặn xâm nhập
ISS Internet Security Systems Hệ thống bảo mật Internet
NSM Network System Monitor Hệ thống giám sát bảo mật mạng
OWASP Open Web Application
Security Project Dự án mở về bảo mật ứng dụng Web SQL Structured Query Language Ngôn ngữ truy vấn cấu trúc
TCP Transmission Control Protocol Giao thức kiểm soát truyền tin
XSS Cross-Site Scripting Tấn công thực thi mã script
Trang 10MỞ ĐẦU
1 Tính cấp thiết của đề tài
Vấn đề an toàn an ninh mạng hiện nay đang là vấn đề cấp bách, đặc biệt là việc tấn công vào các website Việc tấn công vào hệ thống mạng trong ứng dụng web ngày càng gia tăng, cho thấy việc bảo mật an toàn thông tin trên website chưa thực sự đảm bảo
Theo thống kê của BKAV[12] về an ninh mạng trong năm 2017, mức thiệt hại
do virus máy tính gây ra đối với người dùng Việt Nam lên tới 10.400 tỷ, vượt qua mức 8.700 tỷ đồng năm 2016 Đây là kết quả từ chương trình đánh giá an ninh mạng được Tập đoàn công nghệ Bkav thực hiện vào tháng 12/2017 Mã độc mã hóa
dữ liệu Ransomware, virus lây qua USB, vấn nạn tin nhắn rác và nguy cơ từ các cuộc tấn công có chủ đích APT là những chủ điểm nóng nhất của năm 2017
Cũng theo thống kê của Trung tâm Ứng cứu khẩn cấp máy tính Việt Nam [13], năm 2017 Trung tâm này đã ghi nhận tổng số 134.375 sự cố tấn công mạng của cả 3 loại hình Phishing (lừa đảo), Malware (mã độc) và Deface (thay đổi giao diện) So với năm 2016, số lượng vụ tấn công mạng năm 2017 nhiều gấp hơn 4,2 lần (năm 2016 là 31.585), trong đó, loại hình tấn công Phishing là 10.057 sự cố (gấp hơn 1,7 lần so với năm 2016), Malware là 46.664 sự cố (gấp gần 2,8 lần năm 2016)
và Deface là 77.654 sự cố (gấp hơn 8,7 lần năm 2016) Mặt khác, theo khảo sát của Hiệp hội An toàn thông tin Việt Nam, chỉ số an toàn thông tin của Việt Nam trong năm 2017 là 59,9% Đây là bước tiến đáng kể trong những năm qua, bởi năm 2016,
con số này là 47,4%
Đặc biệt theo thống kê của Microsoft, trong 5 nước đứng đầu toàn cầu về nguy cơ nhiễm mã độc có 2 nước thuộc khu vực Đông Nam Á là Việt Nam và Indonesia Đây là hai nước có tỷ lệ nhiễm mã độc hơn 45% vào quý II/2016, gấp đôi so với mức trung bình cùng kỳ là 21% của thế giới
Do nhu cầu phát triển các dịch vụ thông tin trên mạng internet ngày càng lớn, đòi hỏi các cơ quan, tổ chức và doanh nghiệp phải đảm bảo an toàn cho các website
Trang 11của mình Vì vậy, vấn đề nghiên cứu các giải pháp phát hiện lỗ hổng bảo mật website có tính cấp thiết, có ý nghĩa khoa học và thực tiễn
Từ những lý do trên, học viên lựa chọn đề tài: “NGHIÊN CỨU PHÁT HIỆN LỖ HỔNG BẢO MẬT WEB VÀ THỬ NGHIỆM” cho luận văn tốt
nghiệp trình độ đào tạo thạc sĩ
2 Tổng quan về vấn đề nghiên cứu
World Wide Web (gọi tắt là Web hoặc WWW - mạng lưới toàn cầu) là một không gian thông tin toàn cầu mà mọi người có thể truy cập (đọc và viết) qua các thiết bị kết nối với mạng Internet Website là một tập hợp các trang Web (web pages) bao gồm văn bản, hình ảnh, video, flash, , thường chỉ nằm trong một tên miền (domain name) hoặc tên miền phụ (subdomain)
Kể từ khi ra đời vào năm 1990, công nghệ WEB đã phát triển mạnh mẽ và là
hạ tầng cung cấp các dịch vụ phổ biến nhất trên Internet Cho đến nay, đã có công nghệ WEB 1.0, WEB 2.0 và thế giới đang hướng tới công nghệ WEB 3.0
Trong thực tế, do thiếu Logging và Monitoring trong quá trình vận hành, khai thác các dịch vụ WEB dẫn đến sự thiếu giám sát và phát hiện kịp thời các tấn công lỗ hổng bảo mật Website Sự phát triển đa dạng về chủng loại cũng như số lượng các thiết bị truy nhập Website, trong nhiều trường hợp cũng gây ra khó khăn trong quá trình phát hiện lỗ hổng bảo mật Website Vì vậy, các vấn đề về bảo mật Website luôn được quan tâm do các tấn công Website ngày càng phổ biến và gây nhiều hệ lụy khôn lường
Các lỗ hổng bảo mật Website là các điểm yếu cho phép tin tặc tấn công đánh cắp dữ liệu người dùng, dữ liệu hệ thống, kiểm soát ứng dụng web, hoặc thậm chí kiểm soát cả hệ thống máy chủ chạy ứng dụng web OWASP (Open Web Application Security Project ) là một dự án cộng đồng mở hoạt động với mục đích tăng cường an toàn cho các ứng dụng web Từ những năm 2010 cho đến nay, OWASP khởi động dự án “OWASP Top 10” nhằm đưa ra danh sách 10 lỗ hổng bảo mật nghiêm trọng nhất trong các ứng dụng web Kết quả của dự án này đã được công bố như sau [16]:
Trang 12(1) Injection (Chèn mã)
(2) Broken Authentication and Session Management (Xác thực và quản phiên yếu)
(3) Cross-Site Scripting (XSS – Lỗi XSS)
(4) Insecure Direct Object References (Tham chiếu các đối tượng trực tiếp không an toàn)
(5) Security Misconfiguration (Lỗi cấu hình an ninh)
(6) Sensitive Data Exposure (Rò rỉ dữ liệu nhạy cảm)
(7) Missing Function Level Access Control (Thiếu kiểm soát truy nhập ở mức tính năng)
(8) Cross-Site Request Forgery (CSRF - Lỗi CSRF)
(9) Using Components with Known Vulnerabilities (Sử dụng các thành phần chứa lỗ hổng đã biết)
(10) Unvalidated Redirects and Forwards (Tái định hướng và chuyển tiếp không được kiểm tra)
Hiện nay, có nhiều tác giả trong và ngoài nước đã đề xuất nhiều giải pháp và công cụ phát hiện lỗ hổng bảo mật Website để đảm bảo an toàn Website và quá trình cung cấp dịch vụ WEB
3 Mục đích nghiên cứu
Mục đích nghiên cứu của luận văn là nghiên cứu phát hiện các lỗ hổng bảo mật website và thử nghiệm một số giải pháp phát hiện các lỗ hổng bảo mật website thường gặp
4 Đối tượng và phạm vi nghiên cứu
Đối tượng và phạm vi nghiên cứu của luận văn là nghiên cứu các giải pháp
và công cụ phát hiện các lỗ hổng bảo mật website
5 Phương pháp nghiên cứu
- Về mặt lý thuyết: Thu thập, khảo sát, phân tích các tài liệu và thông tin có liên
quan đến phát hiện lỗ hổng bảo mật website
Trang 13- Về mặt thực nghiệm: Xây dựng một số chương trình để mô phỏng phát hiện lỗ
hổng bảo mật website
Kết cấu của luận văn gồm 3 chương chính với các nội dung sau:
Chương 1: Tổng quan về tấn công lỗ hổng bảo mật website
Nội dung của chương 1 sẽ tập trung vào khảo sát nền tảng công nghệ website
và các vấn đề liên quan đến tấn công lỗ hổng bảo mật website
Chương 2: Nghiên cứu giải pháp phát hiện một số dạng lỗ hổng bảo mật website
Nội dung của chương 2 sẽ nghiên cứu một số giải pháp phát hiện lỗ hổng bảo mật website và các vấn đề liên quan
Chương 3: Thử nghiệm
Trong chương 3 luận văn sẽ tiến hành thử nghiệm phát hiện một số dạng lỗ hổng bảo mật website và các vấn đề liên quan
Trang 14CHƯƠNG 1: TỔNG QUAN VỀ TẤN CÔNG LỖ HỔNG BẢO
MẬT WEBSITE
Nội dung của chương 1 sẽ khảo sát tổng quan về công nghệ web, một số phương thức tấn công lỗ hổng bảo mật website, một số nguyên nhân gây ra lỗ hổng bảo mật website và các vấn đề khác liên quan
1.1 Tổng quan về công nghệ Web
1.1.1 Giới thiệu chung
Trang web (web page) trên mạng Internet là nơi giới thiệu những thông tin, hình ảnh về doanh nghiệp và sản phẩm, dịch vụ của doanh nghiệp (hay giới thiệu bất cứ thông tin gì) để khách hàng có thể truy cập ở bất kỳ nơi đâu, bất cứ lúc nào
Website là tập hợp nhiều trang web Khi doanh nghiệp xây dựng website nghĩa là đang xây dựng nhiều trang thông tin, catalog sản phẩm, dịch vụ, Để tạo nên một website cần phải có 3 yếu tố cơ bản [1]:
Cần phải có tên miền (domain)
Nơi lưu trữ website (hosting)
Nội dung các trang thông tin (web page)
Website tĩnh do lập trình bằng ngôn ngữ HTML theo từng trang như brochure, không có cơ sở dữ liệu và không có công cụ quản lý thông tin trên website Thông thường website tĩnh được thiết kế bằng các phần mềm như FrontPage, Dreamwaver, Đặc điểm của website tĩnh là ít thay đổi nội dung, sự thay đổi nội dung này thường liên quan đến sự thay đổi các văn bản đi kèm thể hiện nội dung trên đó
Trang 15Hiện nay, hầu hết các doanh nghiệp đều sử dụng website động, thế hệ công nghệ website được mọi người biết đến là web 2.0 [1]
- Tên miền (domain): Tên miền chính là địa chỉ website, trên internet chỉ tồn tại duy
nhất một địa chỉ (tức là tồn tại duy nhất một tên miền) Có 2 loại tên miền:
- Tên miền Quốc tế: là tên miền có dạng com; net; org; biz; name
- Tên miền Việt Nam: là tên miền có dạng vn; com.vn; net.vn; org.vn; gov.vn;
- Lưu trữ website: Dữ liệu thông tin của website phải được lưu trữ trên một máy
tính (máy chủ - server) luôn hoạt động và kết nối với mạng Internet Một server có thể lưu trữ nhiều website, nếu server này bị sự cố chẳng hạn tắt trong một thời điểm nào đó thì không ai có thể truy cập được những website lưu trữ trên server tại thời điểm bị sự cố
- Tùy theo nhu cầu lưu trữ thông tin mà doanh nghiệp có thể thuê dung lượng thích hợp cho website [thuê dung lượng host]
- Dung lượng host: Là nơi để lưu cơ sở dữ liệu của website (hình ảnh, thông tin,
…), đơn vị đo dung lượng thường là MB hoặc GB
- Băng thông hay dung lượng đường truyền: Là tổng số MB dữ liệu tải lên máy chủ
hoặc tải về từ máy chủ (download, upload) nơi đặt website, đơn vị đo thông thường
là MB/giây
1.1.2 Dịch vụ và cơ chế hoạt động Web
Dịch vụ Web là sự kết hợp các máy tính cá nhân với các thiết bị khác, các cơ
sở dữ liệu và các mạng máy tính để tạo thành một cơ cấu tính toán ảo mà người sử dụng có thể làm việc thông qua các trình duyệt mạng
Bản thân các dịch vụ này sẽ chạy trên các máy phục vụ trên nền Internet chứ không phải là các máy tính cá nhân, do vậy có thể chuyển các chức nǎng từ máy tính cá nhân lên Internet Người sử dụng có thể làm việc với các dịch vụ thông qua bất kỳ loại máy nào có hỗ trợ Web service và có truy cập Internet, kể cả các thiết bị cầm tay Do đó các Web service sẽ biến đổi Internet thành một môi trường làm việc chứ không chỉ là một phương tiện để xem và tải nội dung [10]
Trang 16Web Service là một giao diện truy cập mạng đến các ứng dụng chức năng, được xây dựng từ việc sử dụng các công nghệ chuẩn Internet [10] Được minh hoạ trong hình 1.1 sau:
lý các dữ liệu đó thông qua một giao diện chương trình ứng dụng được cài đặt xuyên suốt trên mạng máy tính Tuy nhiên nguời phát triển Web Service hoàn toàn
có thể đưa Web Service vào một giao diện đồ hoạ người dùng (chẳng hạn như là một trang web hoặc một chương trình thực thi nào đó) để có thể cung cấp thêm các chức năng đặc biệt cho người dùng
Cơ chế hoạt động của Web Service yêu cầu phải có 3 thao tác đó là : Find, Public, Bind [10]
Service Provider (Nh cung cấp dịch vụ)
Service registry (Đăng k dịch vụ)
Service Consumer (Người tiêu
d ng dịch vụ)
P b sh
(C ôn
g k
ai ) (T m F in d
kiế m )
Bind (r ng buộc)
Hình 1.2 Cơ chế hoạt động của Web Service[10]
Trong kiến trúc Web Service, Service Provider công bố các mô tả về các service thông qua Service Registry Service Consumer tìm kiếm trong các Service
Trang 17Registry để tìm ra các service mà họ cần sử dụng Service Consumer có thể là một người hoặc cũng có thể là một chương trình
Kĩ thuật mô tả dịch vụ là một trong những thành phần chủ chốt của kiến trúc Web Service Các thông tin mô tả đầy đủ nhất về kiến trúc Web Service được thể hiện trong hai tài liệu riêng biệt, đó là Network Accessible Service Specification Language (NASSL) và Web-Defined Service (WDS)
1.1.3 Công nghệ web 2.0
Khái niệm Web 2.0 đầu tiên được Dale Dougherty, phó chủ tịch của Oreilly Media, đưa ra tại hội thảo Web 2.0 lần thứ nhất do OReilly Media và MediaLive International tổ chức vào tháng 10/2004 Dougherty không đưa ra định nghĩa mà chỉ dùng các ví dụ so sánh, phân biệt Web 1.0 và Web 2.0: "DoubleClick là Web 1.0; Google AdSense là Web 2.0 Ofoto là Web 1.0; Flickr là Web 2.0 Britannica online
là Web 1.0; Wikipedia là Web 2.0 v.v "
Web 2.0 là một cách tiếp cận mới để sử dụng web như là một nền tảng nơi
mà người dùng cùng nhau tham gia vào việc tạo ra, chỉnh sửa, và xuất bản thông tin thông qua những công cụ hợp tác sáng tạo nội dung trên nền web Web 2.0 liên quan tới người dùng không phải chỉ ở chỗ người dùng tạo ra nội dung mà người dùng giúp thu thập, tổ chức, mô tả, cập nhật, chia sẻ, truyền bá, sắp xếp lại, bình luận, hiệu chỉnh, và đóng gói lại nội dung
Hình 1.3 Các loại h nh dịch vụ phổ biến trên nền web 2.0 [10]
1.1.4 Công nghệ web 3.0
Trang 18Web 3.0 còn có tên gọi là Semantic Web, được định nghĩa bởi Hiệp hội World Wide Web (W3C) nhằm xác định một thế hệ web mới với những tính năng độc đáo, hiện đại hơn, chú trọng vào việc sử dụng các định dạng dữ liệu và các giao thức chung để mọi trang web, mọi dịch vụ online đều có thể giao tiếp với nhau một cách nhanh chóng, tiện lợi và dễ dàng
Hiện nay, hầu hết các doanh nghiệp đều sử dụng website động, thế hệ công nghệ website được mọi người biết đến là công nghệ web thuộc thế hệ thứ ba - web 3.0 [8] Web 3.0 có các tính năng đặc trưng sau:
(1) Web có vai trò nền tảng, có khả năng chạy trên mọi ứng dụng
(2) Tập hợp trí tuệ thông qua internet
(3) Dữ liệu giữ vai trò then chốt
(4) Phần mềm được cung cấp bởi các dạng dịch vụ website và cập nhật liên tục (5) Phát triển web dễ dàng và nhanh chóng
(6) Phần mềm có thể chạy trên nhiều thiết bị
(7) Giao diện phong phú
Thực tế hiện nay, ứng dụng trên web là thành phần quan trọng của web 3.0, hàng loạt công nghệ mới phát triển nhằm giúp cho các ứng dụng của web hoạt động mạnh hơn, nhanh hơn, dễ dàng sử dụng, đây là yếu tố thực tế để làm nền tảng của web 3.0 hiện nay Công nghệ web 3.0 vẫn đang phát triển nhưng các thành phần cơ bản bao gồm: phần mềm máy chủ, cơ chế cung cấp nội dung, giao thức truyền thông, trình duyệt và ứng dụng
Tiến trình phát triển của công nghệ Web có thể mô tả trong Hình 1.4 dưới đây: bắt đầu bằng công nghệ Web 1.0, công nghệ Web 2.0 trong giai đoạn hiện tại
và đang hướng tới công nghệ Web 3.0
Trang 19Hình 1.4 Tiến tr nh phát triển công nghệ web [13]
1.2 Một số phương thức tấn công lỗ hổng bảo mật website
1.2.1 Giới thiệu chung
Các lỗ hổng bảo mật trên một hệ thống thông tin nói chung là các điểm yếu
có thể tạo ra sự ngưng trệ của dịch vụ, thêm quyền đối với người sử dụng hoặc cho phép các truy cập không hợp pháp vào hệ thống Các lỗ hổng cũng có thể nằm ngay các dịch vụ cung cấp như sendmail, web, ftp … Ngoài ra các lỗ hổng còn tồn tại ngay chính tại hệ điều hành như trong Windows, UNIX; hoặc trong các ứng dụng
mà người sử dụng thường xuyên sử dụng như Word processing, các hệ databases,
…
Có thể được phân chia các dạng lỗ hổng bảo mật trên một hệ thống nói chung thành ba cấp độ nguy hiểm như sau [2]:
Lỗ hổng loại C: các lỗ hổng loại này cho phép thực hiện các phương thức tấn
công theo DoS (Dinal of Services – Từ chối dịch vụ) Mức độ nguy hiểm thấp, chỉ ảnh hưởng tới chất lượng dịch vụ, có thể làm ngưng trệ, gián đoạn hệ thống; không làm phá hỏng dữ liệu hoặc đạt được quyền truy nhập bất hợp pháp
Lỗ hổng loại B: Các lỗ hổng cho phép người sử dụng có thêm các quyền trên
hệ thống mà không cần thực hiện kiểm tra tính hợp lệ Mức độ nguy hiểm trung
Trang 20bình; Những lỗ hổng này thường có trong các ứng dụng trên hệ thống; có thể dẫn đến mất hoặc lộ thông tin yêu cầu bảo mật
Lỗ hổng loại A: Các lỗ hổng này cho phép người sử dụng ở ngoài có thể truy
nhập vào hệ thống bất hợp pháp Lỗ hổng rất nguy hiểm, có thể làm phá hủy toàn bộ
hệ thống
Các lỗ hổng bảo mật Website là các điểm yếu của hệ thống cung cấp dịch vụ Web cho phép tin tặc tấn công đánh cắp dữ liệu người dùng, dữ liệu hệ thống, kiểm soát ứng dụng web, hoặc thậm chí kiểm soát cả hệ thống máy chủ chạy ứng dụng web Các lỗ hổng bảo mật Website rất đa dạng và bao gồm cả ba loại trên
Trong phần tiếp theo, luận văn sẽ trình bày một số phương thức tấn công lỗ hổng bảo mật Website
1.2.2 Các phương thức tấn công lỗ hổng bảo mật website
Trong mục này, luận văn sẽ khảo sát các phương thức tấn công lỗ hổng bảo mật Website dựa trên khuyến nghị của OWASP [16]
- Vượt qua kiểm tra lúc đăng nhập
- Sử dụng câu lệnh SELECT
- Sử dụng câu lệnh INSERT
- Sử dụng các Stored-Procedures
Trang 211.2.2.2 Tấn công kiểu Broken Authentication And Session Management
Đây là kiểu tấn công lỗi xác thực và quản lý phiên làm việc (Broken Authentication And Session Management), bao gồm những đoạn chương trình kiểm tra danh tính và quản lý phiên làm việc của người sử dụng thường hay được làm qua loa không đúng cách Điều này giúp kẻ thâm nhập có thể ăn cắp mật mã, khóa, mã của các phiên làm việc {session token} hoặc tận dụng những lỗi khác để giả mạo danh tính các người dùng khác
Quản lý xác thực và phiên bao gồm tất cả các khía cạnh xử lý xác thực và quản lý phiên làm việc Xác thực là một khía cạnh quan trọng của quá trình này, nhưng ngay cả các cơ chế xác thực vững chắc cũng có thể bị suy yếu do chức năng quản lý có khe hở, bao gồm thay đổi mật khẩu, ghi nhớ mật khẩu, thay đổi tài khoản
và nhiều chức năng khác Vì các cuộc tấn công có thể xảy ra với nhiều ứng dụng web nên chức năng quản lý tài khoản yêu cầu xác thực lại ngay cả khi người sử dụng có phiên làm việc hợp lệ Một phương pháp xác thực mạnh mẽ hơn là sử dụng phần mềm và phần cứng tuy nhiên phương pháp này rất tốn kém
Các ứng dụng web thường phải thiết lập phiên để theo dõi các luồng yêu cầu
từ người dùng, giao thức HTTP không hỗ trợ khả năng này vì vậy các ứng dụng web phải tự tạo ra nó Thông thường môi trường ứng dụng web cung cấp khả năng phiên nhưng nhiều nhà phát triển thích tự họ tạo ra một thẻ phiên của riêng họ Tuy nhiên, chức năng ứng dụng liên quan đến quản lý xác thực và phiên làm việc thường thực hiện một cách chính xác, điều này cho phép kẻ tấn công lấy được mật khẩu, khóa, thẻ phiên hoặc khai thác lỗ hổng để thực hiện các giả mạo danh tính người dùng
1.2.2.3 Tấn công Cross Site Scripting (XSS)
Kiểu tấn công thực thi mã script xấu Cross-Site Scripting (XSS) là một trong những kĩ thuật tấn công phổ biến nhất hiên nay, đồng thời nó cũng là một trong những vấn đề bảo mật quan trọng đối với các nhà phát triển web và cả những người
sử dụng web Bất kì một website nào cho phép người sử dụng đăng thông tin mà
Trang 22không có sự kiểm tra chặt chẽ các đoạn mã nguy hiểm thì đều có thể tiềm ẩn các lỗi XSS
Cross-Site Scripting hay còn được gọi tắt là XSS (thay vì gọi tắt là CSS để tránh nhầm lẫn với CSS-Cascading Style Sheet của HTML) là một kĩ thuật tấn công bằng cách chèn vào các website động (ASP, PHP, CGI, JSP ) những thẻ HTML hay những đoạn mã script nguy hiểm có thể gây nguy hại cho những người sử dụng khác Trong đó, những đoạn mã nguy hiểm được chèn vào hầu hết được viết bằng các Client-Site Script như JavaScript, JScript, DHTML và cũng có thể là cả các thẻ HTML Kĩ thuật tấn công XSS đã nhanh chóng trở thành một trong những lỗi phổ biến nhất của Web Applications và mối đe dọa của chúng đối với người sử dụng ngày càng lớn
1.2.2.4 Kiểu tấn công Insecure Direct Object References
Kiểu tấn công đối tượng tham chiếu trực tiếp không an toàn (Insecure Direct Object References), xảy ra khi người phát triển để lộ một tham chiếu đến những đối tượng trong hệ thống như các tập tin, thư mục hay chìa khóa dữ liệu Nếu chúng ta không có một hệ thống kiểm tra truy cập, kẻ tấn công có thể lợi dụng những tham chiếu này để truy cập dữ liệu một cách trái phép
Việc phân quyền yếu cho phép người dùng có thể truy cập dữ liệu của người khác Hacker có thể xác định được cấu trúc truy vấn gửi đến server và có thể nhanh chóng thu nhập dữ liệu như Credit Card, mã khách hàng, thông tin cá nhân
1.2.2.5 Tấn công Security Misconfiguration
Kiểu tấn công sai sót trong cấu hình bảo mật (Security Misconfiguration), như
là một cơ chế an ninh tốt cần phải định nghĩa những hiệu chỉnh về an ninh và triển khai nó cho các ứng dụng, máy chủ ứng dụng, máy chủ web, máy chủ dữ liệu và các ứng dụng nền tảng
Tất cả những thiết lập nên được định nghĩa, thực hiện và bảo trì bởi vì rất nhiều hệ thống không được triển khai với thiết lập an toàn mặc định Các hiệu chỉnh cũng bao gồm cập nhật phần mềm và những thư viện được sử dụng bởi ứng dụng
Trang 231.2.2.6 Tấn công Sensitive Data Exposure
Kiểu tấn công phơi bày các dữ liệu nhạy cảm (Sensitive Data Exposure), bao gồm nhiều ứng dụng web không bảo vệ dữ liệu nhạy cảm như thẻ tín dụng, mã số thuế và những mã xác thực bí mật bằng các phương thức mã hóa hay băm (hashing) Kẻ tấn công có thể ăn cắp hay thay đổi những dữ liệu nhạy cảm này và tiến hành hành vi trộm cắp, gian lận thẻ tín dụng, v.v
1.2.2.7 Tấn công Missing Function Level Access Control
Kiểu tấn công thiếu chức năng điều khiển truy cập (Missing Function Level Access Control) bao gồm gần như tất cả các ứng dụng web kiểm tra quyền truy cập cấp độ chức năng trước khi thực hiện chức năng mà có thể nhìn thấy trong giao diện người dùng Tuy nhiên, các ứng dụng cần phải thực hiện kiểm tra kiểm soát truy cập tương tự trên máy chủ khi mỗi chức năng được truy cập Nếu yêu cầu không được xác nhận, kẻ tấn công sẽ có thể giả mạo yêu cầu để truy cập vào chức năng trái phép
1.2.2.8 Tấn công Cross-Site Request Forgery (CSRF)
Kiểu tấn công giả mạo yêu cầu (CSRF) là kiểu tấn công này ép buộc trình duyệt web của một người dùng đã đăng nhập gửi những yêu cầu các HTTP giả bao gồm cookie của phiên truy cập và những thông tin tự động khác bao gồm thông tin đăng nhập đến một ứng dụng web Điều này, cho phép kẻ tấn công buộc trình duyệt web tạo ra những yêu cầu đến ứng dụng web mà ứng dụng không thể biết đây là những yêu cầu giả mạo của kẻ tấn công
1.2.2.9 Tấn công Using Components with Known Vulnerabilities
Kiểu tấn công sử dụng thành phần đã tồn tại lỗ hổng (Using Components with Known Vulnerabilities) bao gồm các lổ hổng có thể có trong các thành phần (thành phần phát triển ứng dụng) như các thư viện, các framework, và mô-đun phần mềm khác Các thành phần này gần như luôn luôn chạy với quyền cao nhất trong hệ thống Vì vậy, nếu bị khai thác, các thành phần này có thể gây mất dữ liệu nghiêm trọng
Trang 24Các ứng dụng sử dụng các thành phần tồn tại lổ hổng có thể làm suy yếu phòng thủ của hệ thống, cho phép một loạt các cuộc tấn công và ảnh hưởng đến hệ thống
1.2.2.10 Tấn công Unvalidated Redirects and Forwards
Kiểu tấn công chuyển hướng và chuyển tiếp thiếu kiểm tra (Unvalidated Redirects and Forwards) là kiểu tấn công ứng dụng web thường chuyển hướng, chuyển tiếp người dùng đến những trang web, website khác và sử dụng những thông tin thiếu tin cậy để xác định trang đích đến Nếu không được kiểm tra một cách cẩn thận, kẻ tấn công có thể lợi dụng để chuyển hướng nạn nhân đến các trang web lừa đảo hay trang web chứa phần mềm độc hại, hoặc chuyển tiếp để truy cập các trang trái phép
Ngoài 10 phương thức tấn công phổ biến mạng hiện nay theo OWASP, còn có thể kế đến phương pháp tấn công APT rất quan trọng trong tấn công mạng
1.2.2.11 Tấn công APT
Thuật ngữ APT (Advanced Persistent Threat) được sử dụng để mô tả kiểu tấn công dai dẳng và có chủ đích vào một thực thể được nhắm đến Thông thường tấn công APT có sự chuẩn bị kỹ càng và được thực hiện, hỗ trợ bởi một tổ chức hoặc cao cấp hơn là chính phủ của một nước nào đó nhằm tìm kiếm thông tin tình báo từ cá nhân, doanh nghiệp, chính phủ nước khác
Phân tích các thuật ngữ trong APT
Advanced: thuật ngữ này trong cụm từ APT chỉ các kiểu tấn công cao cấp
hơn các thể loại thông thường Trong APT, tin tặc sử dụng các malware và các biến thể khác nhau để tiến hành qua mặt và xâm nhập vào hệ thống Không giống các virus hay chương trình độc hại máy tính khác, các malware này phần lớn có thể qua mặt được các phương pháp bảo vệ truyền thống khác như Firewall, IPS, và phần mềm diệt virus
Persistent: kiểu tấn công APT thực sự bao giờ cũng có chủ đích nhất định và
thuật ngữ Persistent mang ý nghĩa việc tấn công luôn theo sát để đạt được mục đích của nó Mục tiêu tấn công sẽ không bị tấn công ngay tức thì mà các mã độc sẽ đi
Trang 25theo nhiều đường khác nhau cho đến khi xâm nhập vào hệ thống, sau đó chờ thời
cơ Chúng chỉ thực sự kích hoạt tấn công khi phát hiện đúng mục tiêu
Threat: chỉ các mối nguy hại liên quan đến an ninh, an toàn thông tin
Theo thống kế của FireEye [12], tấn công APT nằm trong nhóm hiểm họa an toàn thông tin bắt đầu xuất hiện từ giai đoạn 2010-2011 cho đến nay Đây là phương thức tấn công đa dạng, nhanh chóng tạo ra các biến thể để qua mặt các giải pháp an ninh và gây thiệt hại to lớn so với các rủi ro an ninh khác như virus, spyware
1.2.3 Nhận xét và đánh giá
Thực tế với tình hình hiện nay, các ứng dụng Web ngày một nhiều Sự thay đổi chóng mặt của công nghệ đã giúp ứng dụng Web được cải tiến nâng cao rất nhiều, và vấn đề bảo mật cho ứng dụng Web không ngừng tăng lên Một khi ứng dụng Web bị rò rỉ lỗ hổng, các hacker sẽ dễ dàng chiếm quyền quản trị Web, ứng dụng và phần mềm của công ty Nguyên nhân dẫn đến các ứng dụng Web bị rò rỉ thông tin, các nguy cơ về lỗ hổng, là do các đoạn mã lệnh, mã code không phù hợp trong ứng dụng Web Chỉ cần một lỗ hổng, hacker cũng có thể xâm nhập và truy cập vào cơ sở dữ liệu, thông tin và thực hiện các hành vi sai trái như đánh cắp, thay đổi, chỉnh sửa, mã hóa dữ liệu…Đối với các doanh nghiệp, tổ chức, cơ quan nhà nước, việc tăng lớp bảo mật, rà quét lỗ hổng ứng dụng là điều cần thiết
Việc đánh cắp hoặc chiếm đoạt quyền truy cập của người dùng, nhà quản trị, cũng như chiếm các phiên làm việc trên session management hoặc ẩn phiên làm việc session fixation, dẫn đến các hậu quả không an toàn như: những thông tin cá nhân, thông tin quan trọng, tài chính của công ty và khách hàng sẽ bị hacker xâm phạm; ứng dụng web và các phần mềm khác mà công ty, doanh nghiệp đang sử dụng rất có thể sẽ bị hacker cài mã theo dõi, virus độc hại; hệ thống máy chủ hoặc
hệ thống có thể bị tê liệt do sự cố bắt nguồn từ các ứng dụng Web,…
1.3 Một số nguyên nhân gây ra các lỗ hổng bảo mật website
1.3.1 Nguyên nhân do nền tảng xây dựng website
Với sự bùng nổ của thương mại điện tử, có rất nhiều nền tảng website ra đời
để đáp ứng nhu cầu cho người dùng Cũng chính vì vậy, sẽ gây khó khăn cho các tổ
Trang 26chức và cá nhân để chọn riêng cho mình nền tảng website phù hợp Rất nhiều nền tảng xây dựng website hiện nay như: nền tảng tự code riêng, nền tảng wordpress, nền tảng Laravel, hoặc có thể xây dựng công nghệ giữa web 2.0 và web 3.0 khi tham gia môi trường mạng internet không tích hợp được các công nghệ hệ thống, dẫn đến làm suy giảm tính năng của ngôn ngữ hoặc công nghệ, cũng làm cho rủi ro tiềm tàng của dịch vụ
Ngôn ngữ lập trình backend dễ học nhất là PHP Hầu hết các website ở Việt Nam được lập trình bằng php, wordpress Các lập trình viên hay thiết kế thường nhầm lẫn giữa 2 phương thức bảo mật GET và POST, do đó website có thể bị nhòm ngó nếu chúng ta lập trình sai Chúng ta có thể khắc phục lỗ hổng và bảo mật cho website được code bằng PHP là dùng framework Vì framework giúp tăng cường tính bảo mật website và thông thường dùng nhất là Laravel, tiếp đó là symfony, sau
đó mới là CodeIgniter
Ngoài ra còn có điểm yếu về kỹ thuật trong các giao thức, hệ điều hành và các thiết bị phần cứng như Server, Router, Switch
1.3.2 Nguyên nhân do hạ tầng cung cấp dịch vụ web
Khi cung cấp dịch vụ mạng, đôi khi do nhà quản trị tạo ra, lỗi này do các thiếu sót trong việc cấu hình hệ thống như: không đảm bảo thông tin mật tài khoản khách hàng, hệ thống tài khoản với mật khẩu dễ dàng đoán biết, sử dụng các cấu hình mặc định trên thiết bị
Trong hệ thống nội bộ thông thường thì đơn vị có thể thực hiện đánh giá và kiểm soát những rủi ro Tuy nhiên, nhiều nhà cung cấp dịch vụ thường đánh giá thấp, hoặc không nhắc đến các rủi ro khi sử dụng dịch vụ web Bên cạnh lựa chọn
sử dụng hạ tầng cung cấp dịch vụ web, cần lưu ý đến các chứng chỉ được cấp cho nhà cung cấp dịch vụ:
- Tính bí mật, những rủi ro sau là hiện hữu: thu lén trên đường truyền liên lạc, nhà
cung cấp tiếp cận những dữ liệu nhạy cảm, lộ lọt dữ liệu do nhà cung cấp dịch vụ;
lộ lọt dữ liệu phía nội bộ
Trang 27- Tính toàn vẹn, những rủi ro có thể là: thao tác dữ liệu đang truyền đưa, thao tác dữ
liệu tại phía nhà cung cấp dịch vụ, sửa đổi dữ liệu ngẫu nhiên khi đang truyền đưa, sửa đổi dữ liệu ngẫu nhiên tại phía nhà cung cấp dịch vụ, sửa đổi dữ liệu tại hệ thống nội bộ
- Tính khả dụng (sẵn sàng) thì những rủi ro sau đáng quan tâm: dịch vụ bị gián
đoạn, thời gian ngừng trệ không chủ ý, tấn công tính sẵn sàng, mất truy cập dữ liệu, mất dữ liệu ở phía nhà cung cấp dịch vụ, thiếu tính khả dụng trong hệ thống nội bộ
1.3.3 Nguyên nhân do người vận hành và sử dụng dịch vụ web
Đây là một nguyên nhân có thể dẫn đến những lỗ hổng bảo mật Website làm tiền đề cho những hình thức tấn công nguy hiểm nhất và có thể dẫn tới những tổn thất hết sức khó lường Kẻ tấn công có thể liên lạc với người quản trị hệ thống thay đổi một số thông tin nhằm tạo điều kiện cho các phương thức tấn công khác
Ngoài ra, điểm mấu chốt của vấn đề an toàn, an ninh trên mạng chính là người sử dụng Họ là điểm yếu nhất trong toàn bộ hệ thống do kỹ năng, trình độ sử dụng máy tính, bảo mật dữ liệu không cao Chính họ đã tạo điều kiện cho những kẻ phá hoại xâm nhập được vào hệ thống thông qua nhiều hình thức khác nhau như qua Email hoặc sử dụng những chương trình không rõ nguồn gốc, thiếu độ an toàn
Với những lỗ hổng bảo mật Website như vậy sẽ không có bất cứ một thiết bị nào có thể ngăn chặn một cách hữu hiệu chỉ có phương pháp duy nhất là hướng dẫn người sử dụng mạng về những yêu cầu bảo mật để nâng cao cảnh giác Nói chung yếu tố con người là một điểm yếu trong bất kỳ một hệ thống bảo vệ nào và chỉ có sự hướng dẫn của người quản trị mạng cùng với tinh thần hợp tác từ phía người sử dụng mới có thể nâng cao độ an toàn của hệ thống bảo vệ
1.3.4 Nhận xét v đánh giá
Có thể rất nhiều nguyên nhân khác nhau dẫn đến rủi ro về lỗ hổng bảo mật web Các nguyên nhân chủ yếu là: những nguyên nhân về xây dựng nền tảng website bởi sự thay đổi về công nghệ luôn được cập nhật; nguyên nhân về sự cung cấp hạ tầng dịch vụ website và nguyên nhân do con người vận hành và sử dụng các dịch vụ website
Trang 281.4 Kết luận chương 1
Trong chương 1, luận văn đã khảo sát tổng quan về công nghệ web như công nghệ web 2.0 và công nghệ web 3.0 Từ đó, luận văn đã tiến hành phân tích các phương thức tấn công lỗ hổng bảo mật website thường gặp hiện nay cũng như một
số nguyên nhân gây ra lỗ hổng bảo mật website Các kết quả nghiên cứu cho thấy rất nhiều tiềm tàng về rủi ro cho hệ thống dịch vụ web trong hệ thống mạng internet toàn cầu hiện nay
Vì vậy, vấn đề phát hiện sớm các lỗ hổng bảo mật Website để có các biện pháp phòng ngừa hữu hiệu đóng một vai trò hết sức quan trọng Chương tiếp theo, luận văn sẽ nghiên cứu các giải pháp phát hiện lỗ hổng bảo mật Website
Trang 29Chương 2: NGHIÊN CỨU GIẢI PHÁP PHÁT HIỆN LỖ
HỔNG BẢO MẬT WEBSITE
Trong chương 2 luận văn sẽ nghiên cứu một số giải pháp phát hiện lỗ hổng bảo mật website bao gồm: giải pháp sử dụng công cụ phần mềm, giải pháp sử dụng
hệ thống IDS và giải pháp sử dụng các kỹ thuật học máy
2.1 Tổng quan về phát hiện lỗ hổng bảo mật Website
2.1.1 Giới thiệu chung
Hệ thống Website có thể hoạt động và cung cấp dịch vụ cho người dùng thường trải qua các giai đoạn sau đây:
(1) Giai đoạn thiết kế hệ thống Website;
(2) Giai đoạn cài đặt hệ thống Website;
(3) Giai đoạn triển khai và vận hành khai thác hệ thống Website
Trong cả ba giai đoạn trên đều có thể phát sinh các lỗ hổng bảo mật và cần phải có các giải pháp phát hiện lỗ hổng bảo mật cho hệ thống Website
Quy trình phát hiện lỗ hổng bảo mật cho hệ thống Website đang hoạt động thông thường được thực hiện theo các bước sau:
(1) Bước 1: Khảo sát hiện trạng hệ thống Website
Trước hết, thực hiện khảo sát toàn bộ hệ thống website nhằm thu thập những thông tin cơ bản về thiết kế, cài đặt và hiện trạng vận hành để chuẩn bị cho bước 2
(2) Bước 2: Xây dựng kịch bản đánh giá
Trong bước này cần xây dựng các kịch bản cụ thể để tiến hành phát hiện lỗ hổng bảo mật cho hệ thống Website
(3) Bước 3: Đánh giá sơ bộ
Trang 30Thường sử dụng các công cụ rà quét toàn bộ hệ thống website bao gồm website chính và các website site con như: blog, website wordpress, diễn đàn, …
(4) Bước 4: Đánh giá chi tiết
Trong bước này thường thực hiện tấn công từ bên trong và bên ngoài mạng nội bộ kết nối hệ thống website Trong đó, tấn công từ bên trong hệ thống sẽ tiến hành thâm nhập toàn bộ hệ thống thông qua bộ lưu trữ mật khẩu của website, tấn công từ diễn đàn, … Còn tấn công từ bên ngoài hệ thống sẽ giả lập vai trò là các hacker thâm nhập vào hệ thống thông qua wifi, internet, host, IDS, tường lửa, … Trên cơ sở đánh giá chi tiết sẽ đưa ra những giải pháp, những tư vấn thiết thực nhằm khắc phục các lỗ hổng bảo mật đã phát hiện cho hệ thống website
Trong mục tiếp theo, dựa trên ý tưởng trình bày trong [2], luận văn sẽ đưa ra
mô hình phát hiện lỗ hổng bảo mật Website tổng quát
2.1.2 Mô hình phát hiện lỗ hổng bảo mật Website
Lỗ hổng bảo mật Website rất đa dạng và có thể do nhiều nguyên nhân khác nhau, có thể phát sinh từ những yếu tố thuần túy kỹ thuật; cũng có thể do các yếu tố
về tổ chức và quản lý như: thiếu hoặc khiếm khuyết trong các biện pháp bảo vệ thông tin Tuy nhiên, lỗ hổng bảo mật Website có thể được chia thành ba loại: lỗ hổng khách quan, lỗ hổng chủ quan và lỗ hổng ngẫu nhiên Lỗ hổng khách quan xuất phát từ các đặc tính kỹ thuật vốn có của thiết bị và phần mềm của Website Lỗ hổng chủ quan xuất phát từ hành vi của chủ thể, có thể là nhà thiết kế, các quản trị viên và người sử dụng Lỗ hổng ngẫu nhiên xuất phát từ môi trường của hệ thống Website và những bối cảnh không dự đoán trước được
Hình 2.1 dưới đây mô tả mô hình tổng quát phát hiện lỗ hổng bảo mật Website
Theo hình 2.1, quá trình phát hiện lỗ hổng bảo mật Website được xây dựng bằng cách thực hiện kiểm tra thụ động và kiểm tra thăm dò tích cực (active probe) các lỗ hổng Trong quá trình rà quét (scan), các phương tiện phân tích lỗ hổng bảo
Trang 31mật Website sẽ gửi yêu cầu đến địa chỉ của Website (lên cổng máy chủ), phân tích các gói dữ liệu nhận được, sau đó đưa ra các kết luận tương ứng về các lỗ hổng có thể tồn tại
Phương pháp thăm dò tích cực cung cấp khả năng phân tích dấu vết số đoạn phần mềm của Website, thực hiện quá trình so sánh kết quả nhận được với dấu vết
số lỗ hổng đã được biết của Website đang được kiểm tra Trong quá trình kiểm tra thăm dò tích cực, các phương tiện phân tích an toàn mô phỏng các tấn công vào Website, sử dụng thông tin lỗ hổng nhận được khi quét
Hình 2.1 Mô hình tổng quát phát hiện lỗ hổng bảo mật Website [2]
Kết quả rà quét và kiểm tra thăm dò tích cực được đưa vào cơ sở dữ liệu lỗ hổng, trong đó lưu giữ thông tin các lỗ hổng của Website Trên cơ sở so sánh thông tin lỗ hổng được phát hiện với thông tin các lỗ hổng của Website, các phương tiện phân tích an toàn hệ thống lập báo cáo về sự vắng mặt hay hiện diện của những
Trang 32trùng hợp trong thông tin của các lỗ hổng, báo cáo này được lưu trong cơ sở dữ liệu
lỗ hổng
Mô tả thông tin các lỗ hổng đã được biết đến và lỗ hổng chưa biết (lỗ hổng zero-day) được lưu giữ bằng thông tin về các tính chất đặc thù của từng lỗ hổng cụ thể Để nhận dạng chính xác thông tin lỗ hổng được phát hiện, cơ sở dữ liệu lỗ hổng cần chứa thông tin về tên gọi và phiên bản phần mềm của Website, về định danh, tên và lớp của các lỗ hổng được phát hiện các lỗ hổng đã được biết đến và lỗ hổng zero-day được lưu giữ bằng thông tin về các tính chất đặc thù của từng lỗ hổng cụ thể Để nhận dạng chính xác thông tin lỗ hổng được phát hiện, cơ sở dữ liệu lỗ hổng cần chứa thông tin về tên gọi và phiên bản phần mềm của Website, về định danh, tên và lớp của các lỗ hổng được phát hiện
Dựa trên các thông tin trên, các phương tiện phân tích an toàn sẽ phân loại các mức độ của lỗ hổng Để đánh giá một cách chính xác thông tin về lỗ hổng bao gồm: loại khiếm khuyết của Website, vị trí phát hiện và phương pháp phát hiện lỗ hổng Quá trình đánh giá lỗ hổng kết thúc bằng các khuyến nghị về việc loại bỏ lỗ hổng hoặc loại trừ khả năng sử dụng chúng
Trong trường hợp lỗ hổng được phát hiện lần đầu tiên, các phương tiện phân tích sẽ đưa thông tin về nó vào cơ sở dữ liệu lỗ hổng và hình thành cơ sở dữ liệu mới của lỗ hổng zero-day Khi các nhà phát triển Website đưa ra các bản cập nhật
và các biện pháp bảo vệ thông tin, thì lỗ hổng zero-day sẽ chuyển thành lỗ hổng đã biết
Trong phần tiếp theo, luận văn sẽ khảo sát ba giải pháp phát hiện lỗ hổng bảo mật Website: giải pháp sử dụng công cụ phần mềm rà quét lỗ hổng, giải pháp sử dụng hệ thống IDS và giải pháp sử dụng các kỹ thuật học máy
Trang 332.2 Giải pháp sử dụng công cụ phần mềm dò quét
2.2.1 Giới thiệu giải pháp
Trong quá trình thiết kế, cài đặt và vận hành hệ thống Website, thường xuyên dò quét phát hiện các lỗ hổng bảo mật để kịp thời xử lý là sự lựa chọn thông minh giúp cho các doanh ngiệp, cá nhân, tổ chức bảo vệ được hệ thống của mình
Để thực hiện dò quét phát hiện các lỗ hổng bảo mật, người dùng có thể tự cài đặt các phần mềm hoặc sử dụng các phần mềm sẵn có của các nhà cung cấp
Một số tiêu chuẩn kiểm thử lỗ hổng bảo mật website điển hình:
– OWASP (Open Web Application Security Project)
– OSSTMM (Open Source Security Testing Methodology Manual) – Kiểm thử theo phương thức mã nguồn mở
– PTF (Penetration Testing Framework) – Dò quét lỗ hổng bảo mật hệ thống – ISSAF (Information Systems Security Assessment Framework) – Đánh giá bảo mật Hệ thống thông tin
Để xây dựng các phần mềm phát hiện lỗ hổng bảo mật, trước hết cần nghiên cứu kỹ các đặc điểm lỗ hổng bảo mật dựa trên các tiêu chuẩn nêu trên Tiếp theo là
sử dụng các ngôn ngữ lập trình (chẳng hạn như Python) để cài đặt phần mềm mô phỏng quá trình tấn công lỗ hổng bảo mật nhằm phát hiện chúng Cuối cùng là sử dụng phần mềm để dò quét phát hiện lỗ hổng bảo mật
Quá trình tự cài đặt các phần mềm phát hiện lỗ hổng bảo mật giúp cho các nhà phát triển Website nắm rõ bản chất của lỗ hổng và sớm có các giải pháp khắc phục
Trong hình 2.2 mô tả sơ đồ tấn công lỗ hổng cơ sở dữ liệu SQL của website được viết bằng ngôn ngữ lập trình PHP và cơ sở dữ liệu SQL server
Trang 34Hình 2.2: Sơ đồ thực hiện tấn công lỗ hổng cơ sở dữ liệu SQL trên web [2,3]
Trên cơ sở đó, thực hiên cài đặt phần mềm theo sơ đồ trên để phát hiện lỗ hổng bảo mật webiste tương ứng
2.2.2 Một số phần mềm phát hiện lỗ hổng bảo mật Website
Hiện nay có khá nhiều phần mềm miễn phí cũng như trả phí được phát hành Một số ứng dụng phát hiện lỗ hổng bảo mật Website khá phổ biến được liệt kê dưới đây
- Google Safe Browsing Diagnostic: sẽ cho biết về tên miền và các đường dẫn liên quan đến địa chỉ web muốn kiểm tra
- URL Void: có chức năng quét địa chỉ web bằng hơn 30 công cụ khác nhau
- UnMask Parasites: quét web cho biết nó chứa các mối nguy hiểm nào ví dụ đường link, dòng lệnh đáng ngờ
- PhishTank: cung cấp danh sách địa chỉ Web có nguy cơ phishing
- UnShorten.it: đảm bảo an toàn cho người dùng khi truy cập vào các địa chỉ web rút gọn
- Phần mềm Havij: phát hiện lỗ hổng cơ sở dữ liệu SQL với ngôn ngữ lập trình web là PHP
Trang 35- Phần mềm Rapid 7: có tính năng dò quét lỗ hổng toàn diện chuyên sâu trên
cả phần cứng và phần mềm
- Phần mềm Acunetix: là chương trình tự động kiểm tra các ứng dụng Web
để tìm kiếm các lỗ hổng bảo mật như SQL Injection, hay Cross-Site Scripting,…
Tiếp theo, luận văn sẽ khảo sát một số phần mềm cụ thể
(a) Phần mềm Havij khai thác lỗ hổng cơ sở dữ liệu SQL với ngôn ngữ lập tr nh web l PHP
Hình 2.3: Giao diện phần mềm Havaij quét lỗ hổng bảo mật web
Khi chúng ta tìm được cơ sở dữ liệu Current DB như hình trên, ta có thể dễ dàng truy xuất được các bảng Tables trong cơ sở dữ liệu đó bằng cách Get Tables, Get Columns hoặc Get Data để lấy được tên đăng nhập và mật khẩu đăng nhập
của trang website đó (thông thường mật khẩu được mã hóa bằng MD5, ta có thể
Trang 36dùng chức năng MD5 để giải hoặc có nhiều trang web online có thể giải mã được mật khẩu một cách dễ dàng và nhanh chóng, )
Hình 2.4: Giao diện phần mềm Havij khai thác được tên v mật khẩu người d ng
Như vậy, với trang website được viết bằng ngôn ngữ PHP phổ biến hiện nay
có kết nối cơ sở dữ liệu SQL, ta có thể dùng phần mềm miễn phí quét lỗ hổng với thời gian khoảng 120 s có thể tìm thấy được tên đăng nhập và mật khẩu để có thể Login vào hệ thống một cách dễ dàng
(b) Phần mềm Acunetix quét các lỗ hổng bảo mật web được viết bằng PHP
Acunetix WVS (Web Vulnerability Scanner) là chương trình tự động kiểm tra các ứng dụng Web để tìm kiếm các lỗ hổng bảo mật như SQL Injection, hay Cross-Site Scripting,… và tìm kiếm những chính sách đối với mật khẩu đăng nhập cũng như các phương thức xác thực vào WebSite
Trang 37Hình 2.5: Giao diện phần mềm WVS khai thác lỗ hổng bảo mật website
(c ) File code chương trình Python SQLmap dùng để phát hiện các trang website bị
lỗi cơ sở dữ liệu SQL, minh họa theo hình dưới sau:
Hình 2.6: Giao diện khởi động file sqlmap.py
Có thể tham khảo một số lệnh thực hiện để khai thác cơ sở dữ liệu của web sau:
-Lệnh 1: python sqlmap.py –u
“http://kiemlamkiengiang.gov.vn/news.php?id=338” "-u" theo sau là đường dẫn
lệnh này để kiểm tra url trên có dính lỗi sql không
-Lệnh 2: python sqlmap.py –u
“http://kiemlamkiengiang.gov.vn/news.php?id=338” dbs ; Khi đã xác định được
url trên bị lỗi, sử dụng flag " dbs" để liệt kê các database
-Lệnh 3: python sqlmap.py –u
Trang 38“http://kiemlamkiengiang.gov.vn/news.php?id=338” tables–D kiemlamk_db
Như vậy, khi sử dụng đơn giản chỉ với 3 câu lệnh trên, đã có thể truy cập vào
cơ sở dữ liệu của hệ thống Website
2.2.3 Nhận xét
Giải pháp sử dụng các công cụ phần mềm rà quét phát hiện lỗ hổng bảo mật Website khá đơn giản và có thể tiến hành ngay từ giai đoạn thiết kế và cài đặt hệ thống website Giải pháp này có thể hỗ trợ cho cả các nhà phát triển, cung cấp dịch
vụ Web lẫn các tổ chức, cá nhân sử dụng hệ thống Website
Tuy nhiên, lỗ hổng bảo mật Website ngày càng khó phát hiện, trong khi đó thủ đọan của tin tặc ngày càng tinh vi và nguy hiểm Do đó, việc sử dụng các phần mềm dò quét thông thường có thể không mang lại hiệu quả như mong muốn, đặc biệt đối với các website lớn, phức tạp Vì vậy, cần phải có thêm các giải pháp hỗ trợ khác
2.3 Giải pháp sử dụng hệ thống phát hiện xâm nhập
2.3.1 Giới thiệu hệ thống phát hiện xâm nhập
Hệ thống phát hiện xâm nhập (Intrusion Detection System – IDS) là một hệ thống phần cứng hoặc ứng dụng phần mềm theo dõi, giám sát và thu thập thông tin
từ các hoạt động ra vào của mạng Sau đó hệ thống sẽ phân tích để tìm dấu hiệu của
sự xâm nhập hoặc tấn công hệ thống trái phép và cảnh báo đến người quản trị hệ thống
Nói cách khác, IDS là hệ thống phát hiện các dấu hiệu có nguy cơ làm tổn hại đến tính đúng đắn, tính toàn vẹn, tính bảo mật của một hệ thống mạng hoặc máy tính, làm cơ sở để đảm bảo cho an ninh hệ thống Chúng có thể xác định những hoạt động xâm nhập bằng việc kiểm tra sự đi lại của mạng, những host log, system call,
và những khu vực khác khi phát hiện ra những dấu hiệu xâm nhập Do đó, IDS có khả năng ứng dụng phát hiện lỗ hổng bảo mật Website
Trang 39Phân loại IDS:
Dựa trên phạm vi giám sát, IDS được chia thành 2 loại:
(1) Host-based IDS (HIDS): Là những IDS giám sát hoạt động của từng máy tính riêng biệt Do vậy, nguồn thông tin chủ yếu của HIDS ngoài lưu lượng dữ liệu đến và đi từ máy chủ còn có hệ thống dữ liệu nhật ký hệ thống (system log) và kiểm tra hệ thống (system audit) Nhiệm vụ chính của HIDS là giám sát sự thay đổi trên
hệ thống
Hình 2.7 dưới đây mô tả mô hình hệ thống HIDS
Trang 40Hình 2.7: Mô hình hệ thống HIDS [13]
(2) Network-based IDS (NIDS): Là những IDS giám sát trên toàn bộ mạng Nguồn thông tin chủ yếu của NIDS là các gói dữ liệu đang lưu thông trên mạng NIDS thường được lắp đặt tại ngõ vào của mạng, có thể đứng trước hoặc sau tường lửa
Hình 2.8 dưới đây mô tả mô hình hệ thống NIDS
Hình 2.8: Mô hình hệ thống NIDS [13]
Dựa trên kỹ thuật thực hiện, IDS cũng được chia thành 2 loại: