Tải bản đầy đủ (.pdf) (70 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.58 MB, 70 trang )

NGUYỄN NGỌC THANH

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

NGUYỄN NGỌC THANH

2015 - 2017

HÀ NỘI - 2017
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Ỹ
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

NGUYỄN NGỌC THANH
CHUYÊN NGÀNH : CÔNG NGHỆ THÔNG TIN
MÃ SỐ: 60.48.02.018
NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS ĐOÀN VĂN BAN



HÀ NỘI - 2017

ii


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

Tác giả luận văn

Nguyễn Ngọc Thanh

iii

năm 2017


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

iv


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

v


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

vi


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ụ

vii


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

viii


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

ix


MỞ ĐẦU
1. Lý do chọn đề tài
Ngày nay, vấn đề bảo mật an ninh hệ thống mạng là một phần rất quan trọng trong
các công ty, tập đoàn, các tổ chức cơ quan, chính phủ trong cuộc sống xã hội hiện đại.

Vấn đề an ninh và bảo mật là chìa khóa tất yếu thành công trong các lĩnh vực kinh tế,
chính trị, quốc phòng an ninh góp phần thúc đẩy sự phát triển toàn cầu nhanh chóng, liên
kết khoảng cách địa lý, không gian, thời gian các nơi trên thế giới với nhau mà vẫn đảm
bảo được an toàn.
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
2


phải mất công giả mạo để lừa người sử dụng cung cấp thông tin cá nhân.Tỉ lệ thành công
của các vụ tấn công SQL Injection thương rất cao.
Xuất phát từ thực tế nêu trên, luận văn hướng tới nghiên cứu các kiến thức tổng

quan về những tấn công cơ vào cơ sở dữ liệu, đặc biệt là các kiểu tấn công SQL
Injection.Sau khi đã nắm được một số kiến thức cơ bản, luận văn tìm hiểu các cách thức
phòng chống và phát hiện những tấn công vào cơ sở dữ liệu, tấn công SQL Injection
thông qua phương pháp học máy.Cuối cùng, là thực nghiệm kiểm chứng các phân tích để
thấy được hiệu quả của phương pháp học máy trong phát hiện các tấn công vào cơ sở dữ
liệu cũng như là SQL Injection.
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

3


Chương 2: 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
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
Kết luận

Tài liệu tham khảo

4


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ọ.

5


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
6


truy nhập bất hợp pháp, sự sửa đổi dữ liệu hay từ chối dịch vụ. Chẳng hạn, sâu Blaster lợi
dụng một điểm yếu của Windows 2000 để tạo ra các điều kiện cho tấn công từ chối dịch
vụ.
Để bảo vệ các tài nguyên cơ sở dữ liệu tránh khỏi các tấn công nền tảng, cần thiết
phải kết hợp giữa việc cập nhật (các bản vá) phần mềm thường xuyên và sử dụng hệ
thống ngăn chặn tấn công (IPS).Các nhà cung cấp luôn đưa ra những bản vá cho các điểm
yếu trong nền tảng cơ sở dữ liệu. Tuy nhiên, các doanh nghiệp cập nhật và thực thi các
phần mềm này theo định kỳ. Khi đó, giữa các chu kỳ cập nhật này, cơ sở dữ liệu không
được bảo vệ. Thêm vào đó, vấn đề tương thích đôi khi không cho phép các cập nhật phần
mềm này được hoàn chỉnh.Để giải quyết những vấn đề này, cần phải sử dụng IPS.Như
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]

7


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ở

8


dữ liệu để chống tấn công DOS bao gồm: kiểm soát tốc độ kết nối, kiểm soát giao thức,
kiểm soát truy nhập truy vấn, và kiểm soát thời gian phản hồi.
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)
Các nhà cung cấp cơ sở dữ liệu phát hiện ra một số lượng ngày càng tăng các điểm
yếu an toàn trong các giao thức giao tiếp cơ sở dữ liệu. Chẳng hạn 4 trong 7 điểm yếu về
giao thức trong IBM DB2 đã được xác định và sửa chữa, 11 trong số 23 điểm yếu cơ sở
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
9


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
hệ thống bị đánh cắp.
Ngăn chặn sơ hở dữ liệu dự phòng bằng cách các bản sao cơ sở dữ liệu cần thiết
phải được mã hóa và lưu giữ cẩn thận.
1.2. Các tấn công SQL Injection
Cho đến nay, SQL Injection vẫn là phương thức thông dụng nhất của tin tặc khi
tấn công một website vì cơ sở dữ liệu được xem là trái tim của website. Số lượng website
bị tin tặc “nắm giữ” lên đến vài trăm ngàn và thường được dùng để phát tán mã độc,
malware hay lừa đảo trực tuyến (phishing) khi khách hàng truy cập, truy xuất vào
website. Trong phần này sẽ đi sâu vào phân tích các dạng của tấn công SQL Injection.
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
10


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


11


- 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:
$uname=$_POST['uname'];
$passwrd=$_POST['passwrd'];
$query="select username,pass from users where username='$uname'
and password='$passwrd'";
$result=mysql_query($query);
Thử tài khoản đăng nhập và mật khẩu bằng: 'or ''=', thì câu truy vấn sẽ thành như
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
12


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:

13


‘UNION SELECT name FROM sysobjects WHERE xtype=’U’ là có thể liệt kê
được tất cả các bảng dữ liệu.
Ví dụ: form tìm kiếm sản phẩm có lỗi chèn mã SQL với câu
lệnh tìm kiếm:
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' –

14


Bảng sys.objects chứa danh sách các bảng kèm thuộc tính; 'u' là kiểubảng do
người dùng tạo; name chứa tên đối tượng (bảng) vàobject_id là mã số đối tượng.
Lấy thông tin về các trường trong một bảng:
Nhập chuỗi tìm kiếm:
samsung'union select name, 0 from sys.columns where object_id = <mã sốbảng>-trong đó <mã số bảng> lấy từ cột object_id ở trên.
Lấy thông tin từ một bảng đã biết tên và các trường:
Nhập chuỗi tìm kiếm:
samsung' union select username+'-'+password, 0 from tbl_users –

lấy danh sách

tên truy nhập và mật khẩu của tất cả các users
Nhập chuỗi tìm kiếm:
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
15


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
16


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ụ:

17


×