본문 바로가기
  • AI (Artificial Intelligence)
Security/Snort

Snort 시그네처의 구조

by 로샤스 2014. 3. 19.

시그네처의 구조

Snort 시그네처는 rules라는 확장자를 가진 파일에 기술되어 있다. 시그네처는 1 같은 구조로 되어 있어 1행에 1개의 시그네처를 기술한다.

시그네처는 헤더와 옵션의 2가지 섹션으로 분류된다. 헤더에는 처리 방법, 프로토콜, IP주소, 포트 번호 등의 처리 대상으로서의 판단 기준를 기술한다. 옵션에는 alert 메시지나 패킷 내부의 조사 내용을 기술한다. 시그네처는 1 같이 전부 8개로 분류된다. 또한, 옵션 부분은 기술하지 않아도 정당한 시그네처로 인식된다. 부분에 기술해야 내용을 1 번호에 따라 해설한다.

 

Rule header

Rule option

action

protocol

IP address

port

->

IP address

Port

(option)

1

2

3

4

5

6

7

8

 

 

번호

의미

1

처리 방법

alert, log, pass…

2

프로토콜

TCP, UDP, ICMP, IP

3

송신자 IP주소

192.168.0.0/24, 10.0.0.0/32…

4

송신자 포트 번호

22, 25, 80, 8080…

5

패킷 방향

->, <>

6

수신자 IP주소

3 동일

7

수신자 포트 번호

4 동일

8

옵션

content, msg…

 

1 시그네처의 구조

action
action
에는 패킷 처리 방법을 alert, log, pass, activate, dynamic 중에서 1개를 지정한다. 각각의 action 의미는 2 같다.
dynamic
시그네처는 단독으로 동작하지 않고, activate시그네처가 있어야만 한다(서로 상반관계). Activate dynamic 확장된 tag라는 옵션에 의해 치환되므로, 사용하지 않는 것이 좋다.
 

action

의미

alert

Alert 발생하고패킷을 기록한다.

log

패킷을 기록한다.

pass

패킷을 무시한다.

activate

Alert 발생시키고대응하는 dynamic시그네처를 유효하게 한다.

dynamic

activate시그네처에 의해 유효하게  경우에 한쪽의 패킷을 기록한다.

drop

패킷을 차단하고 로그에 기록한다.

reject

패킷을 차단하고 로그에 기록한 다음 TCP패킷의 경우 TCP Reset패킷으로 응답하고, UDP패킷의 경우 ICMP port unreachable패킷으로 응답한다.

sdrop

패킷을 차단하지만 로그에 기록하지 않는다.

2 action 종류와 의미

 

protocol
protocol
에는 패킷의 프로토콜을 tcp, udp, icmp, ip 중에서 선택한다.

③⑥ IP address
IP address
에는 ③에 송신자, ⑥에 수신자의 IP주소를 지정한다. 임의의 IP주소인 any 지정할 수도 있다. IP주소는 192.168.0.24 같은 형식으로 넷마스크도 함께 지정한다. 특정 호스트만 지정하는 경우에는 10.1.1.20/32 같이 넷마스크를 32 비트로 한다.
동시에 여러 IP주소를 지정하는 경우, 192.168.0.0/24, 10.0.0.0/8 같은 형식을 사용하면 된다. !192.168.0.0/24 같이 기술하면 not 192.168.0.0/24 의미하게 된다.
또한, snort.conf에서 지정한 변수를 참조할 수도 있다. 예를 들어, HOME_NET 참조하려면, $HOME_NET라고 기술한다.

④⑦ port
port
에는 송수신자의 포트 번호를 지정한다. 하나만 지정하는 경우에는 25 80 같이 수치를 기입한다. 콜론(:) 사용하면 포트 범위를 지정할 있다. 예를 들어, 1:1024라고 기술한 경우, 1~1024까지의 포트 번호를 지정하게 된다. :500(500 이하의 모든 포트), 6000:(6000 이상의 모든 포트) 같이 지정할 수도 있다.
IP
주소와 동일하게 여기에서도 any(임의의 포트) !(지정한 이외의 포트) 사용할 있다.

direction
direction
에는 패킷의 방향을 나타내는 기호를 지정한다. -> 지정하면 좌측이 송신자 IP주소, 우측이 수신자 IP주소임을 의미한다.
<>
송수신자 구별 없이 지정한 IP주소 사이의 모든 패킷이 대상이 된다.

option
option
지정할 있는 옵션은 매우 많으므로, 자주 사용되는 것만 해설한다(3). 모든 옵션에 관한 설명은 Snort웹사이트를 참조하라.

 

옵션

형식

msg

msg: “<메시지 텍스트>”;

dsize

dsize:[>|<]<한계치>[<><한계치>];

content

content: [!]”<검색 문자열>”;

offset

offset: <오프셋 번호>;

depth

depth: <페이로드 깊이>;

nocase

nocase;

flags

flags: <플래그>[,마스크];

 

3 주로 사용되는 옵션

·msg
지정한 메시지가 alert발생시나 로그 보존시에 이벤트명으로서 사용된다.

·dsize
패킷의 페이로드 크기를 확인하고, 사이즈의 범위나 상하한을 지정할 있다. 예를 들어, dsize: 400<>500; 이라고 하면, 400바이트에서 500바이트의 페이로드 크기를 갖는 패킷을 지정하게 된다.
dsize
옵션을 지정하면 간단히 버퍼 오버플로우를 감시할 있다.

·content
content
가장 중요한 옵션으로, 패킷의 페이로드 내부를 검색하는 문자열을 지정한다.
검색 문자열에는 텍스트 데이터와 바이너리 데이터를 지정할 있다. 텍스트 데이터의 경우에는 단순히 검색할 문자열을 지정하면 된다. 바이너리 데이터의 경우에는 16진수로 표시한 데이터를 “|” 둘러 필요가 있다. , 텍스트 데이터는 매칭할 때에 대소문자 구별하는 것에 주의한다.

텍스트인 경우     content: “/bin/sh”;
바이너리인 경우  content: “ | 00 01 02 AA AB FF |”;
혼합시킨 경우     content: “ | 90 90 90 | /bin/sh”;

·offset
content
옵션에서 지정한 문자열의 검색 개시 위치의 옵셋을 지정한다.

·depth
패턴 매칭을 실시할 페이로드의 깊이를 지정한다. 상한을 설정하는 것이므로, 매칭 처리의 부하는 경감되지만, 제한을 엄격하게 하면 false negative 발생하기 쉽다.

·nocase
텍스트 데이터의 패턴 매칭을 때에 대문자와 소문자의 구별을 하지 않는다. 보통 텍스트 데이터의 패턴 매칭은 대문자와 소문자를 구별하기 때문에 이것을 노린 공격을 검지할 없는 가능성이 있다. nocase옵션을 지정하면 이와 같은 미검출을 막을 있다.

·flags
패킷에 설정되어 있는 TCP플래그를 지정한다(4). 복수의 값을 설정하는 경우에는 flags: FS; 같이 나열한다. 또한 +(or), *(and), !(not) 등의 파라미터를 사용할 있다.

 

 

 

 

 

 

출처 : http://blog.naver.com/misman95?Redirect=Log&logNo=80041668574

 

 

 

 

 

댓글