본문 바로가기
정보보안기사&CISSP관련/보안장비 운영

[Day 103] snort rule(2) - body 설정

by minimalist_2022 2020. 11. 21.

snort rule body 설정 : 일반 옵션

msg alert 발생 시 이벤트 이름으로 사용됨
reference 룰과 관련된 외부 취약점 정보
sid snort rule id로 사용 범위는 아래와 같음
99이하 : 시스템 예약 sid
100~1,000,000 : snort에서 배포하는 룰셋 sid
1,000,001 이상 : 사용자 정의 룰에서 사용하는 sid
classtype 공격유형과 기본 우선순위 정의
priority 룰 우선순위(숫자)
rev rule 버전번호로 수정(revision) 횟수 표기

 

snort rule body 설정 : 범위 옵션

content 페이로드에서 검사할 문자열을 text, binary 형식으로 지정
1) text 형식 : content:"pattertn" -> 해당 패턴 문자열 검사
2) binary 형식 : content:"|FF FF|" -> 파이프 기호 사이에 헥사값으로 표현
3) !(부정연산자) 사용 : content:!"pattertn" -> 해당 패턴 문자열이 없는지 검사
4) ; \ " 이 3가지 특수문자는 이스케이프 처리해서 사용(ex. \;)
urlcontent content 문자열을 전체 패킷과 비교하는 대신 HTTP 클라이언트 요청 URL 정보를 검사할 문자열 지정
offset 페이로드에서 content 패턴을 검사할 시작위치
페이로드의 첫번째 바이트 위치가 0부터 시작
depth offset부터 몇 바이트까지 검사할 것인지 지정
distance 이전 content 패턴에 매치된 경우, 매치된 이후 바이트부터 몇 바이트 떨어진 위치에서 다음 content를 검사할 것인지 지정
within 이전 content 패턴에 매치된 경우, distance부터 몇 바이트 범위 내에서 다음 content를 검사할 것인지를 지정
nocase 페이로드 검사 시 대소문자 구분 안함

 

snort rule body 설정 : 옵션 예

content 옵션의 text 데이터 설정 alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg: "[TEST20] content_text"; content:"/etc/passwd"; nocase; sid:1000020;)

content 옵션의 binary 데이터 설정 alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg: "[TEST21] content_binary"; content:"|2f 65 74 63 2f|"; nocase; sid:1000021;)

content 옵션의 text & binary 데이터 설정 alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg: "[TEST22] content_text+binary"; content:"|2f 65 74 63 2f|passwd"; nocase; sid:1000022;)

offset 옵션 

스노트 룰에 매치되는 테스트 문자열
0 1 2 3 4 5 6 7 8 9 A B C D E F
alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg: "[TEST23] offset"; content:"234"; offset:2; nocase; sid:1000023;)

--> 3번째 바이트부터 234 문자열 패턴 있는지 검사

depth 옵션

스노트 룰에 매치되는 테스트 문자열
0 1 2 3 4 5 6 7 8 9 A B C D E F
alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg: "[TEST24] depth"; content:"234"; offset:2; depth:3; nocase; sid:1000024)

--> 3번째 바이트부터 3바이트 범위 내에 234 문자열 패턴이 있는지 검사

distance 옵션

스노트 룰에 매치되는 테스트 문자열
0 1 2 3 4 5 6 7 8 9 A B C D E F
alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg: "[TEST25] distance"; content:"234"; offset:2; depth:3; content:"BCD"; distance:6; nocase; sid:1000025;)

--> 이전 content 패턴이 매치된 이후 바이트부터 6바이트 떨어진 위치에서 BCD 문자열 패턴이 있는지 검사

within 옵션

스노트 룰에 매치되는 테스트 문자열
0 1 2 3 4 5 6 7 8 9 A B C D E F
alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg: "[TEST26] within"; content:"234"; offset:2; depth:3; content:"BCD"; distance:6; within:3; nocase; sid:1000026;)

--> 이전 content 패턴이 매치된 이후 바이트부터 6바이트 떨어진 위치에서 3바이트 범위 내에 BCD 문자열 패턴이 있는지 검사

 

snort rule body 설정 : Event Threshold(이벤트 제한) 관련 옵션

  • 특정 시간동안 발생되는 이벤트 수를 제한하기 위한 옵션
  • 형식 : threshold type <limit|threshold|both>, track <by_src|by_dst>, count <c>, seconds <s>

type

limit 매 s초동안 c번째 이벤트"까지" 액션 수행 threshold type limit, track by_src, count 2, seconds 10 
--> 출발지 IP 기준으로 매 10초 동안 2번째 이벤트까지 액션 수행

threshold 매 s초동안 c번째 이벤트"마다" action 수행  threshold type threshold, track by_src, count 2, seconds 10 
--> 출발지 IP 기준으로 매 10초 동안 2번째 이벤트마다 액션 수행

both s초동안 c번째 이벤트 "발생 시 1번" action 수행  threshold type both, track by_src, count 10, seconds 1
--> 출발지 IP 기준으로 매 1초 동안 10번째 이벤트 시 한번 액션 수행
즉 1초동안 10번 이상 이벤트 발생하면 액션을 한번 수행

 

track

by_src 출발지 IP 기준으로 추적
by_dst 목적지 IP 기준으로 추적

 

※ 연관 지식 : remybaek.tistory.com/111

 

[Day 102] snort rule(1) - header 설정

개요 snort(스노트)는 네트워크 침입 차단/탐지 시스템 주요 기능 : 패킷 스니퍼, 패킷 로거(저장하고 로그남김), 네트워크 IDS/IPS snort rule(또는 signature)은 크게 header 부분과 body 부분으로 구성됨 head

remybaek.tistory.com

※ 참고 : 알기사 정보보안기사 실기 교재