Snort & PCRE네트워크,클라우드2024. 10. 13. 18:45
Table of Contents
Snort Option
RTN = Rule Tree Node
OTN = Option Tree Node (괄호 안에 있는 부분들을 지칭)
패턴은 and 조건으로 동작.
(예시)
- offset : content에서 매칭을 시도할 문자열의 시작 바이트 위치를 지정
- content:”abcd”; offset:0; → 문자열 abcd를 페이로드 1 Byte 위치부터 매칭 시도
- depth : content에서 매칭을 시도할 문자열의 종료 바이트 위치를 지정
- content:”abcd”; depth:10; → 문자열 abcd를 페이로드 10 Byte 위치까지만 매칭 시도 (offset생략됨)
- distance : 이전 content에서 매칭되고, 다음 content 매칭을 시작할 바이트 위치를 지정
- content:”abcd”; content:”efgh”; distance:20; → 문자열 abcd가 매칭되면 abcd부터 20 Byte 떨어진 위치에서 매칭 시도
- within : 이전 content에서 매칭되고, 다음 content 매칭을 종료할 바이트 위치를 지정
- content:”abcd”; content:”efgh”; within:50; → 문자열 abcd가 매칭되고 50 Byte 위치 까지만 efgh를 매칭 시도
General Rule Option
- msg : 패턴 매칭 시 출력 메세지
- sid : 시그니처의 구분자
- classtype : 매칭 패킷의 공격 유형 및 위험도 구분
Payload Detection Rule Options
- content : 문자열 검사
- Hex 문자 지정 → content : "|61 41 62 42 |" ;
- Text와 Hex 혼용 지정 (공백,특수문자가능) → content : "|61|A|62||62|C";
- 특수문자 매칭 → content : "\"hello world! \"\\n";
- 부정탐지 → content : !"GET";
- nocase : 대소문자 무시
- 형식 : nocase;
- pcre : 정규표션식 정의
- Content Modifier : 문자열의 위치나 형식 지정
- fast_pattern; → 탐지 옵션을 빠르게 검색
- http_uri → HTTP 요청의 URI에 포함되어있는지 확인
- http_client_body → HTTP Client의 요청 본문을 검색
- http_cookie → HTTP 요청의 쿠키 헤더를 검색
- http_raw_cookie → HTTP 요청의 원시 쿠키 값을 검색
- http_header → HTTP 요청의 헤더를 검색
- http_raw_header → HTTP 요청의 원시 헤더 값을 검색
- http_method → HTTP 요청의 메서드(GET, POST 등)를 검색
- http_raw_uri → HTTP 요청의 원시 URI를 검색
- http_stat_code → HTTP 응답의 상태 코드를 검색
- http_stat_msg → HTTP 응답의 상태 메시지를 검색
- rawbytes → 원시 바이트 데이터를 검색
- depth → 0번째부터 해당 depth 전 까지 검색할 데이터의 최대 길이를 지정 (단위 Byte)
- offset → 검색을 시작할 위치를 지정 (단위 Byte)
- distance → 두 패턴 사이의 최소 거리를 지정 (단위 Byte), 해당 Byte만큼 떨어진 위치에 어떤 문자열이 있을 경우 매칭
- content:"apple"; content:"pearl"; distance:5;
- "apple"이 매칭되고, 5Bytes 떨어진 위치에서 "pearl"이 있을 경우 매칭
- content:"apple"; content:"pearl"; distance:5;
- within → 지정된 길이 내에서 패턴을 검색
- content: "apple"; content:"pearl"; within:10;
- "apple"이 매칭되고 10Bytes 범위 내에서 "Pearl"이 있을 경우 매칭
- content: "apple"; content:"pearl"; within:10;
- isdataat → 패킷의 중간부터 패턴 매칭 시작해서 일부분만 비교
- content:"aA"; isdataat:30, relative;
- aA패턴 매칭 후 바로 30Byte를 뛰어넘어 31번 째 부터 매칭 시작
- content:"aA"; isdataat:30, relative;
- relative; → "GET" 문자열이 발견된 위치에서 4바이트 거리의 위치에 데이터가 존재하는지를 검사
- rawbytes : "GET" 문자열 뒤에 4바이트가 존재하는지를 검사
- byte_test → 비트 또는 바이트 단위로 값을 비교
- content:"5"; byte_test:1,=,0x38,2,relative;
- 문자열 "5"에 매칭된 다음 위치를 시작점으로 하여 2Bytes만큼 떨어진 1Byte 크기의 영역에 "8"값이 있는지 검사.
- content:"5"; byte_test:1,=,0x38,2,relative;
PCRE
PCRE Testing site
https://regex101.com/
임의의 한 문자 (.)
지정 문자 한 개 ([])
괄호 안 문자 중 하나만 가리킴
한 문자 제외 (^)
괄호 안 문자 중 하나만 제외
0회 이상 반복 (*)
1회 이상 반복 (+)
0또는 1회 반복
n회 반복 ({n})
n회 이상 반복 ({n,})
n회 이상, m회 이하 반복 ({n,m})
줄의 시작위치 (^)
줄의 마지막 위치 ($)
여러 패턴 중 하나와 일치, 선택지정 ( | )
단어 경계 ( \b, \B )\
딱 정해진 철자만 지정
정해진 철자로 시작하는 단어 지정
정해진 철자로 끝나는 단어 지정
주석처리 - (?#내용) 혹은 (?#>내용<)
특수문자 목록
\w
[0-9a-zA-Z] -> 영문자, 숫자, 언더바(_)
\W
[^0-9a-zA-Z] -> 영문자, 숫자 언더바(_) 이외
\s
[\t\n\r\f] -> 공백(스페이스, 탭, 개행)
\S
[^\t\n\r\f] -> 공백 이외
\d
[0-9] -> 숫자
\D
[^0-9] -> 숫자 이외
'네트워크,클라우드' 카테고리의 다른 글
ISMS 인증기준 AWS 클라우드 보안관리 아키텍처 (0) | 2024.11.18 |
---|---|
SD-WAN / SASE Cloud Architecture (0) | 2024.10.15 |
AWS Compute & Container & Severless & Storage (2) | 2024.10.13 |
IXIA 계측기 활용법 (CC/CPS/Throughput) (1) | 2024.05.14 |
DHCP 기본 동작 과정과 Proxy Agent (0) | 2024.05.14 |
@widesec :: 보안 기술로그
IT/보안