배이빗의 공부 공간

Snort란 Snort Rule Signature 본문

보안/보안관제

Snort란 Snort Rule Signature

배이빗 2023. 9. 1. 06:18

Snort

- 오픈소스 시그니처 기반 네트워크 침입탐지 시스템(IDS/IPS)

- 프로토콜 분석, 콘텐츠 검색, 웜, 취약점 공격, 포트 스캔, 버퍼 오버플로우 등 다양한 공격을 탐지

- 네트워크 패킷을 수집(스니핑)해서 지정한 Rule과 동일한 패킷을 탐지한다.

 

 

Snort 기능

1. Packet Sniffer Mode 패킷 스니퍼 모드

 

- 네트워크 패킷을 읽고 콘솔에 보여줄 수 있다.

 

2. Packet Logger Mode 패킷 로거 모드

 

- 패킷을 디스크에 기록한다. 

 

3. NIDS (Network IDS) Mode / NIPS (Network IPS) Mode

 

- 공격을 탐지하기 위한 패턴을 만들고 네트워크 트래픽 등이 탐지되는지 분석한다

 

 

 

 

Snort Rule 시그니처(Signiture)

- 룰 헤더(Rule Header)와 룰 옵션(Rule Option)으로 구성

- 룰 헤더: 탐지하는 대상을 의미. (처리 방법, 프로토콜, IP주소 및 포트번호 등) 

- 룰 옵션: 탐지하는 세부적인 조건을 정의

 

Rule Header Rule Option
action protocol IP address port -> IP adress port (option)
행위 프로토콜 출발지 주소 출발지 포트 방향성 목적지 주소 목적지 포트 룰옵션

 

1. 룰 헤더 (Rule Header)

 

action

- 패턴(규칙)에 의해 패킷이 탐지되었을 때 처리하는 방법을 결정하는 명령어

 

- action 종류

 명령어  의미
 alert  Alert(경고) 발생 및 로그 기록
 log  로그 기록
 pass  패킷 무시
 drop  패킷 차단, 로그 기록
 reject  패킷 차단, 로그 기록 ( 로그 기록 후 TCP - TCP RST 응답, UDP - ICMP Unreachable 메시지를 보냄)
 sdrop  패킷을 차단, 로그기록x
 activate  alert를 발생시키고, dynamic 룰을 동작시킴
 dynamic  activate 시그니처에 의해 유효하게 된 경우 한쪽의 패킷을 기록한다.

 

protocol

- protocol에는 패킷의 프로토콜을 tcp, udp, icmp, ip, any(전체) 중에서 선택하여 탐지.

 

IP address & Port

- 송신자와 수신자의 IP주소와 포트번호.

- IP주소는 서브넷 마스크(Subnet Mask)와 함께 설정이 가능하며 서브넷 마스크와 함께 설정하는 경우는 IP주소 / 24와 같은 형태로 사용

 

- 포트 명령어

  • 1:1024  => 1부터 1024를 뜻함
  • :1024 => 1024 이하
  • 1: => 1이상

※  특정 호스트만 지정하고 싶은 경우 넷마스크 /32 비트로 지정한다.

※  any: 임의의 주소나 포트번호, !IP주소 not을 뜻함

※ 지정한 변수 $를 이용하여 참조 가능

 

Direction

패킷의 방향을 나타내는 기호로 나타낸 것.

 

-> 를 지정하면 좌측 송신자 우측이 수신자이다

 

<>는 송수신자 구별없이 지정한 IP주소 사이의 모든 패킷이 대상이 된다.

 

 

룰 옵션(Rule Option)

일반 옵션

 명령어  내용  형식
 msg  경고 이벤트 메세지  msg:"ICMP Ping test"
 sid  룰 식별자 (3000000번 이상 권장)  sid:3000001;
 rev  룰 버전, 수정될 경우 1씩 증가  rev:1;
 priority  우선 순위 (값이 작을수록 먼저 매칭) 범위 : 1~10)  priority:1;
 classtype  스노트 룰 분류  classtype:분류이름;
 reference  취약점 참고 배포 URL 정보  reference: 이름 http://~;

 

흐름 옵션

 명령어  내용
 flow  흐름 옵션 명령어
 to_server 또는 from_client  클라이언트 -> 서버 패킷 룰 매칭
 to_client 또는 from_server  서버 -> 클라이언트 패킷 룰 매칭
 established   세션이 연결된 상태의 패킷 룰 매칭
 statless  세션 연결 유무와 상관 없이 룰 매칭
 flow:to_server,established  클라이언트 -> 서버 세션 연결 패킷 룰 매칭

 

페이로드(전송되는 데이터) 탐색 옵션

 명령어  내용  예제
 content  문자/숫자 탐지  content: "xxx";
 content: "|16진수 16진수|";
 nocase  대소문자 구분 없이 탐지  content: "xxx"; nocase;
 offset  지정한 바이트번째 부터 탐지(0번째 부터 시작)  offset:3;
 depth  지정한 바이트까지 탐지(0번째 부터 시작)  depth:3;
 distance  content 매칭 후 지정 위치 이후 다른 content 탐색  content:"xxx"; content:"yyy"; distance:5;
 within  content 매칭 후 지정 위치 안에 다른 content 탐색  content:"xxx"; content:"yyy"; within:5;
 pcre  정규화 표기, '/'는 시작과 끝에 표기, 16진수는 앞에 \x  pcre:"/(http|ftp) Traffic/" 

 

HTTP 탐색 옵션

 명령어  내용
 http_method   페이로드 앞부분 HTTP 메소드 패턴 매칭 
 http_uri   페이로드의 HTTP URI 패턴 매칭
 http_cookie  페이로드의 HTTP 쿠키 패턴 매칭 
 http_header  HTTP 요청/응답 Header 내용 패턴 매칭
 http_client_body  HTTP 요청/응답 Body 내용 패턴 매칭
 http_stat_code  HTTP 응답 상태 코드 패턴 매칭
 http_stat_message  HTTP 응답 상태 메세지 패턴 매칭

 

'보안 > 보안관제' 카테고리의 다른 글

동적 분석 정의, 동적 분석 도구  (0) 2023.08.31
정적 분석 정의, 정적 분석 도구  (0) 2023.08.31
VirusTotal 이란?  (1) 2023.08.27
보안관제란?  (0) 2023.08.27
악성코드 종류  (0) 2023.08.23
Comments