카테고리 없음
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 버전 대응 방식도 추가해드릴까요?