본문 바로가기
카테고리 없음

snort fast_pattern offset length

by 의지의 엘린 2025. 4. 25.

🔍 해당 예시 보기

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도 함께 많이 쓰이는 개념이라 같이 정리해 드릴 수도 있어요.