PDA

View Full Version : Làm sao để viết được snort rule



coolie.it
28-02-2009, 11:41 AM
Em đang tìm hiểu về snort. Trong snort cái phần quan trọng nhất là làm sao để có thể viết được rule và tạo signature, nhưng em lại gà mờ phần này quá :(
Ví dụ một rule nó như thế này:


alert icmp $EXTERNAL_NET any -> $HOME_NET any (msg:"DDOS Stacheldraht client check gag"; icmp_id:668; itype:0; content:"gesundheit!"; metadata:policy balanced-ips drop, policy security-ips drop; reference:arachnids,194; reference:cve,2000-0138; classtype:attempted-dos; sid:236; rev:9;)
Em chỉ hiểu đượccấu trúc của nó như sau:
alert: Rule action
icmp: Protocol
msg: message thông báo
sid: cái signature trong thư mục signatures của snort

Còn những thành phần khác: icmp_id, itype, content, reference,.....em không làm sao hiểu được nó ở đâu ra và có ý nghĩa như thế nào. Khi viết rule liệu có nhất thiết phải có đủ những thành phần này không.
Nhất là phần content, theo em cái phần content là content của packet mà snort capture được, nhưng làm sao để biết được content của một packet để viết rule bây giờ.
Về phần sid, làm sao để có thể tạo signature của kiểu tấn công trên nhỉ.
Hic, rắc rối quá. Làm sao để có thể tạo được một rule đơn giản bây giờ?
Ai giúp em những thắc mắc này với.
Ví dụ như em muốn alert khi có một người dùng trong mạng của mình download quá 100MB từ 1h-2h liệu có được không nhỉ

coolie.it
02-03-2009, 06:51 PM
Hic, các pro đâu hết roài :(

nvnam
02-03-2009, 07:54 PM
"alert icmp $EXTERNAL_NET any -> $HOME_NET any"
- Đây là alert khi có 1gói icmp đi từ vùng $EXTERNAL_NET (vùng ngoài) tới $HOME_NET (vùng trong), vùng ngoài và trong bạn xem trong file snort.conf (thường là các lớp IP mạng trong vào mạng ngoài).
Thông điệp alert là:
msg:"DDOS Stacheldraht client check gag"; icmp_id:668; itype:0; content:"gesundheit!"; metadata:policy balanced-ips drop, policy security-ips drop; reference:arachnids,194; reference:cve,2000-0138; classtype:attempted-dos; sid:236; rev:9;
--> thường phải tool phân tích (ví dụ: BASE) để xem.
- Nếu bạn mới tìm hiểu thì nên ứng dụng lại tập rule có sẵn: bản free cũng khá đầy đủ.
- Sau khi ứng dụng thành thạo thì viết rule rất đơn giản.
Một số links tham khảo:
1. www.snort.org
2. Centos: http://www.google.com.vn/search?hl=vi&q=snort+base+linux&btnG=T%C3%ACm+ki%E1%BA%BFm&meta=
3. Windows: http://www.google.com.vn/search?hl=vi&q=snort+base+windows&btnG=T%C3%ACm+ki%E1%BA%BFm&meta=

khicon19bmt
09-03-2009, 12:29 PM
Em đang tìm hiểu về snort. Trong snort cái phần quan trọng nhất là làm sao để có thể viết được rule và tạo signature, nhưng em lại gà mờ phần này quá :(
Ví dụ một rule nó như thế này:


alert icmp $EXTERNAL_NET any -> $HOME_NET any (msg:"DDOS Stacheldraht client check gag"; icmp_id:668; itype:0; content:"gesundheit!"; metadata:policy balanced-ips drop, policy security-ips drop; reference:arachnids,194; reference:cve,2000-0138; classtype:attempted-dos; sid:236; rev:9;)
Em chỉ hiểu đượccấu trúc của nó như sau:
alert: Rule action
icmp: Protocol
msg: message thông báo
sid: cái signature trong thư mục signatures của snort

Còn những thành phần khác: icmp_id, itype, content, reference,.....em không làm sao hiểu được nó ở đâu ra và có ý nghĩa như thế nào. Khi viết rule liệu có nhất thiết phải có đủ những thành phần này không.
Nhất là phần content, theo em cái phần content là content của packet mà snort capture được, nhưng làm sao để biết được content của một packet để viết rule bây giờ.
Về phần sid, làm sao để có thể tạo signature của kiểu tấn công trên nhỉ.
Hic, rắc rối quá. Làm sao để có thể tạo được một rule đơn giản bây giờ?
Ai giúp em những thắc mắc này với.
Ví dụ như em muốn alert khi có một người dùng trong mạng của mình download quá 100MB từ 1h-2h liệu có được không nhỉ

Hi,
Một số ý để bạn tham khảo:
- Các options như icmp_id, itype, content, reference,... bạn có thể xem 1 số tài liệu như bạn ở trên đưa để hiểu thêm và khi tạo rule không nhất thiết phải có đủ tất cả các thành phần này trong rule.
- content là phần khá quan trọng, chính xác nó là phần mà snort sẽ dùng để so sánh với packet capture được về mặt content, nếu match với content của packet thì nó sẽ alert/ block, ...
- Để biết được signature có nhiều cách:
+ với những loại tấn công thực sự: bạn có thể lên google và search để tìm signature của nó là gì :)
+ với mục đích test: chẳng hạn capture 1 packet có content: "abc def", và bạn muốn tạo rule để alert với những packet loại này thì signature là gì? vậy thì signature (dấu hiệu) ở đây có thể là : a hay ab hay b hay ..... Khi đó rule bạn tạo rule phần content có thể để content = "a" hay "ab"(có thể dùng ASCII hoặc Hexa) và khi có bất kỳ packet nào có nội dung chứa "a" sẽ bị alert.
Trên đây chỉ là 1 ví dụ, signature có thể là content, protocol, các fields của packet, ...
Hi vọng các giải thích trên có thể giúp bạn hiểu hơn để tiếp tục ngâm cứu :)