程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> snort規則學習記錄

snort規則學習記錄

編輯:關於JAVA
 

content選項
content選項是Snort提供的多個選項中比較重要的一個。它可以使用戶搜索數據包淨載中特定的內容並相引發相應的動作。當執行一個content選項匹配時,程序調用Boyer-Moore模式匹配例程檢查包內容中是否包含了此內容,如果選項中指定的數據正好包含在數據包的淨載中,那麼檢查返回成功,規則中其他的選項會繼續得以執行。需要小心的是默認的content選項匹配是關心大小寫的。
選項中指定的數據可能會比較復雜;它可能包含混和的文本和二進制數據。二進制數據通常用管道(|)符號括起來並以字節碼的方式指定。字節碼是以十六進制的格式表示的,這樣可以很方便地描述復雜的二進制數據。示例的Snort規則中就包含了混合的文本及二進制數據。
在一條規則可以指定多個content選項,這樣可以使規則盡可能少地出現誤報的情況。
如下字符在content選項內容中出現時必須被轉義(如何轉義至少在這個手冊裡的此節沒說,我補充一下,有兩個方法:1.
使用前導“\”字符 2. 使用字節的二進制表示方式,比如用“|3A|”表示“:”):
: ; \
"
如果content選項內容之前放置了“!”字符,則表示在數據中不包含選項內容時引發報警。
2.5.1.1
格式
content: [!] "";
content選項可以帶有多個修飾選項。修飾選項可以影響緊接之前的content選項的工作方式,這些修飾選項如下:
1.
nocase
2.
rawbytes
3.
depth
4.
offset
5.
distance
6.
within
2.5.1.2 示例
alert tcp any any ->
any 139 (content:"|5c 00|P||00|I|00|P|00|E|00
5c|";)
混和了二進制數據和文本的content選項內容
alert tcp any any -> any 80
(content:!"GET";depth:3;nocase;)
取反匹配,此規則匹配數據包淨載的前三個字節不是“GET”的情況
2.5.2
nocase修飾選項
nocase選項修飾緊接之前的content選項,使之在匹配時忽略大小寫。
2.5.2.1
格式
nocase;
2.5.2.2 示例
alert tcp any any -> any 21
(msg:"FTP ROOT"; content:"USER root";
nocase;)
帶有nocase修飾選項的content規則
2.5.3
rawbytes修飾選項
rawbytes選項修飾緊接之前的content選項,使之只匹配最原始的數據,忽略那些預處理器所做的解碼。
2.5.3.1
格式
rawbytes;
2.5.3.2 示例
alert tcp any any -> any 21
(msg: "Telnet NOP"; content: "|FF F1|";
rawbytes;)
上面的示例使content選項匹配最原始的網絡流量,而不是經過telnet解碼器解碼後的數據。
2.5.4
depth修飾選項
depth選項修飾緊接之前的content選項,允許用戶指定在數據區中搜索特定模式的深度。如果設置depth等於5,則表示在數據包淨載中從某個起點(如果沒有下面論及的另一個offset修飾選項,則默認為數據區淨載的開頭)開始的5個字節中匹配content選項內容指定的模式。
2.5.4.1
格式
depth: ;
2.5.5
offset修飾選項
offset選項修飾緊接之前的content選項,允許用戶指定從數據包淨載的哪個字節開始進行匹配。如果設置offset等於5,Snort會在數據區淨載的前5個字節以後開始搜索content選項內容指定的模式。
2.5.5.1
格式
offset: ;
alert tcp any any -> any 80 (content:
"cgi-bin/phf"; offset:4;
depth:20;)
組合使用了content,offset,depth選項的規則,從數據包淨載的第5個字節開始的20字節內查找“cgi-bin/phf”字串。
2.5.6
distance
distance選項修飾緊接之前的content選項,允許用戶指定相對於上一個content選項匹配成功的串尾再加多少字節開始搜索distance所修飾的這個content選項指定的匹配內容。此修飾選項與offset類似,只不過是相對於上一個content選項匹配成功的串尾而不是相對於數據區淨載的開頭。
2.5.6.1
格式
distance: ;
2.5.6.2 示例
alert tcp any any
-> any any (content:"ABC"; content:
"DEF";distance:1;)
此規則示例匹配的目的相當於正則表達式:/ABC.DEF/
2.5.7
within
within選項修飾緊接之前的content選項,允許用戶指定從上一個content選項匹配成功的串尾加上distance選項指定的字節數開始多少字節內搜索當within所修飾的這個content選項指定的匹配內容。此修飾選項與depth類似,只不過是相對於上一個content選項匹配成功的串尾加distance選項指定的字節數而不是相對於數據區淨載的開頭。
2.5.7.1
格式
within: ;
2.5.7.2 示例
alert tcp any any ->
any any (content:"ABC"; content: "EFG"; within:10;)
2.5.8
uricontent
uricontent選項用於匹配正規化處理後URI字段。這意味著如果你寫規則試圖去匹配那些可能會被正規化處理掉的數據,比如常見用於遍歷目錄的“%2f”串,那麼匹配就會失敗。
舉例如下,URI:
/scripts/..%c0%af../winnt/system32/cmd.exe?/c+ver
會被正規化為:
/winnt/system32/cmd.exe?/c+ver
/cgi-bin/aaaaaaaaaaaaaaaaaaaaaaaaaa/..%252fp%68f?
會被正規化為:
/cgi-bin/phf?
用uricontent選項寫規則的時候必須指定匹配正規化以後的內容,不能包含遍歷目錄的字串,因為這些會被正規則化掉。如果想匹配正規化以前的數據請使用content選項。
uricontent與HTTP檢測預處理器結合使用。
2.5.8.1
格式
uricontent:[!];
2.5.9
isdataat選項  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved