Professional Documents
Culture Documents
Nhóm-12-Snort & Phát Hiện Xâm Nhập - Đăng Khôi
Nhóm-12-Snort & Phát Hiện Xâm Nhập - Đăng Khôi
Nhóm : 12
2.2.2. Packet logger mode (chế độ ghi log gói tin) ....................................................... 17
2.4. Rule............................................................................................................................. 22
Hệ thống IDS sẽ thu thập thông tin từ rất nhiều nguồn trong hệ thống được
bảo vệ sau đó tiến hành phân tích những thông tin đó theo các cách khác nhau để
phát hiện những xâm nhập trái phép và đưa ra những cảnh báo phù hợp.
Các hệ thống IDS có thể được đặt trước hoặc sau tường lửa, tùy theo mục
đích sử dụng.
Hệ thống giám sát lưu lượng hỗ trợ cho người quản trị mạng giám sát lưu
lượng trao đổi giữa các thiết bị mạng. Nó hoạt động thời gian thực và thể hiện lưu
lượng của các giao tiếp mạng (các giao tiếp của Router, Switch, Server, …), hoạt
động của CPU, RAM một cách trực quan thông qua những đồ thị, … Ðiều này
giúp người quản trị mạng có những phân tích tình trạng hoạt động của các thiết bị
mạng trong hệ thống một cách trực quan nhất.
Cảnh báo cũng có thể được lưu vào file (log file) hoặc vào cơ sở dữ liệu để
nhà quản trị mạng có thể xem lại. Cảnh báo có thể, hiện trên màn hình, khi đăng
nhập hoặc bằng email, tin nhắn điện thoại và bằng nhiều cách khác.
Bước 3: chương trình phát hiện nằm trong bộ cảm biến kiểm tra xem các gói tin
nào có dấu hiệu vi phạm hay không.
Bước 4: khi giao diện lệnh điều khiển nhận được cảnh báo nó sẽ gửi thông báo cho
một người hoặc một nhóm đã được chỉ định từ trước.
Bước 5: phản hồi được khởi tạo theo quy định ứng với xâm nhập này
Bước 6: cảnh báo được lưu lại để tham khảo trong tương lai.
Bước 7: một báo cáo chi tiết của các sự cố được tạo ra
Bước 8: cánh báo được so sánh với các dữ liệu khác để xác định xem đây có phải
cuộc tấn côn hay không
Cấu trúc hệ thống của IDS phụ thuộc vào kiểu phương pháp được sử dụng để
phát hiện xâm nhập, các cơ chế xử lý khác nhau được sử dụng đối với một IDS. Mô
hình cấu trúc chung cho các hệ IDS:
Các cảm biến (sensor): làm nhiệm vụ phát hiện các sự kiện có khả năng đe
dọa an ninh của hệ thống mạng, có chức năng tiếp nhận và rà quét nội dung
các gói tin trong mạng, so sánh nội dung với các mẫu có sẵn và phát hiện ra
các dấu hiệu tấn công
Giao diệm (console): là bộ phận làm nhiệm vụ tương tác với người quản trị,
nhận lệnh điều khiển hoạt động Sensor, Engine và đưa ra thông báo về cuộc
tấn công.
Khối xử lý (engine): có nhiệm vụ ghi lại tất cả các báo cáo về các sự kiện
được phát hiện bởi các Sensor vào một cơ sở dữ liệu và sử dụng một hệ
thống luật đã được định nghĩa để phân tích, sau đó đưa ra các cảnh báo trên
các sự kiện an ninh nhận được cho hệ thống hoặc người quản trị.
Phát hiện xâm nhập dựa trên các bất thường (Anomaly instrusion
detection).
Phát hiện xâm nhập dựa trên chữ ký hoặc phát hiện sự lạm dụng
(Signature-based / misuse instrusion detection)
Xây dựng hồ sơ của chế độ làm việc bình thường. Cần giám sát đối tượng
trong điều kiện bình thường trong một khoảng thời gian đủ dài để thu
thập dữ liệu huấn luyện
Giám sát hành vi hiện tại của hệ thống và cảnh báo nếu có khác biệt rõ
nét giữa hành vi hiện tại và hồ sơ của đối tượng
Ưu điểm
Phát hiện các cuộc tấn công biết trước.
Phát hiện các cuộc tấn công nội gián hoặc đánh cắp tài khoản dễ dàng.
Hệ thống dựa trên các cấu hình tùy chỉnh, nên rất khó để kẻ tấn công biết
chắc chắn hoạt động nào đặt cảnh báo và không đặt cảnh báo
Phát hiện xâm nhập thông qua học máy
Nhược điểm
Phương pháp phát hiện bất thường yêu cầu tập dữ liệu huấn luyện lớn
Phát hiện bất thường tạo ra một số lượng lớn về cảnh báo sai đối với các
hành vi chưa được dự đoán của người dung hay của mạng
Tỷ lệ cảnh báo sai tương đối cao so với phương pháp dựa trên lam dụng.
Hệ thống phát hiện xâm nhập lạm dụng xác định sự xâm nhập bằng cách liên
kết hợp giữa các sự kiện thu thập được với các mẫu hoặc dấu hiệu các cuộc tấn
công.
Ưu điểm
Có khả năng phát hiện tấn công, xâm nhập một cách hiệu quả
Tốc độ cao, yêu cầu tài nguyên tính toán tương đối thấp
Nhược Điểm
Không có khả năng phát hiện tấn công, xâm nhập mới, do chữ ký của
chúng chưa có trong cơ sở dữ liệu các chữ ký
Đòi hỏi nhiều công thức xây dựng và cập nhật cớ sở dữ liệu chữ ký/dấu
hiệu tấn công, xâm nhập
CHƯƠNG II: GIỚI THIỆU SNORT
2.1. Tổng quan về Snort
Snort là một hệ thống IDS/IPS thuộc dạng NIDS. Snort được Martin Roesch
nghiên cứu và phát triển từ năm 1998. Từ năm 2013 cho đến nay, công ty nổi tiếng
về mạng là Cisco đã mua lại Snort và tiếp tục phát triển nghiên cứu. Snort là một
công cụ có mã nguồn mờ, hoàn toàn miễn phí và có thể tải và cài đặt ở trên hầu hết
các hệ điều hành phổ biến hiện này: Linux/Unix, Ubuntu, MacOS, Window, …
Kiến trúc thiết kế của Snort được xây dựng theo kiểu module, tức là người dùng
hoàn toàn có thể thêm cho hệ thống Snort của mình bằng việc cài đặt hoặc viết
thêm mới các module. Số lượng rule của Snort hiện tại đã lên tới hàng nghìn rule
và luôn luôn được thêm hay cập nhật hằng tháng bởi Snort sở hữu cộng đồng user
đông đảo.
Tùy thuộc vào cấu trúc mạng, mà chúng ta sẽ xác định đặt các hệ thống IDS
như Snort. Vị trị đặt cũng phụ thuộc vào các việc chúng ta muốn phát hiện các hoạt
động xâm nhập nào.
- Nếu chúng ta muốn phát hiện các hoạt động xâm nhập từ bên ngoài và ta chỉ
có 1 bộ định tuyến đặt IDS ở trong Router hoặc FireWall.
- Nếu chúng ta có nhiều đường dẫn đến Internet Đặt IDS tại mỗi điểm vào.
- Vừa phát hiện cả ở bên trong và bên ngoài Đặt IDS tại mọi phân đoạn
(network segment.
Lưu ý: Việc đặt nhiều IDS, sẽ tốn nhiều chi phí cũng như bảo trì. Cho nên, tùy
thuộc vào mục đích, chính sách của công ty mà quyết định số lượng cũng như vị trí
đặt các IDS.
Hình 5: Các vị trí điển hình để cài đặt Snort
Hiển thị thêm cả header của lớp data link thì sử dụng tập lệnh: snort -vde.
Ngoài sử dụng file text, chúng ta cũng có thể ghi log dưới dạng file nhị phân
bằng cách sử dụng cờ b. Khi ghi file log ở chế độ nhị phân có thể tăng tốc độ bắt
gói tin của Snort nhanh hơn):
snort -b –l /snort/log/***.log (*** là tên file log).
Sử dụng câu lệnh sau để thự hiện đọc lại file log đã được lưu:
Các gói tin từ Internet khi đi vào trong hệ thống của chúng ta sẽ phải đi qua
hệ thống Snort. Đầu tin các gói tin sẽ gặp module Packet Decoder (giải mã gói tin).
Tiếp theo các gói tin sẽ được tiền xử lý tại module Preprocessors (tiền xử lý). Sau
khi xử lý xong, gói tin sẽ gặp module Detection Engine (công cụ phát hiện), tùy
thuộc vào cấu hình cũng như các tập rule của chúng ta mà module này sẽ quyết
định gói tin sẽ được đi vào sâu hơn hoặc bị loại bỏ (drop). Nếu gói tin được lưu
thông tiếp thì tại module Logging and Alerting System (ghi log và cảnh báo) sẽ
thực hiện show ra các cảnh báo và ghi log về các gói tin này. Khi các cảnh báo
được xác định, module cuối cùng Output Module (lưu trữ dữ liệu) sẽ thực hiện lưu
trữ lại các cảnh báo này.
2.3.2. Preprocessor
Mục tiêu của module này là xử lý qua dữ liệu trong các gói tin nhằm phục
vụ cho module Detection Engine (công cụ phát hiện). Các nhiệm vụ chính của
module này bao gồm
- Kết hợp lại các gói tin: Khi một lượng dữ liệu lớn được gửi đi, dữ liệu sẽ
không đóng gói toàn bộ vào một gói tin mà phải thực hiện việc phân mảnh,
chia gói tin ban đầu thành nhiều gói tin rồi mới gửi đi. Khi Snort nhận được
các gói tin này nó phải thực hiện việc ghép nối lại để có được dữ liệu nguyên
dạng ban đầu.
- Giải mã và chuẩn hóa giao thức: Một số module tiền xử lý của Snort phải
có nhiệm vụ giải mã và chỉnh sửa, sắp xếp lại các thông tin đầu vào nhằm
phục vụ mục đích đưa đến module detection Engine (công cụ phát hiện) phát
hiện có thể phát hiện được mà không bỏ sót. Hiện nay, Snort đã hỗ trợ việc
giải mã và chuẩn hóa cho các giao thức mạng thông dụng như: arp, rpc, http,
telnet.
- Phát hiện xâm nhập bất thường: Module tiền xử lý sẽ so sánh các gói tin
này với các plug -in (ví dự như RPC plug -in, HTTP plug-in, port scanning
plug -in, . . .). Các gói tin sẽ được kiểm tra hành vi xem có khớp với các
hành vi được nêu trong plug -in hay chưa, nếu đã khớp rồi, các gói tin này sẽ
được chuyển đến module phát hiện.
Vì hệ thống của chúng ta sẽ nhận được rất nhiều thông tin trên lưu lượng
mạng sử dụng thông thường, chính điều này có thể ảnh hưởng đến hiệu năng hoạt
động của Snort. Ngoài ra, hiệu năng của Snort có thể bị ảnh hưởng bởi các tác
nhân khac như: số lượng các rule, tải trên mạng, sức mạnh của hệ thống đang cài
đặt Snort, …
2.3.4. Logging and Alert System
Đầu vào của module này chính là đầu ra của các gói tin trong module trước
nó. Tùy thuộc vào việc module Detection Engine có nhận dạng gói tin này là gói
tin xâm nhập hay không. Nếu là gói tin xâm nhập, module sẽ thực hiện việc ghi log
hoặc là đưa ra cảnh báo. Snor phân loại 3 định logging như sau:
- Decoded: Dạng này log sẽ được xử lý thô nhằm tiết kiệm thời gian và cho
phép thực hiện nhanh.
- Nhị phân tcpdump: log dạn này sẽ được xử lý tương tự như tcpdump và ghi
vào đĩa cũng khá là nhanh chóng. Ghi log dạng này thì thích hợp hơn với các
hệ thống đòi hỏi performance cao.
- Cây thư mục IP: với dạng này, log sẽ được sắp xếp hệ thống theo cấu trúc
cây thư mục IP. Việc sắp xếp thành cấu trúc cây sẽ giúp cho người đọc dễ
đọc và dễ hiểu hơn.
2.3.5. Ouput
Đây là module cuối cùng trong cấu trúc các thành phần của Snort. Mục tiêu
của module này là lưu trữ các dữ liệu cuối cùng khi các gói tin vào trong Snort.
Tùy thuộc vào mong muốn cũng như cấu hình của chúng ta. Module này sẽ thực
hiện các nhiệm vụ như: Ghi log và lưu log vào cơ sở dữ liệu tập trung, Ghi log
File, …
2.4. Rule
2.4.1. Tổng quan về Rule
Tập rule trong Snort khá là đơn giản để viết, đọc hiểu hay áp dụng. Tuy
nhiên những rule này lại tương đối mạnh mẽ, nó có thể phát hiện được hầu hết tất
cả các xâm nhập vào trong mạng của hệ thống của chúng ta. Sau khi so sáng các
gói tin đi vào với các quy tắc hay với các rule trong tập rule, Snort sẽ thực hiện một
số hành động sau đây:
Log: Tuỳ theo dạng ghi log mà ta chọn thì các gói tin sẽ được ghi log theo
dạng đó.
Alert: Sinh ra một cảnh báo tùy theo thông điệp (msg) mà ta muốn hiển thị
khi cảnh báo.
Pass: Snort cho phép gói tin đó đi qua và đi vào trong mạng của hệ thống.
Header: chứa thông tin về hành động mà rule đó sẽ thực hiện khi phát hiện
ra có xâm nhập nằm trong gói tin và nó cũng chứa các tiêu chuẩn để áp dụng
rule với gói tin đó. Trình tự ưu tiên của các hành động trong Snort là:
activation dynamic alert pass log.
Option: chứa môt thông điệp (msg) cảnh báo và các thông tin về các phần
của gói tin dùng để tạo nên cảnh báo. Option chứa các tiêu chuẩn phụ thêm
để đối sánh luật với gói tin.
Payload detection rule options (các tùy chọn quy tắc phát hiện payload)
Hình 12: Thành phần của một rule
Non payload detection rule options (các tùy chọn quy tắc phát hiện không
payload)
Hình 13: Thành phần của một rule
Post-Detection rule options (tùy chọn quy tắc sau phát hiện)
Hình 14: Thành phần của một rule
CHƯƠNG III: CÀI ĐẶT VÀ THỬ NGHIỆM
3.1. Cài đặt và cấu hình
Để Snort có thể hoạt động như một hệ thống IDS/IPS, trước tiên ta phải cấu
hình file snort.conf trong thư mục Snort\etc\snort.conf sau khi download Snort từ
trang chủ như các bước cơ bản bên dưới đây:
Thiết lập địa chỉ mạng của hệ thống mà ta cần bảo vệ cần bảo vệ(thay đổi
any thành địa chỉ IP hoặc dải địa chỉ của máy bảo vệ).
Thiết lập đường dẫn đến thư mục chứa các tập rule
Hình 16: Thiết lập đường dẫn đến thư mục chứa các tập rule
Thiết lập đường dẫn đến thư mục chứa các file ghi log
Hình 17: Thiết lập đường dẫn đến thư mục chứa các tập rule
Thiết lập đường dẫn tới các thư mục dynamicpreprocessor với
dynamicengine
Hình 18: Thiết lập đường dẫn đến thư mục dynamicpreprocessor với dynamicengine
Hình 19: Thiết lập đường dẫn đến thư mục dynamicpreprocessor với dynamicengine
Xác định interface number của máy chạy Snort, sử dụng câu lệnh: snort -W
Hình 20: Thiết lập đường dẫn đến thư mục dynamicpreprocessor với dynamicengine
Hình 21: Xác định interface number của máy chạy Snort
Do sử dụng máy ảo để làm nên ở nhóm em sẽ demo trên máy kali cài Snort
3.2.2. Tấn công ICMP FLOOD
Tại thời điểm Snort đã sẵn sàng để chạy. ngoại trừ, nó không có bất kỳ quy
tắc nào được tải. Bây giờ chúng tôi viết các quy tắc sẽ cho phép snort phát hiện
một cuộc tấn công DoS. Mở tệp local.rules trong trình soạn thảo văn bản dưới
dạng root bằng lệnh sau:
alert icmp any any -> $HOME_NET any (msg:"ICMP flood"; sid:1000001;
rev:1; classtype: icmp-event; detection_filter:track by_dst, count 500, seconds
3;)
Rule Header
alert: Hành động quy tắc. Snort sẽ tạo cảnh báo khi điều kiện đã đặt
được đáp ứng
any: IP nguồn. Snort sẽ xem xét tất cả các nguồn.
any: Cổng nguồn. Snort sẽ xem xét tất cả các cổng
- >: Phương hướng. Từ nguồn đến đích
$HOME_NET: IP đích. Chúng tôi đang sử dụng giá trị HOME_NET từ
tệp snort. conf
any: Cảng đích. Snort sẽ xem xét tất cả các cổng trên mạng được bảo vệ
Rule Options
msg:” ICMP flood”: Snort sẽ bao gồm thông báo này cùng với cảnh báo
sid:1000001: ID quy tắc ngắn. Hãy nhớ rằng tất cả các số <1.000.000
đều được đặt trước, đây là lý do tại sao chúng tôi bắt đầu với 1000001
(bạn có thể sử dụng bất kỳ số nào, miễn là nó lớn hơn 1.000.000).
rev:1: Số sửa đổi. Tùy chọn này cho phép duy trì quy tắc dễ dàng hơn
classtype: icmp-event: Phân loại quy tắc dưới dạng “icmp-event”, một
trong các danh mục Snort được xác định trước. Tùy chọn này giúp tổ
chức quy tắc
detection_filter: track by_dst: Snort theo dõi địa chỉ IP đích để phát
hiện.
count 500: Nếu trong khoảng thời gian lấy mẫu, Snort phát hiện hơn 500
yêu cầu thì chúng tôi sẽ nhận được cảnh báo
seconds 3: thời gian lấy mẫu được đặt thành 3 giây
Bây giờ, hãy bắt đầu Snort ở chế độ IDS và yêu cầu nó hiển thị cảnh báo cho bảng
điều khiển:
Ở đây chúng ta đang trỏ Snort đến tệp cấu hình mà nó sẽ sử dụng (-c) và chỉ
định giao diện (-i eth0). Tùy chọn bảng điều khiển -A in cảnh báo ra đầu ra tiêu
chuẩn. Chúng ta không thấy bất kỳ đầu ra nào khi chúng ta nhập lệnh vì Snort
không phát hiện thấy bất kỳ hoạt động nào được chỉ định trong quy tắc chúng tôi
đã viết. Chúng ta tạo ra một số hoạt động và xem liệu quy tắc của chúng tôi có
hoạt động hay không. Chúng ta khởi chạy máy ảo của chúng ta
Sau đó ta sử dụng công cụ Hping3 để tiến hành tấn công IMCP flood trên
máy nạn nhân bằng lệnh:
Chúng tôi cũng có thể thấy địa chỉ IP nguồn của máy chủ chịu trách nhiệm
về hoạt động tạo cảnh báo.
Hình 29: Thông số Snort
Trong quy tắc này, chúng tôi đã thay đổi giao thức thành TCP và đặt số cổng
đích là 80. Cờ từ khóa kiểm tra xem có các bit cờ TCP cụ thể (trong trường hợp
này là cờ SYN) hay không. Khoảng thời gian lấy mẫu được đặt thành 10 giây.
Nếu trong khoảng thời gian này có hơn 20 yêu cầu được phát hiện thì chúng tôi sẽ
nhận được cảnh báo.
Chạy snort như bước ở trên. Ở đây ta sẽ sử dụng công cụ slowhttptest thực
hiện tấn công bằng lệnh:
Ở kết qua trên slowhttptest cho thấy serivce của server nạn nhận vẫn còn
hoạt động và vẫn truy cập được vào trang server nhưng nếu ta tăng số lượng kết
nối c lên 500 thì người dùng không thể truy cập bằng lệnh:
Ta thu được kết quả tại bên màn console của snort thông báo tấn công SYN Flood
Hình 33: Kết quả thu được của snort phát hiện SYN Flood
Kết quả thu được của snort phát hiện SYN Flood.
Ta sẽ thêm một file rules mới có tên là XSS-injection.rules trong folder fules
với các luật như sau:
Ở đây chúng ta sẽ thực hiện demo trên web DVWA được cài đặt trên máy
snort để giám sát. Vào xampp bật Appache và Mysql. Mở cmd gõ ipconfig
để xem ip máy snort
Ở máy ảo Ubuntu thực hiện vào trang DVWA trên máy snort và chọn XSS(
Reflected)
Hình 37. Khởi chạy DVWA trên máy ubuntu