GB | BIG5
|
| 首頁 > 安全技術 > 工具 > 正文 |
 |
| 怎樣使用Snort! |
| 本文出自:http://xfocus.org 作者: xundi (2001-09-11 07:00:01) |
安裝方法:
如果你安裝好了libpcap,對snort安裝將是很簡單,關libpcap的安裝說明,
你可以看看blackfire(http://go.163.com/~bobdai/的一些文章,關WINDOWS
下的winpcap你可以看我站上的SNIFFER FOR NT上的安裝說明。裝好libpcap,
你可以使用通常的命令:
1.) ./configure
2.) make
3.) make install
裝好你可以使用make clean清除一些安裝時候產生的文件。
(有些系統如freebsd已經支持了libpcap,所以很輕鬆,不用再裝了)。
而WINDOWS更簡單,只要解包出來就可以了;
----------------------------------------------------------------------
參數介紹:
命令行是snort -[options] <filters>
選項:
-A <alert> 設置<alert>的模式是full,fast,還是none;full模式是記錄
標準的alert模式到alert文件中;Fast模式只寫入時間戳,messages,
IPs,ports到文件中,None模式關閉報警。
-a 是顯示ARP包;
-b 是把LOG的信息包記錄為TCPDUMP格式,所有信息包都被記錄為
兩進制形式,名字如snort-0612@1385.log,這個選項對FAST
記錄模式比較好,因為它不需要花費包的信息轉化為文本的時間。
Snort在100Mbps網絡中使用"-b"比較好。
-c <cf> 使用配置文件<cf>,這個規則文件是告訴系統什樣的信息要LOG,
或者要報警,或者通過。
-C 在信息包信息使用ASCII碼來顯示,而不是hexdump,
-d 解碼應用層。
-D 把snort以守護進程的方法來運行,默認情況下ALERT記錄發送
到/var/log/snort.alert文件中去。
-e 顯示並記錄2個信息包頭的數據。
-F <bpf>從<bpf>文件中讀BPF過濾器(filters),這裡的filters是標準
的BPF格式過濾器,你可以在TCPDump裡看到,你可以查看TCPDump
的man頁怎樣使用這個過濾器。
-h <hn>設置網絡地址,如一個C類IP地址192.168.0.1或者其他的,使用這個
選項,會使用箭頭的方式數據進出的方向。
-I <if> 使用網絡接口參數<if>
-l <ld> LOG信息包記錄到<ld>目錄中去。
-M <wkstn> 發送WinPopup信息到包含<wkstn>文件中存在的工作站列表中去,
這選項需要Samba的支持,wkstn文件很簡單,每一行只要添加包含
在SMB中的主機名即可。(注意不需要\\兩個斜槓)。
-n <num> 是指定在處理<num>個數據包退出。
-N 關閉LOG記錄,但ALERT功能仍舊正常。
-o 改變所採用的記錄文件,如正常情況下採用Alert->Pass->Log order,
而採用此選項是這樣的順序:Pass->Alert->Log order,其中Pass
是那些允許通過的規則而不記錄和報警,ALERT是不允許通過的規則,
LOG指LOG記錄,因為有些人就喜歡奇奇怪怪,象CASPER,QUACK就喜歡
反過來操作。
-p 關閉雜亂模式嗅探方式,一般用來更安全的調試網絡。
-r <tf> 讀取tcpdump方式產生的文件<tf>,這個方法用來處理如
得到一個Shadow(Shadow IDS產生)文件,因為這些文件不能
用一般的EDIT來編輯查看。
-s LOG 報警的記錄到syslog中去,在LINUX機器上,這些警告信息
會出現在/var/log/secure,在其他平台上將出現在/var/log/message中去。
-S <n=v>這個是設置變量值,這可以用來在命令行定義Snort rules文件
中的變量,如你要在Snort rules文件中定義變量HOME_NET,你
可以在命令行中給它預定義值。
-v 使用為verbose模式,把信息包打印在console中,這個選項使用
會使速度很慢,這樣結果在記錄多的是時候會出現丟包現象。
-V 顯示SNORT版本並退出;
-? 顯示使用列表並退出;
----------------------------------------------------------------------
下面是一些命令的組合介紹,當然更多的組合你可以自己去測試:
Snort存在比較多的命令選項和參數,先來介紹一些基本的一些命令,如果你
想要把信息包的頭顯示在屏幕上,你可以使用:
./snort -v
這個命令會運行Snort和顯示IP和TCP/UDP/ICMP頭信息。
我使用了ping 192.168.0.1就顯示了如下信息:
06/10-10:21:13.884925 192.168.0.2 -> 192.168.0.1
ICMP TTL:64 TOS:0x0 ID:4068
ID:20507 Seq:0 ECHO
06/10-10:21:13.885081 192.168.0.1 -> 192.168.0.2
ICMP TTL:128 TOS:0x0 ID:15941
ID:20507 Seq:0 ECHO REPLY
06/10-10:21:14.884874 192.168.0.2 -> 192.168.0.1
ICMP TTL:64 TOS:0x0 ID:4069
ID:20507 Seq:256 ECHO
06/10-10:21:14.885027 192.168.0.1 -> 192.168.0.2
ICMP TTL:128 TOS:0x0 ID:15942
ID:20507 Seq:256 ECHO REPLY
如果你想要解碼應用層,就使用:
snort -vd
再次使用ping 192.168.0.1就顯示了如下信息:
06/10-10:26:39.894493 192.168.0.2 -> 192.168.0.1
ICMP TTL:64 TOS:0x0 ID:4076
ID:20763 Seq:0 ECHO
58 13 42 39 E0 BB 05 00 08 09 0A 0B 0C 0D 0E 0F X.B9............
10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F ................
20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F !"#$%&'()*+,-./
30 31 32 33 34 35 36 37 01234567
06/10-10:26:39.894637 192.168.0.1 -> 192.168.0.2
ICMP TTL:128 TOS:0x0 ID:15966
ID:20763 Seq:0 ECHO REPLY
58 13 42 39 E0 BB 05 00 08 09 0A 0B 0C 0D 0E 0F X.B9............
10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F ................
20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F !"#$%&'()*+,-./
30 31 32 33 34 35 36 37 01234567
如果要看到更詳細的關有關ethernet頭的信息,就要使用:
snort -vde
使用ping 192.168.0.1就顯示了如下信息:
-*> Snort! <*-
Version 1.6-WIN32
By Martin Roesch (roesch@clark.net, www.clark.net/~roesch)
WIN32 Port By Michael Davis (Mike@eEye.com, www.datasurge.net/~mike)
06/10-10:32:01.345962 0:60:94:F9:5E:17 -> 0:50:BA:BB:4A:54 type:0x800 len:0x62
192.168.0.2 -> 192.168.0.1 ICMP TTL:64 TOS:0x0 ID:4079
ID:21787 Seq:0 ECHO
99 14 42 39 47 4C 0C 00 08 09 0A 0B 0C 0D 0E 0F ..B9GL..........
10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F ................
20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F !"#$%&'()*+,-./
30 31 32 33 34 35 36 37 01234567
06/10-10:32:01.346164 0:50:BA:BB:4A:54 -> 0:60:94:F9:5E:17 type:0x800 len:0x62
192.168.0.1 -> 192.168.0.2 ICMP TTL:128 TOS:0x0 ID:16090
ID:21787 Seq:0 ECHO REPLY
99 14 42 39 47 4C 0C 00 08 09 0A 0B 0C 0D 0E 0F ..B9GL..........
10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F ................
20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F !"#$%&'()*+,-./
30 31 32 33 34 35 36 37 01234567
當然上面的一些命令你只是在屏幕上看到,如果要記錄在LOG文件上,你可以
先建立一個log目錄,在使用下面的命令:
./snort -dev -l ./log -h 192.168.0.1/24
這個命令就使Snort把ethernet頭信息和應用層數據記錄到./log目錄總去了,並
記錄的是關192.168.0.1 CLASS C的信息,
如果你想利用一些規則文件(一些記錄特定數據的規則文件,如SYN ATTACK等記錄)
就使用:
./snort -dev -l ./log -h 192.168.1.0/24 -c snort-lib
這裡的Snort-lib是你的規則文件的文件名,這將採用snort-lib文件中設置的
規則來決定是否記錄某個信息包。而
./snort -d -h 192.168.1.0/24 -l ./log -c snort-lib 可以不記錄一些ethernet頭信息
如,我用./nmap -sS 192.168.0.1 -p 21就在/log/alert.ids中記錄如下信息:
[**] IDS246 - MISC - Large ICMP Packet [**]
06/12-13:48:31.992395 192.168.0.1 -> 192.168.0.2
ICMP TTL:128 TOS:0x0 ID:36579
ID:46802 Seq:0 ECHO REPLY
我故意使用了rules出現的規則php.cgi/?,如192.168.0.1/cgi-bin/php.cgi/?,就顯示:
[**] IDS232 - WEB-CGI-PHP CGI access attempt [**]
06/12-13:53:35.106323 192.168.0.2:1789 -> 192.168.0.1:80
TCP TTL:64 TOS:0x0 ID:8945 DF
*****PA* Seq: 0xA070C880 Ack: 0xF113872 Win: 0x7D78
./snort -d -h 192.168.1.0/24 -l ./log -c snort-lib -s就會把日志記錄在你
規則文件中所定義的LOG文件中,而不是默認的alert.ids中。
./snort -d -h 192.168.1.0/24 -l ./log -c snort-lib -o此命令是讀規則文件的順序,
有些人很奇怪,需要先讀允許的規則文件,再讀alert規則文件,然來LOG記錄,那就
按照上面的命令來操作。
如果你的網絡請求相當多,你可以使用:
./snort -b -A fast -c snort-lib
這樣,每一條規則內的警告消息就分開記錄,對多點同步探測和攻擊的記錄可以不容易丟包。
當然這樣記錄的LOG文件是兩進制的,類似與tcpdump的格式,你可以使用這樣的方法來查看
這些LOG:
./snort -d -c snort-lib -l ./log -h 192.168.1.0/24 -r snort.log
--------------------------------------------------------------------------------
最講將規則文件中的選項的意義,這些就不翻譯了,因為偶比較愚鈍,有些東西翻不正確:
# msg => message to output in the alert/log files
# flags => TCP flags, use 0 for no flags at all
# ttl => the TTL value you want to key on (nice for catching traceroutes)
# content => the packet application layer, look for buffer overflows here
# itype => the NUMBER of the ICMP type
# icode => the NUMBER of the ICMP code
# minfrag => minimum fragment payload size
# seq => tcp sequence number
# ack => tcp ack number
# id => IP header fragment ID number
# logto => file to log specific alerts to
# dsize => match on the packet payload size
# offset => start a content search <offset> bytes into the payload
# depth => only search <depth> bytes into the payload for a pattern match
# session => record the session traffic from clear text protocols like
# ftp or telnet
# ipopts => check for a specific IP option
---------------------------------------------------------------------------
參考:
主要站點:www.snort.org
rules 文件參考:http://www.clark.net/~roesch/snort_rules.html
winpcap: http://netgroup-serv.polito.it/winpcap/install/Default.htm
怎樣安裝winpcap: http://focus.silversand.net/newsite/skill/sniffitfornt.txt
部分利用snort來查找攻擊的信息介紹:
http://focus.silversand.net/newsite/skill/foresic.txt
xundi@xfocus.org 2000-06-12
http://focus.silversand.net
(http://www.fanqiang.com)
進入【UNIX論壇】
|
|
| 相關文章 |
|
|
|
|
 |
★ 樊強制作 歡迎分享 ★ |