Hệ thống phát hiện xâm nhập mã nguồn mở Snort là một công cụ có khả năng phát hiện được các xâm nhập trái phép và đưa ra những cảnh báo vào hệ thống, từ đó giúp cho các quản trị mạng có
Trang 1LUẬN VĂN THẠC SĨ KỸ THUẬT
Người hướng dẫn khoa học: PGS.TS NGUYỄN TẤN KHÔI
Đà Nẵng - Năm 2018
Trang 2LỜI CAM ĐOAN
Tôi cam đoan đây là công trình nghiên cứu của riêng tôi
Các số liệu, kết quả nêu trong luận văn là trung thực và chưa từng được ai công bố trong bất kỳ công trình nào khác
Tác giả luận văn
NGUYỄN VĨNH HUẾ
Trang 3TRANG TÓM TẮT LUẬN VĂN
Tên đề tài: XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO NGUY CƠ XÂM
NHẬP MẠNG TẠI TRUNG TÂM DỮ LIỆU ĐIỆN TỬ TỈNH QUẢNG BÌNH
Học viên:Nguyễn Vĩnh Huế Chuyên ngành: Khoa học máy tính
Mã số: 8480101 - Khóa: 34 Trường Đại học Bách khoa - ĐHĐN
Tóm tắt – Chúng ta đang sống trong thời đại của cuộc cách mạng Internet kết nối toàn cầu Mạng
Internet đã mở ra những cơ hội vô cùng to lớn cho con người trong công cuộc tìm kiếm tri thức, nhưng đồng thời cũng phát sinh một vấn đề quan trọng đó là đảm bảo sự an toàn của người sử dụng trên không gian mạng công khai đó Mọi tài nguyên của các tổ chức, cá nhân khi tham gia vào Internet đều có nhiều nguy cơ tiềm ẩn khả năng mất an toàn thông tin (ATTT) Vấn đề cấp thiết là đảm bảo ATTT cho tài nguyên thông tin của các tổ chức, cá nhân, doanh nghiệp khi tham gia vào môi trường Internet Hiện nay, các chương trình bảo mật, phòng chống virus, giám sát bảo vệ hệ thống đều có giá thành cao và được phát triển ở nước ngoài và hầu hết được tích hợp trên các thiết bị phần cứng nên việc khai thác các chức năng, hoặc người dùng tự phát triển mở rộng thêm chức năng của các chương trình này nhằm phục vụ cho công việc quản trị mạng bị hạn chế Hệ thống phát hiện xâm nhập mã nguồn mở Snort là một công cụ
có khả năng phát hiện được các xâm nhập trái phép và đưa ra những cảnh báo vào hệ thống, từ đó giúp cho các quản trị mạng có thể đưa ra được các phương pháp phòng, chống mất ATTT vào hệ thống
Project title: DEVELOP A SYSTEM FOR MONITORING AND WARNING OF NETWORK
INTRUSION RISK AT ELECTRONIC DATA CENTER IN QUANG BINH PROVINCE
Abstract - We are living in an Internet revolution connectting the world Internet brings people
lots of great opptunities in searching knowledge All sources of organizations and individuals that take part in the Internet can take risks of losing Information security The imperative problem thing is ensuring Information security for organizations and businessess using the internet Today, security programmes, virus prevention, and system protection cost highly and have been developing in foreign countries and are integrated in hardware devices, therefore exploittation of programmes’ function or the users develop and extend there programmes’ function for Internet management Snort open code intrusion detection system
is a tool that can detect illegal intrusion and give out alert so that internet manager can put sollutions of
protection and prevention of losing information security into the system
Trang 4MỤC LỤC
TRANG BÌA
LỜI CAM ĐOAN
TRANG TÓM TẮT LUẬN VĂN
MỤC LỤC
DANH MỤC CÁC TỪ VIẾT TẮT
DANH MỤC CÁC HÌNH
MỞ ĐẦU 1
1 Tổng quan về đề tài 1
2 Mục tiêu đề tài 2
3 Phương pháp thực hiện 2
4 Cấu trúc của luận văn 2
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 3
1.1 Hệ thống phát hiện xâm nhập IDS 3
1.1.1 Giới thiệu 3
1.1.2 Hệ thống phát hiện xâm nhập 3
1.1.3 Cấu trúc bên trong của một IDS 7
1.1.4 Đặt IDS trong hệ thống mạng 12
1.2 Hệ thống Snort 13
1.2.1 Giới thiệu 13
1.2.2 Luật trong Snort 14
1.3 Ngôn ngữ C# 20
1.3.1 Giới thiệu: 20
1.3.2 Đặc trưng của ngôn ngữ C# 20
1.3.3 Các loại ứng dụng C# 21
1.4 Kết chương 22
CHƯƠNG 2: PHÂN TÍCH VÀ CÀI ĐẶT HỆ THỐNG 23
2.1 Phân tích một số phương pháp tấn công 23
2.1.1 Scanning(Quét mạng) 23
2.1.2 Tấn công ARP (ARP attack) 25
2.1.3 Sniffer 30
Trang 52.1.4 Tấn công từ chối dịch vụ (DoS attack) 33
2.1.5 Tắt kết nối TCP (TCP Kill) 40
2.1.6 SQL Injection 43
2.2 Cài đặt và cấu hình Snort 48
2.2.1 Sơ đồ hệ thống 48
2.2.2 Cài đặt Snort 49
2.2.3 Cài đặt và cấu hình PHP 53
2.2.4 Cấu hình MySQL để chạy Snort 55
2.2.5 Cài đặt và cấu hình Barnyard2 56
2.2.6 Cài đặt và cấu hình BASE 56
2.2.7 Kiểm tra cài đặt 58
2.3 Xây dựng ứng dụng quản lí Snort 61
2.3.1 App-BASE : Quản lí dữ liệu Snort 61
2.3.2 AppRules : Quản lí Rules Snort 61
CHƯƠNG 3: TRIỂN KHAI KẾT QUẢ ĐẠT ĐƯỢC 63
3.1 Quét cổng (port scan) 63
3.2 Ping of Death 64
3.3 DDOS UDP 64
3.4 SYN attack 65
3.5 SQL Injection 66
3.6 Kết chương 66
KẾT LUẬN 67
TÀI LIỆU THAM KHẢO 68
QUYẾT ĐỊNH GIAO ĐỀ TÀI LUẬN VĂN THẠC SĨ (BẢN SAO) BẢN SAO KẾT LUẬN CỦA HỘI ĐỒNG, BẢN SAO NHẬN XÉT CỦA CÁC PHẢN BIỆN
Trang 6DANH SÁCH CÁC KÝ HIỆU, CHỮ VIẾT TẮT
ARP Address Resolution Protocol
BASE Basic Analysis and Security Engine
DDoS Distributed Denial-of-Service
IDS Intrusion Detection System
HTTPS Hyper Text Transfer Protocol Secure
ICMP Internet Control Message Protocol
TCP Transmission Control Protocol
Trang 7DANH MỤC CÁC HÌNH
Hình 1.1 Cấu trúc bên trong của một IDS 7
Hình 1.2 Mô hình máy tính được sử dụng như một Packet Sniffer 7
Hình 1.3 Một số Preprocessor trong Snort 8
Hình 1.4 Sơ đồ hoạt động của Detection Engine 10
Hình 1.5 Một số dạng Output phát sinh bởi IDS 12
Hình 1.6 Một số vị trí đặt IDS trong hệ thống mạng 13
Hình 1.7 Cấu trúc của Rule Header 16
Hình 2.1 Mô hình hoạt động của giao thức ARP 26
Hình 2.2 Mô hình hoạt động của kỹ thuật ARP Spoofing 28
Hình 2.3 ARP Spoofing sử dụng nemesis 29
Hình 2.4 Phòng chống ARP Spoofing với WinARP Watch 29
Hình 2.5 Sniffs username và password logon 31
Hình 2.6 Giải mã password logon với Cracker của Cain 31
Hình 2.7 Arp spoofing với Cain 32
Hình 2.8 Sniffs username và password trên ứng dụng Web với Cain 32
Hình 2.9 Sniffs username và passwdord trên ứng dụng Web với Ettercap 33
Hình 2.10 Màn hình làm việc của Nemesy 35
Hình 2.11 SYN attack với hping3 36
Hình 2.12 Quan sát các gói tin UDP flooding bằng Ethereal 36
Hình 2.13 Sơ đồ minh họa DDoS 37
Hình 2.14 Sơ đồ minh họa DRDoS 39
Hình 2.15 Mô hình bắt tay 3 bước 40
Hình 2.16 Mô hình tắt kết nối TCP với TCP Kill 42
Hình 2.17 Quan sát TCP kill bằng Ettercap 42
Hình 2.18 Sơ đồ hệ thống 48
Hình 2.19 Mô hình xử lí 49
Hình 2.20 Chạy file cài đặt Snort 50
Hình 2.21 File Rules của Snort 51
Hình 2.22 File preproc_rules của Snort 51
Hình 2.23 Cài đặt dịch vụ IISServer 53
Trang 8Hình 2.24 Cấu hình PHP trên IIS 54
Hình 2.25 Test cấu hình PHP 55
Hình 2.26 Màn hình khởi động snort thành công 59
Hình 2.27 Màn hình khởi động Barnyard2 thành công 60
Hình 2.28 Giao diện Web Base 60
Hình 2.29 Giao diện App-BASE 61
Hình 2.30 Giao diện AppRules 62
Hình 3.1 Port scan bằng Zenmap 63
Hình 3.2 Đáp ứng của hệ thống với Port scan 64
Hình 3.3 Đáp ứng của hệ thống với Ping of Death 64
Hình 3.4 DDOS UDP bằng UDP – Unicorn 65
Hình 3.5 Đáp ứng của hệ thống với DDOS UDP 65
Hình 3.6 Đáp ứng của hệ thống với SYN attack 66
Hình 3.7 Đáp ứng của IDS với một kiểu SQL Injection 66
Trang 9MỞ ĐẦU
1 Tổng quan về đề tài
Xã hội ngày càng phát triển, Internet trở thành một phần không thể thiếu đối với
từng cá nhân, doanh nghiệp, các tổ chức, trường học Internet đã trở thành công cụ, phương thức giúp cho các doanh nghiệp tiếp cận với khách hàng, cung cấp dịch vụ, quản lý dữ liệu của tổ chức một cách hiệu quả và nhanh chóng
Cùng với sự phát triển theo chiều hướng tốt, các cuộc tấn công và xâm nhập
mạng của những kẻ xấu cũng phát triển theo Không chỉ trên thế giới mà ở Việt Nam
vấn đề “An toàn thông tin” đã và đang trở thành vấn đề nóng bỏng Sự đa dạng và
phức tạp trong các loại hình tấn công đã gây ra nhiều khó khăn cho việc ngăn chặn và
phòng chống
Một hệ thống phòng chống và phát hiện xâm nhập sẽ giúp người quản trị có thể
luôn luôn theo dõi và thu thập nhiều thông tin đáng giá cho quá trình chống lại các
hình thức tấn công và xâm nhập đó
Hiện nay, các chương trình bảo mật, phòng chống virus, giám sát bảo vệ hệ
thống đều có giá thành cao và được phát triển ở nước ngoài Ngoài ra, các chương
trình giám sát hầu hết được tích hợp trên các thiết bị phần cứng nên việc khai thác
chức năng, hoặc người dùng tự phát triển mở rộng thêm chức năng của các chương
trình này nhằm phục vụ cho công việc quản trị mạng bị hạn chế
Vì thế, nhu cầu có được một hệ thống hỗ trợ giám sát và bảo vệ hệ thống mạng
trực quan nhằm giúp cho công việc quản trị mạng được tập trung và đạt hiệu quả cao
là rất cần thiết Đó là lý do mà tôi chọn nghiên cứu và thực hiện đề tài:
“Xây dựng hệ thống giám sát và cảnh báo nguy cơ xâm nhập mạng tại Trung tâm dữ liệu điện tử tỉnh Quảng Bình”
Trang 102 Mục tiêu đề tài
Nghiên cứu chung về hệ thống phát hiện xâm nhập, các đặc điểm, kiến trúc của một hệ thống phát hiện xâm nhập, đặc biệt là các kỹ thuật phát hiện xâm nhập đang được áp dụng
Nghiên cứu về hệ thống phát hiện xâm nhập Snort, cách cài đặt, cấu hình, triển khai trong hệ thống mạng
Phân tích các dấu hiệu của các hình thức tấn công, hình thành nên các luật tương ứng với đặc điểm của các dạng tấn công và xâm nhập đó
3 Phương pháp thực hiện
Nghiên cứu về lý thuyết phát hiện xâm nhập thông qua các tài liệu các bài báo cáo Nghiên cứu lý thuyết về Snort thông qua tài liệu từ trang chủ của Snort, tài liệu hướng dẫn cho người sử dụng từ Sourcefire và các nguồn tài liệu khác
Triển khai hệ thống trên máy ảo VMware Workstation, xây dựng hệ thống mạng đơn giản mô tả một hệ thống mạng nhỏ trong thực tế Triển khai các dịch vụ như trong
4 Cấu trúc của luận văn
Ngoài phần mở đầu, kết luận và tài liệu tham khảo trong luận văn gồm có các chương dưới đây
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
CHƯƠNG 2: PHÂN TÍCH VÀ CÀI ĐẶT HỆ THỐNG
CHƯƠNG 3: TRIỂN KHAI KẾT QUẢ ĐẠT ĐƯỢC
Trang 11Chương 1: CƠ SỞ LÝ THUYẾT 1.1 Hệ thống phát hiện xâm nhập IDS
1.1.1 Giới thiệu
Kỹ thuật phát hiện xâm nhập không phải là một kỹ thuật mới Vì nó đã được áp dụng nhiều trong các lĩnh vực khác nhau chứ không chỉ riêng lĩnh vực an toàn thông tin của mạng máy tính Ví dụ đơn giản nhất mà có thể thấy về kỹ thuật phát hiện xâm nhập đó là hệ thống cảnh báo bằng chuông trên ô tô Nguyên lý hoạt động rất đơn giản, hệ thống được bật lên và nếu có ai đó chạm vào chiếc ô tô thì còi sẽ hú để cảnh báo rằng có kẻ đang xâm nhập
Tương tự như các hệ thống tường lửa, hệ thống phát hiện xâm nhập được xây dựng
để bảo vệ các tài nguyên của hệ thống mạng trước những hacker không mong muốn Vậy tại sao lại cần một IDS trong khi đã có một hệ thống tường lửa rồi? Như ta đã biết rằng giống như trong thế giới thực tường lửa được dựng lên giống như con người xây tường, thuê vệ sĩ, mua khóa cửa để ngăn cản kẻ trộm xâm nhập vào hệ thống của mình Tuy nhiên dù có bảo vệ như thế nào cũng không đảm bảo rằng chúng ta có thể biết hết các phương pháp mà kẻ trộm có thể tấn công được Vì vậy ngoài hệ thống ngăn chặn kẻ xâm nhập ra (tường lửa) còn có thể triển khai các hệ thống cảnh báo như chuông báo động, camera quan sát, hệ thống cảnh báo
Tương tự như vậy trong hệ thống mạng, không ai có thể chắc chắn rằng các phần cứng và các chế độ bảo vệ khác có thể chặn được hết các cuộc tấn công cũng như biết được hết các phương pháp của hacker Chính vì vậy mà cần xây dựng một hệ thống IDS để phát hiện các dấu hiệu bất thường, cảnh báo khi có biểu hiện bất thường và giám sát các hoạt động ra vào hệ thống để phân tích và ngăn chặn kịp thời
1.1.2 Hệ thống phát hiện xâm nhập
Theo định nghĩa trong tài liệu CNSSI-4009 của Ủy ban An ninh Quốc gia của Hoa
Kỳ thì “intrusion” nghĩa là “hành động truy cập trái phép bằng cách vượt qua cơ chế bảo mật của hệ thống”
“Computer Intrusion” là hành động cố tình truy cập vào một máy tính mặc dù
không có sự cho phép hoặc tìm cách vượt qua quyền truy cập (đã có) để có thêm quyền truy cập vào các tài nguyên khác và thu thập thông tin
Trang 12“Intrusion Detection” là quá trình theo dõi các sự kiện xảy ra trong một hệ thống
máy tính hoặc trong một hệ thống mạng Sau đó phân tích các dấu hiệu của các sự cố
có thể xảy ra Các sự cố đó có thể là hành động vi phạm các chính sách bảo mật hoặc các tiêu chuẩn về an ninh của hệ thống hoặc cũng có thể là các mối đe dọa đến hệ thống của doanh nghiệp Nguyên nhân xảy ra các sự cố này có thể là do các phần mềm độc hại như virus, worm, trojan, spyware cũng có thể là hành động cố ý xâm nhập từ Internet hoặc vượt quá quyền truy cập thông thường Tuy vậy cũng có những nguyên nhân khách quan như người sử dụng gõ nhầm địa chỉ của một máy tính và cố gắng truy cập vào một hệ thống mà mình không được phép
Intrusion Detection Systems (IDS) có thể là một thiết bị phần cứng (các thiết bị
phát hiện xâm nhập của Cisco (Cisco IDSM-2 hoặc Cisco IPS 4200 Series Sensors)) hoặc cũng có thể là một ứng dụng phần mềm giúp giám sát máy tính, hệ thống mạng trước các hành động đe dọa đến hệ thống hoặc vi phạm chính sách an ninh và báo cáo lại cho người quản trị hệ thống Một hệ thống phát hiện xâm nhập cài đặt trên hệ thống mạng giống như một hệ thống cảnh báo chống trộm (burglaralarm) trong một ngôi nhà
Một số hệ thống phát hiện xâm nhập còn kiêm luôn cả chức năng ngăn chặn các mối đe dọa đó tuy nhiên điều đó có thể không cần thiết và cũng không phải là chức năng chính của của một hệ thống giám sát
Một hệ thống phát hiện xâm nhập cơ bản sẽ “xác định” các mối nguy hại, “ghi” lại thông tin về chúng và sau đó “báo cáo” lại các thông tin đó
Nói ngắn gọn về chức năng của một hệ thống phát hiện xâm nhập đó là “giám sát” (lưu lượng mạng), “cảnh báo” (báo cáo tình trạng mạng cho hệ thống và người quản trị), “bảo vệ” (dùng các thiết lập mặc định và cấu hình từ người quản trị mà có những hành động chống lại sự xâm nhập)
IDS có thể được phân loại theo chức năng thành 2 loại là Network-based IDS và Host-based IDS Mỗi loại có một cách tiếp cận riêng biệt để theo dõi và bảo vệ dữ liệu
và mỗi loại cũng có những ưu nhược điểm riêng
Network-based IDS
Hệ thống phát hiện xâm nhập dựa trên mạng hoạt động như một thiết bị độc lập trên mạng Nó thường được đặt ở các segment mạng hoặc các điểm kết nối giữa các
Trang 13vùng mạng khác nhau Nhờ đó nó có thể giám sát lưu lượng mạng từ nhiều host khác nhau trong vùng mạng đó NIDS có thể là một thiết bị phần cứng hoặc phần mềm
Về cấu trúc thì NIDS thường bao gồm một tập hợp các cảm biến (sensors) được đặt
ở các điểm khác nhau trong hệ thống mạng Các cảm biến này sẽ thực hiện giám sát lưu lượng mạng, thực hiện phân tích cục bộ lưu lượng mạng đó và báo cáo về cho trung tâm quản lý (Center Management Console)
Một số NIDS: Snort, Suricata, các NIDS của Cisco, Juniper
Ưu điểm của NIDS:
Quản lý được cả một network segment (gồm nhiều host) Chi phí thấp vì có thể giám sát cả một hệ thống mạng lớn với chỉ vài thiết bị (mạng được thiết kế tốt)
“Trong suốt” đối với cả người dùng và các attacker
Cài đặt và bảo trì đơn giản, không ảnh hưởng tới mạng
Nhược điểm của NIDS:
NIDS có thể gặp khó khăn trong việc xử lý tất cả các gói tin trên một mạng có kích thước lớn và mật độ lưu thông cao Điều này dẫn đến NIDS có thể sẽ không thể phát hiện ra một cuộc tấn công khi mạng đang ở trạng thái over-whelming (quá tải)
Bị hạn chế bởi switch Trên các mạng chuyển mạch hiện đại, các switch được
sử dụng nhiều để chia mạng lớn thành các segment nhỏ để dễ quản lý
Vì thế dẫn đến NIDS không thể thu thập được thông tin trong toàn hệ thống mạng Do chỉ kiểm tra trên segment mà nó kết nối trực tiếp nên nó không thể phát hiện tấn công trên một segment khác Vấn đề này dẫn đến việc doanh nghiệp phải mua một số lượng lớn cảm biến nếu muốn bao phủ toàn hệ thống mạng của họ, làm tăng chi phí
NIDS không thể phân tích được các thông tin đã bị mã hóa (SSL, SSH )
Một số hệ thống NIDS có thể gặp khó khăn với dạng tấn công phân mãnh gói
dữ liệu (fragmenting packets)
NIDS không thể phân biệt được một cuộc tấn công thành công hay thất bại Nó chỉ có thể phân biệt được có một cuộc tấn công đã được khởi xướng Điều này nghĩa là để biết được cuộc tấn công đó thành công hay thất bại người quản trị phải điều tra các máy chủ và xác định nó có bị xâm nhập hay không?
Trang 14Host-based IDS
Hệ thống phát hiện xâm nhập dựa trên máy chủ hoạt động trên một máy trạm đơn HIDS sẽ sử dụng các tài nguyên của máy chủ đó để theo dõi lưu lượng truy cập và phát hiện các cuộc tấn công nếu có Bằng cách này HIDS có thể theo dõi được tất cả các hoạt động trên host đó như tập tin log và những lưu lượng mạng ra vào host đó Ngoài ra nó còn theo dõi hệ điều hành, lịch sử sổ sách, các thông điệp báo lỗi của máy chủ
Không phải hầu hết các cuộc tấn công đều thông qua hệ thống mạng, nên không phải lúc nào NIDS cũng có thể phát hiện được cuộc tấn công trên một host Ví dụ, kẻ tấn công có quyền physical access, từ đó có thể xâm nhập vào host đó mà không cần tạo ra bất cứ network traffic nào
Một ưu điểm của HIDS so với NIDS đó là nó có thể ngăn chặn các cuộc tấn công phân mãnh (Fragmentation Attacks) Bởi vậy nên HIDS thường được cài đặt trên các máy chủ xung yếu của tổ chức, các server trong vùng DMZ (do là mục tiêu tấn công chính)
HIDS cũng thường theo dõi những gì thay đổi trên hệ thống như các thuộc tính của
hệ thống tập tin, các thuộc tính (kích thước, vị trí, quyền…) của tập tin, phát hiện tập tin mới được tạo ra hay xóa đi
Một số HIDS: Symantec ESM, OSSEC, Tripwire
Ưu điểm của HIDS:
Phát hiện các cuộc tấn công nên các máy chủ mà NIDS không thể phát hiện ra
Có thể giám sát các luồng traffic đã bị mã hóa
Không bị ảnh hưởng bởi các thiết bị chuyển mạch (switch)
Nhược điểm của NIDS:
Khó quản lý hơn do phải cài lên tất cả các host cần bảo vệ nên việc cấu hình, quản lý, cập nhật là một khối lượng lớn công việc cần thực hiện
HIDS không thể phát hiện việc quét mạng (network scan bằng nmap) do chỉ giám sát trên host mà nó được cài đặt
Có thể bị vô hiệu hóa bởi tấn công từ chối dịch vụ (DoS)
Chiếm tài nguyên hệ thống: Do cài đặt trên máy cần bảo vệ nên nó sẽ sử dụng tài nguyên của hệ thống như RAM, CPU, Hard Disk dẫn đến có thể làm giảm hiệu suất của việc giám sát
Trang 15HIDS sẽ “chết” khi hệ điều hành của host đó bị “chết”
1.1.3 Cấu trúc bên trong của một IDS
Hình 1.1 Cấu trúc bên trong của một IDS Mỗi IDS đều bao gồm các thành phần cơ bản sau:
Sensor (là một packet sniffer)
Preprocessors
Detection Engine
Output (Alerting System và Longging System)
Mỗi thành phần này làm việc với nhau để phát hiện các tấn công cụ thể và tạo ra các output đã được quy định trước
1.1.3.1 Packet Sniffer
Packet Sniffer là một thiết bị (có thể là phần cứng hoặc là phần mềm) được gắn vào trong hệ thống mạng, có chức năng lắng nghe tất cả các dữ liệu được trao đổi trên hệ thống mạng Các dữ liệu này sẽ được IDS dùng để phân tích nhằm phát hiện nguy cơ tấn công
Hình 1.2 Mô hình máy tính được sử dụng như một Packet Sniffer
Trang 16Sơ đồ trên mô tả một máy tính được sử dụng làm một Packet Sniffer Một điểm cần lưu ý là các máy tính này thường gắn 2 interface, đối với interface dùng để lắng nghe
dữ liệu trên mạng sẽ được đưa về promiscuous mode (hay còn gọi là trạng thái passsive), khi ở trạng thái này, card mạng sẽ lắng nghe tất cả các dữ liệu trao đổi trên mạng Interface còn lại được người quản trị sử dụng để theo dõi hoạt động của IDS
1.1.3.2 Preprocessors
Thành phần này bao gồm các bộ phận hoặc các plug-ins được gọi là “tiền xử lý” Các Preprocessor có nhiệm vụ sắp xếp hoặc chỉnh sửa gói dữ liệu trước khi chuyển cho bộ phận Detection Engine thực hiện tìm kiếm dấu hiện tấn công trong các gói tin này Một vài Preprocessor cũng thực thi việc phát hiện bằng cách tìm các dấu hiệu bất thường trong header của các gói tin và tạo ra các cảnh báo Bộ phận “tiền xử lý” là rất quan trọng trong bất kỳ IDS nào, chúng chuẩn bị các gói dữ liệu để Detection Engine phân tích dựa trên các luật (rule) được định nghĩa trước
Hình 1.3 Một số Preprocessor trong Snort Hacker có thể sử dụng nhiều kỹ thuật khác nhau để đánh lừa IDS, do đó Preprocessors ra đời có thể hạn chế những nguy cơ này Lấy một ví dụ, người quản trị thiết lập một luật tìm kiếm dấu hiệu (signature) “scripts/iisadmin” trong gói tin HTTP Nếu thực hiện so sánh chính xác chuỗi trên để nhận dạng tấn công thì người quản trị
có thể bị đánh lừa khi hacker thay đổi chuổi trên thành một số dạng như sau:
“scripts/./iisadmin”
“scripts/example/ /iisadmin”
Trang 17“scripts\iisadmin”
“scripts/.\iisadmin”
Để làm phức tạp hơn hacker có thể chèn vào trong URI các ký tự dạng hexa hoặc
ký tự Unicode đã được chuyển đổi hợp lệ từ chuỗi trên
Lưu ý: Sở dĩ hacker có thể làm như trên là do hầu hết các web server có thể hiểu được tất cả các chuỗi trên và có khả năng xử lý để trích ra chuỗi “scripts/iisadmin”
Do đó nếu IDS thực hiện tìm kiếm bằng cách so sánh chính xác thì nó không thể phát hiện được tấn công Một Preprocessor có thể sắp xếp lại chuỗi để IDS có khả năng phát hiện được
Preprocessors còn thực hiện chức năng lắp ghép (defragmentation) các gói tin hi một gói dữ liệu lớn được truyền đến một host trên mạng thì nó thường được phân mảnh (fragmentation) Nguyên nhân của vấn đề này là do mỗi công nghệ mạng đều có một con số quy định chiều dài tối đa mặc định của một gói dữ liệu được truyền tải trên mạng được gọi là Maximum Transfer Unit (MTU) Ví dụ như MTU của mạng thernet là 15 bytes, do đó nếu gởi gói dữ liệu lớn hơn 15 bytes thì nó sẽ được chia thành nhiều gói tin sao cho mỗi gói tin nhỏ hơn hoặc bằng 15 bytes Những hệ thống nhận các gói tin này đều phải khôi phục lại gói tin gốc Trong IDS, trước khi đối chiếu các luật để tìm dấu hiệu nhận dạng trong gói tin, cần phải ráp các gói tin lại Phân mảnh (fragmentation) gói tin là một kỹ thuật được hacker sử dụng để tấn công IDS
Preprocessors được sử dụng để bảo vệ IDS khỏi các cuộc tấn công vô chính nó Preprocessors của Snort IDS được đề cập trong đề tài có thể thực hiện lắp ghép gói tin, giải mã HTTP URI, … Những chức năng này là một phần rất quan trọng trong IDS
1.1.3.3 Detection Engine
Đây là thành phần quan trọng nhất trong IDS Trách nhiệm của nó là phát hiện có hành vi xâm nhập tồn tại trong gói tin hay không Bộ phận này sử dụng một trong hai phương pháp phân tích là Statistical Analysis và Signature Matching
Phương pháp Statistical Analysis không dựa trên các dấu hiệu được định nghĩa trước để phát hiện tấn công mà nó sẽ tự xây dựng một cơ sở dữ liệu các dấu hiện bất thường, trong phương pháp này sử dụng một số lý thuyết về Data Mining để phát hiện tấn công, đây cũng là nền tảng để xây dựng anomaly-based IDS
Trang 18Phương pháp Signature Matching là phương pháp phổ biến nhất hiện nay để xây dựng một IDS Snort IDS được đề cập trong đề tài sử dụng phương pháp Signature Matching Detection ngine sử dụng cơ sở dữ liệu các rule đã được định nghĩa cho mục đích này, nếu một gói tin trùng với dấu hiệu tấn công trong một rule thì một hành động phản ứng của IDS sẽ được thực hiện, hành động đó có thể là log gói tin hoặc phát sinh cảnh báo, ngược lại nếu gói tin không chứa nguy cơ tấn công thì sẽ bị loại bỏ (discard)
Hình 1.4 Sơ đồ hoạt động của Detection Engine Detection ngine là thành phần then chốt ảnh hưởng đến thời gian thực thi của IDS Phụ thuộc vào sức mạnh của máy tính cài IDS và bao nhiêu luật đã được định nghĩa, nó có thể tốn những khoảng thời gian khác nhau đối với các gói tin khác nhau Nếu lưu lượng mạng (traffic network) quá lớn khi một NIDS hoạt động, ta có thể mất vài gói tin và có phản ứng thời gian thực (real-time response) không chính xác Như vậy khi triển khai một NIDS người quản trị cần phải quan tâm đến các yếu tố như số lượng các luật, sức mạnh của máy tính đang chạy IDS, lưu lượng trên mạng
Lưu ý : Hệ thống phát hiện có thể đối chiếu các luật trên các phần khác nhau của gói tin Snort IDS có thể làm việc với các thành phần sau:
IP header của gói tin
Trang 19Header ở lớp Transport Header này bao gồm TCP, UDP header và các loại khác của lớp Transport Nó cũng có thể làm việc với ICMP Header
Header của gói ở tầng Application Một số ví dụ như DNS header, TP header, SMTP header và SNMP heade
Packet payload Điều này có nghĩa là người quản trị có thể tạo các luật dùng cho Detection ngine tìm một chuỗi bên trong dữ liệu của một gói tin
Trong Snort IDS, bộ phận Detection ngine hoạt động theo những cách khác nhau trên các phiên bản khác nhau của Snort Trong tất cả các phiên bản 1.x của Snort, Detection ngine dừng việc xử lý một gói tin khi nó đã phù hợp với một luật Điều này
có nghĩa là nếu một gói tin phù hợp với nhiều luật, chỉ có luật đầu tiên được áp dụng
mà không xem xét các luật còn lại Điều này làm nảy sinh một vấn đề, một luật có độ
ưu tiên thấp sẽ phát sinh một cảnh báo có độ ưu tiên thấp, cho dù những dấu hiệu cần thiết được phát hiện để phát sinh cảnh báo có độ ưu tiên cao nằm trong phần sau của gói tin Vấn đề này được điều chỉnh từ phiên bản 2.x trở đi, tất cả các luật đều được so sánh trên gói tin trước khi phát sinh cảnh báo Sau khi so sánh tất cả, luật có độ ưu tiên cao nhất sẽ được chọn để phát sinh cảnh báo Trong các phiên bản 2.x, Detection ngine cũng được viết lại để hoạt động nhanh hơn rất nhiều so với các phiên bản trước
1.1.3.4 Output (Alerting System và Logging System )
Phụ thuộc vào kết quả xử lý gói tin của Detection ngine, gói tin có thể được sử dụng để ghi lại các hành vi xâm nhập hoặc phát sinh cảnh báo Các thông tin được ghi lại có thể được lưu trong file text, file binary theo định dạng của chương trình tcpdump (là một packet sniffer), hoặc được lưu trong database
Trong thành phần này có một bộ phận gọi là Output module làm nhiệm vụ điều khiển kiểu output được phát sinh bởi Logging và Alerting System Phụ thuộc vào cấu hình, Output module có thể thực hiện một số việc như sau :
Tạo file log
Gởi một SNMP traps
Gởi các thông báo đến syslog
Ghi vào một database như MySQL, Oracle, …
Tạo Output dạng ML
Trang 20Gởi thông báo Server Message Block (SMB) đến các hệ thống indows
Có thể kết hợp với một số công cụ khác để gởi các cảnh báo qua email hoặc kết xuất ra giao diện web
Hình 1.5 Một số dạng Output phát sinh bởi IDS
1.1.4 Đặt IDS trong hệ thống mạng
Vấn đề cần quan tâm khi sử dụng IDS đó là đặt nó ở đâu trong hệ thống mạng sao cho các cảm biến được đặt có thể nhìn thấy tất cả các lưu lượng di chuyển trên hệ thống mạng
Điều này phụ thuộc vào mô hình mạng, có thể đặt IDS ở một hoặc nhiều vị trí Tùy thuộc vào loại xâm nhập muốn phát hiện, có thể là bên trong, bên ngoài, hoặc cả hai
Ví dụ, nếu cần phát hiện một tấn công từ bên ngoài, có một router kết nối ra Internet, thì nơi tốt nhất cần đặt IDS là nên trong Router hoặc tường lửa Nếu bạn có nhiều đường ra Internet, bạn có thể cần mỗi IDS tại mỗi điểm kết nối đó Tuy nhiên nếu cần phát hiện các nguy cơ từ bên trong, tốt nhất cần đặt IDS tại mỗi phân đoạn mạng (network segment)
Có một số trường hợp không cần có IDS trên tất cả các phân đoạn mạng và chỉ cần giới hạn tại một số vùng “nhạy cảm” Một điểm lưu ý khi triển khai thêm nhiều IDS là đồng nghĩa với việc chấp nhận hệ thống chậm hơn và tốn chi phí bảo trì Do đó chiến
Trang 21lược triển khai IDS phụ thuộc vào chính sách bảo mật và mức độ quan trọng của tài nguyên cần bảo vệ
Local Network
Theo Insecure.org (http://sectools.org/ids.html) [2] Snort là một số hệ thống phát hiện xâm nhập hàng đầu bằng phần mềm Snort là một sản phẩm IDS Open source của công ty SourceFire, họat động dựa trên một tập luật linh họat, thông qua phân tích các protocol, tìm kiếm nội dung và các bộ tiền xử lý (pre-processor) để phát hiện ra hàng ngàn lọai sâu (worm), các kiểu tấn công, quét cổng và những hành động đáng ngờ khác trên mạng
Thực tế là trong mấy năm gần đây đã có xu hướng sử dụng các sản phẩm IDS phần mềm thay cho các giải pháp phần cứng, điển hình là sản phẩm mã nguồn mở Snort Bởi vì, có hai yêu cầu chính khi triển khai một IDS đó là chi phí cùng với khả năng
Trang 22đáp ứng linh họat của nó trước sự phát triển nhanh chóng của công nghệ thông tin và Snort có thể đáp ứng rất tốt cả hai yêu cầu này Đó là một phần mềm mà ta có thể tải
về và sử dụng miễn phí theo các qui tắc GPL (GNU Genneral Public Lisene), cho nên yếu tố về chi phí hoàn toàn có thể yên tâm Ngòai ra Snort còn là một sản phẩm mã nguồn mở và có một cộng đồng phát triển đông đảo được quản lí chặt chẽ cho nên khi
có những dạng xâm nhập mới được phát hiện thì ngay lập tức được các nhà phát triển cảnh báo và cập nhật Snort Rules một cách nhanh chóng và các doanh nghiệp có thể thay đổi mã nguồn cho phù hợp với yêu cầu của mình Vì vậy Snort là phần mềm IDS mạnh mẽ và được yêu thích nhất hiện nay trên thế giới trong vấn đề phát hiện xâm nhập Đã có nhiều hội thảo bảo mật xoay quanh vấn đề triển khai và ứng dụng Snort trong công tác bảo mật Đã có một số công ty lớn đã triển khai thành công và chứng minh sự hiệu quả của Snort trong bảo mật mạng như Viettel, Motorola
Một hướng phát triển xa hơn trong bảo mật mạng là có thể phát triển IDS thành một IPS (Intrusion Prevention System) là một kỹ thuật an ninh mới, kết hợp các ưu điểm của kỹ thuật firewall với hệ thống phát hiện xâm nhập IDS có khả năng phát hiện
sự xâm nhập, các cuộc tấn công và tự động ngăn chặn các cuộc tấn công đó
Nghĩa là, IPS không đơn giản chỉ dò các cuộc tấn công, chúng có khả năng ngăn chặn hoặc cản trở các cuộc tấn công đó Chúng cho phép tổ chức ưu tiên, thực hiện các bước để ngăn chặn lại sự xâm nhập Phần lớn hệ thống IPS được đặt ở vành đai mạng,
đủ khả năng bảo vệ tất cả các thiết bị trong mạng
1.2.2 Luật trong Snort
“Luật” trong Snort ta có thể hiểu một cách đơn giản nó giống như các quy tắc và luật lệ trong thế giới thực Nghĩa là nó sẽ có phần mô tả một trạng thái và hành động gì
sẽ xảy ra khi trạng thái đó đúng Một trong những điểm đáng giá nhất của Snort đó là khả năng cho phép người sử dụng có thể tự viết các luật của riêng mình hoặc tùy biến các luật có sẵn cho phù hợp với hệ thống mạng của mình Ngoài một cơ sở dữ liệu lớn
mà người sử dụng có thể download từ trang chủ của Snort, người quản trị có thể tự phát triển các luật cho hệ thống của mình Thay vì phải phụ thuộc vào nhà cung cấp, một cơ quan bên ngoài, hoặc phải cập nhật khi có một cuộc tấn công mới hay một phương pháp khai thác lỗ hổng mới được phát hiện Người quản trị có thể viết riêng một luật dành cho hệ thống của mình khi nhìn thấy các lưu lượng mạng bất thường và
so sánh với bộ luật được cộng đồng phát triển Ưu điểm của việc tự viết các luật là có
Trang 23thể tùy biến và cập nhật một cách cực kỳ nhanh chóng khi hệ thống mạng có sự bất thường
Ví dụ: “Nếu có người cố gắng mở cửa ô tô thì còi sẽ hú.”
Phân tích ở đây ta hành động “còi hú” sẽ được thực hiện nếu có dấu hiệu là “có người cố gắng mở cửa ô tô”
Trong hệ thống mạng cũng vậy, ta không thể sử dụng ngôn ngữ tự nhiên hằng ngày
để mô tả dấu hiệu hay trạng thái của hệ thống mạng được Ví dụ: Nếu có một kết nối SSH có địa chỉ IP Public kết nối tới máy chủ web thì chặn lại Mặc dù đây là một mô
tả khá cụ thể, tuy nhiên Snort lại không thể hiểu được Luật trong Snort sẽ giúp ta dễ dàng mô tả dấu hiệu này theo ngôn ngữ mà Snort có thể hiểu được
Để biết cách viết một luật từ các dữ liệu của hệ thống ta cần phải hiểu cấu trúc của luật trong Snort như thế nào Một luật trong Snort được chia thành hai phần đó là phần header và options Phần header bao gồm: rule action, protocol, địa chỉ ip nguồn, địa chỉ ip đích, subnetmask, port nguồn, port đích Phần options bao gồm các thông điệp cảnh báo, thông tin các phần của gói tin sẽ được kiểm tra để xác định xem hành động nào sẽ được áp dụng
Rules được hình thành từ 02 thành phần chính là rules header và rules options
Trang 24Hình 1.7 Cấu trúc của Rule Header
Rule Action
Phần Header sẽ chứa các thông tin xác định ai, ở đâu, cái gì của một gói tin, cũng như phải làm gì nếu tất cả các thuộc tính trong luật được hiện lên Mục đầu tiên trong một luật đó chính là phần rule action, rule action sẽ nói cho Snort biết phải làm gì khi thấy các gói tin phù hợp với các luật đã được quy định sẵn Có 5 hành động mặc định trong Snort đó là: alert (cảnh báo), log (ghi lại log), pass (cho qua), active (kích hoạt), dynamic Ngoài ra nếu chạy Snort ở chế độ inline còn có thêm các tùy chọn bổ sung như drop, reject và sdrop
alert - tạo ra cảnh báo sử dụng phương pháp đã lựa chọn trước và sau đó ghi log lại các gói tin
log - ghi log lại các gói tin
pass - bỏ qua gói tin đó
active - cảnh báo và sau đó bật một dynamic rule khác để kiểm tra thêm điều kiện của gói tin
dynamic - duy trì trạng thái “nhàn rỗi” cho đến khi được kích hoạt bởi một active rule sau đó hành động như một log rule
drop - chặn gói tin đó và ghi log lại
reject - chặn gói tin, ghi log lại và gửi trả về một thông điệp
sdrop - chặn gói tin nhưng không ghi log lại
hành động do user tự định nghĩa
Protocol
Trường tiếp theo trong luật đó là protocol Có 4 giao thức mà Snort hiện đang phân tích các hành vi bất thường đó là TCP, UDP, ICMP và IP
Trang 25 IP Address
Mục tiếp theo của phần header đó là địa chỉ IP Các địa chỉ này dùng để kiểm tra nơi đi và nơi đến của một gói tin Địa chỉ ip đó có thể là địa chỉ của một máy đơn hoặc cũng có thể là địa chỉ của một lớp mạng Từ khóa “any” được sử dụng để định nghĩa một địa chỉ bất kỳ
Một địa chỉ ip sẽ được viết dưới dạng ip_address/netmask Điều này có nghĩa là nếu netmask là /24 thì lớp mạng đó là lớp mạng C, /16 là lớp mạng B hoặc /32 là chỉ một máy đơn Ví dụ: địa chỉ 192.168.1 /24 có nghĩa là một dải máy có địa chỉ IP từ 192.168.1.1-192.168.1.255
Trong hai địa chỉ IP trong một luật Snort thì sẽ có một địa chỉ IP nguồn và một địa chỉ IP đích Việc xác định đâu là địa chỉ nguồn, đâu là địa chỉ đích phụ thuộc vào “→” Ngoài ra toán tử phủ định có thể được áp dụng cho việc định địa chỉ IP Có nghĩa là khi sử dụng toán tử này thì Snort sẽ bỏ qua việc kiểm tra địa chỉ của gói tin đó Toán
tử đó là “!” Ngoài ra ta có thể định nghĩa một danh sách các địa chỉ IP bằng cách viết
liên tiếp chúng cách nhau bởi một dấu “,”
Ví dụ :
alert tcp any any → ![192.168.1.0/24, 172.16.0.0/16] 80 (msg:\ “Cho phep truy cap”)
Port
Port có thể được định nghĩa bằng nhiều cách Với từ khóa “any” giống như địa chỉ
IP để chỉ có thể sử dụng bất kỳ port nào Gán một port cố định ví dụ như gán kiểm tra
ở port 80 http hoặc port 22 ssh Ngoài ra ta cũng có thể sử dụng toán tử phủ định để bỏ qua một port nào đó hoặc liệt kê một dải các port
Ví dụ :
log udp any any → 192.168.1 /24 1:1 24 - port bất kỳ tới dãy port từ 1 - 1024
log udp any any → 192.168.1 /24 :6 - port bất kỳ tới dãy port nhỏ hơn 6 log udp any any → 192.168.1 /24 5 : - port bất kỳ tới dãy port lớn hơn 5
log udp any any → 192.168.1 /24 !6 :6 1 - port bất kỳ tới bất kỳ port nào, bỏ qua dãy port từ 6000 – 6010
Traffic Derection
Toán tử hướng “→” chỉ ra đâu là hướng nguồn, đâu là hướng đích Phần địa chỉ IP
và port ở phía bên trái của toán tử được coi như là địa chỉ nguồn và port nguồn, phần
Trang 26bên phải được coi như địa chỉ đích và port đích Ngoài ra còn có toán tử “<>” Snort sẽ xem cặp địa chỉ/port nguồn và đích là như nhau Nghĩa là nó sẽ ghi/phân tích ở cả hai phía của cuộc hội thoại
chấm phẩy “;”, phần đối số sẽ được tách ra bởi dấy hai chấm “:”
Massage(msg) : mô tả cảnh báo cho hệ thống, nó sẽ hiển thị khi người phân tích nhận các cảnh báo
VD : msg:”SURICATA HTTP request field missing colon”;
Signature identifier(sid): sử dụng để xác định tính duy nhất các rules được tạo Mỗi rules có một giá trị duy nhất và không trùng nhau Một số dải sid được xác đinh trước như sau:
0-1000000: sử dụng của Sourcefire VRT
2000001-2999999: sử dụng bởi Emerging Threats
3000000+: sử dụng khi tạo luật mới
Revision(rev): Là tùy chọn để xác định khi một rules được thay đổi Lúc một rules mới được tạo, tốt nhất nó nên được khai báo rev:1 để xác định nó là phiên bản đầu tiên của rules được tạo Thay vì tạo sid mới khi thay đổi một rules, khi tạo luật nên giữ nguyên sid và thay đổi rev của nó
Reference: cung cấp thêm thông tin thêm về luật được tạo Thông thường nó được thêm vào là các đường dẫn ra ngoài cung cấp cụ thể về thông tin các luật được tạo
reference: <reference name>,<reference>;
Priority: có giá trị từ 1 đến 10, là thứ tự ưu tiên khi phân tích dữ liệu của các rules 1 là giá trị cao nhất, ưu tiên nhất Mục đích chính là giúp giảm thiếu thời gian phân tích
Priority:<value>;
Trang 27Classification: sử dụng nhóm các loại rules vào các dạng tấn công mạng
classtype:<classification name>;
Content inspection: Là dấu hiệu được xác định để xác định các mối hiểm họa an ninh mạng có thể xảy ra Dấu hiệu có thể được sử dụng kết hợp nhiều dấu hiệu khác nhau
Perl compatible Regular expressions(PCRE): Trong một số trường hợp không thể sử dụng các phương pháp thông thường để nhận dạng các dấu hiệu tấn công mạng Đối với các trường hợp này, có thể sử dụng tới regex để xác định các dấu hiệu tấn công mạng Regex là một ngôn ngữ mạng trong việc xác đinh và nhận dạng các dạng chuỗi, ký tự … Hiện nay được sử dụng rộng rãi, đặc biệt là trong việc sử dụng nhận dạng dấu hiệu tấn công mạng của các sản phẩm an ninh an toàn thông tin
Alert ip any any -> any any (msg:“ mail”; 9])*@[A-Za-z0-9]+([_\.\-]?[A-Za-z0-9]+)*(\.[A-Za-z]+)+$/”; sid:3 1328; rev:1;) Flow rules: có 03 thành phần chính state options, directional options, and traffic modeling state Được sử dụng theo định dạng sau:
pcre:”/^[A-Za-z0-9]+([_\.\-]?[A-Za-z0-flow: <option>,<option>,<option>;
State options: có 2 giá trị, là established and stateless Established options chỉ phân tích khi có một kết nối TCP Stateless options sẽ kiểm tra không phụ thuộc vào kết nối được thành lập
Có 04 direction options:
To_server: luồng dữ liệu từ client tới server
Trang 28From_server: luồng dữ liệu từ server tới client
To_client: từ server tới client
From_client: từ client tới server
Giữa server và client phải được định nghĩa, xác định trong quá trình khai báo cấu hình
Cuối cùng traffic modeling states có 02 giá trị: no_stream và only_stream để xác định dữ liệu nào sẽ được reassembly stream và dữ liệu nào chỉ là gói tin thường
1.3 Ngôn ngữ C#
1.3.1 Giới thiệu:
C# (hay C sharp) là một ngôn ngữ lập trình đơn giản, được phát triển bởi đội ngũ
kỹ sư của Microsoft vào năm 2 , trong đó người dẫn đầu là Anders Hejlsberg và Scott Wiltamuth
C# là ngôn ngữ lập trình hiện đại, hướng đối tượng và nó được xây dựng trên nền tảng của hai ngôn ngữ mạnh nhất là C++ và Java
C# được thiết kế cho Common Language Infrastructure (CLI), mà gồm Executable Code và Runtime Environment, cho phép chúng ta sử dụng các ngôn ngữ high-level đa dạng trên các nền tảng và cấu trúc máy tính khác nhau
C# với sự hỗ trợ mạnh mẽ của NET Framework giúp cho việc tạo một ứng dụng Windows Forms hay WPF (Windows Presentation Foundation), trở nên rất dễ dàng
1.3.2 Đặc trưng của ngôn ngữ C#
Các đặc điểm để làm cho C# là ngôn ngữ lập trình chuyên nghiệp được sử dụng rộng rãi:
C# là ngôn ngữ đơn giản
Như ta đã biết thì ngôn ngữ C# dựng trên nền tảng C++ và Java nên ngôn ngữ C# khá đơn giản Nếu chúng ta thân thiện với C và C++ hoặc thậm chí là Java, chúng ta sẽ thấy C# khá giống về diện mạo, cú pháp, biểu thức, toán tử và những chức năng khác được lấy trực tiếp từ ngôn ngữ C và C++, nhưng nó đã được cải tiến để làm cho ngôn ngữ đơn giản hơn Một vài trong các sự cải tiến là loại bỏ các dư thừa, hay là thêm vào những cú pháp thay đổi
Trang 29 C# là ngôn ngữ hiện đại
Một vài khái niệm khá mới mẻ khá mơ hồ với các ngôn ngữ lập trình cũ, như xử lý ngoại lệ, những kiểu dữ liệu mở rộng, bảo mật mã nguồn v v Đây là những đặc tính được cho là của một ngôn ngữ hiện đại cần có Và C# chứa tất cả các đặt tính ta vừa nêu trên
C# là một ngôn ngữ lập trình thuần đối tượng
Lập trình hướng đối tượng(tiếng Anh: Object-oriented programming, viết tắt: OOP) là một phương pháp lập trình có 4 tính chất Đó là tính trừu tượng (abstraction), tính đóng gói (encapsulation), tính đa hình (polymorphism) và tính kế thừa (inheritance) C# hỗ trợ cho chúng ta tất cả những đặc tính trên
C# là một ngôn ngữ ít từ khóa
C được sử dụng để mô tả là ngôn ngữ sử dụng giới hạn những từ khóa (gồm khoảng 80 từ khóa và mười mấy kiểu dữ liệu xây dựng sẵn) Nếu bạn nghĩ rằng ngôn ngữ có càng nhiều từ khóa thì sẽ càng mạnh mẽ hơn Điều này không phải sự thật, lấy
ví dụ ngôn ngữ C# làm điển hình nhé Nếu bạn học sâu về C# bạn sẽ thấy rằng ngôn ngữ này có thể được sử dụng để làm bất cứ nhiệm vụ nào
Ngoài những đặc điểm trên thì còn một số ưu điểm nổi bật của C#:
C# có cấu trúc khá gần gũi với các ngôn ngữ lập trình truyền thống, nên cũng khá dể dàng tiếp cận và học nhanh với C#
C# có thể biên dịch trên nhiều nền tảng máy tính khác nhau
C# được xây dựng trên nền tảng của C++ và Java nên nó được thừa hưởng những ưu điểm của ngôn ngữ đó
C# là một phần của N T ramework nên được sự chống lưng khá lớn đến từ
bộ phận này
C# có IDE Visual Studio cùng nhiều plug-in vô cùng mạnh mẽ
1.3.3 Các loại ứng dụng C#
Ứng dụng console
Giao tiếp với người dùng bằng bàn phím
Không có giao diện đồ họa (GUI)
Ứng dụng Console là ứng dụng có giao diện text, chỉ xử lý nhập xuất trên màn hình Console, tương tự với các ứng dụng DOS trước đây
Trang 30Ứng dụng Console thường đơn giản, ta có thể nhanh chóng tạo chương trình hiển thị kết xuất trên màn hình Do đó, các minh hoạ, ví dụ ngắn gọn ta thường sử dụng dạng chương trình Console để thể hiện
Ứng dụng Windows Form
Giao tiếp với người dùng bằng bàn phím và mouse
Có giao diện đồ họa và xử lý sự kiện
Là ứng dụng được hiển thị với giao diện cửa sổ đồ họa Chúng ta chỉ cần kéo và thả các điều khiển (control) lên cửa sổ Form Visual Studio sẽ sinh mã trong chương trình
để tạo ra, hiển thị các thành phần trên cửa sổ
Ứng dụng Web
Kết hợp với ASP N T, C# đóng vài trò xử lý bên dưới (underlying code)
Có giao diện đồ họa và xử lý sự kiện
Môi trường NET cung cấp công nghệ ASP.NET giúp xây dựng những trang Web động Để tạo ra một trang ASP.N T, người lập trình sử dụng ngôn ngữ biên dịch như C# hoặc C# để viết mã Để đơn giản hóa quá trình xây dựng giao diện người dùng cho trang Web, NET giới thiệu công nghệ Webform Cách thức tạo ra các Web control tương tự như khi ta xây dựng ứng dụng trên Window Form
1.4 Kết chương
Chương này trình bày cơ sở lý thuyết về hệ thống phát hiện xâm nhập IDS, hệ thống Snort và ngôn ngữ C# để viết chương trình App-BASE, App-Rules hỗ trợ quản
lí, giám sát Snort
Trang 31Chương 2: PHÂN TÍCH VÀ CÀI ĐẶT HỆ THỐNG 2.1 Phân tích một số phương pháp tấn công
Một cách tổng quát, một cuộc tấn công xâm nhập hệ thống mạng có thể chia thành năm giai đoạn:
- Thăm dò (Reconnaissance) là giai đoạn tiền tấn công, trong đó hacker tìm kiếm
và tập trung các thông tin về hệ thống cần tấn công Kỹ thuật ootprint được sử dụng trong giai đoạn này Trong kỹ thuật footprint hacker sẽ cố gắng tìm kiếm nhiều nhất các thông tin liên quan đến mục tiêu bao gồm các doanh nghiệp, tổ chức và cá nhân, từ
đó hacker có thể xác định được sẽ tấn công và điểm yếu nào của hệ thống Thông tin đạt được trong giai đoạn này liên quan đến tên miền (domain), dãy địa chỉ mạng, địa chỉ email sử dụng trong domain Các công cụ thường dùng là whois (SmartWhois), nslookup, 1st email address spider
- Quét mạng (Scanning): Trong giai đoạn này, hacker bắt đầu tìm kiếm lỗi có thể khai thác trên hệ thống mục tiêu
- Truy cập hệ thống (Gaining Access) là giai đoạn khai thác lỗi và truy cập vào hệ thống
- Duy trì sự có mặt trong hệ thống (Maintaining Access) giai đoạn này hacker thực hiện các mục đích xâm nhập như là khai thác dữ liệu, đánh cắp thông tin
- Xoá dấu vết (Covering Tracks) hacker cố gắng xoá đi các dấu vết để không bị phát hiện là đã xâm nhập hệ thống
2.1.1 Scanning(Quét mạng)
2.1.1.1 Giới thiệu Scanning
Scanning hay quét mạng là giai đoạn không thể thiếu trong quá trình tấn công vào một hệ thống của hacker Kết quả đạt được trong giai đoạn này là hacker xác định được những máy nào đang hoạt động, các dịch vụ (sevices) đang chạy (running) và lắng nghe (listening), các cổng (port) đang mở, hệ điều hành đang chạy và các lỗi có thể khai thác trên hệ thống
2.1.1.2 Nguyên lí và phương pháp quét mạng
TCP Scan
Trên gói TCP có 16 bit dành cho Port Number điều đó có nghĩa nó có từ 1 – 65535 port Hacker không thể nào quét toàn bộ các port trên hệ thống mà chúng chỉ scan
Trang 32những port hay sử dụng nhất thường chỉ sử dụng quét từ port 1 tới port 1024 mà thôi Dựa vào các nguyên tắc truyền thông tin của TCP, có thể quét bằng nhưng phương thức sau đây để xác định port nào mở trên hệ thống
SYN Scan: còn gọi là kỹ thuật quét bán mở (half-open) Được dùng trong trường hợp bạn không thể mở một kết nối TCP đầy đủ Khi client gửi gói SYN với một thông số port nhất định tới server nếu server gửi về gói SYN/ACK thì client biết port đó trên server được mở Ngược lại là gói RST/SYN thì port đó trên server đóng
FIN Scan: Khi client chưa có kết nối tới server nhưng vẫn tạo ra gói FIN với số port nhất định gửi tới server cần scan Nếu server gửi về gói ACK thì client biết server mở port đó, nếu server gửi về gói RST thì client biết Server đóng port đó NULL Scan Sure: Client sẽ gửi tới server những gói TCP với số port cần scan
mà không chứa thông số flag nào, nếu server gửi lại gói RST thì port đó trên server bị đóng
XMAS Scan Sorry: Client sẽ gửi những gói TCP với số port nhất định cần scan chứa nhiều thông số flag như: IN, URG, PSH Nếu server trả về gói RST thì port
đó trên server bị đóng
TCP Connect: Phương thức này rất thực tế nó gửi đến server những gói tin yêu cầu kết nối thực tế tới các port cụ thể trên server Nếu server trả về gói SYN/ACK thì client biết port đó mở, nếu server gửi về gói RST/ACK client biết port đó trên server bị đóng
ACK Scan: dạng scan này nhằm mục đích tìm những Access Controll List trên server Client cố gắng kết nối tới server bằng gói ICMP nếu nhận được gói tin là Host Unreachable thì client sẽ hiểu port đó trên server đã bị lọc
UDP Scan
Kỹ thuật này gửi một gói tin UDP cho cổng đích Nếu cổng đích đáp ứng bằng một thông điệp "ICMP port unreachable ", cổng đã đóng Ngược lại, nếu không nhận được thông điệp trên, ta có thể suy ra cổng mở
2.1.1.3 Công cụ
Ping, NetScanTools, S_Ping ProPack: xác định một máy có đang hoạt động hay không
Trang 33Nmap, SuperScan: xác định các dịch vụ đang chạy, các cổng đang mở trên hệ thống
Các dạng Scan Nmap hỗ trợ:
Nmap –sT: trong đó chữ s – là scan, còn chữ T là dạng TCP scan
Nmap –sU: sử dụng UDP scan
Nmap –sS: sử dụng SYN scan
Nmap –sP: sử dụng Ping để scan
Nmap –sF: sử dụng FIN Scan
Nmap –sX: sử dụng phương thức XMAS scan
Nmap –sN: sử dụng phương thức NULL scan
Nmap –sV: sử dụng để scan tên các ứng dụng và version của nó
Các option cao cấp kết hợp với các dạng scan trong nmap
-O: sử dụng để biết hệ điều hành chạy trên máy chủ ví như ta dùng Nmap sử dụng phương thức scan là MAS Scan và đoán biết hệ điều hành của: www.quangbinh.gov.vn ta dùng câu lệnh: nmap –sX –O www.quangbinh.gov.vn -p: giải port sử dụng để scan
-F: Chỉ những port trong danh sách scan của Nmap
-V: Sử dụng Scan hai lần nhằm tăng độ tin cậy và hiệu quả của phương thức scan nào ta sử dụng
-P0: không sử dụng ping để Scan nhằm mục đích giảm thiểu các quá trình quét ngăn chặn scan trên các trang web hay máy chủ
2.1.1.4 Nhận xét
Có nhiều công cụ quét mạng trong đó Nmap là công cụ scan port mạnh và đã nổi danh từ lâu được giới hacker tin dùng Đây là phần mềm mã nguồn mở, dễ sử dụng này hỗ trợ toàn bộ các phương thức scan port, ngoài ra nó còn hỗ trợ các phương thức scan hostname, service chạy trên hệ thống… và hiện nay có cả giao diện đồ hoạ và giao diện command line cho người dùng, chạy trên cả môi trường UNIX và Windows
2.1.2 Tấn công ARP (ARP attack)
2.1.2.1 Khái niệm ARP
ARP viết tắt của từ Address Resolution Protocol ARP là giao thức giúp giải quyết
sự bất đồng bộ giữa địa chỉ luận lý (IP) và địa chỉ vật lý (MAC) Trong hệ thống mạng, điều kiện tiên quyết để trao đổi thông tin giữa các máy tính là máy tính gửi phải biết
Trang 34địa chỉ của máy tính nhận Nhưng địa chỉ IP (internet protocol) là địa chỉ luận lý ở lớp
3 của mô hình OSI, nên không giúp máy gửi xác định máy đích trong mạng LAN để
có thể truyền dữ liệu khi xuống lớp 2, vì vậy mà ở lớp 2 phải cần địa chỉ MAC (Media Access Control) để phân biệt giữa các máy tính Địa chỉ MAC do nhà sản xuất card mạng qui định và ứng với mỗi card mạng có một địa chỉ MAC duy nhất Giao thức ARP (Address Resolution Protocol) dùng để xác định địa chỉ MAC khi đã biết địa chỉ
IP Hay nói ngắn gọn là ARP ánh xạ tương ứng 32 bit địa chỉ IP với 48 bit địa chỉ MAC Nguyên tắc làm việc của ARP như sau: máy A gửi gói tin truy vấn phân giải địa chỉ MAC máy B (ARP query) dưới dạng broadcast, sử dụng địa chỉ MAC đích là broadcast FF:FF:FF:FF:FF:FF nên tất cả các máy trong LAN đều nhận được lời truy vấn này Máy có địa chỉ IP trùng khớp với địa chỉ IP máy B có trong gói tin truy vấn
sẽ phản hồi dạng unicast lại cho máy A
Hình 2.1 Mô hình hoạt động của giao thức ARP
Để tránh việc truy vấn địa chỉ MAC ở những lần gửi dữ liệu sau thì trong máy gửi
A lưu địa chỉ MAC của máy nhận trong một bảng local-ARP cache Khi trả lời gói dữ liệu truy vấn MAC của máy gửi A thì đồng thời máy nhận B cũng trích địa chỉ MAC của máy gửi A và lưu vào ARP cache của chính nó
Trang 352.1.2.2 ARP spoofing (ARP cache poisoning)
Bước 1: Hacker đóng vai trò là máy B gửi gói tin ARP request đến máy A với nội dung giả địa chỉ IP (IP Spoofing) nguồn là máy B và truy vấn địa chỉ MAC máy A Mục đích là cho máy A cập nhật trên bảng ARP của chính nó có địa chỉ IP máy B nhưng địa chỉ MAC là của máy hacker
Bước 2: tương tự bước 1, hacker đóng vai trò là máy A gửi gói tin ARP request đến máy B với nội dung giả địa chỉ IP nguồn là máy A và truy vấn địa chỉ MAC máy B Mục đích là cho máy B cập nhật trên bảng ARP của chính nó có địa chỉ IP máy A nhưng địa chỉ MAC là của máy hacker
Khi đó, mọi dữ liệu trao đổi giữa 2 máy A-B đều đi qua máy hacker trước Bảng ARP ở máy nạn nhân A, B cũng sẽ cập nhật lại sau một khoảng thời gian xác định 10 đến 20 phút phụ thuộc vào hệ điều hành Vì vậy, sau cùng một khoảng thời gian đó thì hacker cũng phải gửi những gói ARP request lặp lại 2 bước trên để duy trì sự giả mạo của anh ta ở 2 máy A, B
Trang 36` `
ARP re qu
est
Nguồn :[IP:máy _A,M
AC:m áy _H
acker]
Đích:[IP :m áy _B ,M
AC: ff :ff:
ff:ff:ff:ff:ff]
`
Máy A IP: 192.168.1.100
Máy B IP:192.168.1.101
Máy hacker IP: 192.168.1.102
ARP re ply
Nguồn :[IP :m áy _B,M
AC:m áy _B]
Đích:[IP :m áy _A ,M
AC:m áy _H ac ke r]
Hình 2.2 Mô hình hoạt động của kỹ thuật ARP Spoofing
Ở phương thức tấn công cao hơn hacker có thể làm “main in the middle” giữa một máy A trong cùng mạng LAN với máy hacker và các máy ngoài mạng Mục đích của hacker có thể là bắt tất cả dữ liệu từ máy A trao đổi với tất cả các máy ở ngoài mạng thông qua default gateway hoặc router Giả sử máy B là router hoặc default gateway Hacker sẽ biến máy của mình thành một router giả, bằng cách cấu hình máy sang trạng thái chuyển mọi gói dữ liệu (forwarding) mà anh ta nhận được từ máy A sang router thật (hoặc default gateway) và thực hiện thêm bước 1
Công cụ: Nemesis, Arpspoof
Công cụ nemesis chỉ gửi gói dữ liệu giả mạo ARP một lần Nếu duy trì spoofing thì phải gửi gói dữ liệu ARP spoofing liên tục Công cụ arpspoof cho phép làm điều này Hacker phải cho dữ liệu đi qua máy của chính mình trước rồi mới thực hiện lệnh arpspoof
# echo 1 > /proc/sys/net/ip_v4/ip_forward
# arpspoof [-t IP_máy_nhận_thông_tin_spoof] máy_bị_spoof
Nếu không có option -t thì mặc định là gửi cho tất cả các máy trong mạng LAN
Trang 37Hình 2.3 ARP Spoofing sử dụng nemesis Hacker phải cho dữ liệu đi qua máy của chính mình trước rồi mới thực hiện lệnh arpspoof
# echo 1 > /proc/sys/net/ip_v4/ip_forward
# arpspoof [-t IP_máy_nhận_thông_tin_spoof] máy_bị_spoof
Nếu không có option -t thì mặc định là gửi cho tất cả các máy trong mạng LAN Sau khi thực hiện ARP Spoofing, hacker có thể dùng chương trình bắt dữ liệu để bắt những dữ liệu trao đổi giữa 2 máy A-B (trong đó có username, password dưới dạng clear text của các chương trình telnet, ftp )
2.1.2.3 Dấu hiệu phát hiện
Xem bảng ARP nếu phát hiện có cùng 1 địa chỉ IP mà có nhiều hơn 1 địa chỉ MAC thì này đã bị spoofing Dùng công cụ theo dõi bảng ARP: ARP monitoring, WinARP Watch khi phát hiện ra có cặp IP-MAC nào không trùng với dữ liệu đã cập nhật trước
đó hoặc lưu trong cơ sở dữ liệu thì cảnh báo
Hình 2.4 Phòng chống ARP Spoofing với WinARP Watch Dùng lệnh trong DOS để xem tình trạng ARP: arp –a
Trang 382.1.2.4 Nhận xét và cách phòng chống
Đây là kiểu tấn công rất nguy hiểm vì nó là kỹ thuật tấn công cơ bản làm nền tảng cho các kiểu tấn công xâm nhập khác Hacker thực hiện kiểu tấn công này khá dễ dàng chỉ qua một vài thao tác nhờ vào sự trợ giúp của một số phần mềm Cain, Ettercap và kết quả là hacker trở thành “Man In The Middle” là người đứng ở giữa giao tiếp của các máy bị tấn công có thể bắt lấy dữ liệu (sniffing) hay thực hiện các mục đích khác Chống ARP spoofing chúng ta nên dùng OpenSH để mã hóa các giao thức như telnet, Rlogin, RSH, FTP, với web thì nên dùng HTTPS hi hacker có làm “man in the middle” bắt được tất cả dữ liệu trao đổi giữa 2 máy thì những dữ liệu đó đã được
2.1.3.1 Giới thiệu Sniffer và nguyên lý hoạt động
Sniffer được hiểu đơn giản là một chương trình cố gắng nghe ngóng các lưu lượng thông tin trên một hệ thống mạng Sniffer có thể được sử dụng như một công cụ để các nhà quản trị mạng theo dõi và bảo trì hệ thống mạng
Về mặt tiêu cực, sniffer được sử dụng như một công cụ với mục đích nghe lén các thông tin trên mạng để lấy các thông tin quan trọng
Những giao dịch trên mạng máy tính thông thường là những dữ liệu ở dạng nhị phân vì vậy để hiểu được dạng dữ liệu này, các chương trình sniffer phải có tính năng phân tích các giao thức (protocol analysis), cũng như tính năng giải mã (decode) các
dữ liệu ở dạng nhị phân để hiểu được chúng
Sniffer hoạt động chủ yếu dựa trên dạng tấn công ARP
Có hai dạng sniff là passive sniffing và active sniffing
Các công cụ sniffer làm việc trên một miền đụng độ (collision domain) gọi là passive sniffer Một collision domain là một mạng kết nối bằng các hub, các gói
dữ liệu (data packet) đến một cổng của hub sẽ được gửi đến tất cả các cổng còn lại
Trang 39của hệ thống mạng (broadcast) Vì vậy một sniffer cài đặt trên hệ thống có khả năng bắt tất cả các gói dữ liệu đó
Một cách để chống passive sniffing là thay thế những vị trí đặt hub bằng thiết bị switch Switch không broadcast các data packet trên toàn mạng LAN mà chỉ gửi các data packet này đến chính xác cổng cần gửi nhờ vào địa chỉ MAC Các sniffer trên một mạng lắp đặt switch phải dựa trên nguyên lý của tấn công ARP mới có thể bắt được các gói dữ liệu Các sniffer như vậy gọi là active sniffer
2.1.3.2 Công cụ
Một số công cụ sniffer Cain, Ettercap, dsniff, smac
Cain có thể bắt được username và password khi có quá trình logon trên mạng
Hình 2.5 Sniffs username và password logon
Dùng chức năng Craker của Cain để giải mã password logon
Hình 2.6 Giải mã password logon với Cracker của Cain Cain cũng có thể bắt được username và password trên các ứng dụng Web bằng cách là tấn công ARP trên máy nạn nhân
Trang 40Hình 2.7 Arp spoofing với Cain Khi máy nạn nhân đang bị tấn công ARP đăng nhập một ứng dụng Web thì username và password sẽ chuyển vế máy hacker
Hình 2.8 Sniffs username và password trên ứng dụng Web với Cain
Tương tự như Cain, ttercap cũng có thể bắt username và password trên các ứng dụng Web