Snort Rule 기초 - RTN, OTN, General Option
Snort Rule의 기초에 대해 알아보겠습니다. Snort Rule은 Rule Tree Node인 RTN과 Option Tree Node인 OTN으로 나뉩니다. RTN을 룰헤더(header), OTN을 룰 옵션(Option)이라고도 부릅니다. 방화벽(Firewall)과 다르게 IDS/IPS는 OTN을 이용하여 패킷의 데이터영역(Payload)까지 검사/차단 할 수 있습니다.
Snort에 기본 가이드는 아래 포스팅 링크를 참고해 주세요.
Snort Rule 구조
Snort Rule의 구조는 RTN(Rule Tree Node)과 OTN(Option Tree Node)으로 구분됩니다.
RTN을 Rule header , OTN을 Rule Option이라고 부르기도 합니다.
위 이미지에서는 alert tcp any any -> 192.168.98.20 8080 부분이 RTN 이 되고
괄호 안의 msg:"snort-rule-01"; content:"abc"; sid:10000001; 부분이 OTN 이 됩니다.
RTN
RTN (Rule Tree Node) 은 [Action][Protocol][srcIP][srcPort][direction][dstIP][dstPort] 정보가 기록된 Rule Header입니다.
RTN 순서대로 Action, Protocol, 출발지 IP, 출발지 Port, 방향성, 목적지 IP, 목적지 Port 설정이 들어갑니다.
Action 은 탐지 이후 행동에 대한 설정을 뜻하며 다음과 같은 Option 값이 존재합니다.
alert | 경고 발생 |
log | 패킷에 대한 로그 기록 처리 |
pass | 패킷 무시하고, Pass 동작 처리 |
drop | 패킷 차단하고, 로그 기록 처리 |
reject | 패킷 차단하고, 로그 기록 후 TCP인경우 TCP 재설정 전송 또는 UDP인 경우 ICMP 연결 불가 메시지 전송 처리 |
sdrop | 패킷 차단하고, 로그 기록하지 않음 처리 |
Protocol 은 4가지 프로토콜 분석이 가능하며 소문자를 사용합니다.
- tcp
- udp
- icmp
- ip
출발지/목적지 IP
- 모든 IP : any
- 단일 IP : 1.1.1.1
- 다수 IP : [1.1.1.1, 2.2.2.2] or [192.168.1.0/24,192.168.1.0/24,10.1.1.0/24]
- 부정(!) IP : !1.1.1.1 (1.1.1.1 을 제외한 모든 IP)
출발지/목적지 Port
- 모든 Port : any
- 단일 Port : 80 or 22
- 다수 Port : 1:1024(1~1024 사이의 범위), :5000(~5000 이하의 범위), 1024: (1024~ 이상의 범위)
- 부정(!) port : !80 (80 을 제외한 모든 Port
Direction
- -> : 단방향 사용 시 [direction] 기준 왼쪽이 출발지(송신자) 주소
- <> : 양방향 사용시 방향성 없이 출발지(송신)/목적지(수신) 사이 모든 패킷 검출
- 역방향은 없음
snort 기본 구문 예제)
alert udp any any -> 192.168.100.0/24 [1024:65535] (msg:"sample-01"; sid:100000001;)
- alert : 경고 발생
- udp : udp 프로토콜
- any any : 모든 출발지IP 와 모든 출발지 포트
- -> : 단방향
- 192.168.100.0/24 [1024:65535] : 목적지 IP- 192.168.100.0/24이고 목적지 Port - 1024 ~ 65535 인 트래픽
alert tcp ![192.168.1.0/24,10.1.1.0/24] any <> [192.168.1.0/24,10.1.1.0/24] 111 (msg:"sample-02"; sid:100000002;)
- alert : 경고 발생
- tcp : tcp 프로토콜로
- ![192.168.1.0/24,10.1.1.0/24] any : 출발지 IP가 192.168.1.0/24, 10.1.1.0/24가 아닌 IP이고 모든 출발지 포트
- <> : 양방향
- [192.168.1.0/24,10.1.1.0/24] 111 : 목적지 IP 가 192.168.1.0/24 or 10.1.1.0/24이고 목적지 Port 가 111 인 트래픽
OTN
OTN (Option Tree Node) : RTN(Rule Header) 뒤 "( )" 안에 정의된 Rule Body를 OTN 이라 합니다.
;(세미콜론)을 사용하여 Option 이 서로 구분됩니다.
또한 :(콜론)으로 구분되어 왼쪽에는 keyword, 오른쪽은 value 가 됩니다.
OTN의 주요 범주는 다음 4가지입니다.
- General Option
- Payload Option
- Non-Payload Option
- Post-Detection Option
General Option - OTN
General Option 은 패킷 검사에 영향을 끼치지 않고 Rule에 대한 정보를 제공하는 Option입니다.
msg | 탐지/차단 로그에서 msg 값이 기록 ex) msg:”detect signature”; |
reference | url, CVE코드 등 참고가 되는 정보 연결 ex) reference:”CVE-2020-0000”; |
gid | 비슷한 형태의 Signiture Type의 그룹화 id |
sid | 규칙을 구별하는 식별자(id), 1~99는 예약되었고, 100~1,000,000은 Snort가 배포하는 규칙. 1,000,001부터 사용자가 정의할 수 있는 규칙 |
rev | Signiture의 버전 정보. 수정작업을 거친 후에는 rev값을 변경. ex) rev:1; |
classtype | 탐지된 공격의 규칙을 클래스화(ex. shellcode, trojan, DoS 등) |
priority | classtype에 따른 우선순위(위험도)를 나타냄. 높음(high)/보통(medium)/낮음(low)으로 구분 ex) priority:high; |
다음은 OTN의 Payload 옵션에 대해 알아보겠습니다.
[Snort] #3 Payload Option - Snort Rule OTN
'IT > Snort' 카테고리의 다른 글
[Snort] #3 Payload Option - Snort Rule OTN (0) | 2023.07.19 |
---|---|
[Kali Linux] Kali(Debian)에 Snort 설치 방법 (8) | 2023.07.17 |
[Kali Linux] 칼리 리눅스 설치 가이드(Oracle VM VirtualBox) 및 초기 설정 팁 (0) | 2023.07.14 |
[Snort] 1. 스노트(Snort) 개요 및 동작 방식 (0) | 2023.02.28 |
[Snort] #1 Snort 기본 (0) | 2020.04.14 |
댓글