snort

agnusdei·2024년 7월 28일
0

Snort 작성법

Snort는 오픈 소스 침입 탐지 시스템(IDS)으로, 네트워크 트래픽을 실시간으로 모니터링하고 패킷을 분석하여 악의적인 활동을 탐지합니다. Snort의 규칙 구조는 다음과 같습니다:

규칙 구조

action protocol source_ip source_port direction destination_ip destination_port (options)
  • action: alert, log, pass, drop
  • protocol: tcp, udp, icmp
  • source_ip: 출발지 IP 주소
  • source_port: 출발지 포트 번호
  • direction: -> (단방향), <-> (양방향)
  • destination_ip: 목적지 IP 주소
  • destination_port: 목적지 포트 번호
  • options: 추가 조건 및 동작 설정

주요 옵션 설명

  1. content:

    • 패킷의 페이로드 내에서 특정 문자열을 검색합니다.
    • 예: content:"bad";는 페이로드 내에서 "bad"라는 문자열이 포함된 패킷을 찾습니다.
  2. depth:

    • content 옵션과 함께 사용되며, 검색할 바이트 수를 제한합니다.
    • 예: depth:20;는 패킷의 시작부터 20바이트 이내에서만 검색합니다.
  3. offset:

    • content 옵션과 함께 사용되며, 검색을 시작할 위치를 지정합니다.
    • 예: offset:10;는 패킷의 10바이트 이후(10 초과 === 11이상)에서 검색을 시작합니다.
  4. nocase:

    • 대소문자를 구분하지 않고 문자열을 검색합니다.
    • 예: content:"password"; nocase;는 "password", "PASSWORD", "PassWord" 등 모든 조합을 탐지합니다.
  5. pcre:

    • 정규 표현식을 사용하여 패턴을 검색합니다.
    • 예: pcre:"/bad|malicious/i";는 "bad" 또는 "malicious"라는 문자열을 대소문자 구분 없이 검색합니다.
  6. sid:

    • 규칙의 고유 식별자입니다.
    • 예: sid:1000001;은 이 규칙의 고유 ID를 설정합니다.

예시 규칙 및 분석

예시 1: HTTP 트래픽 감지

alert tcp any any -> any 80 (msg:"HTTP traffic detected"; sid:1000001;)
  • 설명: 모든 출발지에서 오는 HTTP 트래픽을 감지하고 경고 메시지를 출력합니다.

예시 2: 특정 IP 차단

drop tcp 192.168.1.100 any -> any any (msg:"Malicious IP blocked"; sid:1000002;)
  • 설명: 192.168.1.100에서 오는 모든 TCP 패킷을 차단합니다.

예시 3: SQL 인젝션 탐지

alert tcp any any -> any 443 (content:"' OR '1'='1"; msg:"SQL Injection Attempt"; sid:1000003;)
  • 설명: HTTPS 트래픽에서 SQL 인젝션 공격을 탐지합니다. 특정 문자열이 포함된 패킷을 발견하면 경고합니다.

예시 4: 패스워드 시도 감지

alert tcp any any -> any 21 (content:"USER "; msg:"FTP User Attempt"; sid:1000004;)
  • 설명: FTP 서버에 대한 사용자 로그인 시도를 감지합니다. 패킷에 USER 문자열이 포함되면 경고를 발생시킵니다.

예시 5: 바이너리 패턴 검색

alert tcp any any -> any any (content:!"|90 90|"; msg:"Non-zero binary content detected"; sid:1000005;)
  • 설명: 패킷 내에서 특정 이진 패턴(여기서는 NOP 명령어인 90)이 아닌 내용을 탐지합니다. 바이너리 분석을 통해 악성 코드 또는 비정상적인 트래픽을 감지할 수 있습니다.

예시 6: Offset과 Depth 활용한 패턴 검색

alert tcp any any -> any any (content:"bad"; offset:10; depth:20; msg:"Bad content detected"; sid:1000006;)
  • 설명: 패킷의 10바이트 이후에서 시작하여 20바이트 내에 "bad"라는 문자열이 포함된 경우 경고를 발생시킵니다. offset은 패킷 데이터에서 검색을 시작할 위치를 지정하고, depth는 검색할 바이트 수를 제한합니다.

profile
DevSecOps ⚙️ + CTF🚩

0개의 댓글