'Snort Rule'에 해당되는 글 1건

  1. 2011.12.16 [Network Security] Snort Rule 중 Content 키워드 정리

 

  • offset
    • packet의 data 파트에서 특정 offset 검사

      ex) alert tcp 192.168.1.0/24 any -> any any (content: "HTTP"; offset: 4; msg: "HTTP matched";)

      ⇒ data가 시작되는 부분에서 4 bytes 떨어진 부분부터 HTTP 문자열 탐색

  • depth
    • data 부분에서 어디까지 검사할지 지정

      ex) alert tcp 192.168.1.0/24 any -> any any (content: "HTTP"; offset: 4; depth: 40; msg: "HTTP matched";)

      ⇒ TCP packet의 data 부분에서 4-40 offset에서 "HTTP" 문자열 검색

  • content-list
    • packet 내부에서 검사할 리스트 목록을 파일로 저장하여 지정

      ex) alert ip any any -> 192.168.1.0/24 any (content-list: "porn"; msg: "Porn word matched";)

      ⇒ porn 파일에 텍스트 형식으로 지정된 내용에 대하여 패킷 검사

  • dsize
    • packet의 data 부분의 길이를 구할 수 있음. BoF 공격에 대한 패킷 사이즈 지정 가능

      ex) alert ip any any -> 192.168.1.0/24 any (dsize: > 6000; msg: "Large size IP packet detected";)

      ⇒ IP pcaket의 data size가 6000 bytes 이상일 경우 alert

  • flags
    • TCP header에 어떤 flag가 설정되어 있는지 검사

      ex) alert tcp any any -> 192.168.1.0/24 any (flags: SF; msg: "SYNC-FIN packet detected";)

      ⇒ SYN-FIN TCP scan 탐지

  • fragbits
    • IP header의 fragmentation과 reassembly을 위한 비트 지정
      • RB(Reserved Bit) : 예약된 비트
      • DF(Don't Fragment Bit) : IP packet은 절대 fragment되지 않음
      • MF(More Fragment bit) : fragment된 패킷이 추가로 있음, 설정되어 있지 않으면 마지막 fragment packet

      ex) alert icmp any any -> 192.168.1.0/24 any (fragbits: D; msg: "Don't Fragment bit set";)

      ⇒ ICMP packet에 DF bit가 설정되어 있을 경우 탐지

  • icmp_id
    • ICMP packet의 특정 ID 값을 탐지하기 위해 사용

      ex) alert icmp any any -> any any (icmp_id: 100; msg: "ICMP ID=100";)

      ⇒ ICMP 헤더의 ID 필드 값이 100일 경우 탐지

  • icmp_seq
    • ICMP의 특정 Seq. no 값을 탐지

      ex) alert icmp any any -> any any (icmp_seq: 100; msg: "ICMP Sequence=100";)

      ⇒ ICMP의 Seq. no가 100일 경우 탐지

  • itype
    • ICMP packet의 type 필드 비교

      ex) alert icmp any any -> any any (itype: 4; msg: "ICMP Source Quench Message received";

      ⇒ ICMP source quench 메시지를 탐지

  • icode
    • ICMP의 type 필드에 대한 자세한 설명이 있는 code 필드 비교. 예를 들어 type이 5(ICMP redirect)일 경우 redirect된 이유를 code 필드에 기재
      • code 0 : network redirect
      • code 1 : host redirect
      • code 2 : service 또는 network의 종류로 인한 redirect
      • code 2 : service 또는 host의 종류로 인한 redirect

      ex) alert icmp any any -> any any (itype: 5; icode: 1; msg: "ICMP ID=100";)

      ⇒ host redirect ICMP packet에 대한 탐지

  • id
    • IP packet header의 fragment ID 값 비교
    • 마지막 패킷인지 탐지시 사용
  • ipopts
    • IP header의 끝 부분에 추가되어 있는 option 필드에 대한 비교
      • rr(Record route)
      • ts(Time Stamps)
      • lsrr(Loose Source Routing)
      • ssrr(Strict Source Routing)
    • lsrr을 사용할 경우 hacker에 의해 특정 네트워크 경로 존재여부를 알 수 있음

      ex) alert ip any any -> any any (ipopts: lsrr; msg: "Loose source routing attempt";)

      ⇒ Loose source Routing 시도 탐지

  • ip_proto
    • IP header의 protocol number를 구분하기 위해 사용(/etc/protocols 참조)

      ex) alert ip any any -> any any (ip_proto: ipip; msg: "IP-IP tunneling detected";)

      ⇒ IPIP protocol 탐지

  • logto
    • 패킷을 특정 파일로 로깅

      ex) alert icmp any any -> any any (logto:logto_log; ttl: 100;)

      ⇒ ICMP packet을 logto_log 파일로 저장

  • msg
    • 경고를 하거나 로깅을 하기 위한 문자열 지정
  • nocase
    • 대소문자 구별 안함
  • priority
    • 해당 rule에 우선 순위 부여, "1"이 가장 높은 우선 순위
  • react
    • 특정 사이트나 서비스를 차단하기 위해 세션 종료 또는 특정 경고 메시지 사용자에게 전송

      ex) alert tcp 192.168.1.0/24 any -> any 80 (msg: "Outgoing HTTP connection"; react: block;)

      ⇒ Outgoing HTTP packet을 모두 차단

      ex) alert tcp 192.168.1.0/24 any -> any 80 (msg: "Outgoing HTTP connection"; react: warn, msg;)

      ⇒ Outgoing HTTP packet 발생 시 사용자 브라우져에 msg 문구 전송, 단 configure시 --enable-flexresp 필요

  • reference
    • 참고 정보에 대한 내용 기재
  • resp
    • rule에 탐지시 공격 host에 응답 패킷을 전송하여 hacker를 knock down, comma로 구분하여 여러개 지정 가능

      ex) alert tcp any any -> 192.168.1.0/24 8080 (resp: rst_snd;)

      ⇒ 8080으로 접근시 TCP Reset packet 전송

  • rev
    • rule의 revision number를 기록
  • rpc
    • RPC 기반의 요청을 탐지, Application number, Procedure number, Version number의 3개의 키워드 사용 가능

      ex) alert ip any any -> 192.168.1.0/24 any (rpc: 10000,*,3; msg: "RPC request to local network";)

      ⇒ TPC number가 10000이고 모든 procedure, version number가 3인 RPC request에 대하여 탐지

  • sameip
    • src ip와 dst ip가 동일한지 비교

      ex) alert ip any any -> 192.168.1.0/24 any (msg: "Same IP"; sameip;)

      ⇒ src ip와 dst ip가 동일하면 탐지

  • seq
    • TCP packet의 seq. no 비교 탐지
  • flow
    • TCP session의 packet flow에 대해서 특정 방향 지정
      • to_client
      • to_server
      • from_client
      • from_server
  • session
    • TCP session의 모든 데이터를 dump 또는 출력 가능한 데이터만 dump, all로 지정시 모든 packet을 덤프하며, logto 키워드와 함께 사용시 특정 파일로 저장 가능
  • sid
    • rule에 SID(Snort ID)를 지정, Output module과 log scanner는 rule을 구분하기 위해서 SID를 사용
      • 0 - 99 : 예약된 SID
      • 100 - 1,000,000 : Snort 배포를 위해 예약
      • 1,000,000 이상 : 일반 사용자가 사용
  • tag
    • rule이 매치되었을 경우 침입자에 대한 추가적인 정보를 저장하기 위해 사용

      ex) alert tcp 192.168.2.0/24 23 -> any any (content: "boota"; msg: "Detected boota"; tag: session, 100, packets;)

      ⇒ rule 탐지 시 session의 100 packet을 logging

  • tos
    • IP header의 ToS(Type of Service)의 특정 값을 탐지하기 위해 사용
  • ttl
    • IP header의 TTL(Time to Live) 값을 탐지하기 위해 사용
  • uricontent
    • packet의 URI string만 탐지시
신고
Posted by By. PHR34K

티스토리 툴바