【轉】Snort語法規則說明及實例講解


轉載來自:【IPS分析】Snort語法規則說明及實例講解

方向操作符:
方向操作符"->"表示規則所施加的流的方向。方向操作符左邊的ip地址和端口號被認為是流來自的源主機,方向操作符右邊的ip地址和端口信 息是目標主機,還有一個雙向操作符

"<>"。它告訴snort把地址/端口號對既作為源,又作為目標來考慮。這對於記錄/分析雙向對話很方 便,例如telnet或者pop3會話。用來記錄一個telnet會話的兩側的流的范例如下:

log !192.168.1.0/24 any <> 192.168.1.0/24 23

 

Activate 和 dynamic 規則:

注:Activate 和 dynamic 規則將被tagging 所代替。在snort的將來版本,Activate 和 dynamic 規則將完全被功能增強的tagging所代替。

Activate 和 dynamic 規則對給了snort更強大的能力。你現在可以用一條規則來激活另一條規則,當這條規則適用於一些數據包時。在一些情況下這是非常有用的,例如你想設置一條規則:當一條規則結束后來完成記錄。Activate規則除了包含一個選擇域:activates外就和一條alert規則一樣。Dynamic規則除 了包含一個不同的選擇域:activated_by

外就和log規則一樣,dynamic規則還包含一個count域。

Actevate規則除了類似一條alert規則外,當一個特定的網絡事件發生時還能告訴snort加載一條規則。Dynamic規則和log規則類似,但它是當一個activate規則發生后被動態加載的。把他們放在一起如下圖所示:

activate tcp !$HOME_NET any -> $HOME_NET 143 (flags: PA; content: "|E8C0FFFFFF|/bin"; activates: 1; msg: "IMAP buffer overflow!";)
dynamic tcp !$HOME_NET any -> $HOME_NET 143 (activated_by: 1; count: 50;)

 

規則選項

規則選項組成了snort入侵檢測引擎的核心,既易用又強大還靈活。所有的snort規則選項用分號";"隔開。規則選項關鍵字和它們的參數用冒號":"分開。按照這種寫法,snort中有42個規則選項關鍵字。

msg -       在報警和包日志中打印一個消息。
logto -      把包記錄到用戶指定的文件中而不是記錄到標准輸出。
ttl -       檢查ip頭的ttl的值。
tos -       檢查IP頭中TOS字段的值。
id -        檢查ip頭的分片id值。
ipoption -    查看IP選項字段的特定編碼。
fragbits -     檢查IP頭的分段位。
dsize -      檢查包的凈荷尺寸的值 。
flags -      檢查tcp flags的值。
seq -       檢查tcp順序號的值。
ack -       檢查tcp應答(acknowledgement)的值。
window -      測試TCP窗口域的特殊值。
itype -       檢查icmp type的值。
icode -      檢查icmp code的值。
icmp_id -      檢查ICMP ECHO ID的值。
icmp_seq -     檢查ICMP ECHO 順序號的值。
content -     在包的凈荷中搜索指定的樣式。
content-list   在數據包載荷中搜索一個模式集合。
offset -     content選項的修飾符,設定開始搜索的位置 。
depth -      content選項的修飾符,設定搜索的最大深度。
nocase -     指定對content字符串大小寫不敏感。
session -     記錄指定會話的應用層信息的內容。
rpc -       監視特定應用/進程調用的RPC服務。
resp -       主動反應(切斷連接等)。
react -      響應動作(阻塞web站點)。
reference -    外部攻擊參考ids。
sid -       snort規則id。
rev -       規則版本號。
classtype -    規則類別標識。
priority -    規則優先級標識號。
uricontent -   在數據包的URI部分搜索一個內容。
tag -        規則的高級記錄行為。
ip_proto -    IP頭的協議字段值。
sameip -     判定源IP和目的IP是否相等。
stateless -   忽略劉狀態的有效性。
regex -     通配符模式匹配。
distance -    強迫關系模式匹配所跳過的距離。
within -     強迫關系模式匹配所在的范圍。
byte_test -   數字模式匹配。
byte_jump -   數字模式測試和偏移量調整。
flow -      這個選項要和TCP流重建聯合使用。它允許規則只應用到流量流的某個方向上。這將允許規則只應用到客戶端或者服務器端

 

舉例說明:
例子1:

alert tcp any any -> any 3306 
(msg:"MySQL Server Geometry Query Integer溢出攻擊"; flow:to_server,established; dsize:<300; flags:A; content:"|03|"; nocase; offset:4; depth:1; content:"select|20|geometryn|28|0x00000000000700000001"; distance:10; within:50; reference:cve,2013-1861; reference:bugtraq,58511; classtype-danger:medium; tid:14999; rev:1;)

規則頭:alert tcp any any -> any 3306 //匹配任意源IP和端口到任意目的IP和端口為3306的TCP數據包發送告警消息。
規則選項:

msg:"MySQL Server Geometry Query Integer溢出攻擊";  //在報警和包日志中打印的消息內容。
flow:to_server,established;               //檢測向服務器發送方向的報文。
dsize:<300;                        //應用層負載包長度小於300
flags:A;                          //TCP flags值為10
content:"|03|"; nocase; offset:4; depth:1;      //負載偏移4取1的值為03,不區分大小寫,這塊寫的應該是有問題字符串有不區分大小寫,16進制不涉及。

//相對於上面的03特征向后偏移10個字節之后再取50個字節,
//50個字節里邊包含select|20|geometryn|28|0x00000000000700000001
content:"select|20|geometryn|28|0x00000000000700000001"; distance:10; within:50;
reference:cve,2013-1861; reference:bugtraq,58511; //可參考cve和bugtraq
classtype-danger:medium;                //危險等級中等
sid:20141107;                       //規則ID
rev:1                            //版本信息,第一個版本

 

例子2:
heartbleed漏洞下行檢測規則

alert tcp $EXTERNAL_NET any -> $HOME_NET 443 (msg:"openssl Heartbleed attack";flow:to_server,established; content:"|18 03|"; depth: 3; byte_test:2, >, 200, 3, big; byte_test:2, <, 16385, 3, big; threshold:type limit, track by_src, count 1, seconds 600; reference:cve,2014-0160; classtype:bad-unknown; sid:20140160; rev:2;)


規則頭:alert tcp $EXTERNAL_NET any -> $HOME_NET 443 EXTERNAL_NET和HOME_NET都在/etc/snort/snort.conf中配置。

規則選項:

msg:"openssl Heartbleed attack";                 //消息信息
flow:to_server,established;                    //向服務器發送的請求包檢測一次
content:"|18 03|"; depth: 3;                   //頭部3個字節之內存在0x1803
byte_test:2, >, 200, 3, big;                   //從第3個字節開始取2個字節的大字節序大於200
byte_test:2, <, 16385, 3, big;                   //從第3個字節開始取2個字節的大字節序小於16385
threshold:type limit, track by_src, count 1, seconds 600;  //限速 600s記錄一次按src地址進行記錄
reference:cve,2014-0160;                     //參考cve編號
classtype:bad-unknown;                       //危害級別
sid:20140160;                            //規則ID
rev:2;                                //版本2


附:
bugtraq:http://www.securityfocus.com/
cve:http://cve.mitre.org/compatible/product_type.html
cnvd:http://www.cnvd.org.cn/
可利用kali虛擬機中nmap,nessus,CIS或者X-scan對系統進行掃描,產生告警紀錄


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM