🔍 해당 예시 보기
content:"Authorization: Basic "; fast_pattern:offset 5, length 10;
- 문자열 "Authorization: Basic "의 전체 길이는 19바이트입니다.
- Snort는 이 문자열을 인덱싱할 때, 5번째 바이트부터 10바이트만 사용한다는 뜻입니다.
Snort에서 fast_pattern:offset 5, length 10;는 “fast_pattern으로 지정한 문자열 중, 일정 범위만 빠르게 검사에 사용하겠다”는 뜻입니다. 여기서 말하는 5번째, 10바이트는 해당 content 문자열 내부에서의 바이트 인덱스 기준 범위입니다.
✅ 계산해보면
문자열: "Authorization: Basic "
→ 바이트(문자) 기준으로 번호를 붙이면:
문자 A u t h o r i z a t i o n : ␣ B a s i c ␣
인덱스 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
- offset 5 → 5번째 바이트부터 시작 (즉, "r")
- length 10 → 10바이트만큼 사용
즉, fast_pattern으로 인덱싱되는 부분은:
"rization: "
✅ 실제 의미
- Snort는 "Authorization: Basic " 전체를 검사하는 게 아니라,
그 안에서 5번째 바이트부터 10바이트만 인덱싱하여 빠른 검색용으로 활용합니다. - 이후 조건이 맞으면 전체 content를 정밀하게 검사합니다.
🔁 정리
항목 의미
offset: 5 | content 문자열에서 5번째 바이트부터 시작 |
length: 10 | 시작 지점부터 총 10바이트까지 인덱싱에 사용 |
fast_pattern 적용 범위 | "rization: " 부분만 인덱스화 |
성능 목적 | 너무 긴 문자열 대신, 고유하고 중요한 중간 부분만 필터링에 사용 가능 |
더 궁금하신 거 있으시면 이어서 설명 드릴게요! offset, depth, distance, within도 함께 많이 쓰이는 개념이라 같이 정리해 드릴 수도 있어요.