1. Trang chủ
  2. » Giáo Dục - Đào Tạo

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

70 747 12

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 70
Dung lượng 1,58 MB

Nội dung

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 1

i

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 2

ii

BỘ GIÁO DỤC VÀ ĐÀO TẠO

VIỆN ĐẠI HỌC MỞ HÀ NỘI

Trang 3

iii

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 4

iv

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 5

v

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 6

vi

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 7

vii

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 8

viii

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 9

ix

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 10

Sự 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 11

2 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 13

5

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 14

6

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 15

mô 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 16

8

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 17

dữ 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 18

10

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 19

11

ứ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 20

12

- 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 21

13

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 22

SELECT * 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 23

samsung' 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 24

16

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 25

17

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 26

18

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 27

19

=> 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 28

20

Đ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 29

b 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 30

22

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 31

23

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 32

24

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 33

25

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 34

26

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 35

27

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

Ngày đăng: 03/09/2018, 16:21

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[6] Jiawei Han, Micheline Kamber, “Data Mining: Concepts and Techniques”, Second Edition, Morgan Kaufmann Publishers, 2006 Sách, tạp chí
Tiêu đề: Data Mining: Concepts and Techniques
[1] TS. Nguyễn Đình Vinh, TS.Trần Đức Sự, KS. Vũ Thị Vân, Giáo trình Cơ sở An toàn thông tin, Học viện Kỹ thuật Mật mã, 2013.Tiếng Anh Khác
[2] Elisa Bertino, Ashish Kamra (Purdue University), Intrusion Detection in RBAC- administered Databases, In the National Science Foundation under Grant, 2012 Khác
[3] Y. Hu and B. Panda, Identification of malicious transactions in database systems, In Proceedings of the International Database Engineering and Applications Symposium (IDEAS), 2003 Khác
[4] Agrata Jain, Sneha Saswade, Yogesh Phalke, Chaitanya Gholap, Intrusion Detection and Forensic Analysis on Database using Log Mining Approach, International Journal of Scientific &amp; Engineering Research, Volume 5, Issue 4, ISSN 2229-5518, 2014 Khác
[5] Varada Bharat Srinivas, Dr.Syed Umar, A Review of Security Mechanisms for Detection of Malicious Transactions in Database, (IJCSIT) International Journal of Computer Science and Information Technologies, Vol. 5 (3) , 3047-3051, 2014 Khác
[7] T. Mitchell, Machine Learning and Data Mining, Communications of the ACM, Vol Khác
[8] M. Kantardzic: Data Mining: Concepts, Models, Method, and Algorithms, John Wiley &amp; Sons, New York, NY, (2003).Internet Khác

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w