Recent Posts
Recent Comments
라떼는말이야
PCRE (Perl Compatible Regular Expressions) 본문
반응형
2020/08/28 - [프로젝트/Snort] - [Snort] 스노트 기본 동작 / Snort Rule 구조
위 게시글에서 스노트 룰셋의 기본 구성에 대해 알아보았다.
그 중 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" |
반응형
'프로젝트 > Snort' 카테고리의 다른 글
[Snort] VMWare 가상머신 세팅 (공격자, 피해자, 스노트, 게이트웨이) (0) | 2020.08.30 |
---|---|
[Snort] 스노트 기본 동작 / Snort Rule 구조 (0) | 2020.08.28 |
[Snort] Snort 환경 구축 설계 (0) | 2020.08.27 |
Comments