네트워크

Snort 에 대해 알아보도록 하겠습니다.

forward error correction Circle 2022. 12. 28. 09:37
반응형

Ⅰ. 스노트(Snort) 란 ?

스노트(Snort)는 오픈 소스 기반의 네트워크 기반 침입 탐지 시스템(IDS)입니다. 실시간 트래픽 분석과 IP에서의 패킷 로깅을 수행할 수 있으며, 프로토콜 분석, 내용 검색 그리고 매칭을 수행합니다.

 

이 툴은 1998 년도에 Matin Roesch(마틴 로시) 가 만들었으며, 2013년 이후 CISCO 에서 소유 중입니다.

이 프로그램은 또한 조사나 공격을 탐지하는데 사용될 수 있다. 이러한 조사나 공격으로는 공용 TCP/IP 스택 핑거프린팅, 공용 게이트웨이 인터페이스, 버퍼 오버플로, 서버 메시지 블록 조사 그리고 스텔스 포트 스캔 등이 있다

Ⅱ. Snort 기능

1) 스니퍼 모드 (Sniffer Mode) : 네트워크 인터페이스의 패킷을 읽고 스니핑하여 보여줍니다.

2) 패킷 로거(Packet Logger) : 수집한 패킷에 대한 Log를 저장합니다.

3) 네트워크 침입 탐지 모드 : 네트워크 트래픽을 사용자에 의해 정의된 규칙에 의해 탐지 되는지 분석합니다.

Ⅲ. 스노트 룰 만들기

스노트의 룰 헤더부분과 룰 옵션으로 구성됩니다.

 

A. Action : 탐지 후 행동 설정

alert = 경고를 발생시킨다.

log = 로그를 기록한다.

pass = 패킷을 무시한다.

active = alert를 발생시키고 대응하는 dynamic을 유효화 한다.

dynamic = active에 의해 유효화된 경우 한쪽의 패킷을 기록한다.

drop = 패킷을 차단하고 기록한다.

B. Protocal: 탐지 할 프로토콜 종류 설정

TCP = TCP IP 프로토콜 탐지

UDP = UDP IP 프로토콜 탐지

ICMP = ICMP IP 프로토콜 탐지

IP = IP 프로토콜 탐지

C. Source IP & Port / Destinaion IP & Port : 출발지와 목적지의 IP 와 프로토콜 설정

Port 설정방법

[any] = 모든 포트

[포트번호] = 특정 포트

[포트번호] = 포트번호 : 포트번호 ~ 포트번호

:[포트번호] = 포트번호 이하 모든 포트

[포트번호] = 포트번호 이상 모든 포트

ex) [Source IP] [Source Port] 형식으로 씁니다.

ㄱ. 192.168.0.15 443

ㄴ. 192.168.0/24 80

ㄷ. any 443

ㄹ. 192.168.0/24 any

ㅁ. any any

ㅂ. * '$HOME_NET' 와 같이 snort.conf에서 지정한 변수를 참조할 수도 있다.

E. Direction : 방향

-> = 출발지 -> 목적지 패킷 탐지

<> = 출발지 목적지 사이 모든 패킷 탐지

H. 룰 옵션 : 패킷 탐지 사용자 설정

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

1) 일반옵션 설정

msg : alert 발생 시 이벤트 명

sid : 스노트 룰 ID

99이하 : 시스템 예약 ID

100 ~ 1000000 이하 : snort 자체지정 sid

1000001 이상 : 사용자 정의 sid

rev : 룰 수정횟수 수정 시 숫자가 증가

2) 페이로드 범위 설정

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 : 패킷의 발생량을 기반으로 탐지한다.(대량의 패킷이 들어올 경우, 모두 로그를 남기게 되면 용량을 많이 차지하게 되므로 대량의 패킷을 대응하기 위한 옵션)

ex) tcp any any -> any any (msg:"dinky" content:"dinky" sid:1000001; threshold:type limit, track by_src, count 2 seconds 5; )

1. limit : 임계시간 동안 임계치까지만 이벤트 발생

2. threshold : 임계시간 동안 임계치번째 마다 이벤트 발생

3. both : 임계시간 동안 임계치에 한번 이벤트 발생

4. track : 소스를 기준으로 추적, 목적지를 기준으로 추적

5. count : 임계치(패킷 발생 수)

6. seconds : 임계시간(발생 시간)

Ⅳ. Snort 활용 방안

1) Log4j 탐지

alert tcp any any -> any any (msg:"Log4j"; flow:established,to_server; content:"{jndi:"; nocase; fast_pattern; content:"://")

2) SQL SELECT 문 탐지

alert tcp any any -> any 80 (msg: SQL_Injection"; content:"SELECT"; nocase; content:"HTTP")

반응형