Các hình thức tấn công rất đa dạng như thay đổi nội dung của trang web, tấn công từ chối dịch vụ khiến cho việc truy cập trang web không thể thực hiện hoặc rất khó thực hiện, chiếm quyền
Trang 1i
BỘ GIÁO DỤC VÀ ĐÀO TẠO VIỆN ĐẠI HỌC MỞ HÀ NỘI
LUẬN VĂN THẠC SỸ
CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN
MỘT SỐ PHƯƠNG PHÁP PHÁT HIỆN TẤN CÔNG SQL INJECTION DỰA TRÊN KỸ THUẬT HỌC MÁY
Trang 2ii
BỘ GIÁO DỤC VÀ ĐÀO TẠO
VIỆN ĐẠI HỌC MỞ HÀ NỘI
Trang 3iii
LỜI CAM ĐOAN
Tôi xin cam đoan mọi kết quả của đề tài: “Một số phương pháp phát hiện tấn công SQL Injection dựa trên kỹ thuật học máy” là công trình nghiên cứu của cá nhân
tôi và chưa từng được công bố trong bất cứ công trình khoa học nào khác cho tới thời điểm này
Hà Nội, Ngày tháng năm 2017
Tác giả luận văn
Nguyễn Ngọc Thanh
Trang 4iv
LỜI CẢM ƠN
Luận văn thạc sĩ kỹ thuật chuyên ngành công nghệ thông tin với đề tài “Một số phương pháp phát hiện tấn công SQL Injection dựa trên kỹ thuật học máy” là kết quả của quá trình cố gắng không ngừng của bản thân và được sự giúp đỡ, động viên khích
lệ của các thầy, bạn bè đồng nghiệp và người thân Qua trang viết này tác giả xin gửi lời cảm ơn tới những người đã giúp đỡ tôi trong thời gian học tập - nghiên cứu khoa học vừa qua
Tôi xin tỏ lòng kính trọng và biết ơn sâu sắc đối với thầy giáo PGS.TS Đoàn Văn Ban đã trực tiếp tận tình hướng dẫn cũng như cung cấp tài liệu thông tin khoa học cần thiết cho luận văn này
Xin chân thành cảm ơn Lãnh đạo trường Viện Đại học Mở Hà Nội đã tạo điều kiện cho tôi hoàn thành tốt công việc nghiên cứu khoa học của mình
Cuối cùng tôi xin chân thành cảm ơn đồng nghiệp, đơn vị công tác đã giúp đỡ tôi trong quá trình học tập và thực hiện Luận văn
TÁC GIẢ
Nguyễn Ngọc Thanh
Trang 5v
MỤC LỤC
MỤC LỤC v
DANH SÁCH CÁC BẢNG BIỂU viii
DANH MỤC CÁC HÌNH VẼ ix
MỞ ĐẦU 2
CHƯƠNG 1: TỔNG QUAN VỀ TẤN CÔNG SQL INJECTION VÀ KỸ THUẬT KHAI PHÁ DỮ LIỆU 5
1.1 Các tấn công cơ sở dữ liệu 5
1.1.1 Lạm dụng quyền vượt mức (Excessive privileges) 5
1.1.2 Lạm dụng quyền hợp pháp (Privilege abuse) 6
1.1.3 Nâng cấp quyền bất hợp pháp (Unauthorized Privilege elevation) 6
1.1.4 Lợi dụng các điểm yếu nền tảng (Platform vulnerabilities) 6
1.1.5 Tấn công SQL Injection 7
1.1.6 Lợi dụng dấu vết kiểm toán yếu (Weak audit) 8
1.1.7 Tấn công từ chối dịch vụ (DoS) 8
1.1.8 Lợi dụng các điểm yếu trong giao thức giao tiếp cơ sở dữ liệu (Database protocol vulnerabilities) 9
1.1.9 Lợi dụng sự xác thực yếu (Weak authentication) 9
1.1.10 Lợi dụng sự sơ hở của dữ liệu dự phòng (Exposure of backup data) 10
1.2 Các tấn công SQL Injection 10
1.2.1 Khái niệm tấn công SQL Injection 10
1.2.2 Các dạng tấn công bằng SQL Injection 12
1.2.3 Phòng chống SQL Injection 19
1.3 Tổng quan về kỹ thuật khai phá dữ liệu và kỹ thuật học máy 22
1.3.1 Quá trình khai phá dữ liệu 23
1.3.2 Các bài toàn thông dụng trong khai phá dữ liệu 25
1.3.3 Sự tương đồng và khác biệt giữa khai phá dữ liệu và học máy 25
1.3.4 Các ứng dụng của khai phá dữ liệu 26
1.3.5 Ứng dụng lý thuyết Bayes trong phân lớp 27
Trang 6vi
1.4 Kết luận chương 30
CHƯƠNG 2: MỘT SỐ PHƯƠNG PHÁP PHÁT HIỆN TẤN CÔNG SQL INJECTION DỰA TRÊN HỌC MÁY 31
2.1 Phương pháp phát hiện dựa trên phân lớp 31
2.2 Phương pháp phát hiện dựa trên luật kết hợp 35
2.3 So sánh các phương pháp phát hiện tấn công 45
2.4 Kết luận chương 46
CHƯƠNG 3: XÂY DỰNG MÔ HÌNH BÀI TOÁN THỰC NGHIỆM SỬ DỤNG KỸ THUẬT HỌC MÁY ĐỂ PHÁT HIỆN TẤN CÔNG SQL INJECTION 47
3.1 Mục đích của thực nghiệm 47
3.2 Các bước thực hiện 47
3.3 Công cụ sử dụng 47
3.4 Mô hình hệ thống mô phỏng và thu thập dữ liệu 48
3.4.1 Mô hình hệ thống mô phỏng 48
3.4.2 Xây dựng ứng dụng web 48
3.4.3 Thu thập dữ liệu thực nghiệm 49
3.5 Sử dụng chương trình tiền xử lý 49
3.6 Xây dựng thực nghiệm phát hiện tấn công dựa trên khai phá dữ liệu 51
3.6.1 Xây dựng bộ phân lớp 51
3.6.2 Kết quả bộ phân lớp 52
3.6.3 Phân tích và đánh giá kết quả 55
3.4 Kết luận chương 57
KẾT LUẬN 58
DANH MỤC TÀI LIỆU THAM KHẢO 60
Trang 7vii
DANH MỤC CÁC TỪ VIẾT TẮT STT Từ viết tắt Tiếng Anh Tiếng Việt
1 SQL Structured Query Language Ngôn ngữ truy vấn mang tính cấu trúc
2 IPS Intrusion Prevention System Hệ thống ngăn chặn tấn công
3 DoS Denial of Service Tấn công từ chối dịch vụ
Trang 8viii
DANH SÁCH CÁC BẢNG BIỂU
Bảng 2.1 - Ví dụ xây dựng các bộ ba 33
Bảng 2.2 - Ví dụ về các giao dịch cho thuật toán khai phá chuỗi 41
Bảng 2.3 - Lược đồ cơ sở dữ liệu ngân hàng 42
Bảng 2.4 - Bảng trọng số cho các thuộc tính được sử dụng trong cơ sở dữ liệu ngân hàng 42
Bảng 2.5 - Các chuỗi khai phá được với giá trị độ hỗ trợ tối thiểu là 25% 42
Bảng 2.6 - Các chuỗi đọc và các chuỗi ghi 43
Bảng 2.7 - Các luật phụ thuộc đọc và ghi 44
Bảng 2.8 - So sánh các kỹ thuật phát hiện tấn công 45
Bảng 3.1 - Thống kê kết quả của mô hình huấn luyện c-triplet 53
Bảng 3.2 - Thống kê kết quả của mô hình huấn luyện m-triplet 53
Bảng 3.3 - Thống kê kết quả của mô hình huấn luyện f-triplet 54
Bảng 3.4 - Thống kê False negatives/positive 56
Bảng 3.5 - Thống kê Recall/Precision 57
Trang 9ix
DANH MỤC CÁC HÌNH VẼ
Hình 2.1 - Quá trình phát hiện tấn công 34 Hình 2.2 - Các thành phần trong kỹ thuật phát hiện tấn công cơ sở dữ liệu dựa trên luật kết hợp 37 Hình 3.1 - Mô hình hệ thống mô phỏng tấn công ứng dụng web và thu thập dữ liệu 48 Hình 3.2 - Định dạng dữ liệu đã được tiền xử lý theo định dạng *.arff của Weka 51 Hình 3.3 - Xây dựng mô hình phát hiện tấn công với Weka sử dụng thuật toán Naive Bayes 52 Hình 3.4 - Thống kê Precision và Recall trong trường hợp 1 56 Hình 3.5 - Thống kê Precision và Recall trong trường hợp 2 56
Trang 10Sự phát triển vượt bậc của công nghệ web đã đem lại rất nhiều thuận lợi cho người
sử dụng cũng như các nhà phát triển.Nhưng cùng với sự phát triển này thì các ứng dụng web cũng trở thành mục tiêu ưa thích của những kẻ tấn công Các hình thức tấn công rất
đa dạng như thay đổi nội dung của trang web, tấn công từ chối dịch vụ khiến cho việc truy cập trang web không thể thực hiện hoặc rất khó thực hiện, chiếm quyền điều khiển trang web… Mục tiêu của những kể tấn công cũng rất khác nhau, có thể tấn công xuất phát từ thiện chí, nhằm tìm ra những điểm yếu và thông báo cho nhà quản trị hệ thống, nghiêm trọng hơn là tấn công để phục vụ cho các mục đích xấu như tống tiền, ăn cắp dữ liệu, phá huỷ dữ liệu… Trong các hình thức tấn công thì tấn công bằng cách chèn mã lệnh (injection) là rất phổ biến.Tấn công website bằng kỹ thuật SQL Injecion từ lâu đã là mối quan tâm bảo mật hàng đầu của các nhà phát triển web và chủ sở hữu của website Giờ đây, các cuộc tấn công này ngày càng trở nên tinh vi và khó phát hiện, ngăn chặn hơn
SQL Injection là kiểu tấn công có mục tiêu rất cụ thể và thường là mục tiêu đơn lẻ cho mỗi một vụ tấn công Chính vì thế mà những vụ tấn công như thế này thường không gây được sự chú ý rộng rãi như virus hay sâu máy tính.Âm thầm như thế nhưng thiệt hại của những vụ tấn công này lại rất lớn Nếu như một máy chủ cơ sở dữ liệu bị tin tặc chiếm quyền kiểm soát thì sẽ có một khối lượng rất lớn thông tin cá nhân, thông tin tài chính của người dùng sẽ rơi vào tay chúng Và nếu thành công thì có thể nói nguồn thông tin mà tin tặc thu được còn nhiều hơn rất nhiều so với tấn công phishing Tin tặc không
Trang 112 Mục đích nghiên cứu
Nghiên cứu ứng dụng của kỹ thuật học máy trong phát hiện tấn công SQL Injection thông qua các dữ liệu được trích xuất từ câu lệnh SQL, xây dựng và đánh giá thử nghiệm
3 Đối tượng và phạm vi nghiên cứu
Các tấn công vào cơ sở dữ liệu, tấn công SQL Injection, kỹ thuật học máy giúp phát hiện các tấn công vào cơ sở dữ liệu, tấn công SQL Injection
4 Phương pháp nghiên cứu
- Phân tích, tổng hợp tài liệu trong nước và nước ngoài về các tấn công vào cơ sở
dữ liệu, tấn công SQL Injection, kỹ thuật học máy;
- Xây dựng tập dữ liệu cho mô hình phát hiện tấn công vào cơ sở dữ liệu;
- Xây dựng và đánh giá mô hình thử nghiệm
5 Bố cục của luận văn
Mở đầu:
Chương 1: Tổng quan về tấn công SQL Injection và kỹ thuật khai phá dữ liệu
Trang 135
CHƯƠNG 1 TỔNG QUAN VỀ TẤN CÔNG SQL INJECTION VÀ KỸ
THUẬT KHAI PHÁ DỮ LIỆU 1.1 Các tấn công cơ sở dữ liệu
Sự phát triển lớn mạnh của công nghệ thông tin trong những năm qua đã dẫn đến việc sử dụng rộng rãi các hệ thống máy tính trong hầu hết các tổ chức cá nhân và công cộng, chẳng hạn như: ngân hàng, trường học, tổ chức dịch vụ và sản xuất, bệnh viện, thư viện, trong các cơ quan nhà nước,… Cùng với sự phát triển đó, các phương pháp nhằm đảm bảo an toàn thông tin cũng ngày càng phải được hoàn thiện, nâng cao
Một trong những vấn đề nóng trong công tác đảm bảo an toàn thông tin hiện nay là bảo đảm an toàn cho những cơ sở dữ liệu phục vụ việc khai thác và sử dụng các ứng dụng công nghệ thông tin đang ngày càng phát triển rộng rãi
Do lưu giữ những thông tin quan trọng nên cơ sở dữ liệu luôn nằm trong tầm ngắm của nhiều tin tặc Trong phần này sẽ giới thiệu sơ lược về một số dạng tấn công phổ biến ảnh hưởng đến an toàn cơ sở dữ liệu cũng như là cách thức để phòng chống lại các kiểu tấn công này [1]
1.1.1 Lạm dụng quyền vượt mức (Excessive privileges)
Khi người dùng (hay ứng dụng) được gán các đặc quyền truy nhập cơ sở dữ liệu vượt quá các yêu cầu trong chức năng công việc của họ, thì những đặc quyền này
có thể bị lạm dụng cho các mục đích xấu Ví dụ, một người phụ trách cơ sở dữ liệu của trường đại học với công việc là thay đổi các thông tin liên lạc của sinh viên, người này có thể lạm dụng quyền của mình với quyền cập nhật cơ sở dữ liệu để sửa đổi điểm của sinh viên (trái phép)
Một lý do đơn giản là những quản trị viên cơ sở dữ liệu vì bận rộn với công việc quản trị của mình nên không có thời gian để định nghĩa và cập nhật cơ chế kiểm soát quyền truy nhập mịn cho mỗi người dùng Kết quả là một số lượng lớn người dùng được gán các đặc quyền truy nhập mặc định vượt xa so với yêu cầu công việc của họ
Trang 146
Giải pháp cho hiểm họa cơ sở dữ liệu này, đó là sử dụng cơ chế kiểm soát truy nhập mức truy vấn (Query-level) Cơ chế này sẽ hạn chế các đặc quyền cơ sở dữ liệu bằng những toán tử SQL (SELECT, UPDATE,…) và dữ liệu được yêu cầu một cách tối thiểu
1.1.2 Lạm dụng quyền hợp pháp (Privilege abuse)
Người dùng lạm dụng các đặc quyền hợp pháp của mình để thực hiện những mục đích không hợp pháp
Giải pháp cho hiểm họa này chính là kiểm soát truy nhập cơ sở dữ liệu cần áp dụng cho không chỉ các truy vấn cụ thể như được mô tả ở trên, mà còn áp dụng cho bối cảnh xung quanh truy nhập cơ sở dữ liệu Bằng cách bắt buộc tuân thủ chính sách cho các ứng dụng khách, thời gian trong ngày, vị trí,… thì có thể nhận dạng được những người dùng đang sử dụng các quyền truy nhập hợp pháp của mình với hành động mờ ám, đáng nghi
1.1.3 Nâng cấp quyền bất hợp pháp (Unauthorized Privilege elevation)
Kẻ tấn công có thể dựa trên các điểm yếu trong phần mềm cơ sở dữ liệu để biến các đặc quyền truy nhập của một người dùng bình thường thành quyền truy nhập của một người quản trị.Những điểm yếu này có thể tìm thấy trong các thủ tục được lưu, trong các hàm được xây dựng bên trong, trong việc thực thi giao thức, thậm chí trong các câu lệnh SQL
Hiểm họa này có thể bị ngăn chặn bằng việc kết hợp các hệ thống ngăn chặn tấn công (IPS) và kiểm soát truy nhập mức truy vấn.IPS sẽ kiểm tra lưu lượng cơ sở dữ liệu
để nhận ra các mẫu phù hợp với những điểm yếu đã biết.Chẳng hạn, với một hàm có điểm yếu đã biết, thì một IPS có thể chặn tất cả các truy nhập tới hàm đó, hoặc (nếu có thể) chỉ chặn những truy nhập (của các tấn công) tới hàm này
1.1.4 Lợi dụng các điểm yếu nền tảng (Platform vulnerabilities)
Các điểm yếu trong hệ điều hành bên dưới (Windows 2000, UNIX, …) và các điểm yếu trong các dịch vụ được cài đặt trên một máy chủ cơ sở dữ liệu có thể dẫn tới
Trang 15mô tả ở trên, IPS kiểm tra lưu lượng cơ sở dữ liệu và xác định được những tấn công nhắm vào các điểm yếu đã biết
1.1.5 Tấn công SQL Injection
Trong một tấn công SQL Injection, kẻ tấn công thường chèn ( hay “tiêm”) các mệnh đề cơ sở dữ liệu bất hợp pháp vào một nguồn dữ liệu SQL dễ bị tổn thương Thường nguồn dữ liệu đích bao gồm các thủ tục được lưu và các tham số đầu vào của ứng dụng Web.Các nguồn này bị tiêm vào những mệnh đề bất hợp pháp, sau đó chúng được truyền tới cơ sở dữ liệu và được xử lý tại đây Với SQL Injection, kẻ tấn công có thể đạt được truy nhập không giới hạn tới toàn bộ cơ sở dữ liệu
Có thể sử dụng kết hợp ba kỹ thuật để chống SQL Injection một cách hiệu quả là: IPS, kiểm soát truy nhập mức truy vấn và sự tương quan sự kiện IPS có thể xác định các thủ tục được lưu chứa điểm yếu hoặc những chuỗi SQL injection Các nhà quản trị an toàn nếu chỉ tin cậy vào một mình IPS sẽ luôn nhận được hàng loạt các cảnh báo là SQL injection “có thể đang tồn tại” Bằng cách tương quan một dấu hiệu của SQL injection với một tấn công vào kiểm soát truy nhập mức truy vấn thì có thể xác định được tấn công với độ chính xác cao [9,10,11,12]
Trang 168
1.1.6 Lợi dụng dấu vết kiểm toán yếu (Weak audit)
Đối với bất kỳ hoạt động nào liên quan đến cơ sở dữ liệu, cần thiết phải ghi lại một cách tự động tất cả các giao dịch cơ sở dữ liệu nhạy cảm và/hoặc các giao dịch bất thường.Khi chính sách kiểm toán cơ sở dữ liệu yếu sẽ dẫn đến những rủi ro nghiêm trọng cho tổ chức với nhiều mức độ khác nhau
Các cơ chế kiểm toán là tuyến hàng rào bảo vệ cơ sở dữ liệu cuối cùng.Nếu kẻ tấn công có thể phá vỡ các hàng rào khác thì cơ chế kiểm toán dữ liệu vẫn có thể xác định sự tồn tại của một tấn công sau những hành động của kẻ tấn công trước đó Những vết kiểm toán thu được tiếp tục có thể dùng để xác định người dùng nào vừa thực hiện các hành động này, đồng thời qua vết kiểm toán có thể thực hiện phục hồi lại hệ thống
Cơ chế kiểm toán yếu đồng nghĩa với việc hệ thống không thể ghi lại đầy đủ những hành động của người dùng, dẫn đến việc không thể phát hiện và ngăn chặn kịp thời những hành động tấn công của người dùng hoặc một nhóm người dùng Do vậy, kiểm toán là cơ chế quan trọng mà mọi hệ thống cần có và cần thiết phải có cơ chế kiểm toán mạnh đảm bảo an toàn thông tin hay an toàn cơ sở dữ liệu cho mọi hệ thống
1.1.7 Tấn công từ chối dịch vụ (DoS)
Tấn công từ chối dịch vụ là một loại tấn công trong đó các truy nhập của người dùng hợp pháp vào các ứng dụng mạng hay vào dữ liệu sẽ bị từ chối Các điều kiện từ chối dịch vụ có thể được tạo ra qua nhiều kỹ thuật (nhiều trong số đó liên quan đến các điểm yếu nền tảng).Ví dụ, tấn công DoS có thể dựa trên điểm yếu nền tảng cơ sở dữ liệu
để phá hủy một máy chủ Ngoài ra còn có một số kỹ thuật DoS phổ biến khác như: sửa đổi dữ liệu, làm lụt mạng (network flooding), và làm quá tải tài nguyên máy chủ (bộ nhớ, CPU,…) Trong đó, làm quá tải tài nguyên là một kỹ thuật phổ biến trong môi trường cơ
sở dữ liệu
Để ngăn chặn tấn công này, cần yêu cầu bảo vệ ở nhiều mức khác nhau, như: mức mạng, mức ứng dụng và mức cơ sở dữ liệu Trong đó, một số kỹ thuật bảo vệ mức cơ sở
Trang 17dữ liệu liên quan đến giao thức đã được xác định trong Oracle gần đây Sâu SQL Slammer2 cũng khai thác điểm yếu trong giao thức của Microsoft SQL Server để gây ra tấn công từ chối dịch vụ.Ngoài ra, các hoạt động của giao thức không hề được lưu lại trong các vết kiểm toán cho nên càng gây khó khăn cho việc phát hiện lỗi và phát hiện các tấn công
Có thể giải quyết tấn công này bằng công nghệ phê duyệt giao thức.Công nghệ này sẽ phân tích lưu lượng cơ sở dữ liệu cơ bản và so sánh nó với lưu lượng thông thường.Trong trường hợp lưu lượng hiện tại không phù hợp với lưu lượng cơ sở dữ liệu như mong đợi thì hệ thống sẽ phát ra cảnh báo, thậm chí là chặn luôn hành động đang thực hiện
1.1.9 Lợi dụng sự xác thực yếu (Weak authentication)
Trong một hệ thống chứa lược đồ xác thực yếu, kẻ tấn công dễ dàng có thể chiếm lấy định danh của những người dùng cơ sở dữ liệu hợp pháp bằng cách lấy cắp thẻ đăng nhập của họ.Kẻ tấn công có thể sử dụng nhiều chiến lược khác nhau để lấy được thẻ đăng nhập của người dùng hợp pháp
Để phòng chống loại tấn công này, chúng ta cần thực hiện một số cơ chế:
- Xác thực mạnh: Để ngăn chặn kẻ tấn công lợi dụng xác thực yếu, hệ thống cần
sử dụng các chính sách và công nghệ xác thực mạnh nhất Nên sử dụng cơ chế xác thực hai nhân tố (như: token, chứng chỉ, sinh trắc,…) Tuy nhiên, các cơ chế xác thực hai nhân
tố thường có chi phí đắt và khó sử dụng hơn nên trong thực tế chúng được sử dụng không
Trang 1810
nhiều Với trường hợp này, cần sử dụng chính sách xác thực mạnh cho username/password (như: độ dài tối thiểu, đa dạng ký tự, khó đoán,…)
- Tích hợp danh bạ: Để các cơ chế xác thực mạnh được sử dụng rộng rãi và dễ
dàng, nên tích hợp chúng với cơ sở danh bạ của doanh nghiệp Cơ sở danh bạ cho phép một người dùng có thể sử dụng một tập thẻ đăng nhập cho nhiều cơ cở dữ liệu và ứng dụng.Từ đó làm cho hệ thống xác thực hai nhân tố được sử dụng hiệu quả hơn và người dùng có thể dễ dàng ghi nhớ việc cần phải thay đổi mật khẩu thường xuyên
1.1.10 Lợi dụng sự sơ hở của dữ liệu dự phòng (Exposure of backup data)
Chúng ta thấy rằng, trong công tác sao lưu, dự phòng cơ sở dữ liệu, người thực hiện thường lơ là không bảo vệ các phương tiện lưu trữ cơ sở dữ liệu dự phòng một cách đầy đủ.Kết quả là, có rất nhiều băng đĩa sao lưu cơ sở dữ liệu và các đĩa cứng của nhiều
1.2.1 Khái niệm tấn công SQL Injection
SQL injection là một kỹ thuật cho phép những kẻ tấn công lợi dụng lỗ hổng của việc kiểm tra dữ liệu đầu vào trong các ứng dụng web và các thông báo lỗi của hệ quản trị cơ sở dữ liệu trả về để tiêm vào (inject) và thi hành các câu lệnh SQL bất hợp pháp SQL injection có thể cho phép những kẻ tấn công thực hiện các thao tác, delete, insert, update, v.v trên cơ sở dữ liệu của ứng dụng, thậm chí là server mà ứng dụng đó đang chạy SQL injection thường được biết đến như là một vật trung gian tấn công trên các
Trang 1911
ứng dụng web có dữ liệu được quản lý bằng các hệ quản trị cơ sở dữ liệu như Sql Server, MySql, Oracle, DB2, Sysbase, … [1,9,10,11,12]
Các mối đe doạ chính từ tấn công SQL Injection:
- Mạo danh (Snoofing identity): Những kẻ tấn công sẽ mạo danh một email hoặc
một trang web của một tổ chức để đánh lừa người dùng
- Thay đổi giá (Changing prices): Một trong số những vấn đề của SQL Injection là
nó có thể thay đổi dữ liệu Ở đây, những kẻ tấn công sẽ thay đổi giá cả một trang mua sắm trực tuyến để có thể mua sản phẩm đó với giá rẻ hơn
- Xáo trộn các bản ghi cơ sở dữ liệu (Tamper with database records): Cơ sở dữ
liệu chính sẽ hoàn toàn bị hư hại; thậm chí còn có khả năng đã bị thay thế hoàn toàn hoặc thậm chí bị xóa hết dữ liệu
- Leo thang đặc quyền (Escalation of privileges): Một khi hệ thống bị tấn công, kẻ
tấn công sẽ tìm kiếm đặc quyền truy cập cao nhất của các thành viên quản trị để có thể chiếm quyền truy cập vào hệ thống cũng như vào mạng nội bộ
- Từ chối các dịch vụ từ máy chủ (Denial-of-service on the server): Từ chối dịch
vụ từ máy chủ là một dạng tấn công mà người dùng không thể truy cập vào hệ thống Ngày càng nhiều yêu cầu được gửi đến máy chủ mà không thể xử lý nó.Điều này dẫn đến tạm ngưng dịch vụ của máy chủ
- Lộ tất cả thông tin dữ liệu của hệ thống (Complete disclosure of all the data on the system): Một khi một hệ thống bị tấn công các dữ liệu quan trọng và bí mật như: số thẻ tín dụng, chi tiết nhân viên về hồ sơ và tài chính,…v.v sẽ bị tiết lộ
- Phá hủy dữ liệu (Destruction of data): Những kẻ tấn công sau khi chiếm hoàn toàn
quyền hệ thống sẽ phá hủy hoàn toàn dữ liệu, kết quả làm tổn thất rất lớn cho công ty
- Tránh các giao dịch quan trọng của hệ thống (Voiding system's critical transaction): Những kẻ tấn công có thể vận hành hệ thống tránh tất cả các giao dịch
Trang 2012
- Thay đổi hồ sơ (Modifying the records): Kẻ tấn công có thể sửa đổi các dữ liệu
trong cơ sở dữ liệu của công ty, gây ra trở ngại lớn cho hệ thống quản lý cơ sở dữ liệu công ty
1.2.2 Các dạng tấn công bằng SQL Injection
a) Tautology
Các cuộc tấn công này hoạt động bằng cách thêm vào mệnh đề WHERE của câu lệnh truy vấn một tuyên bố luôn đúng Với dạng tấn công này kẻ tấn công có thể dễ dàng vượt qua các trang đăng nập nhờ vào lỗi khi dùng các câu lệnh SQL thao tác trên cơ sở
dữ liệu của ứng dụng web
Thông thường để cho phép người dùng truy cập vào các trang web được bảo mật, hệ thống thường xây dựng trang đăng nhập để yêu cầu người dùng nhập thông tin về tên đăng nhập và mật khẩu Sau khi người dùng nhập thông tin vào, hệ thống sẽ kiểm tra tên đăng nhập và mật khẩu có hợp lệ hay không để quyết định cho phép hay từ chối thực hiện tiếp
Xét đoạn code php sau:
select username,pass from users where username='' or ''='' and password='' or ''=''
Do mệnh đề luôn đúng nên dễ dàng đăng nhập tài khoản
b) Illegal/Logically Incorrect Query
Trong loại tấn công này, những kẻ tấn công sẽ cố gắng thu thập đầy đủ các thông tin về cấu trúc back-end của cơ sở dữ liệu một trang web Những kẻ tấn công sẽ gửi một
Trang 2113
câu lệnh truy vấn SQL không hợp lệ hoặc không đúng logic đến cơ sở dữ liệu của trang web, một số máy chủ sẽ trả về những thông báo lỗi mặc định và những kẻ tấn công có thể lợi dụng các điểm yếu này Từ việc khai thác các thông báo lỗi mặc định những kẻ tấn công có thể khai thác được số bảng, số cột, của cơ sở dữ liệu
Có nhiều cách để gửi một lệnh truy vấn không hợp lệ hay bất hợp pháp như: thêm
kí tự (‘) vào cuối câu lệnh truy vấn, hay sử dụng toán tử AND để thực hiện một câu lệnh sai logic, sử dụng order by hay mệnh đề having, để máy chủ trả về một thông báo lỗi
c) Union Query
Cuộc tấn công dạng này được thực hiện bằng cách thêm vào một tham số hình thức có dạng:
UNION SELECT <câu lệnh truy vấn>’
Lúc này, ngoài câu truy vấn đầu không thành công, chương trình sẽ thực hiện thêm lệnh tiếp theo sau từ khóa UNION
Những kẻ tấn công có thể xóa toàn bộ cơ sở dữ liệu bằng cách chèn vào các đoạn lệnh nguy hiểm như DROP TABLE
Ví dụ như :’DROP TABLE_AUTHORS-’
Để biết được ứng dụng web bị lỗi dạng này hãy nhập vào chuỗi (*) như sau:
‘UNION SELECT ALL SELECT OtherField FROM OtherTable WHERE’’=’ (*) Nếu hệ thống báo lỗi về cú pháp dạng : Invalid object name” OtherTable”; ta có thể biết chắc là hệ thống đã thực hiện câu SELECT sau từ khóa UNION, vì như vậy mới
có thể trả về lỗi mà ta đã cố tình tạo ra trong câu lệnh SELECT
Trong SQL Server, có hai đối tượng là sysobjects và syscolumns cho phép liệt kê tất các tên bảng và cột có trong hệ thống Để có thể biết được tên của các bảng dữ liệu mà thực hiện các thao tác phá hoại khi ứng dụng web bị lỗi SQL injection Ta chỉ cần chỉnh lại câu lệnh SELECT:
Trang 22SELECT * FROM tbl_products
WHERE product_name like '%' + keyword + '%'
với keyword là từ khóa người dùng cung cấp từ form
Để tìm thông tin về máy chủ CSDL:
Sử dụng lệnh UNION [ALL] SELECT để tìm số cột trong lệnh truy vấnhiện tại:
gõ chuỗi tìm kiếm:
samsung%' union all select '1', '2', '3', '4' –
Thay đổi (tăng, giảm số trường) cho đến khi thấy hiển thị giá trị 1, 2, đã tìm đúng số cột trong lệnh truy vấn hiện tại
Sử dụng ORDER BY <column_number> để tìm số trường
samsung%' ORDER BY 5 ASC | DESC
Tăng giảm số thứ tự trường để tìm số trường Khi kết quả hiển thị vàđược sắp xếp đúng số trường tìm đã đúng
Sử dụng @@version hoặc version() tùy theo phiên bản máy chủCSDL đưa vào union select để lấy thông tin về máy chủ CSDL:
samsung%' union select @@version, '2' –
Lấy thông tin về các bảng trong CSDL:
Nhập chuỗi tìm kiếm:
samsung'union select name, object_id from sys.objects where type='u' –
Trang 23samsung' union select username+'-'+password, 0
from tbl_administrators – lấy danh sách tên truy nhập và mật khẩu của tất cả các admins
Kẻ tấn công có thể đánh cắp gần như mọi thông tin trong CSDL
d) Piggy - backed Queries
Mục đích: Lấy dữ liệu, thêm hoặc chỉnh sửa dữ liệu, tấn công từ chối dịch vụ, thực thi câu lệnh từ xa
Cách tấn công: ngoài việc thực thi câu truy vấn ban đầu, Kẻ tấn công sẽ chèn thêm một câu truy vấn mới vào song song với câu truy vấn đầu Câu truy vấn ban đầu tiên sẽ thực thi bình thường, bên cạnh đó câu truy vấn sau vẫn được thực thi, dùng trong các hệ quản trị CSDL cho phép thực thi nhiều câu truy vấn trong 1 lần gọi thực thi
Ví dụ: pass: “’; drop table users ”
=> SELECT accounts FROM users WHERE login=’abc’ AND pass=’’;
drop table users ‘ AND pin=123
Trang 2416
e) Stored Procedure
Việc tấn công bằng stored-procedures sẽ gây tác hại rất lớn nếu ứng dụng được thực thi với quyền quản trị hệ thống ‘sa’ Ví dụ, nếu ta thay đoạn mã tiêm vào dạng: ‘ ; EXEC xp_cmdshell ‘cmd.exe dir C: ‘ Lúc này hệ thống sẽ thực hiện lệnh liệt kê thư mục trên ổ đĩa C:\ cài đặt server Việc phá hoại kiểu nào tuỳ thuộc vào câu lệnh đằng sau cmd.exe
Kẻ tấn công có thể chèn mã để chạy các thủ tục hệ thống cho phép can thiệp vào
hệ quản trị CSDL và hệ điều hành Ví dụ, MS SQL cung cấp các thủ tục hệ mở rộng:
sp_send_dbmail: cho phép gửi email từ CSDL
xp_cmdshell: cho phép chạy các lệnh và chươngtrình cài đặt trên HĐH windows Ví dụ:
• EXEC xp_cmdshell 'dir *.exe'
• EXEC xp_cmdshell 'shutdown /s /t 00' tắt máy chủ chạy CSDL
• EXEC xp_cmdshell 'net stop W3SVC' dừng hoạt động máy chủ web
• EXEC xp_cmdshell 'net stop MSSQLSERVER' dừng hoạt động máy chủ CSDL Cách phòng tránh dạng tấn công này: Nếu ứng dụng sử dụng quyền dbo (quyền của người sở hữu cơ sở dữ liệu - owner) khi thao tác dữ liệu, nó có thể xóa toàn bộ các bảng dữ liệu, tạo các bảng dữ liệu mới, … Nếu ứng dụng sử dụng quyền sa (quyền quản trị hệ thống), nó có thể điều khiển toàn bộ hệ quản trị cơ sở dữ liệu và với quyền hạn rộng lớn như vậy nó có thể tạo ra các tài khoản người dùng bất hợp pháp để điều khiển hệ thống vì vậy cần phải: Kiểm soát chặt chẽ dữ liệu nhập vào,Thiết lập cấu hình an toàn cho hệ quản trị cơ sở dữ liệu Cần có cơ chế kiểm soát chặt chẽ và giới hạn quyền xử lí dữ liệu đến tài khoản người dùng mà ứng dụng web đang sử dụng Các ứng dụng thông thường nên tránh dùng đến các quyền như dbo hay sa Quyền càng bị hạn chế, thiệt hại càng ít
f) Blind SQL Injection
Trang 2517
Blind SQL Injection được sử dụng khi một ứng dụng web không dễ bị tấn công bởi SQL Injection.Trong nhiều khía cạnh, SQL Injection và blind Injection là giống nhau, nhưng vẫn có một sự khác biệt nhỏ.SQL Injection phụ thuộc vào các thông báo lỗi nhưng blind injection thì không Không phải bất kỳ ứng dụng web nào cũng dễ bị tấn công SQL Injection, lúc này ta sử dụng blind SQL Injection để có thể truy cập vào các dữ liệu nhạy cảm hoặc phá hủy dữ liệu
Những kẻ tấn công có thể đánh cắp dữ liệu bằng cách thực hiện một loạt các câu hỏi True hoặc False thông qua các câu lệnh SQL
Lỗi SQL injection dạng này là dạng lỗi tồn tại ngay trong ứng dụng web nhưng hậu quả của chúng lại không hiển thị trực quan cho những kẻ tấn công Nó có thể gây ra sự sai khác khi hiển thị nội dung của một trang chứa lỗi bảo mật này, hậu quả của sự tấn công SQL injection dạng này khiến cho lập trình viên hay người dùng phải mất rất nhiều thời gian để phục hồi chính xác từng bit dữ liệu Những kẻ tấn công còn có thể sử dụng một số công cụ để dò tìm lỗi dạng này và tấn công với những thông tin đã được thiết lập sẵn
Thay đổi giá trị điều kiện truy vấn: Dạng lỗi này khiến cho kẻ tấn công có thể thay đổi giá trị điều kiện trong câu truy vấn, làm sai lệch sự hiển thị của một ứng dụng chứa lỗi này
SELECT booktitle from booklist where bookId = 'OOk14cd' AND 1=1;
Sẽ hiển thị một trang một cách bình thường, trong khi:
SELECT booktitle from booklist where bookId = 'OOk14cd' AND 1=2;
Sẽ hiển thị một nội dung khác, hoặc không hiển thị gì nếu ứng dụng web có chứa lỗi SQL injection dạng này Lỗ hổng dạng này còn cho phép kẻ tấn công không chỉ gây ảnh hưởng tới bảng hay dữ liệu hiện tại mà còn ảnh hưởng tới những dữ liệu hay bảng khác phụ thuộc vào nội dung của dữ liệu hay bảng hiện tại
Điều kiện lỗi: Lỗi SQL injection dạng này dẫn tới việc buộc cơ sở dữ liệu chỉ được phép đánh giá khi mà giá trị của câu lệnh WHERE là đúng Ví dụ:
Trang 2618
SELECT 1/0 from users where username='Ralph';
Phép chia cho 0 chỉ được đánh giá là lỗi khi mà người dùng có tên "Ralph" tồn tại trong cơ sở dữ liệu
Thời gian trễ: Lỗi SQL injection dạng này tồn tại khi thời gian xử lý của một hay nhiều truy vấn SQL phụ thuộc vào dữ liệu logic được nhập vào hoặc quá trình xử lý truy vấn của SQL engine cần nhiều thời gian Kẻ tấn công có thể sử dụng lỗi SQL injection dạng này để xác định thời gian chính xác mà trang cần tải khi giá trị nhập vào là đúng
g) Inference
Mục đích: xác định nơi có thể tấn công, lấy dữ liệu, xác định cấu trúc của cơ sở dữ liệu (database)
Cách tấn công: dành cho các hệ thống đã có bảo mật, các thông tin lỗi sẽ không trả
về cho kẻ tấn công, nên kẻ tấn công sẽ không thể xác định được nơi để tấn công và kết quả tấn công một cách trực tiếp
Có 2 kiểu tấn công Inference là: Blind Injection và Timing Attack
- Blind Injection: Kẻ tấn công sẽ đưa ra 2 câu truy vấn tương đương với câu hỏi đúng hoặc sai, sau đó quan sát cách xử lý của hệ thống, nếu xử lý khác nhau thì đây là nơi có thể khai thác
Ví dụ: login cho 2 trường hợp là "legalUser’ and 1=1 " và "legalUser’ and 1=0 " Trường hợp 1 đăng nhập thành công, trường hợp 2 đăng nhập thất bại => Kẻ tấn công quan sát và sẽ phán đoán được đây là nơi có thể tấn công
- Timing Attacks: cho phép kẻ tấn công lấy được thông tin qua việc quan sát thời gian delay của hệ thống Kẻ tấn côngsẽ khiến hệ thống trả lời delay một khoảng thời gian nhất định ứng với từng điều kiện truy Dựa vào quan sát và thử các trường hợp có thể, có thể đoán được dữ liệu mình mong muốn
Ví dụ: login là ‘‘legalUser’ and ASCII(SUBSTRING((select top 1 name from sysobjects),1,1)) > X WAITFOR 5 ’
Trang 2719
=> SELECT accounts FROM users WHERE login=’legalUser’ and ASCII(SUBSTRING((select top 1 name from sysobjects),1,1)) > X WAITFOR 5 ’ AND pass=’’ AND pin=0
Kẻ tấn công sẽ dựa vào giá trị mã ASCII của X và quan sát thời gian phản hồi từ Server để xác định ký tự đầu tiên (nếu mã ASCII của ký tự đầu tiên lớn hơn X thì thời gian phản hồi sẽ hơn 5s ), tương tự cho các ký tự còn lại
h) Alternate Encodings
Mục đích: vượt qua sự kiểm tra, kiểm soát
Cách tấn công: hình thức tấn công này sẽ vượt qua một số phương thức bảo mật Bằng việc encode các ký tự mong muốn, trang Web sẽ không phát hiện ra kiểu tấn công Việc tấn công có thể thực hiện được do mỗi lớp của ứng dụng đối xử khác nhau với các cách encode khác nhau Ví dụ như trong PHP, char(0x73687574646f776e) không có ý nghĩa, nhưng trong SQL nó lại đại diện cho chuỗi SHUTDOWN
Ví dụ: login là “legalUser’; exec(0x73687574646f776e) - - ”
=> “SELECT accounts FROM users WHERE login=’legalUser’; exec(SHUTDOWN) AND pass=’’ AND pin=’’ ”
1.2.3 Phòng chống SQL Injection
Như vậy, có thể thấy lỗi SQL Injection khai thác những bất cẩn của các lập trình viên phát triển ứn dụng web khi xử lý các dữ liệu nhập vào để xây dựng câu lệnh SQL.Tác hại từ lỗi SQL Injection tuỳ thuộc vào môi trường và cách cấu hình hệ thống Nếu ứng dụng sử dụng quyền dbo (quyền của người sở hữu cơ sở dữ liệu – owner) khi thao tác dữ liệu, nó có thể xoá toàn bộ các bảng dữ liệu, tạo các bảng dữ liệu mới,…Nếu ứng dụng sử dụng quyền ‘sa’ (quyền quản trị hệ thống), nó có thể điều khiển toàn bộ hệ thống quản trị cơ sở dữ liệu và với quền hạn rộng lớn như vậy, nó có thể tạo ra các tài khoản người dùng bất hợp pháp để điều khiển hệ thống của chúng ta Để phòng chống kiểu tấn công này thường áp dụng một số biện pháp sau:
a Kiểm soát chặt chẽ dữ liệu đầu vào
Trang 2820
Điểm yếu SQL Injection bắt nguồn từ việc xử lý dữ liệu từ người dùng không tốt,
do đó vấn đề xây dựng mã nguồn đảm bảo an ninh là cốt lõi của việc phòng chống SQL Injection
Để phòng tránh các nguy cơ có thể xảy ra, hãy bảo vệ các câu lệnh SQL bằng cách kiểm soát chặt chẽ tất cả các dữ liệu nhập vào từ đối tượng Request (Request, Request.QueryString, Request.Form, Request.Cookies, Request.ServerVariables) Ví dụ,
có thể giới hạn chiều dài của chuỗi nhập liệu hoặc xây dựng hàm EscapeQuotes để thay thế các dấu nháy đơn bằng 2 dấu nháy đơn như:
Ngoài ra, có thể xây dựng hàm loại bỏ một số kí tự và từ khoá nguy hiểm như: , select, insert, xp_,… ra khỏi chuỗi dữ liệu nhập từ phía người dùng để hạn chế các tấn công dạng này:
<%
Function KillChars(sInput)
dim badChars dim newChars
badChars = array(“select”, “drop”, “;”, “ ", “insert”, “delete”, “xp_”)
newChars = strInput
Trang 29b Sử dụng các lớp giao tiếp trừ tượng
Khi thiết kế một ứng dụng doanh nghiệp thì thường có một yêu cầu đặt ra, đó là định nghĩa các lớp (Layer) như mô hình n-tier, ví dụ các lớp trình diễn (presentation), lớp nghiệp vụ (business), lớp truy cập dữ liệu (data access) sao cho một lớp luôn trừ tượng với lớp ở trên nó Trong phạm vi nội dung đang xét, đó là các lớp trừu tượng phục vụ truy cập dữ liệu Tuỳ theo từng công nghệ được sử dụng mà ta có những lớp chuyên biệt như Hibernate trên Java, hay các framwork truy cập cơ sở dữ liệu (database driver) như ADO.NET, JDBC, PDO Các lớp giao tiếp này cho phép truy cập dữ liệu an toàn mà không làm lộ kiến trúc chi tiết bên dưới của ứng dụng
Một ví dụ về một lớp truy cập dữ liệu được thiết kế có tính toàn, đó là tất cả mọi câu lệnh thao tác với cơ sở dữ liệu có sử dụng dữ liệu bên ngoài đều phải thông qua các câu lệnh tham số hoá Đảm bảo điều kiện là ứng dụng chỉ truy cập tới cơ sở dữ liệu thông qua lớp truy cập dữ liệu này, và ứng dụng không sử dụng các thông tin được cung cấp để xây dựng truy vấn SQL động tại cơ sở dữ liệu Một điều kiện đảm bảo hơn khi kết hợp các phương thức truy cập cơ sở dữ liệu với việc sử dụng các thủ tục lưu trữ (stored procedure) trên cơ sở dữ liệu Những điều kiện như vậy sẽ giúp cho cơ sở dữ liệu được an toàn hơn trước những cuộc tấn công
c Thiết lập các đối tượng giả làm mồi nhử
Chiến thuật này được đưa ra nhằm cảnh báo cho quản trị viên nguy cơ một cuộc tấn công khi một ai đó cố tình tìm cách khai thác những dữ liệu nhạy cảm như mật
Trang 3022
khẩu.Phương pháp này nên phối hợp với việc đặt tên các đối tượng khó đoán Để thực hiện phương pháp này, ta sinh các bảng chứa các cột có tính nhạy cảm mà dễ đoán, ví dụ như “password”, “credit_no”,… nhưng dữ liệu trong các bảng này là dữ liệu giả và mỗi khi các thông tin này được truy cập thì sẽ có một thông báo gửi về cho quản trị viên
d Thiết lập cấu hình an toàn cho hệ thống quản trị cơ sở dữ liệu
Cần có cơ chế kiểm soát chặt chẽ và giới hạn quyền xử lý dữ liệu đến tài khoản người dùng mà ứng dụng web đang sử dụng Các ứng dụng thông thường nên tránh dùng
đến các quyền như “dbo” hay “sa” Quyền càng bị hạn chế, thiệt hại càng ít
Ngoài ra, cần tắt tất cả các thông báo lỗi không cần thiết của máy chủ web.Kẻ tấn công có thể lợi dụng chính sách các thông báo lỗi này để khai thác thông tin của hệ thống, phục vụ cho một cuộc tấn công SQL Injection
Tóm lại, để ứng dụng thật sự tránh được những cuộc tấn công SQL Injection cần triển khai một số việc sau:
- Không trả về những trang lỗi có thông tin nhạy cảm
- Cải thiện dữ liệu nhập vào càng tốt sẽ càng gây khó khăn cho những tấn công
- Hạn chế tối đa quyền truy cập
- Thường xuyên kiểm tra, quét ứng dụng bằng những công cụ mới nhất
- Dùng lá chắn tốt nhất có thể cho từng lớp tương tác
1.3 Tổng quan về kỹ thuật khai phá dữ liệu và kỹ thuật học máy
Trong thời đại ngày nay, với sự phát triển vượt bậc của công nghệ thông tin, các
hệ thống thông tin có thể lưu trữ một khối lượng lớn dữ liệu về hoạt động hàng ngày của chúng Từ khối dữ liệu này, các kỹ thuật trong Khai Phá Dữ Liệu (KPDL) và Học máy có thể dùng để trích xuất những thông tin hữu ích mà chúng ta chưa biết Các tri thức vừa học được có thể vận dụng để cải thiện hiệu quả hoạt động của hệ thống thông tin ban đầu
Giáo sư Tom Mitchell đã đưa ra định nghĩa của KPDL như sau: “KPDL là việc sử dụng dữ liệu lịch sử để khám phá những qui tắc và cải thiện những quyết định trong
Trang 3123
tương lai.” Với một cách tiếp cận ứng dụng hơn, Tiến sĩ Fayyad đã phát biểu: “KPDL, thường được xem là việc khám phá tri thức trong các cơ sở dữ liệu, là một quá trình trích xuất những thông tin ẩn, trước đây chưa biết và có khả năng hữu ích, dưới dạng các qui luật, ràng buộc, qui tắc trong cơ sở dữ liệu.” Nói tóm lại, KPDL là một quá trình học tri thức mới từ những dữ liệu đã thu thập được [6,7]
1.3.1 Quá trình khai phá dữ liệu
Một quá trình KPDL bao gồm năm giai đoạn chính sau:
(1) Tìm hiểu nghiệp vụ và dữ liệu;
(2) Chuẩn bị dữ liệu;
(3) Mô hình hóa dữ liệu;
(4) Hậu xử lý và đánh giá mô hình;
(5) Triển khai tri thức,
Quá trình này có thể được lặp lại nhiều lần một hay nhiều giai đoạn dựa trên phản hồi từ kết quả của các giai đoạn sau Tham gia chính trong quá trình KPDL là các nhà tư vấn (NTV) và phát triển chuyên nghiệp trong lĩnh vực KPDL
Trong giai đoạn đầu tiên, Tìm hiểu nghiệp vụ và dữ liệu, NTV nghiên cứu kiến
thức về lĩnh vực sẽ áp dụng, bao gồm các tri thức cấu trúc về hệ thống và tri thức, các nguồn dữ liệu hiện hữu, ý nghĩa, vai trò và tầm quan trọng của các thực thể dữ liệu Việc nghiên cứu này được thực hiện qua việc tiếp xúc giữa NTV và người dùng.Khác với phương pháp giải quyết vấn đề truyền thống khi bài toán được xác định chính xác ở bước đầu tiên, NTV tìm hiểu các yêu cầu sơ khởi của người dùng và đề nghị các bài toán tiềm năng có thể giải quyết với nguồn dữ liệu hiện hữu.Tập các bài toán tiềm năng được tinh chỉnh và làm hẹp lại trong các giai đoạn sau.Các nguồn và đặc tả dữ liệu có liên quan đến tập các bài toán tiềm năng cũng được xác định
Giai đoạn Chuẩn bị dữ liệu sử dụng các kỹ thuật tiền xử lý để biến đổi và cải
thiện chất lượng dữ liệu để thích hợp với những yêu cầu của các giải thuật học Phần lớn
Trang 3224
các giải thuật KPDL hiện nay chỉ làm việc trên một tập dữ liệu đơn và phẳng, do đó dữ liệu phải được trích xuất và biến đối từ các dạng cơ sơ dữ liệu phân bố, quan hệ hay hướng đối tượng sang dạng cơ sở dữ liệu quan hệ đơn giản với một bảng dữ liệu Các giải thuật tiền xử lý tiêu biểu bao gồm:
(a) Xử lý dữ liệu bị thiếu/mất: các dữ liệu bị thiếu sẽ được thay thế bởi các giá trị thích hợp
(b) Khử sự trùng lắp: các đối tượng dữ liệu trùng lắp sẽ bị loại bỏ đi Kỹ thuật này không được sử dụng cho các tác vụ có quan tâm đến phân bố dữ liệu
(c) Giảm nhiễu: nhiễu và các đối tượng tách rời (outlier) khỏi phân bố chung sẽ bị loại đi khỏi dữ liệu
(d) Chuẩn hóa: miền giá trị của dữ liệu sẽ được chuẩn hóa
(e) Rời rạc hóa: các dữ liệu số sẽ được biến đổi ra các giá trị rời rạc
(f) Rút trích và xây dựng đặc trưng mới từ các thuộc tính đã có
(g) Giảm chiều: các thuộc tính chứa ít thông tin sẽ được loại bỏ bớt
Các bài toán được giải quyết trong giai đoạn Mô hình hóa dữ liệu.Các giải thuật
học sử dụng các dữ liệu đã được tiền xử lý trong giai đoạn hai để tìm kiếm các qui tắc ẩn
và chưa biết.Công việc quan trọng nhất trong giai đoạn này là lựa chọn kỹ thuật phù hợp
để giải quyết các vấn đề đặt ra
Các mô hình kết quả của giai đoạn ba sẽ được hậu xử lý và đánh giá trong giai
đoạn 4.Dựa trên các đánh giá của người dùng sau khi kiểm tra trên các tập thử, các mô
hình sẽ được tinh chỉnh và kết hợp lại nếu cần.Chỉ các mô hình đạt được mức yêu cầu cơ bản của người dùng mới đưa ra triển khai trong thực tế Trong giai đoạn này, các kết quả được biến đổi từ dạng học thuật sang dạng phù hợp với nghiệp vụ và dễ hiểu hơn cho người dùng
Trong giai đoạn cuối, Triển khai tri thức, các mô hình được đưa vào những hệ
thống thông tin thực tế dưới dạng các môđun hỗ trợ việc đưa ra quyết định.Mối quan hệ
Trang 3325
chặt chẽ giữa các giai đoạn trong quá trình KPDL là rất quan trọng cho việc nghiên cứu trong KPDL.Một giải thuật trong KPDL không thể được phát triển độc lập, không quan tâm đến bối cảnh áp dụng mà thường được xây dựng để giải quyết một mục tiêu cụ thể
Do đó, sự hiểu biết bối cảnh vận dụng là rất cần thiết Thêm vào đó, các kỹ thuật được sử dụng trong các giai đoạn trước có thể ảnh hưởng đến hiệu quả của các giải thuật sử dụng trong các giai đoạn tiếp theo
1.3.2 Các bài toàn thông dụng trong khai phá dữ liệu
Trong KPDL, các bài toán có thể phân thành bốn loại chính Bài toán thông dụng
nhất trong KPDL là Phân lớp (Classification) Với một tập các dữ liệu huấn luyện cho
trước và sự huấn luyện của con người, các giải thuật phân loại sẽ học ra bộ phân loại (classifier) dùng để phân các dữ liệu mới vào một trong những lớp (còn gọi là loại) đã được xác định trước Nhận dạng cũng là một bài toán thuộc kiểu Phân loại
Với mô hình học tương tự như bài toán Phân loại, lớp bài toán Dự đoán
(Prediction) sẽ học ra các bộ dự đoán.Khi có dữ liệu mới đến, bộ dự đoán sẽ dựa trên thông tin đang có để đưa ra một giá trị số học cho hàm cần dự đoán.Bài toán tiêu biểu trong nhóm này là dự đoán giá sản phẩm để lập kế hoạch trong kinh doanh
Các giải thuật Tìm luật liên kết (Association Rule) tìm kiếm các mối liên kết giữa
các phần tử dữ liệu, ví dụ như nhóm các món hàng thường được mua kèm với nhau trong siêu thị
Các kỹ thuật Phân cụm (Clustering) sẽ nhóm các đối tượng dữ liệu có tính chất
giống nhau vào cùng một nhóm.Có nhiều cách tiếp cận với những mục tiêu khác nhau trong phân loại
1.3.3 Sự tương đồng và khác biệt giữa khai phá dữ liệu và học máy
Với cùng mục đích là “học tập từ dữ liệu”, các giải thuật trong MH đóng một vai trò nòng cốt trong KPDL.Tuy nhiên, các giải thuật này cần được phát triển để thích hợp với các yêu cầu và thách thức mới của KPDL.Thách thức đầu tiên là mức độ nhiễu cao trong dữ liệu của KPDL.Tiêu chuẩn mạnh mẽ của giải thuật đối với nhiễu trở nên quan
Trang 3426
trọng hơn trong khi các tiêu chuẩn khác phần nào có thể giảm bớt.Thách thức thứ hai là kích thước lớn của các tập dữ liệu cần xử lý.Các tập dữ liệu trong KPDL thường có kích thước cực kỳ lớn Khi so sánh các tập dữ liệu chuẩn trong các kho dữ liệu về KPDL và
MH, các tập dữ liệu trong KPDL thường có số đặc tính lớn hơn 10 lần và số đối tượng lớn hơn 100 lần Trong thực tế, kích thước của các tập dữ liệu trong KPDL thường ở mức tera-byte (hàng ngàn giga-byte).Với kích thước như thế, thời gian xử lý thường cực kỳ dài.Thêm vào đó, các giải thuật học truyền thống thường yêu cầu tập dữ liệu được tải toàn bộ lên trên bộ nhớ để xử lý.Mặc dù kích thước bộ nhớ trong của máy tính đã gia tăng đáng kể trong thời gian gần đây, việc gia tăng này cũng không thể đáp ứng kịp với việc tăng kích thước dữ liệu Vì vậy, việc vận dụng các kỹ thuật xác suất, lấy mẫu, đệm, song song và tăng dần vào các giải thuật để tạo ra các phiên bản phù hợp với yêu cầu của KPDL trở nên ngày càng quan trọng
Các kỹ thuật trong KPDL là hướng tác vụ và hướng dữ liệu.Thay vì tập trung vào
xử lý tri thức dạng kí hiệu và khái niệm như trong MH, mọi phát triển trong KPDL thì kết chặt vào các ứng dụng thực tế và đặc tính dữ liệu cụ thể trong các ứng dụng đó.Ví dụ, Luật kết hợp (Association Rules) là kỹ thuật KPDL nhằm tìm kiếm những mối liên kết giữa các món hàng trong các hóa đơn ở siêu thị.Giải thuật học trong kỹ thuật này được phát triển dựa trên đặc tính về dữ liệu rất đặc thù là ở dạng nhị phân và rất thưa
1.3.4 Các ứng dụng của khai phá dữ liệu
KPDL được vận dụng trong nhiều lĩnh vực khác nhau nhằm khai thác nguồn dữ liệu phong phú được lưu trữ trong các hệ thống thông tin Tùy theo bản chất của từng lĩnh vực, việc vận dụng KPDL có những cách tiếp cận khác nhau
KPDL cũng được vận dụng hiệu quả để giải quyết các bài toán phức tạp trong các ngành đòi hỏi kỹ thuật cao, như tìm kiếm mỏ dầu từ ảnh viễn thám, xác định các vùng gãy trong ảnh địa chất để dự đoán thiên tai, cảnh báo hỏng hóc trong các hệ thống sản xuất,… Các bài toán này đã được giải quyết từ khá lâu bằng các kỹ thuật nhận dạng hay xác suất nhưng được giải quyết với yêu cầu cao hơn bởi các kỹ thuật của KPDL
Trang 3527
Phân nhóm và dự đoán là những công cụ rất cần thiết cho việc qui hoạch và phát triển các hệ thống quản lý và sản xuất trong thực tế Các kỹ thuật KPDL đã được áp dụng thành công trong việc dự đoán tải sử dụng điện năng cho các công ty cung cấp điện, lưu lượng viễn thông cho các công ty điện thoại, mức độ tiêu thụ sản phẩm cho các nhà sản xuất, giá trị của sản phẩm trên thị trường cho các công ty tài chính hay phân nhóm các khách hàng tiềm năng,…
Ngoài ra, KPDL còn được áp dụng cho các vấn đề xã hội như phát hiện tội phạm hay tăng cường an ninh xã hội Việc vận dụng thành công đã mang lại những hiệu quả thiết thực cho các hoạt động diễn ra hàng ngày trong đời sống
1.3.5 Ứng dụng lý thuyết Bayes trong phân lớp
Naive Bayes Classification (NBC) là một thuật toán dựa trên định lý Bayes về lý thuyết xác suất để đưa ra các phán đoán cũng như phân loại dữ liệu dựa trên các dữ liệu được quan sát và thống kê Naive Bayes Classification là một trong những thuật toán được ứng dụng rất nhiều trong các lĩnh vực máy học dùng để đưa các dự đoán chính xác nhất dự trên một tập dữ liệu đã được thu thập, vì nó khá dễ hiểu và độ chính xác cao Nó thuộc vào nhóm thuật toán học có hướng dẫn (Supervised Machine Learning Algorithms), tức là máy học từ các ví dụ từ các mẫu dữ liệu đã có
Ví dụ như ta có thể ứng dụng vào việc thiết kế một ứng dụng nghe nhạc có thể phán đoán được sở thích của nghe nhạc của người dùng dựa trên các hành vi như nhấn nút “thích” bài hát, “nghe đi nghe” lại nhiều lần các bài hát, “bỏ qua” các bài hát không thích … Dựa trên tập dữ liệu đó ta có thể áp dụng NBC để tính toán ra các phong cách nhạc mà người dùng thích nhất, từ đó chúng ta có thể đưa ra các “gợi ý” nghe nhạc gần đúng nhất cho người dùng từ việc học hỏi từ những thói quen đó
Định luật Bayes được phát biểu như sau:
Định luật Bayes cho phép tính xác suất xảy ra của một sự kiện ngẫu nhiên A khi biết sự kiện liên quan B đã xảy ra Xác suất này được ký hiệu là P(A|B), và đọc là “xác