라떼는말이야

PCRE (Perl Compatible Regular Expressions) 본문

프로젝트/Snort

PCRE (Perl Compatible Regular Expressions)

MangBaam 2020. 8. 28. 17:22
반응형

2020/08/28 - [프로젝트/Snort] - [Snort] 스노트 기본 동작 / Snort Rule 구조

 

[Snort] 스노트 기본 동작 / Snort Rule 구조

2020/08/27 - [프로젝트/Snort] - [Snort] Snort 환경 구축 설계 [Snort] Snort 환경 구축 설계 Attacker (Kali) 2개의 네트워크 인터페이스를 가진다. NAT(VMNet8) : 192.168.2.50 Host-only(VMNet1) : 192.168.2..

latte-is-horse.tistory.com

위 게시글에서 스노트 룰셋의 기본 구성에 대해 알아보았다.

그 중 content 정보를 더욱 세밀하게 검색할 때 PCRE라는 것을 사용한다.

 


 

PCRE는 '펄 호환 정규 표현식'이라는 뜻으로 원하는 결과를 더욱 컴팩트하게 얻을 수 있고 보안 분야에서는 변형화 된 공격을 탐지하는데 유용하게 쓰인다.

 

PCRE의 구성 요소 : 메타 문자, 수량자, 클래스, 서브 패턴, 옵션

PCRE의 사용 방법 : pcre:"/레직스/옵션";

 

 

메타 문자

문자 내용 예제 설명
? 0글자, 또는 1글자 850? 85, 850 (?앞의 0이 있거나 없거나)
+ 1글자 이상 850+ 850, 8500, 85000 (+앞의 0이 1글자 이상)
* 0글자 이상 850* 85, 850, 8500, 85000 (*앞의 0이 0글자 이상)
. 1글자 모든 것 85. 85, 85-~859, 85a~85z, 85A~85Z
^ 문자 시작 ^850 850으로 시작
$ 문자 끝 850$ 850으로 끝
_ 공백 100_200 100 200
( ) 서브패턴(문자열을 하나로 묶음) (850)* 없음, 850, 850850, 850850850 (*와 결합하여 보인 예제)
| OR (100|200) 100 or 200
\ 이스케이프 문자(특정 기호 표기) \(65013_65005\) (65013 65005) (공백과 결합하여 보인 예제)
\b 문자의 시작과 끝 \b850\b 123 850 456
\t Tab    
\r 커서를 현재 줄 처음으로 이동   캐리지 리턴
\n 커서를 다음 줄로 이동   라인피드

 

수량자

수량자 내용 예제 설명
{3} 3개 존재하는 문자 검색 [A-Z]{3} 대문자 A~Z 중 3글자
{4,} 4개 이상 존재하는 문자 검색 [A-Z]{4,} 대문자 A~Z 중 4글자 이상
{2,4} 2개 이상 4개 이하 존재하는 문자 검색 cis{2,4}co cissco, cisssco, cissssco

 

클래스

클래스 내용
[3579] 3, 5, 7, 9
[2-9] 2, 3, 4, 5, 6, 7, 8 ,9 
[^2-9] 0, 1
[0-9a-zA-Z] 모든 숫자/문자
[\f\r\t\n\v] 모든 공백

 

옵션

옵션 내용 예제
i 대소문자 구분 없이 검색 pcre:"/select/i"
s 줄이 넘어가도 문자열을 1줄로 인식하여 기능 동작 pcre:"/select/s"
x 패턴에 존재하는 모든 공백 무시 pcre:"/select/x"

 

HTTP 옵션

옵션 내용 예제
M (http_method) HTTP 메소드 패턴 매칭 pcre:"/get/Mi"
U (http_uri) 정규화된 URL 디코딩 문자열 패턴 매칭 pcre:"/cisco/Ui"
H (http_header) 정규화된 HTTP 요청 메시지 Header 내용 패턴 매칭 pcre:"/select/Hi"
P (http_client_body) HTTP 요청 메시지 Body 내용 패턴 매칭 pcre:"/select/Pi"
S (http_stat_code) HTTP 응답 코드 패턴 매칭 pcre:"/200/S"
Y (http_stat_message) HTTP 응답 상태 메시지 패턴 매칭 pcre:"/OK/Y"
반응형
Comments