banner
 .::Defense::. Snort - A Sniffer Go to original post Author: Chanhua - Translator:  - Entry Date: 30/05/2009 15:44:09
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 (roesch@sourcefire.com, 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 0smilie0: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 -> 0smilie0: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 0smilie0: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ỉ
http://www.Snort.org/dl/rules/Snortrules-snapshot-2.4.tar.gz
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

Client reassembly: ACTIVE

Reassembler alerts: ACTIVE

Zero out flushed packets: INACTIVE

flush_data_diff_size: 500

Ports: 21 23 25 53 80 110 111 143 513 1433

Emergency Ports: 21 23 25 53 80 110 111 143 513 1433

HttpInspect Config:

GLOBAL CONFIG

Max Pipeline Requests: 0

Inspection Type: STATELESS

Detect Proxy Usage: NO

IIS Unicode Map Filename: /usr/local/share/Snort_rules/rules/unicode.map

IIS Unicode Map Codepage: 1252

DEFAULT SERVER CONFIG:

Ports: 80 8080 8180

Flow Depth: 300

Max Chunk Length: 500000

Inspect Pipeline Requests: YES

URI Discovery Strict Mode: NO

Allow Proxy Usage: NO

Disable Alerting: NO

Oversize Dir Length: 500

Only inspect URI: NO

Ascii: YES alert: NO

Double Decoding: YES alert: YES

%U Encoding: YES alert: YES

Bare Byte: YES alert: YES

Base36: OFF

UTF 8: OFF

IIS Unicode: YES alert: YES

Multiple Slash: YES alert: NO

IIS Backslash: YES alert: NO

Directory: YES alert: NO

Apache WhiteSpace: YES alert: YES

IIS Delimiter: YES alert: YES

IIS Unicode Map: GLOBAL IIS UNICODE MAP CONFIG

Non-RFC Compliant Characters: NONE

rpc_decode arguments:

Ports to decode RPC on: 111 32771

alert_fragments: INACTIVE

alert_large_fragments: ACTIVE

alert_incomplete: ACTIVE

alert_multiple_requests: ACTIVE

telnet_decode arguments:

Ports to decode telnet on: 21 23 25 119

1652 Snort rules read...

1652 Option Chains linked into 152 Chain Headers

0 Dynamic rules

+++++++++++++++++++++++++++++++++++++++++++++++++++





+-----------------------[thresholding-config]----------------------------------

| memory-cap : 1048576 bytes

+-----------------------[thresholding-global]----------------------------------

| none

+-----------------------[thresholding-local]-----------------------------------

| gen-id=1 sig-id=2275 type=Threshold tracking=dst count=5 seconds=60

+-----------------------[suppression]------------------------------------------

-------------------------------------------------------------------------------

Rule application order: ->activation->dynamic->alert->pass->log



--== Initialization Complete ==--



-*> Snort! <*-

Version 2.1.x (Build 24)

By Martin Roesch (roesch@sourcefire.com, www.Snort.org)

Tới đây ta có thể kết thúc dùng lệnh CTRL – C sẽ xuất hiện các bảng tóm tắt:



===============================================================================

Snort analyzed 3210 out of 3807 packets, dropping 597(15.682%) packets


Breakdown by protocol: Action Stats:

TCP: 2602 (68.348%) ALERTS: 6

UDP: 2 (0.053%) LOGGED: 6

ICMP: 8 (0.210%) PASSED: 0

ARP: 0 (0.000%)

EAPOL: 0 (0.000%)

IPv6: 0 (0.000%)

IPX: 0 (0.000%)

OTHER: 0 (0.000%)

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: 2602 (68.348%)

Stream Trackers: 1559

Stream flushes: 0

Segments used: 0

Stream4 Memory Faults: 0

===============================================================================

Final Flow Statistics

,----[ FLOWCACHE STATS ]----------

Memcap: 10485760 Overhead Bytes 16400 used(%2.287951)/blocks (239909/1564) Overhead

blocks: 1 Could Hold: (73326)

IPV4 count: 1563 frees: 0 low_time: 1080162455, high_time: 1080162458, diff: 0h:00:

03s

finds: 2612 reversed: 1022(%39.127106)

find_sucess: 1049 find_fail: 1563 percent_success: (%40.160796) new_flows: 1563

Protocol: 1 (%0.306279) finds: 8 reversed: 3(%37.500000)

find_sucess: 5 find_fail: 3 percent_success: (%62.500000) new_flows: 3

Protocol: 6 (%99.617152) finds: 2602 reversed: 1018(%39.123751)

find_sucess: 1043 find_fail: 1559 percent_success: (%40.084550) new_flows: 1559

Protocol: 17 (%0.076570) finds: 2 reversed: 1(%50.000000)

find_sucess: 1 find_fail: 1 percent_success: (%50.000000) new_flows: 1

Snort exiting




Bây giờ đã có 1 file báo động trong thư mục /var/log/Snort. File sẽ bao gồm các báo động từ Snort khi đang chạy ( trong bài này có sử dụng nmap SYN scan để cho Snort báo động )


[**] [1:469:1] ICMP PING NMAP [**]

[Classification: Attempted Information Leak] [Priority: 2]

03/24-15:07:35.187504 192.168.1.2 -> 192.168.1.105

ICMP TTL:51 TOS:0x0 ID:23210 IpLen:20 DgmLen:28

Type:8 Code:0 ID:1290 Seq:0 ECHO

[Xref => http://www.whitehats.com/info/IDS162]



[**] [1:618:5] SCAN Squid Proxy attempt [**]

[Classification: Attempted Information Leak] [Priority: 2]

03/24-15:07:35.583826 192.168.1.2:49641 -> 192.168.1.105:3128

TCP TTL:44 TOS:0x0 ID:56810 IpLen:20 DgmLen:40

******S* Seq: 0x4EB5A7C6 Ack: 0x0 Win: 0x400 TcpLen: 20



[**] [1:1421:3] SNMP AgentX/tcp request [**]

[Classification: Attempted Information Leak] [Priority: 2]

03/24-15:07:35.589463 192.168.1.2:49641 -> 192.168.1.105:705

TCP TTL:44 TOS:0x0 ID:54050 IpLen:20 DgmLen:40

******S* Seq: 0x4EB5A7C6 Ack: 0x0 Win: 0x400 TcpLen: 20

[Xref => http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2002-0013][Xref => http://

cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2002-0012]



[**] [1:615:5] SCAN SOCKS Proxy attempt [**]

[Classification: Attempted Information Leak] [Priority: 2]

03/24-15:07:35.674332 192.168.1.2:49641 -> 192.168.1.105:1080

TCP TTL:44 TOS:0x0 ID:9794 IpLen:20 DgmLen:40

******S* Seq: 0x4EB5A7C6 Ack: 0x0 Win: 0x400 TcpLen: 20

[Xref => http://help.undernet.org/proxyscan/]



[**] [1:1420:3] SNMP trap tcp [**]

[Classification: Attempted Information Leak] [Priority: 2]

03/24-15:07:35.696925 192.168.1.2:49641 -> 192.168.1.105:162

TCP TTL:44 TOS:0x0 ID:41259 IpLen:20 DgmLen:40

******S* Seq: 0x4EB5A7C6 Ack: 0x0 Win: 0x400 TcpLen: 20

[Xref => http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2002-0013][Xref => http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2002-0012]



[**] [1:1418:3] SNMP request tcp [**]

[Classification: Attempted Information Leak] [Priority: 2]

03/24-15:07:35.827022 192.168.1.2:49641 -> 192.168.1.105:161

TCP TTL:44 TOS:0x0 ID:37753 IpLen:20 DgmLen:40

******S* Seq: 0x4EB5A7C6 Ack: 0x0 Win: 0x400 TcpLen: 20

[Xref => http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2002-0013][Xref => http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2002-0012]



Ví dụ phân tích một báo động của Snort

Đây là tên của báo động:

[**] [1:1418:3] SNMP request tcp [**]

Snort sẽ chia ra nhiều lớp cho từng loại báo động , ví dụ cái này là thuộc dang đang cố gắng đánh lừa thông tin “Attempted Information Leak” và mức độ ưu tiên của từng báo động


[Classification: Attempted Information Leak] [Priority: 2]

Đây là phần header và thông tin của packet là nguyên nhân gây ra báo đông:


03/24-15:07:35.827022 192.168.1.2:49641 -> 192.168.1.105:161

TCP TTL:44 TOS:0x0 ID:37753 IpLen:20 DgmLen:40

******S* Seq: 0x4EB5A7C6 Ack: 0x0 Win: 0x400 TcpLen: 20



Snort sẽ báo động bao gồm các đường dẫn tới mô tả các rules gây ra báo động

[Xref => http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2002-0013][Xref => http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2002-0012]

link này rất hữu ích khi xem xét lại có bị báo động lỗi hay không.


2.4. File Snort.conf

File Snort.conf điều khiển mọi thứ mà Snort thấy được, làm cách nào nó có thể chống lại các cuộc tấn công, những rules nào được sử dụng khi thấy nghi ngờ, và làm cách nào nó có thể phát hiện ra được những dấu hiệu nguy hiểm tìm tàng mặc dù nó không có các tín hiệu nhận dạng cụ thể để so sánh. Để hiểu và cấu hình nó thành công khi phát triển Snort thành 1 công cụ IDS thật sự. Tôi sẽ trình bày cụ thể những kinh nghiệm hiểu biết về Snort sau đây. Để tìm hiểu nó 1 cách nhanh nhất và dễ dàng nên mở sẵn nó ra trên máy tính hoặc in nó ra giấy theo dõi cho dễ dàng.
Ví dụ file Snort.conf mở ra bằng gedit





File conf được chia ra thành nhiều đoạn và có chú thích rất rõ ràng cho từng đoạn, những nội dung chính của nó gồm:

• Thiết lập mạng và cấu hình các biến
• Cấu hình phần giải mã (decoder) 1và phát hiện
• Cấu hình tiền xử lý (preprocessor)
• Cấu hình phần output
• File được trỏ tới

2.4.1 Thiết lập mạng và cấu hình các biến

Các biến trong file conf được tạo ra thường để dễ dàng hơn trong việc theo dõi các địa chỉ IP, hoặc các port TCP,UDP được chỉ định mà nó đang lắng nghe.
Mặc định các biến thường để giá trị là any chỉ tất cả các địa chỉ IP mà nó nhận được, nó cũng có thể là nguyên nhân gây ra nhiều báo động sai.

Để chị định 1 địa chỉ ip, đơn gian chỉ làm theo cách sau:

Var HOME_NET 192.168.1.1

Hoặc khi muốn chỉ định nhiều địa chỉ cùng lúc, phải có dấu ngoặc vuông để chỉ định cho cả nhóm:

Var HOME_NET [192.168.1.1,192.168.14.1,10.0.0.2]

Ta cũng có cách khác để chỉ định luôn cả mạng:

Var HOME_NET 10.10.10.0/24

Hoặc cũng có thể gộp cả 2 cách trên vào chung 1 nhóm:

Var HOME_NET [192.168.1.1,10.10.10.0/24,172.168.1.5/16,187.1.1.1/19]

Nếu muốn chỉ định không dùng các ip này ngoại trừ … thì dùng thêm dấu “than” ! nghĩa là NOT

Var EXTERNAL_NET !$HOME_NET

Để chỉ định cho các port cũng làm tương tự ví dụng

Var ORACLE_PORTS 1521

Hoặc các port không phải là port 80

Var SHELLCODE_PORTS !80

2.4.1.1 Các biến mặc định trong Snort.conf

HOME_NET : chỉ định địa chỉ mạng của mình đang bảo vệ
EXTERNAL_NET: các mạng bên ngoài.

Các biến để chỉ định các server đang chạy các service phục vụ cho hệ thống

DNS_SERVERS
SMTP_SERVERS
HTTP_SERVERS
SQL_SERVERS
TELNET_SERVERS
SNMP_SERVERS
……

Các port mặc định các biến khác:

HTTP_PORTS
SHELLCODE_PORTS
ORACLE_PORTS
AIM_SERVERS
RULES_PATH

2.4.2 Cấu hình phần giải mã ( decoder ) và phát hiện ( detection )

Snort sẽ giải mã cấu trúc các packet và so sánh cấu trúc theo những dấu hiệu đã được trang bị. Nếu packet có kích thước lạ, nhìêu cấu hình lạ không bình thường, Snort sẽ báo động. Nếu không báo động thì sẽ có 1 luợng lớn lỗi báo động sai. Ta có thể tắt chức năng này. Mặc định tất cả báo động đều bật. Để tắt 1 loại báo động cụ thể nào đó, ta nên để dấu thăng # vào trước dòng lệnh thành dòng comment ghi chú

# config disable_decode_alerts

# config disable_tcpopt_experimental_alerts

# config disable_tcpopt_obsolete_alerts

# config disable_tcpopt_ttcp_alerts

# config disable_tcpopt_alerts

# config disable_ipopt_alerts


Mô hình làm việc của decode





Mô hình detect các packet





Ta cũng có thể thêm vào nhiều dòng lênh của Snort trong phần này của file Snort.conf


Cấu Hình Option Của Snort.conf



Option ----------- Mô tả

config order: [pass, alert, log, activation, or dynamic] ----------- Thay đổi các giá trị điều khỉên của rules
config alertfile: alerts ----------- Thiết lập output của file báo động
config decode_arp ----------- Bật chức năng arp decoding (Snort -a).
config dump_chars_only ----------- Bật chức năng character dumps (Snort -C).
config dump_payload ----------- Hiện thông tin lớp application(Snort -d).
config decode_data_link ----------- giải mã Layer2 headers (Snort -e).
config bpf_file: filters.bpf ----------- Chỉ định dùng bộ lọc BPF (Snort -F).
config set_gid: 30 ----------- Thay đổi GID đến GID khác (Snort -g).
config daemon -----------Chạy Snort ở chế độ daemon (Snort -D).
config interface: <interface name> ----------- Thiết lập interface (Snort -i).
config alert_with_interface_name ----------- Chỉ định interface cần báo động (Snort -I).
config logdir: /var/log/Snort ----------- Thiết lập lại thư mục log (Snort -l).
config umask: <umask> ----------- Thiết lập umask khi chạy (Snort -m).
config pkt_count: N ----------- Thoát ra sau N packets (Snort -n).
config nolog ----------- Tăt chế độ log (Snort -N).
config obfuscate ----------- Ẩn địa chỉ IP (Snort -O).
config no_promisc ----------- Tắt chế độ cho chạy lẫn lộn (Snort -p).
config quiet ----------- Tắt banner và report trạng thái (Snort -q).
config chroot: /home/Snort ----------- Thay đổi lại thư mục root (Snort-T).
config checksum_mode : all ----------- Các loại packet dùng để tính toán lại checksums: none, noip, notcp, noicmp, noudp, or all.
config set_uid: <id> ----------- Thay đổi UID ra uid mới (Snort-u).
config utc ----------- Sử dụng UTC thay vì dùng thời gian máy local gán cho timestamps (Snort -U).
config verbose ----------- Sử dụng chế độ xem chi tiết (Snort -v.)
config dump_payload_verbose ----------- Hiển thị những packet "thô" bắt đầu ở lớp linkdata (Snort-X ).
config show_year ----------- Hiển thị timestamps năm (Snort-y).

channhua - HVA
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Other posts in the same group:

Snort - A Sniffer
Go to top Go to original post  

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|