카테고리 없음

Snort HTTP 시그니처 옵션 정리

의지의 엘린 2025. 4. 22. 14:00

 각 HTTP_* 시그니처 옵션들(u p h m c i d k t n x)을 개념, 탐지 방식, 실사용 예시, 우회 및 주의사항까지 포함한 보고서 형식으로 정리드리겠습니다.


📄 Snort HTTP 시그니처 옵션 보고서

주제: u p h m c i d k t n x에 해당하는 HTTP 관련 시그니처 옵션 정리


1. u - uricontent

  • 개념: URL에서 path 부분(디코딩된 상태)을 기준으로 문자열을 탐지
  • 탐지 위치: GET /login.php?id=1 → /login.php?id=1 내에서 검색
  • 용도: WebShell, 관리페이지, 취약한 경로 요청 탐지
  • 예시:
  • uricontent:"/admin/"; nocase;
  • 우회 예시: %2fadmin%2f 등 URL 인코딩을 사용하면 우회 가능
  • 주의: uricontent는 디코딩된 경로만 검사하므로 인코딩된 우회는 http_raw_uri로 추가 대응 필요

2. p - http_client_body

  • 개념: HTTP 요청에서 Body 영역(Payload)을 탐지 (주로 POST 요청의 내용)
  • 탐지 위치: Content-Length: 이후 데이터 (ex: username=admin&password=1234)
  • 용도: 민감 정보 전송, SQLi, XSS, 파일 업로드 탐지
  • 예시:
  • http_client_body; content:"passwd=";
  • 우회 예시: Base64 인코딩 등으로 Body 우회
  • 주의: POST 외 다른 메소드(예: GET)에는 적용되지 않음

3. h - http_header

  • 개념: 디코딩된 전체 HTTP 헤더 필드를 탐지 (User-Agent, Referer, Cookie 포함)
  • 탐지 위치:
  • GET / HTTP/1.1 Host: example.com User-Agent: Mozilla/5.0
  • 용도: 비정상 User-Agent, 악성 Referer, Bot 탐지
  • 예시:
  • http_header; content:"User-Agent|3a| nikto";
  • 우회 예시: 헤더 이름을 변경하거나 대소문자 조작
  • 주의: 헤더 전체를 검사하므로 성능 이슈 가능 (selective content 사용 권장)

4. m - http_method

  • 개념: 요청의 HTTP 메소드(GET, POST, PUT 등)를 검사
  • 탐지 위치: 요청의 첫 줄 GET /index.html HTTP/1.1
  • 용도: 비정상 HTTP 메소드 사용 탐지 (ex: DELETE, CONNECT)
  • 예시:
  • http_method; content:"DELETE";
  • 우회 예시: RFC 표준을 벗어난 변형 메소드 (ex: "DeLeTe")
  • 주의: nocase 옵션 필수

5. c - http_cookie

  • 개념: Cookie: 헤더의 값만을 검사
  • 탐지 위치:
  • Cookie: PHPSESSID=abcdef; token=xyz
  • 용도: 세션 탈취, 토큰 조작 탐지
  • 예시:
  • http_cookie; content:"token=guest";
  • 우회 예시: URL 쿠키 우회, 도메인 분할 쿠키 우회 등
  • 주의: 정확한 키워드 매칭 중요

6. i - http_raw_uri

  • 개념: 인코딩된 원본 URI 경로에서 매칭 (디코딩 X)
  • 탐지 위치: GET /%2e%2e%2fetc/passwd HTTP/1.1
  • 용도: 인코딩을 이용한 디렉터리 트래버설, 경로 우회 탐지
  • 예시:
  • http_raw_uri; content:"%2e%2e%2f";
  • 우회 예시: 2단계 인코딩 (%252e) 등
  • 주의: uricontent와 같이 쓰면 인코딩·디코딩 우회 모두 대응 가능

7. d - http_raw_header

  • 개념: 원본 헤더 전체를 디코딩 없이 탐지
  • 탐지 위치:
  • User-Agent:%0aevilBot
  • 용도: 특수문자 삽입, CRLF 인젝션 탐지
  • 예시:
  • http_raw_header; content:"%0a";
  • 우회 예시: 이중 인코딩, 특수문자 우회
  • 주의: 정규식과 병행 사용 권장 (pcre)

8. k - http_stat_code

  • 개념: 서버 응답의 상태 코드 숫자 (200, 500 등)
  • 탐지 위치: HTTP/1.1 500 Internal Server Error
  • 용도: 공격 성공 여부 탐지 (500 에러 = 취약점 trigger 의심)
  • 예시:
  • http_stat_code; content:"500";
  • 주의: 단순 에러 응답만으로 판단은 위험하므로 context 필요

9. t - http_stat_msg

  • 개념: 서버 응답 상태 메시지 (OK, Not Found 등)
  • 탐지 위치: HTTP/1.1 403 Forbidden
  • 용도: 메시지 조작, 우회 응답 등 확인
  • 예시:
  • http_stat_msg; content:"Forbidden";

10. n - http_host

  • 개념: Host: 헤더 값을 기준으로 탐지
  • 탐지 위치:
  • Host: malicious.evil.com
  • 용도: 피싱 도메인, 비인가 호스트 접근 탐지
  • 예시:
  • http_host; content:"evil.com";

11. x - http_raw_body

  • 개념: 디코딩되지 않은 HTTP 요청 Body (Base64, URI 인코딩 등 포함)
  • 탐지 위치:
  • POST /upload.php Content-Type: application/x-www-form-urlencoded data=%3cscript%3ealert(1)%3c%2fscript%3e
  • 용도: XSS 우회, 특수문자 기반 공격 탐지
  • 예시:
  • http_raw_body; content:"%3cscript%3e";
  • 주의: http_client_body와 병행하여 인코딩/디코딩 우회 동시 대응 필요

📌 결론 및 적용 전략

공격 유형 추천 옵션 조합

URL 경로 기반 공격 uricontent, http_raw_uri
인코딩된 우회 탐지 http_raw_* 시리즈
POST 기반 공격 http_client_body, http_raw_body
헤더 기반 우회 탐지 http_header, http_raw_header
응답 기반 공격 여부 추정 http_stat_code, http_stat_msg
세션/도메인 조작 탐지 http_cookie, http_host

이 보고서 포맷은 시그니처 작성 교육용 또는 내부 정책 문서로도 사용할 수 있게 구성하였습니다.
원하시면 Word, PDF, PPT 등으로 출력 가능한 버전도 제공해드릴 수 있어요.

혹시 각 항목별로 Wireshark 트래픽 예제, PCRE 정규식 적용법, 혹은 Snort 3 버전 대응 방식도 추가해드릴까요?