상세 컨텐츠

본문 제목

[리팩토링_18주차] Snort

IT/리팩토링

by 인삼밭 고구마 2024. 1. 17. 14:28

본문

 

snort란?

1988년 Martin Roesch가 개발, 발표한 대표적인 오픈소스 시그니처 기반 네트워크 침입을 탐지(IDS)&방지(IPS)하는 시스템으로 네트워크 상에서 실시간으로 흐르는 트래픽을 분석하며, 패킷 로깅(로그 생성)을 수행하는 도구 입니다.

 

 

 

Snort의 기능

 

Snort의 기능으로는 스니퍼모드, 패킷로거모드, 침입탐지모드 3가지가 있는데,

 

첫번째로 스니퍼모드란?

네트워크 패킷을 모니터링 관점에서 수집하는 것으로 네트워크 트래픽을 캡쳐하는기능을 말하며,

출력을 화면에 지속적으로 쏟아내, 데이터를 보존하기 어렵기 때문에 작은 규모의 네트워크에서의 사용을 권장합니다.

 

두번째로 패킷 로거모드란?

나중에 분석할 수 있도록 네트워크 트래픽을 파일에 기록하는 기능으로 패킷의 로그를 기록하는 기능을 말하는데
이는 패킷을 디스크에 저장하며, 디스크는 사전에 지정된 곳으로 설정되고 이때, 저장된 패킷은 차후에 탐지·분석에 용이하게 사용하게 됩니다.

 

세번째로 침입 탑지모드란?

네트워크 트래픽을 분석 후 침입 탐지 및 차단하는 기능으로 설정에 따라 공격에 대응하기도 하며,

세 모드 중 가장 복잡하고, 조작의 범위가 방대한 모드입니다.

 

 

 

 

Snort의 동작방식

 

스노트 동작방식

 

 

이러한 스노트 동작방식으로는 위 그림과 같이

 

스노트 ids를 통과하는 모든 패킷을 수집하는 스니퍼를 거쳐

프리프로세스와 탐지 엔진이 파싱할수 있도록 해석하는 패킷 디코더 후 
 
프리프로세스 단계에서 효율적인 공격 탐지를 위해 플러그인을 거쳐 매칭을 확인한 후 
작동 중에 패킷의 유형이 공격이라고 판단되면 탐지 엔진에 전달합니다. 

전달받은 패킷을 탐지엔진에서 스노트 룰과 매칭되는 지 확인하여

Snort Rule 매칭 결과에 따라 경고나 로그등 출력을 하게 되고 매칭이 안된다면 넘기게 됩니다.

 

 

Snort Rule Signature?

Rule header Option
Action Protocol Source IP Source Port Direction Destination IP Destination Port Option
탐지 후
행동
프로토콜 출발 IP 출발 PORT 탐지 방향 목적지 IP 목적지 
PORT
옵션

 

Snort Rule 은 크게 Rule header 와 Rule Option 으로 구분됩니다.

 

 

 

Snort Rule Header?

Action

- 해당규칙에 의해서 패킷이 탐지되었을때 처리하는 방법을 결정하는 명령어

명령어 기능 명령어 기능
alert 로그를 남기고 경고를 발생시킵니다. Log 해당 패킷을 기록합니다.
pass 해당 패킷을 무시합니다. active alert 를 발생 시킨 후 대응하는 Dynamic 유효화합니다.
drop 상대방에게 응답하지 않고 패킷을 차단하고 기록합니다 sdrop 기록을 남기지 않고 패킷을 차단합니다.
reject 패킷을 차단하고 기록 후 TCP Protocol 의 경우 TCP Reset
UDP Protocol
의 경우 ICMP Port Unrechable 메세지를 전송합니다.

 

Protocol

-탐지 할 프로토콜의 종류를 정의합니다. ( 규칙을 작성할 때 소문자로 작성하여야 합니다. )

명령어 기능
TCP TCP 프로토콜을 탐지합니다.
UDP UDP 프로토콜을 탐지합니다.
ICMP ICMP 프로토콜을 탐지합니다.
IP IP 프로토콜을 탐지합니다.
Any 모든 프로토콜을 탐지합니다.

 

 

송/수신 IP

- Source IP는 송신자 Destination IP는 수신자 IP를 지정

- 임의의 IP 주소인 any를 지정

- 특정호스트만 지정하는 경우 서브넷 마스크를 32비트로 지정

- Snort conf에서 지정된 변수를 참조 가능

명령어 기능
! ( 부정연산자 ) 부정연산자 ( ! ) IP 또는 Port 앞에 기입 할 경우
해당 IP 또는 Port 번호를 제외한 주소만 매칭
Any 모든 IP 또는 Port 를 의미
포트번호 지정된 포트번호를 의미
포트번호1:포트번호2 포트번호1 ~ 포트번호2 를 의미합니다
:포트번호 지정된 포트번호 이하 모든 포트를 의미합니다.
포트번호: 지정된 포트번호 이상 모든 포트를 의미합니다.

 

 

Direction(방향연산자)

 

-탐지할 방향을 정의

명령어 기능
-> 출발지 -> 목적지로 가는 패킷을 탐지합니다.
<> 출발지 ~ 목적지 사이 모든 패킷을 탐지합니다.

 

 

Snort Rule Option?

Rule Option은 탐지의 정확도를 향상시켜주는 옵션으로

Rule Option을 사용할 경우 모든 옵션은 세미콜론 ( ; ) 을 사용해 서로를 구분하고,

규칙 옵션 키워드는 콜론 ( : ) 을 사용해 인수와 구분

Rule Option은 크게 일반 옵션, Payload, HTTP 옵션, 흐름 옵션으로 구분하게 됩니다.

 

 

일반옵션

-일반 옵션은 규칙에 대한 정보를 제공하는 옵션으로 검색하는 동안은 어떠한 영향도 미치지 않는 옵션

명령어 기능 예시
msg Snort 규칙이 탐지될 경우 출력되는 메시지 msg:“메시지 내용”;
sid Snort 규칙을 구별하는 식별자
0~1,000,000 번 까지는 예약된 식별자
1,000,001이상부터 사용
sid:1000001;
rev Snort 규칙의 수정 버전을 정의
수정할 경우 
1씩 증가
rev:1;
classtype Snort 규칙을 분류하는 옵션 clsstype:분류이름;
priority 우선 순위를 지정하는 옵션
1 ~ 10까지 수를 사용
값이 작을수록 우선순위가 높음 )
priority:10;
reference 해당 규칙에 참고가 되는 URL을 지정하는 옵션 Reference:래퍼런스명 http://…;
msg Snort 규칙이 탐지될 경우 출력되는 메시지 msg:“메시지 내용”;

 

 

 

 

Payload옵션

-페이로드는 스노트 규칙에서 실질적으로 악성 패킷을 탐지하는 옵션

명령어 기능 예시
content 패킷 데이터에서 매칭할 문자열을 지정하는 옵션 content:”abc”;
=> abc 문자열을 탐지
nocase Content 옵션 뒤에 작성하여 content 문자열을 대소문자 구분없이 탐지하도록 함 content:”abc”;nocase;
=> Abc,ABC,aBc,abC 
모두 탐지
offset 패킷의 페이로드에서 매칭을 시작할 문자열의 위치를 지정하는 옵션
지정한 바이트 만큼 떨어진 위치부터 탐색시작시작은 0Byte )
offset:3;
=> 4Byte
부터 탐색을 시작
distance content 옵션 값 매칭 후를 기준으로 지정된 패턴 탐색을 시작하기 전 무시해야 하는 패킷의 거리를 지정하는 옵션 content:”abc”;content:”test”;distance5;
=> 
abc 문자열 매칭 후 지점을 기준으로 5byte 이후 test 문자열 탐색
within content 옵션 매칭 후 다음 지정된 탐색을 진행할 범위를 지정하는 옵션 content:”abc”;content:”test”;within:5;
=> 
abc 문자열 매칭 후 지점을 기준으로 5Byte 이내에 test 문자열 탐색

 

 

 

HTTP옵션

 -content 옵션 값이 탐색할 범위를 HTTP 영역으로 한정할 때 사용

명령어 기능
http_method 패킷 페이로드 중 HTTP 메소드 영역에서 content 옵션 값을 매칭하는 옵션
http_uri / http_raw_uri 패킷 페이로드 중 URI 영역을 탐색하는 옵션
raw가 포함된 옵션은 디코딩되지 않은 페이로드를 대상으로 탐색하는 옵션
http_cookie http 쿠키 값을 탐색하는 옵션
http_header / 
http_raw_header
HTTP 헤더 영역을 요청과 응답에 관계없이 탐색하는 옵션
http_client_body HTTP 바디 영역을 탐색하는 옵션
http_stat_code HTTP 응답 메시지에서 상태 코드 영역을 탐색하는 옵션
http_stat_msg HTTP 응답 메시지에서 상태 메세지 영역을 탐색하는 옵션

 

 

 

흐름옵션

-패킷의 방향을 정의하는 옵션. 패킷의 방향뿐 아니라 세션 연결 상태의 조건에 해당되는 패킷을 한번 더 걸러내는 역할

명령어 기능
flow 흐름 옵션을 사용할 때 반드시 사용해야 하는 옵션
to_client / from_server Server -> Client 방향으로 오는 패킷을 매칭하는 옵션
to_server / from_client Client -> Server 방향으로 오는 패킷을 매칭하는 옵션
Established 세션이 성립된 상태의 패킷을 매칭하는 옵션
statless 세션 성립 여부와 상관 없이 매칭하는 옵션

 

 

 

 

18주차_Snort.pptx
0.47MB

관련글 더보기