정규 표현식은 특정 규칙을 가진 문자열의 집합을 표현하는 형식적 언어이다.
특정한 패턴을 가진 문자열을 탐색할때 주로 이용하며, 대표적으로 IDS나 방화벽에서 특정 패턴을 탐지하는 정책을 설정할때 많이 사용한다.
RegExr: Learn, Build, & Test RegEx
RegExr is an online tool to learn, build, & test Regular Expressions (RegEx / RegExp).
regexr.com
위의 사이트에서 정규표현식을 입력해보며 탐지가 잘 되는지 확인할 수 있다.
1. ^[문자]
[문자]로 시작하는 문자열 탐색
ex) ^abc => abc123, abc234, abc567 (탐지됨) / 1abc (탐지안됨)
2. [문자]$
[문자]로 끝나는 문자열 탐색
ex) ^abc => 1abc, 2abc, 123abc (탐지됨) / 1abc23, abc23 (탐지안됨)
3. [문자]+
1개 이상의 [문자] 다 탐지
ex) 1+ => 1, 111, 1111111 (탐지됨)
4. .
.은 숫자든 문자든 모든 임의의 문자를 나타냄.
ex) . => 123, k, hi, world, juntheworld (탐지됨)
5. [문자]*
[문자]*은 해당 문자가 몇개가 오든 다 탐지
ex) A* => A, AAAAA, AAAAAAAAAA (탐지됨)
6. ([문자1] | [문자2] | [문자3])
( [문자1] | [문자2] | [문자3]) 에서 | 는 or의 의미
ex) (com|org|net) => com, org, net (탐지됨)
7. ([0-9])
([0-9])는 0부터 9까지 아무숫자나
ex) 1,2,3,4,5,6,7,8,9,0 (탐지됨)
8. ([0-9]){[자릿수]}
([0-9]){[자릿수]}는 0부터 9까지 아무숫자로 구성된 [자릿수]를 만족하는 숫자
ex) ([0-9]){2} => 12,34,56,78,90 (탐지됨) / 123, 1, 5789, 576 (탐지안됨)
9. \[메타문자]
\[메타문자]는 정규표현식에서 특정 의미를 가지도록 약속된 문자 (^,*,+...)를 문자 그자체로 사용하고 싶을때 사용
ex) 1\+2 => 1+2 (탐지됨) / 1111112 (탐지안됨)
주의사항
- 정규 표현식을 사용할때 너무 핏한 설정을 주게되면 놓치는 경우가 발생하고, 너무 루즈한 설정을 주게되면 쓰레기 값이 많이 탐지된다. 이에 탐지하고자 하는 패턴에 최적화된 정규표현식을 찾는 것이 중요하다.
- IDS, 방화벽등 보안 장비 정책을 수립할때에 인코딩된 경우와 운영체제별 표현차이(리눅스 - 경로 표현시 / 윈도우 - 경로 표현시 \)를 모두 반영해야한다. (공백문자 => (\x20|%20) / 슬래시(/) => (\/|%2F|%5c))
'공부 > 이모저모' 카테고리의 다른 글
C언어 배열이름에 &붙이는 경우(&배열이름??) (0) | 2021.10.19 |
---|---|
행렬의 덧셈과 곱셈 (행렬이란? 행이란 열이란) (0) | 2021.10.18 |
주요 포트번호 및 서비스 정리 (FTP,HTTP,SSH,텔넷,SMTP...) (0) | 2021.10.01 |
리눅스 계정 구조 / 사용자 정보 구조 / 파일 딕셔너리 권한 (etc/passwd 구조, etc/shadow구조) (0) | 2021.09.17 |
윈도우 인증의 구성 요소 (LSA, SAM, SRM) (0) | 2021.09.17 |