NGUYỄN THỊ BÍCH NGỌC
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
TRẦN BÍCH TRÂM
HỆ THỐNG THÔNG TIN 2012 – 2013 HÀ NỘI
ỨNG DỤNG PHÁT HIỆN ĐỘT NHẬP SỬ DỤNG
THUẬT TOÁN ĐỐI SÁNH CHUỖI LAI TRONG
CÔNG NGHỆ THÔNG TIN
LUẬN VĂN THẠC SĨ KỸ THUẬT
HÀ NỘI - 2015
2
LỜI CẢM ƠN
Để hoàn thành được luận văn, ngoài sự nghiên cứu và cố gắng của bản thân,
em xin gửi lời cảm ơn tới TS Hoàng Xuân Dậu _ giáo viên trực tiếp hướng dẫn, tận
tình chỉ bảo và định hướng cho em trong suốt quá trình thực hiện luận văn.
Em xin gửi lời cảm ơn chân thành cảm ơn tất cả các thầy cô giáo của Học
viện Công nghệ Bưu chính Viễn thông đã giảng dạy và dìu dắt em trong trong suốt
quá trình học tập tại trường từ khi còn học đại học cho đến sau đại học.
Cuối cùng, em xin gửi lời cảm ơn tới gia đình, bạn bè và những người đã
luôn ở bên cổ vũ tinh thần, tạo điều kiện thuận lợi cho em để em có thể học tập tốt
và hoàn thiện luận văn.
Em xin chân thành cảm ơn!
3
MỤC LỤC
4
DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT
Từ viết tắt Nghĩa tiếng anh Nghĩa tiếng việt
BMH Boyer – Moore – Horspool
algorithm
Thuật toán Boyer Moore
Horspool
CSDL Database Cơ sở dữ liệu
CPU Central Processing Unit Bộ xử lí trung tâm
Dos Detack of Service Tấn công từ chối dịch vụ
IDS Intrusion Detection System Hệ thống phát hiện đột
nhập
HIDS Host – based Intrusion
Detection
Hệ thống phát hiện đột
nhập cho host
UDP User Datagram Protocol Giao thức gói tin người
dùng
ICMP Internet Control Message
Protocol
Giao thức điều khiển
thông điệp Internet
TCP Transmission Control Protocol Giao thức điều khiển
truyền vận
NIDS Network – based Intrusion
Detection
Hệ thống phát hiện đột
nhập cho mạng
P Pattern Mẫu
RK Rabin – Karp algorithm Thuật toán Rabin Karp
T Text Văn bản
5
DANH MỤC CÁC HÌNH
Số hiệu hình vẽ Tên hình vẽ Trang
1.1 Các dạng phần mềm phá hoại 7
1.2 Minh họa kiểu tấn công gián đoạn 9
1.3 Minh họa tấn công nghe trộm 10
1.4 Minh họa tấn công thay đổi gói tin 10
1.5 Minh họa tấn công giả mạo 10
1.6 NIDS 12
1.7 HIDS 13
1.8 Các thành phần của hệ thống phát hiện đột nhập 14
1.9 Bước kiểm tra của phát hiện đột nhập dựa trên chữ ký 15
1.10 Bước kiểm tra của phát hiện đột nhập dựa trên bất thường 15
1.11 Mô hình mô tả bài toán luận văn 16
2.1 Xây dựng hàm Goto 39
2.2 Xây dựng hàm Failure 40
2.3 Xây dựng hàm Output 40
2.4 Ví dụ xây dựng hàm goto 41
2.5 Ví dụ xây dựng hàm Failure 45
3.1 Mô hình hệ thống phát hiện đột nhập 48
3.2 Hệ thống mạng trước và sau khi cài Snort 52
3.3 Cấu trúc Snort.conf – phần HOME_NET 54
3.4 Cấu trúc Snort.conf – phần RULE_PATH 54
3.5 Cấu trúc Snort.conf – phần config 54
3.6 Gói tin được mã hóa 57
3.7 Gói tin sau khi được giải mã bằng Wireshark 57
3.8 Thời gian xử lý của các thuật toán với tập mẫu 10000 bản ghi 60
3.9 Thời gian xử lý của các thuật toán với tập mẫu 5000 bản ghi 60
3.10 Thời gian xử lý của các thuật toán với tập mẫu 1500 bản ghi 61
3.11 Kết quả rule Demo.rules trong Snort 63
3.12 Kết quả rule Demo1.rules trong Snort 63
6
I. MỞ ĐẦU
1. Lý do lựa chọn đề tài
Phát hiện tấn công, đột nhập mạng là một trong các thành phần quan trọng
trong hệ thống các giải pháp đảm bảo an ninh cho các mạng hiện đại. Nhiều giải
pháp phát hiện đột nhập mạng đã được đề xuất và áp dụng, bao gồm cả các giải
pháp dựa trên phần cứng và phần mềm. Tuy nhiên, hầu hết các hệ thống phát hiện
đột nhập mạng hiện có gặp phải vấn đề về hiệu năng do chúng phải phân tích, xử lý
một lượng rất lớn các gói tin truyền qua mạng. Hơn nữa, việc phân tích các gói tin
nhằm tìm kiếm dấu vết của các tấn công, đột nhập thường dựa trên việc tìm kiếm,
đối sánh các chuỗi hoặc các mẫu chữ ký đã được định nghĩa trước trên nội dung gói
tin là phần việc đòi hỏi chi phí tính toán và thời gian xử lý lớn. Khi lưu lượng mạng
rất lớn, nhiều gói tin có thể bị bỏ qua không được phân tích và điều này có thể để
lọt các tấn công, đột nhập nguy hiểm vào các hệ thống và dịch vụ trên mạng. Từ
phân tích trên, luận văn này tập trung nghiên cứu về các giải thuật đối sánh chuỗi có
hiệu năng cao, đặc biệt là các giải thuật đối sánh chuỗi đa mẫu và ứng dụng vào
phân tích và đối sánh dữ liệu giám sát trong phát hiện đột nhập. Khi xây dựng đề
cương luận văn, tác giả đề xuất nghiên cứu thuật toán đối sánh chuỗi lai – là sự kết
hợp của hai thuật toán đối sánh chuỗi Horspool [5] và Karp-Rabin [8] với mục tiêu
tăng tốc độ đối sánh chuỗi trong đề tài " ỨNG DỤNG PHÁT HIỆN ĐỘT NHẬP SỬ
DỤNG THUẬT TOÁN ĐỐI SÁNH CHUỖI LAI TRONG CÔNG NGHỆ THÔNG TIN ". Tuy
nhiên, khi triển khai nghiên cứu thực tế, kết quả đánh giá cho thấy thuật toán đối
sánh chuỗi đa mẫu Aho-Corasick [1] có hiệu năng vượt trội so với thuật toán đối
sánh chuỗi lai. Được sự đồng ý của thầy hướng dẫn, tác giả đã sử dụng thuật toán
đối sánh chuỗi đa mẫu Aho-Corasick thay cho thuật toán đối sánh chuỗi lai để cài
đặt thử nghiệm trong luận văn.
2. Luận văn bao gồm 3 chương và phần kết luận:
Chương 1: Tổng quan về đối sánh chuỗi và ứng dụng trong phát hiện đột
nhập:
7
Giới thiệu tổng quan về đối sánh chuỗi, phát hiện đột nhập, và ứng dụng
của đối sánh chuỗi vào phát hiện đột nhập.
Chương 2: Các kỹ thuật đối sánh chuỗi:
Trình bày chi tiết về các kỹ thuật đối sánh chuỗi.
Chương 3: Xây dựng mô hình phát hiện đột nhập dựa vào đối sánh chuỗi:
Chương này trình bày việc xây dựng mô hình phát hiện đột nhập ứng dụng
các kỹ thuật đối sánh chuỗi đã nghiên cứu ở chương 2 và việc áp dụng kỹ thuật đối
sánh chuỗi vào hệ thống Snort.
3. Mục đích nghiên cứu
• Nghiên cứu các thuật toán đối sánh chuỗi và ứng dụng.
• Nghiên cứu thuật toán đối sánh chuỗi đa mẫu hiệu năng cao.
• Xây dựng mô hình phát hiện đột nhập mạng dựa trên thuật toán đối sánh
chuỗi đa mẫu hiệu năng cao, cài đặt thử nghiệm và đánh giá kết quả.
4. Đối tượng và phạm vi nghiên cứu
• Đối tượng nghiên cứu: các thuật toán đối sánh chuỗi, các chuỗi hoặc mẫu
chữ ký tấn công/đột nhập, các luật phát hiện tấn công đột nhập.
• Phạm vi nghiên cứu: Nghiên cứu giới hạn trong môi trường mô phỏng và
thực.
5. Phương pháp nghiên cứu
Phương pháp nghiên cứu là nghiên cứu lý thuyết kết hợp với thực nghiệm
và phân tích, đánh giá kết quả.
II. NỘI DUNG
Chương 1: TỔNG QUAN VỀ ĐỐI SÁNH CHUỖI VÀ ỨNG
DỤNG TRONG PHÁT HIỆN ĐỘT NHẬP
8
Chương này trình bày tổng quan về đối sánh chuỗi, các dạng tấn công, đột
nhập và phát hiện đột nhập mạng, và ứng dụng đối sánh chuỗi trong phát hiện đột
nhập mạng.
1.1 Tổng quan về đối sánh chuỗi và ứng dụng
1.1.1 Tổng quan về đối sánh chuỗi
Đối sánh chuỗi là một kỹ thuật đóng vai trò nền tảng trong lĩnh vực xử lý
văn bản. Hầu như tất cả các trình soạn thảo và xử lý văn bản đều cần phải có một cơ
chế để tìm kiếm các chuỗi trong tài liệu hiện tại. Việc tích hợp các thuật toán đối
sánh chuỗi là một trong những khâu cơ bản được sử dụng trong việc triển khai phần
mềm và được thực hiện trên hầu hết các hệ điều hành.
Mặc dù hiện nay dữ liệu được lưu trữ dưới nhiều hình thức khác nhau,
nhưng văn bản vẫn là hình thức chủ yếu để lưu trữ và trao đổi thông tin. Trong
nhiều lĩnh vực như phát hiện đột nhập, trích trọn thông tin và tin sinh học, một
lượng lớn dữ liệu thường được lưu trữ trong các tập tin tuyến tính. Hơn nữa, khối
lượng dữ liệu thu thập được tăng lên rất nhanh nên đòi hỏi phát các thuật toán xử lý
và đối sánh dữ liệu văn bản hiệu quả.
1.1.2 Các khái niệm
“Đối sánh chuỗi là gì?”
Đối sánh chuỗi bao gồm việc tìm kiếm một, nhiều, hoặc tất cả số lần xuất
hiện của một chuỗi (thường được gọi là mẫu (Pattern)) trong một văn bản.
Đối sánh chuỗi có thể được biểu diễn dưới dạng toán học như sau:
Cho một chuỗi văn bản T[1…n] và một chuỗi mẫu P[1…m], tìm sự xuất
hiện của P trong T chính là sự đối sánh chuỗi giữa P và T. Cả P và T đều thuộc *. *
là tập hữu hạn các mẫu tự trong bảng chữ cái.
P xuất hiện với độ dịch s (bắt đầu tại s+1) :
P[1] = T[s+1], P[2] = T[s+2],… , P[m] = T[s+m].
Do đó, chúng ta gọi s là giá trị dịch, ngược lại, chúng ta gọi là không có
giá trị dịch.
Ví dụ:
9
P = “abab” , T = “abcabababbc”, P xuất hiện tại s = 3 và s = 5.
Theo tính chính xác của phép đối sánh, có 2 loại đối sánh chuỗi:
- Đối sánh chuỗi chính xác (Exact string matching):
Cho một chuỗi văn bản T có độ dài n, và một chuỗi mẫu P có độ dài m.
Bài toán đối sánh chuỗi chính xác chính là việc tìm ra sự xuất hiện chính xác của P
trong T.
Ví dụ: T = “DABCDEADBACABAD” P = “AB”
- Đối sánh chuỗi gần đúng (Approximate string matching):
Tìm một chuỗi phù hợp với mẫu gần đúng (chứ không phải là chính xác)
mà sự so khớp là tốt nhất với mẫu. Một vài sai khác có thể chấp nhận được.
Chính thức hơn : Đưa một văn bản T, một mẫu P, và một hàm khoảng
cách D. Tìm tất cả các chuỗi con s của T sao cho D(s, P) < k.
Sự sai khác cho phép được ở đây có thể là :
• Thêm (ran rain) .
• Bớt (brain rain) .
• Thay thế (brain train)
Ví dụ: T = “brainaaranastraindshanb” P = “ran”.
1.1.3 Lịch sử phát triển
Trong năm 1970, S.A. Cook [2] đã chứng minh một kết quả lý thuyết giúp
suy ra sự tồn tại của một thuật toán để giải bài toán đối sánh mẫu có thời gian tỷ lệ
với (M+N) trong trường hợp xấu nhất.
D.E.Knuth và V.R.Pratt[2]đã kiên trì theo đuổi kiến trúc mà Cook đã dùng
để chứng minh cho định lý của ông và nhận được một thuật toán tương đối đơn
giản. Đồng thời J.H.Morris [2]cũng khám phá ra thuật toán này.
Knuth, Morris, Pratt đã không giới thiệu thuật này của họ cho đến năm
1976, và trong thời gian này R.S.Boyer và J.S.Moore đã khám phá ra một thuật toán
nhanh hơn nhiều.
10
Tháng 6 – 1975, Alfred V. Aho và Margret J. Corasick [1] đã giới thiệu
thuật toán đối sánh chuỗi đa mẫu Aho Corasick trong tài liệu “Communications of
the ACM 18”.
Năm 1980, Nigel Horspool [5] đã giới thiệu thuật toán đối sánh chuỗi
tương tự thuật toán KMP, nhưng đảo ngược thứ tự so sánh trong tài liệu Software -
Practice & Experience, 10(6):501-506.
Tháng 3 - 1987, R.M.Karp và M.O.Rabin [8] đã giới thiệu thuật toán đơn
giản gần như thuật toán Brute Force có thời gian thực thi tỉ lệ với m+n trong tài liệu
IBM J. Res develop – vol 31 no.2.
1.1.4 Các bước xử lý
Các thuật toán đối sánh chuỗi thường được thực hiện theo 2 bước xử lý
sau:
• Bước tiền xử lý (Preprocessing phase): bao gồm Xử lý mẫu và Khởi tạo cấu trúc dữ
liệu.
• Bước tìm kiếm (Searching phase): thực hiện việc Tìm kiếm mẫu trong văn bản.
1.1.5 Các cách tiếp cận
Có 4 cách tiếp cận chính của các thuật toán đối sánh chuỗi:
Thuật toán cổ điển (Classical algorithms): là các thuật toán chủ yếu dựa
vào sự so sánh giữa các ký tự.
• Các thuật toán điển hình bao gồm Brute Force, Naïve,…
Thuật toán máy tự động hậu tố (Suffix automata algorithms): là các thuật
toán sử dụng cấu trúc dữ liệu hậu tố tự động để nhận ra tất cả các hậu tố của mẫu.
• Các thuật toán điển hình bao gồm Knuth – Morris – Pratt, Boyer – Moore,
Horspool,…
Thuật toán bit song song (Bit – Parallelism algorithms): là các thuật toán
khai thác bản chất song song của các dữ liệu bit để thực hiện các thao tác cùng lúc.
• Các thuật toán điển hình bao gồm Shift – Or, …
11
Thuật toán băm (Hashing algorithms): là các thuật toán sử dụng kỹ thuật
băm, tránh việc so sánh các ký tự có độ phức tạp bậc 2.
• Các thuật toán điển hình bao gồm Karp – Rabin.
1.1.6 Độ phức tạp tính toán
Độ phức tạp tính toán của thuật toán phụ thuộc vào 3 yếu tố sau: chiều dài
của mẫu, chiều dài của văn bản, độ lớn của tập các ký tự.
Trên thực tế có nhiều loại ký tự khác nhau như: binary, DNA, Alphabet,
numeric… và mỗi loại ký tự có độ phức tạp khác nhau.
Độ phức tạp tính toán tỉ lệ thuận với chiều dài của mẫu, chiều dài của văn
bản và độ lớn của tập các ký tự.
1.1.7 Ứng dụng của đối sánh chuỗi
Đối sánh chuỗi là một trong những bài toán cơ bản và “tự nhiên” nhất của
ngành Tin học. Đối sánh chuỗi được sử dụng rộng rãi trong nhiều ứng dụng và lĩnh
vực khác nhau như:
• Chức năng search trong các trình soạn thảo văn bản và web browser.
• Các công cụ tìm kiếm như: Google Search, Yahoo Search,….
• Sinh học phân tử như trong tìm kiếm các mẫu trong DNA, protein,….
• Tìm kiếm cơ sở dữ liệu như trong GenBank[7].
• Trong nhiễu kênh với cho phép chấp nhận được.
• Trong tìm kiếm mẫu hoặc vết của tấn công, đột nhập và các phần mềm độc hại
trong lĩnh vực an toàn mạng và an toàn thông tin….
1.2 Tổng quan về đột nhập và phát hiện đột nhập
Tấn công (attack) hay đột nhập (intrusion) lên một hệ thống chính là sự vi
phạm chính sách an toàn bảo mật của hệ thống đó. Tùy thuộc vào yêu cầu bảo mật
của mỗi hệ thống mà một tấn công, đột nhập có thể vi phạm một, hoặc nhiều thuộc
tính bảo mật của hệ thống.
1.2.1 Các dạng tấn công, đột nhập
Ngày nay, tấn công, đột nhập vào hệ thống máy tính, mạng và thông tin
ngày càng đa dạng, phức tạp và tinh vi, và hậu quả chúng để lại cũng nghiêm trọng
12
hơn. Tuy nhiên, chúng ta có thể phân loại tấn công, đột nhập đó thành 2 loại chính:
các dạng phần mềm phá hoại và các dạng tấn công máy tính, mạng.
1.2.1.1 Các dạng phần mềm phá hoại
Các phần mềm phá hoại (còn gọi là phần mềm độc hại malware) được tạo
ra bởi các tin tặc (hacker) nhằm phục vụ cho những mục đích trái phép như : Xâm
phạm dữ liệu, phá hoại hệ thống,… và thường nhằm gây hại cho các máy tính và
mạng.
Các phần mềm phá hoại được chia làm hai loại: Phần mềm phá hoại phụ
thuộc vào chương trình chủ và Phần mềm phá hoại độc lập với chương trình chủ
như minh họa trên hình 1.1.
Hình 1.1 Các dạng phần mềm phá hoại
Phần mềm phá hoại phụ thuộc chương trình chủ bao gồm: Trap-Door,
Logic Bomb, Trojan Horse và Virus.
• Trap-Door: hay còn gọi là BackDoor, là điểm vào chương trình bí mật, cho phép
người truy cập bỏ qua các thủ thục kiểm tra an ninh thông thường. Trap-Door
thường do các lập trình viên tạo ra trong quá trình phát triển phần mềm. Tuy nhiên,
nếu như để tồn tại trong phần mềm hoàn thiện, Trap-Door có thể bị khai thác bởi
những kẻ tấn công và trở thành mối đe dọa lớn cho hệ thống.
• Logic Bomb: Là một đoạn mã nhúng trong một chương trình hợp pháp. Logic
13
Bomb có phương thức hoạt động giống như một quả bom, nó có thể tự kích hoạt khi
thỏa mãn một số điều kiện xác định. Logic Bomb khi được kích hoạt sẽ phá hoại hệ
thống, như thay đổi, hoặc xóa file, làm hệ thống ngừng hoạt động…
• Trojan Horse: Là một đoạn mã được dấu trong một chương trình, thường là rất hấp
dẫn như: Game, hay phần mềm nâng cấp,… Khi chương trình được người dùng cho
thực thi, đoạn mã xấu sẽ được kích hoạt, cho phép kẻ tấn công thực hiện mục đích
của mình.
• Virus: Virus là một chương trình thường trú ở một ổ đĩa hoặc một tệp. Virus có khả
năng nhân bản và lây lan trên toàn bộ hệ thống. Nếu virus chưa gây ra những hậu
quả hữu hình, thì người dùng không thể nhận biết được sự có mặt của chúng. Một
số dấu hiệu nhận biết có sự tồn tại của virus : xuất hiện thông báo lạ; phát hiện một
số tệp nào đó bị phá hoại; hệ điều hành trở nên chậm chạp, bị xung đột hoặc không
thể khởi động được. Một số loại virus ẩn mình trong một khoảng thời gian và sau
đó được kích hoạt vào một ngày định trước nào đó. Một số loại virus có khả năng
lây nhiễm vào các tệp thực thi, các tệp kịch bản, các tệp tài liệu, hoặc lây nhiễm vào
phân vùng khởi động hay một phân vùng nào đó của một ổ đĩa. Một số loại virus
được nạp vào bộ nhớ và sau đó tiếp tục lây nhiễm vào các tệp khác đang được thực
thi.
Các phần mềm phá hoại độc lập chương trình chủ bao gồm 2 dạng chính
là Worm và Zombie.
• Worm: Là một chương trình độc lập, có khả năng tự nhân bản giống như virus máy
tính, chúng sử dụng mạng Internet để tự lây lan sang các máy tính khác trên mạng
mà không cần sự tác động của người dùng. Hầu hết Worm được dùng để khai thác
khả năng truyền thông của mạng và thường mang theo các phần mềm gián điệp để
tạo backdoor trên các máy tính bị nhiễm.
• Zombie: Là một chương trình độc lập có thể điều khiển từ xa một cách trực tiếp
hoặc gián tiếp bởi tin tặc. Zombie cũng có khả năng lây nhiễm vào các máy tính kết
nối Internet khác tạo thành một hệ thống mạng các máy tính "ma", hay các botnet
chịu sự điều khiển của tin tặc. Tin tặc có thể sử dụng các botnet để gửi thư rác, hoặc
thực hiện các cuộc tấn công DDoS với quy mô rất lớn.
14
1.2.1.2 Các dạng tấn công máy tính, mạng
Hiện nay,các dạng tấn công mạng rất đa dạng và tinh vi, nhưng có thể chia
các dạng tấn côngthành 4 loại chính: tấn công gián đoạn, tấn công nghe trộm, tấn
công thay đổi và tấn công giả mạo.
• Tấn công gián đoạn (Interruption) là tấn công lên tính khả dụng của hệ thống. Đây
là hình thức tấn công dễ phát hiện nhất, làm ngắt kết nối giữa 2 trạm trên mạng.
Hình 1.2Minh họa kiểu tấn công gián đoạn
Một số phương pháp tấn công dạng này gồmSYN floods, Ping of Death,
Tear Drop.
• Tấn công nghe trộm (Interception) là tấn công lên tính bí mật của thông tin hoặc hệ
thống, như minh họa trên Hình 1.3. Hình thức tấn công này chỉ nhằm xem trộm
thông tin giao dịch giữa hai thực thể trên mạng hoặc thực hiện các phân tích mạng,
do đó nó khó bị phát hiện bởi các bên tham gia truyền thông.
Hình 1.3Minh họa tấn công nghe trộm
Một số phương pháp tấn công dạng này gồm Packet Sniffers, Port Scans
và Ping Sweeps.
• Tấn công thay đổi (Modification) là tấn công vào tính toàn vẹn của hệ thống, như
minh họa trên Hình 1.4. Kẻ đột nhập sẽ chen vào giữa kết nối giữa hai bên truyền
thông, bắt giữ và thay đổi nội dung các gói tin theo mục đích của chúng. Chúng
15
kiểm soát quá trình truyền thông của các bên tham gia, và các bên tham gia rất khó
đoán biết được sự can thiệp này.
Hình 1.4Minh họa tấn công thay đổi gói tin
Một số ví dụ điển hình cho dạng tấn công thay đổi gói tin là kĩ thuật người
đứng giữa (Man-in-the-Middle Attack).
• Tấn công giả mạo (Fabrization) là tấn công vào tính xác thực của hệ thống, như
minh họa trên Hình 1.5. Kẻ xâm nhập giả mạo là người dùng, máy nguồn hợp pháp,
thực hiện trao đổi thông tin với máy đích nhằm khai thác thông tin, cướp quyền
điều khiển, hoặc giành lấy những đặc quyền truy cập sau này.
Hình 1.5Minh họa tấn công giả mạo
Một số phương pháp tấn công giả mạo: Tấn công giả mạo địa chỉ IP, tấn
công dựa trên Password, …
1.2.2 Các phương pháp phát hiện đột nhập
Phát hiện đột nhập là quá trình giám sát các sự kiện xuất hiện trong một hệ
thống máy tính hoặc hệ thống mạng, phân tích các sự kiện này để phát hiện các dấu
hiệu của tấn công, đột nhập.
16
1.2.2.1 Phân loại phương pháp phát hiện đột nhập
Có hai phương pháp khác nhau để phân loại phát hiện đột nhập:Phân loại
dựa trên kỹ thuật phân tích dữ liệu vàPhân loại dựa trên nguồn dữ liệu.
a. Phân loại dựa trên kỹ thuật phân tích dữ liệu:
Dựa trên kỹ thuật phân tích dữ liệu, có thể chia phát hiện đột nhập thành
phát hiện đột nhập dựa trên các dấu hiệu hoặc chữ ký và phát hiện đột nhập dựa trên
bất thường.
• Phát hiện đột nhập dựa trên các dấu hiệu (còn gọi là chữ ký): Phương pháp này
nhận dạng các sự kiện hoặc tập hợp các sự kiện phù hợp với một mẫu các sự kiện
đã được định nghĩa là tấn công hoặc đột nhập. Phát hiện đột nhập dựa trên chữ ký
có khả năng phát hiện hiệu quả các tấn công, đột nhập đã biết, nhưng không có khả
năng phát hiện các tấn công, đột nhập mới do chữ ký của chúng chưa được định
nghĩa.
• Phát hiện đột nhập dựa vào bất thường: Phương pháp này thiết lập một hồ sơ các
hành vi bình thường của đối tượng cần giám sát. Nếu hành vi hiện tại của đối tượng
cần giám sát khác biệt đủ lớn với hồ sơ các hành vi bình thường, có thể kết luận có
tấn công, đột nhập xảy ra. Phát hiện đột nhập dựa trên bất thường có tiềm năng phát
hiện các tấn công, đột nhập mới do nó không yêu cầu có trước các thông tin về tấn
công, đột nhập. Tuy nhiên, phương pháp này thường có tỷ lệ cảnh báo sai cao và
yêu cầu chi phí tính toán lớn để xây dựng hồ sơ các hành vi bình thường.
b. Phân loại dựa trên nguồn dữ liệu:
Dựa trên nguồn dữ liệu, có thể chia các hệ thống phát hiện đột nhập thành
hệ thống phát hiện đột nhập mạng và hệ thống phát hiện đột nhập máy trạm.
• Hệ thống phát hiện đột nhập mạng (Network – based instrusion detection system -
NIDS) có khả năng phát hiện đột nhập cho một mạng hoặc một phần mạng. Nguồn
dữ liệu thu nhập là các thông tin về lưu lượng mạng được lấy từ hub, switch, hoặc
router đã được cấu hình để theo dõi cổng hoặc các nút mạng.
Ưu điểm của NIDS:
Quản lý được cả một đoạn mạng (gồm nhiều host).
17
“Trong suốt” với người sử dụng lẫn kẻ tấn công.
Cài đặt và bảo trì đơn giản, không ảnh hưởng nhiều tới mạng.
Tránh tấn công DoS ảnh hưởng tới một host nào đó.
Có khả năng xác định lỗi ở tầng Network (trong mô hình OSI).
Độc lập với hệ điều hành
Hình 1.6 NIDS
Hạn chế của NIDS:
Có thể xảy ra báo động sai với tỷ lệ cao.
Không thể phân tích các lưu lượng đã mã hóa.
Có độ trễ giữa thời điểm bị đột nhập với thời điểm báo động. Khi báo
động được phát ra thì hệ thống có thể đã bị tổn hại.
Không cho biết việc đột nhập có thành công hay không.
• Hệ thống phát hiện đột nhập máy trạm (Host – based instrusion detection systems)
giám sát và phân tích các sự kiện bên trong một hệ thống máy tính hơn là các kết
nối với bên ngoài. HIDS thu nhập dữ liệu từ các host riêng, và xác định xâm nhập
bằng cách phân tích các lời gọi hàm hệ thống, nhật kí ứng dụng, sự thay đổi các file
hệ thống (file nhị phân, file mật khẩu, các cơ sở dữ liệu) và các sự kiện trên hệ
thống khác.
Ưu điểm của HIDS:
Có khả năng xác định User liên quan tới một sự kiện.
Có khả năng phát hiện các cuộc tấn công diễn ra trên một máy.
Có thể phân tích các dữ liệu mã hóa.
Cung cấp các thông tin về host trong lúc cuộc tấn công diễn ra trên
host này.
18
Hình 1.7 HIDS
Hạn chế của HIDS:
Khi hệ điều hành bị “hạ” do tấn công, đồng thời HIDS cũng bị “hạ”.
Phải được thiết lập trên từng host cần giám sát.
Không có khả năng phát hiện các cuộc dò quét mạng.
Cần tài nguyên trên host để hoạt động.
Có thể không hiệu quả khi bị tấn công DoS.
1.2.2.2 Các thành phần củahệ thống phát hiện đột nhập
Các hệ thống phát hiện đột nhập khác nhau thường dựa vào việc phát hiện
các dấu hiệu của xâm nhập trái phép, hoặc những hành động dị thường. Một hệ
thống phát hiện đột nhập điển hình thường gồm 3 thành phần chính: Bộ phận thu
thập thông tin, bộ phận phân tích và bộ phận phản ứng/cảnh báo, như minh họa trên
hình 1.8.
• Bộ phận thu nhập thông tin (Information collection): Thu thập các thông tin cho
phát hiện đột nhập, như các gói tin truyền trên mạng, các logs hệ thống.
• Bộ phận phân tích (Analysis) : Phân tích thông tin đã thu thập để nhận biết hành
động nào là tấn công, đột nhập.
• Bộ phận phản ứng/ cảnh báo (Response) : Cảnh báo tấn công, đột nhập được phân
tích ở trên đến người quản trị hệ thống.
19
Hình 1.8 Các thành phần của hệ thống phát hiện đột nhập
1.3 Ứng dụng đối sánh chuỗi trong phát hiện đột nhập
Các phương pháp phát hiện đột nhập thường được triển khai thành hai
bước: bước huấn luyện và bước kiểm tra. Trong bước huấn luyện, chúng ta thu
được một tập các hành vi bình thường của hệ thống hoặc tập các chữ ký (các mẫu)
đột nhập đã biết – những thông tin thường được biểu diễn dưới dạng các chuỗi.
Trong bước kiểm tra, các kỹ thuật đối sánh chuỗi khác nhau được áp dụng để so
sánh hành vi hiện tại của hệ thống với tập hành vi thu được ở bước huấn luyện, và
đưa ra kết quả hành vi hiện tại là đột nhập hay không. Độ chính xác và hiệu năng
của các phương pháp đối sánh chuỗi có ảnh hưởng quyết định đến hiệu quả của phát
hiện đột nhập.
Hình 1.9 mô tả bước kiểm tra của kỹ thuật phát hiện đột nhập dựa trên chữ
ký. Hành vi hiện tại của hệ thống trích trọn từ thông tin đầu vào (Audit Data) được
so sánh với tập các chữ ký đột nhập đã biết. Nếu tìm thấy sự trùng hợp, một đột
nhập được phát hiện.
Tương tự, hình 1.10 mô tả bước kiểm tra của kỹ thuật phát hiện đột nhập
dựa trên bất thường. Hành vi hiện tại của hệ thống được so sánh với tập các hành vi
bình thường để xác định hành vi hiện tại là bình thường hay bất thường.
20
Hình 1.9 Bước kiểm tra của phát hiện đột nhập dựa trên chữ ký
Hình 1.10 Bước kiểm tra của phát hiện đột nhập dựa trên bất thường
1.4 Mô tả bài toán của luận văn
Bài toán của luận văn là nghiên cứuthuật toán đối sánh chuỗi đa mẫu và
ứng dụng vào phát hiện đột nhập. Mô hình phát hiện đột nhập được sử dụng là mô
hình phát hiện đột nhập dựa vào chữ ký, như minh họa trên Hình 1.9.
Nội dung chính của luận văn gồm: nghiên cứu thuật toán, cài đặt và đánh
giá hiệu năng thực hiện của các thuật toán đối sánh chuỗi thông dụng (gồm thuật
toán Naïve, thuật toán Horspool, thuật toán BMH) và thuật toán đối sánh chuỗi đa
mẫu Aho Corasick; Trên cơ sở đánh giá hiệu năng, tích hợp thuật toán đối sánh
chuỗi có hiệu năng tốt nhất vào hệ thống phát hiện đột nhập mã mở Snort.
21
Hình 1.11 Mô hình mô tả bài toán luận văn
1.5 Kết chương
Chương 1 giới thiệu tổng quan về đối sánh chuỗi, khát quát về các dạng
tấn công, đột nhập và ứng dụng của đối sánh chuỗi vào phát hiện đột nhập.
Các phương pháp đối sánh chuỗi được sử dụng như một khâu chính trong
bước kiểm tra nhằm phát hiện các tấn công, đột nhập. Việc nghiên cứu sâu về các
kỹ thuật đối sánh chuỗi, đánh ưu nhược điểm của chúng và trên cơ sở đó lựa chọn
kỹ thuật thích hợp cho phát hiện đột nhập là nội dung của chương 2.
22
Chương 2: CÁC KỸ THUẬT ĐỐI SÁNH CHUỖI
Chương này trình bày sâu hơn về các kỹ thuật đối sánh chuỗi bao gồm:
cách phân loại, các phương pháp tiếp cận, một số kỹ thuật đối sánh chuỗi thông
dụng, và đối sánh chuỗi đa mẫu Aho-Corasick và đánh giá hiệu năng của các kỹ
thuật đối sánh chuỗi.
2.1 Phân loại các kỹ thuật đối sánh chuỗi
Có nhiều cách để phân loại các kỹ thuật đối sánh chuỗi. Căn cứ vào số
lượng mẫu sử dụng, các kỹ thuật đối sánh chuỗi có thể được chia thành 3 loại: đối
sánh sử dụng đơn mẫu, đối sánh sử dụng đa mẫu với số lượng có hạn, đối sánh sử
dụng đa mẫu với số lượng vô hạn.
Các kỹ thuật đối sánh chuỗi sử dụng đơn mẫu chỉ cho phép một mẫu trong
mỗi phép đối sánh.
• Một số kỹ thuật đối sánh chuỗi sử dụng đơn mẫu là: thuật toán sơ khai (Naïve string
matching), thuật toán Knuth – Morris – Pratt, thuật toán Boyer – Moore – Horspool,
thuật toán Rabin – Karp,…
Các kỹ thuật đối sánh chuỗi sử dụng đa mẫu với số lượng hữu hạn cho
phép một số mẫu nhất định trong mỗi phép đối sánh
• Một số kỹ thuật đối sánh chuỗi sử dụng đa mẫu với số lượng có hạn là: thuật toán
Commentz – Walter, thuật toán Aho – Corasick,…
Các kỹ thuật đối sánh chuỗi sử dụng đa mẫu với số lượng vô hạn cho phép
không hạn chế số mẫu nhất định trong mỗi phép đối sánh.
• Dĩ nhiên, các mẫu không được liệt kê cụ thể trong trường hợp này. Chúng thường
được biểu diễn bởi cấu trúc thông thường hoặc một biểu thức thông thường.
Ngoài cách phân loại trên còn có các cách phân loại khác như: Kỹ thuật
đối sánh chuỗi chính xác và Kỹ thuật đối sánh chuỗi gần đúng; Kỹ thuật đối sánh
chuỗi có tiền xử lý dữ liệu và Kỹ thuật xử lý chuỗi không có tiền xử lý dữ liệu; Kỹ
thuật xử lý chuỗi từ trái qua phải và Kỹ thuật xử lý chuỗi từ phải qua trái,…
23
2.2 Một số kỹ thuật đối sánh chuỗi thông dụng
2.2.1 Thuật toán đối sánh chuỗi sơ khai – Naïve string matching
2.2.1.1 Giới thiệu
Cách tiếp cận thuật toán sơ khai[11] chỉ đơn giản là thực hiện tất cả các
khả năng của mẫu P[1…m] trong văn bản T[1…n].
Cụ thể là chúng ta sẽ cố gắng dịch s = 0,1,…, n-m, lần liên tục và đối với
mỗi vòng dịch s, so sánh T[s+1…s+m] và P[1…m].
2.2.1.2 Tiền xử lý dữ liệu
Thuật toán đối sánh chuỗi sơ khai không cần bước tiền xử lý dữ liệu. Nó
thực hiện đối sánh trực tiếp trên dữ liệu thô của mẫu P và văn bản T.
2.2.1.3 Thuật toán
Kỹ thuật đối sánh sơ khai có thể được giải thích bằng đồ họa như là một
sự trượt của một mẫu P[1…m] trên một văn bản T[1…n] và ghi nhận đối với sự
dịch chuyển mà tất cả các kí tự trong mẫu khớp với các ký tự tương ứng trong văn
bản.
Thuật toán sơ khai được trình bày như sau:
Naïve-String-Matching(T,P) [11]
Đầu vào:
• Chuỗi văn bản T độ dài n.
• Chuỗi kí tự P độ dài m.
Đầu ra:
• Biến kiểu nguyên (vị trí xuất hiện của P trong T).
Định nghĩa biến:
• Biến nguyên m 0.
24
• Biến nguyên n 0.
• Mảng nguyên T, P.
1) n length[T]
2) m length[P]
3) Từ s = 0 đến s = n-m
4) Thực hiện: nếu P[1…m] = T[s+1…s+m]
5) Thì “Mẫu xuất hiện tại độ dịch s”
Cài đặt thuật toán:
Naïve- String – Matching(T,P)
2) n length[T]
3) mlength[P]
4) For s0 to (n-m) do
5) j1
6) While j m and T[s+j] = P[j] do
7) jj+1
8) If j>m then
9) Return valid shift s
10) Return no valid shift exist // Trường hợp P không xuất hiện trong T
2.2.1.4 Hiệu năng, độ phức tạp tính toán
a. Độ phức tạp tính toán
Thời gian chạy của thuật toán là O((n-m-1)*m)
b. Hiệu năng
- Trường hợp tốt nhất
Trường hợp xuất hiện sự trùng khớp ngay lần đối sánh đầu tiên.
Số lần thực hiện đối sánh: m.
- Trường hợp tồi nhất
Trường hợp không xuất hiện sự trùng khớp.
Số lần thực hiện đối sánh: ((n-m+1)*m).
2.2.1.5 Ví dụ
Sử dụng tài liệu tham khảo [2].
25
T : GCATCGCAGAGAGTATACAGTACG.
P : GCAGAGAG.
Lần thử đầu tiên
G C A T
1 2 3 4
G C A G
Lần thử thứ 2
G C A T
1
G C A
Lần thử thứ 3
G C A T
1
G C
Lần thử thứ 4
G C A T
1
G
Lần thử thứ 5
G C A T
Lần thử thứ 6
G C A T