본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
Snort
  • 1998년 SourceFire사의 CTO Martin Roesch에 의해 발표된 오픈 소스 침입탐지시스템(IDS)
  • 침입탐지시스템 중 가장 널리 사용된다.
  • Packet Sniffer: 네트워크 상의 패킷을 sniffing하여 보여주는 기능
  • Packet Logger: 모니터링한 패킷을 저장하고 로그에 남기는 기능
  • IDS/IPS: 네트워크 트래픽을 분석해 공격을 탐지/차단하는 기능

[액션] [송신 IP] [송신 port] [방향] [수신 IP] [수신 port] ([룰 옵션])

  • 룰 헤더와 룰 옵션으로 구성된다.
  • 룰 옵션은 선택사항이지만 일반적으로 룰 옵션이 훨씬 더 많이 사용된다.
(HTML에서 태그의 attribute보다 style이 훨씬 사용량이 더 많은 것과 흡사)
  • 액션
    • alert: 경고를 발생시킨다.
    • log: 로그를 기록한다.
    • pass: 패킷을 무시한다.
    • active: alert를 발생시키고 대응하는 dynamic을 유효화 한다.
    • dynamic: active에 의해 유효화된 경우 한쪽의 패킷을 기록한다.
  • 송수신 IP, port
    • 211.11.22.33 80
    • 211.11.22.0/24 443
    • any 80 또는 211.11.22.33 any 또는 any any 와 같이 사용 가능하다.
    • '$HOME_NET' 와 같이 snort.conf에서 지정한 변수를 참조할 수도 있다.
  • 방향
    • -> 또는 <>

세미콜론(;)을 이용하여 옵션과 옵션을 구분한다.

  • msg: 지정한 메시지가 이벤트 명으로 사용된다.
  • dsize: dzise:<바이트, dsize:바이트<>바이트 와 같이 상한선, 하한선, 범위를 지정할 수 있다.
  • content: 문자, 바이너리로 패턴을 탐지한다.
    • content:"문자"
    • content:| 00 01 0A AA |
    • content: "| 90 90 90 | /bin/sh"
  • offset: 검색을 시작할 byte수를 지정한다.
  • depth: offset부터 시작하여 검색할 byte수를 지정한다.
  • nocase: 대소문자를 구별하지 않는다.
  • flags: TCP 제어 플래그를 지정한다. F, S, FA, FSA 등으로 지정 가능하다.
  • pcre: 정규식을 사용한다.
  • threshold: 패킷의 발생량을 기반으로 탐지한다.
    • 아직까지 흔히 사용 되고 있지만 공식적으론 사용을 권장하지 않는다.
    • 비슷한 기능을 하진 detection_filter 사용이 권장된다.
    • 형식 : threshold:type 종류, track by_src|by_dst, count 횟수, seconds 초;
    • type threshold : seconds 동안 count 번째 이벤트마다 한 번씩 동작한다
    • type limit : seconds 동안 처음 count 번까지만 동작한다
    • type both : seconds 동안 count 번째 이벤트에서 한 번만 동작한다
    • track by_src 는 출발지 IP 별로, by_dst 는 목적지 IP 별로 센다
    • 예 : threshold:type threshold, track by_src, count 10, seconds 1; → 출발지마다 1초 동안 10번째 이벤트마다 동작
  • nocase 가 없으면 content 는 대소문자를 구분한다. nocase 를 붙이면 구분하지 않는다
  • depth:13 은 offset(없으면 처음)부터 13바이트 안, 곧 첫 번째 바이트부터 13번째 바이트까지에서 content 를 찾는다는 뜻이다

룰 옵션의 분류

편집 원본 편집

Snort 룰 옵션은 무엇을 검사하느냐에 따라 넷으로 나뉜다. 시험에서는 패킷의 페이로드(데이터 부분)를 검사하는 옵션이 무엇인지 자주 묻는다.

분류 하는 일 대표 옵션
일반(general) 룰의 정보를 적는다. 탐지에는 영향이 없다 msg, sid, rev, classtype, priority, reference
페이로드 탐지(payload detection) 페이로드 안의 내용을 검사한다 content, offset, depth, distance, within, nocase, pcre, byte_test, byte_jump
논페이로드 탐지(non-payload detection) 페이로드가 아닌 헤더 필드와 흐름을 검사한다 ttl, tos, id, ipopts, fragbits, flags, seq, ack, flow, itype, icode, dsize
탐지 후(post-detection) 룰에 걸린 뒤 할 일을 정한다 logto, session, tag, detection_filter
  • ttl 은 IP 헤더의 TTL 값을 비교하는 옵션이라 논페이로드 옵션이다. 페이로드를 검사할 때 쓰는 옵션이 아니다
  • offset·depth 는 content 앞에서 검색 시작 위치와 범위를 정하고, distance·within 은 앞의 content 가 걸린 위치를 기준으로 다음 content 의 위치를 정한다
  • 예: alert tcp any any -> $HOME_NET 80 (msg:"cmd.exe 접근"; content:"cmd.exe"; offset:0; depth:200; nocase; sid:1000001;)
  • 바이너리(Binary) 비교 방법
  • 텍스트(Text) 비교 방법
    • 바이너리 비교 방법에 비해 속도가 느리지만 유연한 매칭이 가능하다.