1. Snort - Detecting Intrusions
2. Snort - A Sniffer
3. Snort - A Preprocessor
Phát hiện xâm nhập - Detecting Intrusions
Phát hiện xâm nhập đơn giản là phát hiện những tín hiệu , biểu hiện của người
xâm nhập trước khi thiệt hại xảy ra như các services bị denied hay mất dữ liệu
và chúng ta có thể ngăn chặn thông qua các kĩ thuật khác nhau. Config những
log của hệ thống mà lưu giữ những thông tin về services, user hay data. Người
quản trị có thể phát hiện những thông tin lý thú trong các log này, nó thực sự
quan trọng khi coi các log và là bước đầu tiên cơ bản nhất để phát hiện xâm
nhập và system log đã cho thấy giá trị thực sự của nó
Kế tiếp của sự phát hiện xâm nhập là dùng các tools tự động thường được xem
là 1 HIDS ( host-based intrusion detection).HIDS tools bao gồm các software
antivirus, persional firewall, NIDS đựơc cài đặt trên các host và nhiều software
bảo vệ chống tràn bộ đệm hoặc sự cố gắng bẻ gãy policy của attacker
Và cuối cùng là NIDS
Ví dụ về các HIDS
NIDS - Network Instrusion Detection System là gì ?
Trên cấp độ căn bản, phát hiện xâm nhập được xem như là 1 tiến trình được
quyết định khi 1 người không xác chứng thực đang cố gắng để bẻ gãy hệ thống
của bạn. Phát hiện những kết nối không hợp lệ là bước khởi đầu tốt nhưng
không phải là tẩt cả câu chuyện. Những hệ thống như Snort có thể phát hiện
những sự cố gắng đang login vào hệ thống, truy cập vào những vùng share
không được bảo vệ và nhiều điều khác nữa, nhưng nhiều loại xâm nhập không
rõ ràng để chúng ta có thể phát hiện dễ dàng như là các các cuộc tấn công dùng
phương pháp DoS tuy nó không thiệt hại nhiều chỉ chiếm bandwidth và Cpu,
dung lượng ổ cứng trên IDS nhưng nó cũng là tín hiệu để có biện pháp phòng
chống hữu hiệu
NIDS như Snort có thể scan network traffic để phát hiện những tín hiệu nghi
ngờ và các gói dữ liệu xấu, và bạn cũng có thể dùng những tools khác như
Tcpdump hay ethereal để để xem các luồng thông tin trên các subnet khác nhau,
từ những tools này chúng ta có thể sniff các packet để phân tích và debug hệ
thống
Một IDS sẽ kiểm tra tất cả các packet đi qua hệ thống và quyết định packet có
vấn đề khả nghi. Bằng cách nào nó có thể biết packet đó khả nghi ? như Snort sẽ
có các danh sách các loại packet được mô tả tỷ mỉ giúp hệ thống dựa vào đó mà
phán quyết packet nào khả nghi ví dụ như nếu bạn nhận được 1 gói ICMP có
kích thước lớn hơn bình thường và bạn có thể đoán được 1 người nào đó đang
cố gắng ping of death vào mạng của bạn hoặc như bạn nhận đuợc các packet
đựơc phân mảnh ra cực kì ngắn bạn cũng có thể suy ra rằng ai đó đang dùng kĩ
thuật tấn công phản hồi làm đảo lộn các gói để lừa firewall thường đuợc gọi là
fragmentation attack. Snort cũng như các IDS khác đuợc trang bị hàng ngàn tình
huống để nhận dạng tấn công và đuợc cập nhật thường xuyên trên Snort
website. Snort và các IDS khác thực sự quan trọng và là lựa chọn hàng đầu để
phòng thủ, nếu một attacker xâm nhập và Server của bạn, bạn có thể phát hiện ở
system log, mặc dù nhiều attacker tinh ranh xóa đi log của bạn
Ví dụ đây là mô hình của NIDS
Trong đó:
- IDS sensor: Giám sát các traffic ở các segment / zone, gửi dữ liệu về centralize
database server
- Centralize database server: nơi tập trung các dữ liệu lấy từ sensor vào database
(mysql chẳng hạn)
- User interface: admin dùng giao diện web UI để giám sát
Và đây là các module của nó ở mức luận lý
Giải thích cụ thể hơn 1 chút:
Gói tin bị capture từ sensor - host system or network sniffer (có thể là ở cấp độ
host hoặc là cấp độ mạng) sẽ được chuyển qua pre-processing
Pre-processing: gồm bộ phận decoder và preprocess:
- Decoder: đọc packet, nhận biết các trường trong packet
- Preprocess: sắp xếp hoặc modify lại packet trước khi đi vào detection engine.
Một số module này có khả năng phát hiện các packet dị thường trong header và
sinh ra alert. Ngoài ra, nó có thể tái định dạng gói tin (defragment), sắp xếp lại
chuỗi.
Detection engine: xảy ra quá trình phân tích packet: so sánh mẫu (signature
matching) hoặc phân tích các dị thường trong packet (statictical analysis) để đưa
ra output (alert manager) quyết định.
Knowledge base: database signature.
Long-term storage: nơi chứa các phát hiện dị thường của packet (không được
định nghĩa trước)
Response manager: thực thi đáp ứng của alert manager như: ghi log, popup
GUI: giao diện đồ họa tương tác.
Nhìn vào các sơ đồ trên ta có thể hình dung được phần nào về hệ thống của IDS,
IDS can thiệp vào phần payload của các packet sâu hơn là các firewall, hình
minh hoạ sau giúp ta phần biệt firewall và IDS dễ dàng hơn, rất dễ hiểu phần
đầu là việc của firewall còn phần sau IDS làm tiếp việc kiểm tra của nó
Tại sao Snort là một NIDS ?
Snort được coi như là NIDS mang lại nhiều lợi ích và là 1 NIDS mạnh mẽ phù
hợp cho nhiều công ty vì nhiều lý do
Giá cả
Là một software mã nguồn mở và tất nhiên là free nhưng dễ dùng đựơc đóng
gói thành nhiều sản phẩm phù hợp cho từng doanh nghiệp. Snort đuợc phát triển
do công ty Soucefire điều hành bởi Martin Roesch. Hiện tại công ty Check point
đã mua lại Soucefire với giá 225 triệu USD
Ổn định, Nhanh, Mạnh mẽ
Ngay từ đầu đây là mục đích chính để các nhà phát triển Snort luôn luôn giữ nó
nhỏ gọn, nhanh, và trong sáng dễ dùng, không chiếm dụng nhiều đường truyền.
Tính năng tiền xử lý
Dùng để xử lý trước các message trong network ở thời gian thực tăng khả năng
nhận dạng các packet nghi ngờ, tăng khả năng nhận diện attacker dùng các kĩ
thuật tấn công nhằm đánh lạc hướng IDS
Tính Uyển Chuyển
Có thể dễ dàng thiết lập những rules trên những mode khác nhau phù hợp với
thực trạng của công ty. Có thể dùng các tools để quản lý tập trung như ACID
hay SnortCenter. Nhiều Scripts có thể plug-ins để mở rộng chức năng Snort có
thể tạo những Access Control List tự động trên các thiết bị Cisco routers là 1 ví
dụ điển hình
Được Support mạnh mẽ
Nhiều công ty thường xuyên test và kiểm tra các lỗ hổng của Snort đưa ra nhiều
biện pháp khắc phục như CERT và SANS. Là sản phẩm nguồn mở nên được
support rất nhiều bởi cộng đồng người sử dụng trên internet và các thông báo sẽ
gửi đến từng người sử dụng qua mail nếu đăng kí và quan tâm đến Snort.
TÀI LIỆU THAM KHẢO: SNORT COOKBOOK OREILLY, SNORT
INSTRUSION DETECTION 2.0 SYNGRESS
Bài viết sử dụng 1 số hình ảnh của omicron trong bài IDS/IDP vs firewall
::: Phần 2 Cài Đặt Và Cấu Hình Snort:::
Trong phần này em sẽ trình bày các kĩ thuật thường dùng để bắt các packet và
phân tích nội dung của chúng, các kinh nghiệm cài đặt và sử dụng. Em sẽ bắt
đầu với cách sử dụng Snort như là Sniffer, Packet logger và cuối cùng là sử
dụng Snort thực sự là NIDS
2.1.Vài dòng về Snort
Ngày nay Snort có lẽ là sản phẩn IDS mã nguồn mở nổi tiếng nhất. Snort đuợc
thiết kế dùng command line và nó có thể tích hợp chung với các sản phẩm khác
và được dùng trên nhiều platforms khác nhau .
Snort lần đầu tiên được phát triển năm 1998 lúc đó chức năng chính của nó là
sniff các packet và đến nay nó phát triển vượt bậc với nhiều tính năng mạnh như
đã biết. Hàng tuần Snort được download bởi hàng ngàn người và các nhà phát
triển.Hiện nay nó được sử dụng như là IDS từ người dùng nhỏ đến các công ty
lớn trên toàn thế giới trên nhiều platform khác nhau như
Windows,FreeBSD,Linux,Solaris
2.2.Cài Đặt Snort
Chúng ta có thể cài đặt Snort từ Souce code hay là các gói RPM .Theo kinh
nghiệm nên download source code và sau đó biên dịch để cài đặt hơn là dùng
các gói binary có sẵn. Ta có thể config Snort kết hợp với MySQL. Hiện tại
phiên bản mới nhất của Snort là 2.4.3 ngày 18/10/05 và khuyên nên dùng bản
này trước đó ngày 6/10/05 CERT và SANS đã phát hiện lỗ hổng của Snort trong
phần tiền xử lý Back Orifice.
2.2.1Cài đặt từ Source code
Cài Snort khá dễ dàng, có nhiều tuỳ chọn phù hợp với nhu cầu ngừơi dùng;
phần quan trọng nhất của Snort là kết hợp với nhiều database để lưu trữ.
Download và giải nén Snort từ địa chỉ . tôi thường cài đặt
vào thư mục /usr/local/src bạn có thể sử dụng các lệnh sau để cài đặt
$ tar -xvft Snort-2.4.3.tar.gz
$ cd Snort-2.4.3
$ ./ configure
$ make
$ make install
Nó sẽ cài vào thư mục /usr/local/bin, mọi user có thể chạy nó. Nếu nó không
chạy lệnh configure sẽ thông báo cho bạn biết. Hầu hết các trường hợp đều do 2
thư viện libpcap và PCRE ( pert-compatible regular Expression ) có thể
download libpcap ở và PCRE ở
2.2.2 Cài đặt trên windows
Nếu muốn sử dụng Snort trên Windows bạn phải download thư viện winpcap từ
địa chỉ . Sau khi cài đặt winpcap rồi ta sẽ download bản
cho windows ỏ Snort sẽ chạy với các
dòng lệnh trên windows
Một phiên bản khác có thể download từ địa chỉ được quản
lý bởi Michael E.Steele và tất nhiên cũng free. Bản dùng cho windows làm việc
tốt với cơ sở dữ liệu Microsoft SQL server và cũng có rất nhiều tài liệu về Snort
trên website này rất bổ ích.
Nhiều cuộc thảo luận dài diễn ra bàn luận về các hệ điều hành dùng Snort cái
nào nhanh nhất. Tổng hợp từ nhiều nguồn tin từ các người dùng bằng cách đo
điểm benchmarks chỉ ra rằng bản dùng cho windows nhanh hơn trên Linux và
BSD
Các option trong câu lệnh của Snort
Các option này cũng được mô tả rất kĩ trong file config của Snort ,nếu chỉ muốn
thử và tìm hiểu thì ta nên dùng các command line còn nếu muốn lưu giữ luôn
trong file lúc setting nên vào config file
-A altert-mode
Nhiều mode được hỗ trợ ở đây như : fast , full, none, unsock
-b
Log packet dạng tcpdump. file với format dạng tcmdump sẽ nhỏ hơn và là
phương pháp tốt nhất khi cần lưu trữ với số luợng lớn log data và packet. dĩ
nhiên nhỏ sẽ nhanh hơn và là sự lựa chọn trên các mạng tốc độ cao
-B address-conversion-mask
Giúp ẩn địa chỉ thực sự của internal network trong binary logs
-c config-file
Chỉ định conifg file nào muốn sử dụng, cần thiết khi Snort chạy ở mode NIDS
-C
In ra những kí tự tìm thấy trong packet payload, có thể hiển thị ở dạng hex
-d
Hiển thị dữ liệu ở tầng application khi dùng chế độ hiển thị đầy đủ hoặc trong
packet logging mode
-D
Chạy Snort ở mode daemon. Daemon mode cần thiết khi ta cần chạy Snort tự
động mỗi khi startup và sẽ hiển thị trong event khi ta khởi động, không có
message nào được hiển thị trong console khi chạy ở mode này
-e
Hiển thị hoặc log các lớp liên kết paket headers. thường dùng khi capture packet
khi chạy Snort ở chế độ Sniffing
-F bpf-file
Đọc Berkeley Packet Filters (BPF) từ bpf file.
-g group
Thay đổi group ID hoặc GID mặc định. Thường dùng khi ta muốn Snort chỉ cho
dùng bởi những group đặc biệt mục đích để security hơn
-h home-net
Thiết lập "home network" chỉ định địa chỉ trong định dạng CIDR. Thường sử
dụng để tạo biến HOME_NET trong file config
-i interface
Chỉ định interface nào Snort sẽ lắng nghe
-I
Trong thông báo, hiển thị interface nào mỗi packet khi packet đến nếu ta có
nhiều interface cùng lúc sử dụng nhìêu sensor và các sensor gửi các packet đến
database quản lý cùng 1 lúc
-k checksum-mode
Điều khiển các packet checksums Snort. Nhiều giá trị checksum mode bao gồm
all,noip,notcp,noudp,noicmp,none
-l logging-directory
Chỉ định thư mục để log các alter. Mặc định thư mục log là /var/log/Snort,
nhưng mặc định chỉ sử dụng khi Snort chạy ở -A mode
-L binary-log-file
Thiết lập filename của file binary, mặc định sẽ là thời gian thêm vào trước chữ
Snort.log được lưu trong log
-m umask
Thiết lập chế độ tạo mặt nạ file, đơn giản chỉ là ngăn chặn xem log file trong khi
đang capture packet, tránh hacker xoá log
-n packet-count
Đếm số luợng packet đang tồn tại. thường dùng khi muốn capture một traffic ở
mạng nhỏ trong thời gian ngắn
-N
Tắt packet logging nhưng chế độ alert vẫn hoạt động và chỉ hiển thị trên màn
hình console. thường dùng để test những file cấu hình mới
-o
Thay đổi thứ tự các rules đựoc áp đặt đến packet. Thay vì các rules áp đặt theo
dạng chuẩn alert ◊ pass ◊ Log, ta có thể áp đặt lại Pass ◊ Alert ◊ Log. Khuyên
dùng đối với người dùng chạy SnortCenter hoặc các web interfaces khác.
Option này thường sử dụng khi chắc chắn rằng nhựng pass rules sẽ applied
trước những detection rules.
-O
Khi ở mode ASCII, nó sẽ thay thế địa chỉ ip hiển thị trên màn hình hoặc logfile
với dạng”xxx.xxx.xxx.xxx”. nếu home-net đựoc set ở -h , chỉ có ip của home-
net được hiển thị còn lại sẽ được thay thế. Sử dụng khi capture nhưng packet
dùng để làm mẫu và share với mọi người trong các cuộc thảo luận ỏ các group
hoặc qua mailing list
-p
Tắt chế độ sniff hỗn tạp, chỉ dùng để bảo vệ 1 host duy nhất.
-P snap-length
Thiết lập chiều dài tối đa cho các packet capture.Thiết lập để có thể bắt hết các
packet, nếu thiết lập chiều dài quá ngắn có thể không coi hết được nội dung của
packet khi cần thiết
-q
Không hiển thi banner hay những thông tin khi khởi động
-r tcpdump-file
Sử dụng option này khi dùng với file định dạng tcpdump
-s
Gửi alert message đến syslog server. Có thể gửi ở local hay remote server
-S variable=value
Gán giá trị cho biết ví dụ home-net, dn-server….
-t chroot
Thay đổi thư mục root của Snort là chroot sau khi khởi động. đường dẫn cho
logfiles và các files alert sẽ liên quan trực tiếp đến thư mục mới này
-T
Khởi động Snort ơ chế độ selt-test. Hữu ích khi debug Snort trước khi chạy ở
chế độ deamon
-u user
Thay đổi ID và UID của user giống như –g phía trước
-U
Áp đặt thời gian vào log files. Dùng trong các truờng hợp capture từ nhiều
sources trên 1 syslog server và các sensor gửi thông qua WAN
-v
In toàn bộ packet trên console. Cẩn thận khi dùng, nó làm cho Snort chậm đi khi
drop packet
-V
Hiển thị Version của Snort
-x
Hiển thị các packet “thô” cần dùng khi xem các ethernet headers và trailers
-y
Bao gồm năm trong log files
-z
Bật chức năng stream4
-?
Danh sách các option và thoát
2.3. Các chế độ hoạt động của Snort
Trong phần này, em sẽ trình bày tại sao cần Snort trong khi nó có vẻ giống các
phần mềm khác như tcpdump cũng sniff packet và có thể đọc từ định dạng của
libpcap. Sau đây là những lý do chứng tỏ Snort có nhiều điểm tốt trong giải
pháp sniffing và phát hiện xâm nhập.
• Mô tả sâu sắc về các dòng dữ liệu
• Linh hoạt hơn tcpdump về khả năng đọc và output
• Có thể dễ dàng chỉnh sửa , hiển thị nhiều trường đa dạng trong các headers
• Viết các rules liên quan dễ dàng dễ hiểu và dễ chỉnh sửa
• Có thể report trên các mạng wireless riêng biệt bằng cách sử dụng những
patches đặc biệt
Nhìn tổng quan về cơ chế hoạt động của snort
2.3.1 Snort là một Sniffer
Snort rất dễ dàng sử dụng để sniff và ta cũng dễ dàng nhìn ra các thông tin từ
các packet captured. Một đặc tính rất hay của Snort là bảng tóm tắt về traffic
của mạng trong phần cuối của bảng capture nó rất hữu ích cho Adminstrator để
troubleshooting mạng của mình.
Bật chức năng Sniffer bằng cờ -v:
Snort –v
Running in packet dump mode
Log directory = /var/log/Snort
Initializing Network Interface eth0
== Initializing Snort ==
Initializing Output Plugins!
Decoding Ethernet on interface eth0
== Initialization Complete ==
-*> Snort! <*-
Version 2.1.x (Build 72)
By Martin Roesch (, www.Snort.org)
06/24-11:19:32.257859 64.147.136.193:3131 -> 192.168.0.15:9100
TCP TTL:128 TOS:0x0 ID:21742 IpLen:20 DgmLen:48 DF
******S* Seq: 0x5DB36D37 Ack: 0x0 Win: 0xFAF0 TcpLen: 28
TCP Options (4) => MSS: 1460 NOP NOP SackOK
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
+=+=+=+=+=+=+=+=+
06/24-11:19:32.261606 64.147.136.5 -> 224.0.0.10
EIGRP TTL:2 TOS:0x0 ID:0 IpLen:20 DgmLen:60
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
+=+=+=+=+=+=+=+=+
06/24-11:19:34.470931 64.147.136.1 -> 224.0.0.10
EIGRP TTL:2 TOS:0xC0 ID:0 IpLen:20 DgmLen:60
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
+=+=+=+=+=+=+=+=+
06/24-11:19:34.482799 64.147.136.1 -> 224.0.0.10
EIGRP TTL:2 TOS:0xC0 ID:0 IpLen:20 DgmLen:60
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
+=+=+=+=+=+=+=+=+
=========================================================
==================
Snort analyzed 38 out of 38 packets, dropping 0(0.000%) packets
Breakdown by protocol: Action Stats:
TCP: 1 (2.632%) ALERTS: 0
UDP: 0 (0.000%) LOGGED: 0
ICMP: 0 (0.000%) PASSED: 0
ARP: 0 (0.000%)
EAPOL: 0 (0.000%)
IPv6: 0 (0.000%)
IPX: 0 (0.000%)
OTHER: 37 (97.368%)
DISCARD: 0 (0.000%)
=========================================================
==================
Wireless Stats:
Breakdown by type:
Management Packets: 0 (0.000%)
Control Packets: 0 (0.000%)
Data Packets: 0 (0.000%)
=========================================================
==================
Fragmentation Stats:
Fragmented IP Packets: 0 (0.000%)
Fragment Trackers: 0
Rebuilt IP Packets: 0
Frag elements used: 0
Discarded(incomplete): 0
Discarded(timeout): 0
Frag2 memory faults: 0
=========================================================
==================
TCP Stream Reassembly Stats:
TCP Packets Used: 0 (0.000%)
Stream Trackers: 0
Stream flushes: 0
Segments used: 0
Stream4 Memory Faults: 0
=========================================================
==================
Snort exiting
Trong phần đầu Snort sẽ hiển thị đang chạy ở mode nào, thư mục chứa log,
interface nào đang lắng nghe. Khi bắt đầu chạy và bắt gói tin hiển thị lên màn
hình. Phần hiển thị ra chỉ ở mức độ đơn giản, nó chỉ hiện thị ip và
TCP/UDP/ICMP headers và 1 số ít khác. Để thoát khỏi chế độ sniffer bấm
CTRL - C Snort sẽ thoát hiển thị bảng tóm tắt tổng hợp về các packet bao gồm
các protocols, tình trạng packet fragmentation, dòng dữ liệu tập hợp. Để xem ở
tầng application ta sử dụng cờ -d thên vào sau:
#Snort –vd
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
+=+=+=+=+=+=+=+=+
06/24-11:27:35.408290 ARP who-has 64.147.136.1 tell 64.147.136.144
06/24-11:27:35.408860 64.147.136.144:50507 -> 64.147.130.2:53
UDP TTL:64 TOS:0x0 ID:0 IpLen:20 DgmLen:57 DF
Len: 29
E8 0A 01 00 00 01 00 00 00 00 00 00 03 6E 73 31 ns1
03 6B 73 6C 03 63 6F 6D 00 00 01 00 01 .ksl.com
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
+=+=+=+=+=+=+=+=+
06/24-11:27:35.408838 ARP reply 64.147.136.1 is-at 0 0:BC:ED:15:E4
06/24-11:27:35.409465 64.147.130.2:53 -> 64.147.136.144:50507
UDP TTL:63 TOS:0x0 ID:0 IpLen:20 DgmLen:121 DF
Len: 93
E8 0A 85 80 00 01 00 01 00 02 00 01 03 6E 73 31 ns1
03 6B 73 6C 03 63 6F 6D 00 00 01 00 01 C0 0C 00 .ksl.com
01 00 01 00 00 70 80 00 04 40 93 82 02 C0 10 00 p @
02 00 01 00 00 70 80 00 02 C0 0C C0 10 00 02 00 p
01 00 00 70 80 00 06 03 6E 73 32 C0 10 C0 47 00 p ns2 G.
01 00 01 00 00 70 80 00 04 40 93 82 03 p @
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
+=+=+=+=+=+=+
Để xem chi tiết hơn và kết quả giống như tcpdump gồm cả phần header của lớp
data link và cả tầng application, sử dụng với cờ -e
#Snort –vde
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
+=+=+=+=+=+=+=+=+
06/24-11:34:00.840645 0:8:74:F3:CC:F9 -> 0 0:BC:ED:15:E4 type:0x800
len:0x47
64.147.136.144:50507 -> 64.147.130.2:53 UDP TTL:64 TOS:0x0 ID:0
IpLen:20 DgmLen:57 DF
Len: 29
28 BF 01 00 00 01 00 00 00 00 00 00 03 6E 73 31 ( ns1
03 6B 73 6C 03 63 6F 6D 00 00 01 00 01 .ksl.com
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
+=+=+=+=+=+=+=+=+
06/24-11:34:00.841157 0 0:BC:ED:15:E4 -> 0:8:74:F3:CC:F9 type:0x800
len:0x87
64.147.130.2:53 -> 64.147.136.144:50507 UDP TTL:63 TOS:0x0 ID:0
IpLen:20 DgmLen:121 DF
Len: 93
28 BF 85 80 00 01 00 01 00 02 00 01 03 6E 73 31 ( ns1
03 6B 73 6C 03 63 6F 6D 00 00 01 00 01 C0 0C 00 .ksl.com
01 00 01 00 00 70 80 00 04 40 93 82 02 C0 10 00 p @
02 00 01 00 00 70 80 00 02 C0 0C C0 10 00 02 00 p
01 00 00 70 80 00 06 03 6E 73 32 C0 10 C0 47 00 p ns2 G.
01 00 01 00 00 70 80 00 04 40 93 82 03 p @
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
+=+=+=+=+=+=+
Các thông tin hiển thị với dạng hex. địa chỉ MAC được ẩn, chỉ thấy được địa chỉ
IP. Khi chỉ cần test mạng, hoặc đơn giản thử sử dụng để capture dữ liệu trên
Snort thì sử dụng với –vde đã hiển thị gần như đầy đủ các thông tin.
Với nhiều mạng lơn có lưu luợng thông tin cao, khi bắt gói tin với Snort nó sẽ
hiển thị rất nhanh và có thể ta theo dõi không kịp, để giải quyết vần đề trên ta có
thể lưu nó vào trong log file với câu lệnh đơn giản Snort –dev >temp.log
Đây là vài lựa chọn trong mode sniffer của Snort:
-v Đưa ra packet headers trong phần output
-d Hiển thị packet payload
-a Hiển thị ARP packets
-e Hiển thị dữ liệu lớp data link
Mô hình minh hoạ sniffing của snort
2.3.2 Snort là một packet logger
Phần tiếp theo sau khi bắt gói tin là lưu chúng lại vào trong log, để log chỉ đơn
giản them cờ -l vào sau đó chỉ đường dẫn thư mục cần log. Mặc định nó sẽ log ở
thư mục /var/log/Snort . Nếu ta chỉ định thư mục log mà không tồn tại nó sẽ báo
lỗi. Ví dụ câu lệnh sau đây để log
#Snort –l /usr/local/log/Snort –d
Khi chạy ở chế độ này, Snort sẽ tập hợp tất cả các packet nó thấy được và đưa
vào log theo cấu trúc phân tầng. Nói cách khác, 1 thư mục mới sẽ được tạo ra
ứng với mỗi địa chỉ nó bắt đựơc, và dữ liệu sẽ phụ thuộc vào địa chỉ mà nó lưu
trong thư mục đó. Snort đặt các packet vào trong files ASCII, với tên liên quan
tới protocol và port. Sự sắp xếp này dễ dàng nhận ra ai đang connect vào
network của mình và protocol và port nào đang sử dụng, đơn giản sử dụng ls - R
hoặc (dir /s trong windows) để hiện danh sách các thư mục.Tuy nhiên sự phân
cấp này sẽ tạo ra nhiều thư mục trong giờ cao điểm , thật khó có thể coi hết với
hàng đống thư mục và files này. Nếu ai đó có ý định dùng chế độ full scan toàn
mạng với 65536 Tcp ports và 65535 Udp ports, và sẽ tạo ra 131000 hoặc hơn
từng ấy file như thế trong 1 thư mục , để xem hết đống này thì dùng thêm vài
viên thuốc đau đầu nữa.
Log với dạng nhị phân (binary) tất cả những gì có thể đọc được bời Snort, nó
làm tăng đốc độ khả năng bắt gói tin của Snort. Hầu hết các hệ thống có thể
capture và log ở tốc độ 100Mbps mà không có vấn đề gì.
Để log packet ở chế độ nhị phân, sự dụng cờ -b.
#Snort -b -l /usr/local/log/Snort/temp.log
Khi đã capture, ta có thể đọc lại file mới vừa tạo ra ngay với cỡ -r và phần hiển
thị giống như ở mode sniffer
#Snort -r /usr/local/log/Snort/temp.log
Trong phần này Snort không giới hạn để dọc các file binary trong chế độ sniffer.
Ta có thể chạy Snort ở chế độ NIDS với việc set các rules hoặc filters để tìm
những traffic nghi ngờ
2.3.3 Snort là NIDS:
Trong khi Snort là sniffer tốt nó còn là 1 tools rất xuất sắc trong phát hiện xâm
nhập. Khi sử dụng như NIDS, Snort cung gần thời gian thực nhất về khả năng
xâm nhập. Ta sẽ trãi qua nhiều thời gian để tìm hiểu nhiều cách khác nhau về
Snort với chức năng NIDS và các option của nó
2.2.3.1 Lấy những rules mới nhất
Ta thường lưu các rules ở vị trí nào đó có thể dễ dang theo dõi và thay đổi ngay
lập tức khi cần, ví dụ ta tạo 1 thư mục để chứa các rules /usr/local/share, trong
thư mục này ta sẽ tạo nhiều thư mục con với tháng và năm ví dụ
November_2005 và khi update các rules ta lưu nó vào các vị trí đã tạo sẵn đó
Nếu sử dụng Snort version là 2.4.3 ta có thể download những rules mới nhất từ
địa chỉ
Sau khi down về và giải nén ta có được khoảng 60 files, mỗi file có phần mở
rộng là .rules chứa những tín hiệu (signatures) để Snort dựa vào đó mà nhận
dạng nội dung của các packet. File Snort.conf chứa các thiết lập khi Snort chạy
ở chế độ IDS. Các files này đã đuợc viết sẵn và test khá kĩ càng nên ta không
cần config lại
2.2.3.2 Khởi đầu cấu hình với file Snort.conf
Ở chế độ báo động ( alert ), Snort yêu cầu phải có file cấu hình, files cấu hình
mặc định lưu ở thư mục /etc/Snort.conf, nếu file nằm ở chỗ khác ta phải dùng
cờ -c để chỉ tới files đó. Các báo động sẽ lưu ở thư mục /var/log/Snort ( mặc
định ).Snort sẽ thoát ra nếu file .conf và thư mục log không có. Ta có thể chỉ
định loại báo động nào ví dụ như full, fast,none hoặc Unix sockets bằng cách
thêm cờ -A vào dòng lệnh
Lần đầu nhìn vào file Snort.conf ta có thể nhìn thấy nhiều dòng chú thích rất dễ
hiểu với màu sắc dễ phân biệt, ví dụ như tạo các biến, set các đường dẫn
RULE_PATH để chỉ Snort các files rules
ví dụ:
var RULE_PATH /rules
Thay đổi đường dẫn đầy đủ nơi chứa các rules
var RULE_PATH /usr/local/share/Snort_rules/november_2005/rules
Để cho Snort khởi động, sử dụng dòng lệnh:
Snort -c /usr/local/share/Snort_rules/november_2005/rules/Snort.conf
Nó sẽ hiển thị ra màn hình console
Running in IDS mode
Log directory = /var/log/Snort
Initializing Network Interface eth0
== Initializing Snort ==
Initializing Output Plugins!
Decoding Ethernet on interface eth0
Initializing Preprocessors!
Initializing Plug-ins!
Parsing Rules file /usr/local/share/Snort_rules/rules/Snort.conf
+++++++++++++++++++++++++++++++++++++++++++++++++++
Initializing rule chains
, [Flow Config]
| Stats Interval: 0
| Hash Method: 2
| Memcap: 10485760
| Rows : 4099
| Overhead Bytes: 16400(%0.16)
`
No arguments to frag2 directive, setting defaults to:
Fragment timeout: 60 seconds
Fragment memory cap: 4194304 bytes
Fragment min_ttl: 0
Fragment ttl_limit: 5
Fragment Problems: 0
Self preservation threshold: 500
Self preservation period: 90
Suspend threshold: 1000
Suspend period: 30
Stream4 config:
Stateful inspection: ACTIVE
Session statistics: INACTIVE
Session timeout: 30 seconds
Session memory cap: 8388608 bytes
State alerts: INACTIVE
Evasion alerts: INACTIVE
Scan alerts: INACTIVE
Log Flushed Streams: INACTIVE
MinTTL: 1
TTL Limit: 5
Async Link: 0
State Protection: 0
Self preservation threshold: 50
Self preservation period: 90
Suspend threshold: 200
Suspend period: 30
Stream4_reassemble config:
Server reassembly: INACTIVE