Snort 공부 목적
- Snort가 가지고 있는 Rule Signature 기능을 통해서 탐지 패턴을 만드는 방법을 익히는것이 중요하다
- 분석하고 있는 악성코드는 분석에서만 마무리가 되기 보다는 탐지하는 패턴을 직접 만들어 보고 탐지패턴을 Snort에 넣었을때 악성코드가 탐지가 되는지 확인하는 과정을 연습해야 한다
Snort
: 시그니처 기반 탐지 시스템으로서 패턴과 매칭이 될 경우 탐지되는 시스템
-> 현재까지도 침입 탐지 시스템(IDS) 중 가장 널리 사용되고 있는 시스템
Snort 의 3가지 기능
- Sniffer : 네트워크 트래픽 캡쳐
- Packet Logger : 나중에 분석할 수 있도록 네트워크 트래픽을 파일에 기록
- IDS / IPS : 네트워크 트래픽을 분석 후 침입 탐지 및 차단
Snort 동작 구조 1->4
1. Sniffer
: Snort IDS를 통과한 패킷을 수집
2. Preprocessor
: 효율적인 공격 탐지를 위해 Plug-in 을 먼저 거쳐 매칭을 확인
3. Detection Engine
: Snort Rule과 매칭이 되는지 확인
4. Alert / Log
: Snort Rule 매칭 결과에 따라 경고나 로그 등 출력
Snort Rule Signature
Snort Rule은 크게 Rule header 와 Rule Option으로 구분
Rule Header : IP / Port 번호
-> 관제 업무를 하면서 제일 먼저 확인할 수 있는 부분
Rule Option
-> IP /Port 말고도 규칙이나 패턴들을 상세하게 파악할 수 있다
-> Rule Option을 사용하여 탐지 패턴을 얼마나 잘 만드냐에 따라서 정탐률이 높아진다
<Rule Header>
Action : 만들어놓은 탐지 패턴을 알람을 발생시킬 건지, 기록만 할 건지, 무시할 건지 등등 여러가지 조절 가능
명령어 | 기능 |
alert | 로그를 남기고 경고를 발생 |
log | 해당 패킷 기록 |
pass | 해당 패킷 무시 |
active | alert 를 발생 시킨 후 대응하는 Dynamic 유효화 |
reject | 패킷 차단하고 기록 후 TCP Protocol 의 경우 TCP Reset UDP Protocol 의 경우 |
drop | 상대방에게 응답하지 않고 패킷을 차단하고 기록 |
sdrop | 기록을 남기지 않고 패킷을 차단 |
Protocol : 탐지 할 프로토콜 종류를 정의
명령어 | 기능 |
TCP | TCP 프로토콜을 탐지 |
UDP | UDP 프로토콜을 탐지 |
ICMP | ICMP 프로토콜 탐지 |
IP | IP 프로토콜 탐지 |
Any | 모든 프로토콜 탐지 |
Direction : 탐지할 방향을 정의
명령어 | 기능 |
-> | 출발지 -> 목적지로 가는 패킷 탐지 |
<> | 출발지 ~ 목적지 사이 모든 패킷 탐지 |
Source IP & Destination IP & Port : 출발지, 목적지 IP, Port 정의
명령어 | 기능 |
!(부정연산자) | 부정연산자(!) 를 IP 또는 Port 앞에 기입할 경우 해당 IP 또는 Port 번호를 제외한 주소만 매칭 |
Any | 모든 IP 또는 Port 를 의미 |
포트번호 | 지정된 포트번호를 의미 |
포트번호 : 포트번호 | 포트번호~포트번호를 의미 |
:포트번호 | 지정된 포트번호 이하 모든 포트를 의미 |
포트번호: | 지정된 포트번호 이상 모든 포트를 의미 |
<Rule Option>
일반 옵션 : 규칙에 대한 정보를 제공하는 옵션으로 매칭하는 동안 어떠한 영향도 미치지 않는 옵션
msg | 만든 탐지패턴의 이름을 지정 | msg : "메시지 내용"; |
sid | Snort 규칙을 구별하는 식별자 1,000,001 이상부터 사용 ->만든 탐지패턴의 번호를 지정 |
sid : 1000001; |
rev | Snort 규칙의 수정 버전을 정의 수정할 경우 1씩 증가 |
rev:1; |
classtype | Snort 규칙을 분류하는 옵션 | classtype:분류이름; |
priority | 우선 순위를 지정하는 옵션 1~10까지 수를 사용 값이 작을수록 우선순위 높다 |
priority:10; |
reference | 해당 규칙에 참고가 되는 URL을 지정하는 옵션 | Reference:래퍼런스명 http://...; |
Payload : Snort Rule에서 실질적으로 악성 패킷을 탐지하는 옵션
content | 패킷 데이터에서 매칭할 문자열을 지정하는 옵션 | content:"abc"; -> abc 문자열을 탐지 |
nocase | Content 옵션 뒤에 작성하여 content 문자열을 대소문자 구분없이 탐지 |
content:"abc";nocase -> Abc,ABC,aBc,abC 모두 탐지 |
offset | 패킷의 페이로드에서 매칭을 시작할 문자열의 위치를 지정하는 옵션 |
offset:3; -> 4byte부터 탐색 시작 |
distance | content 옵션 값 매칭 후를 기준으로 지정된 패턴 탐색을 시작하기 전에 무시해야 하는 패킷의 거리를 지정하는 옵션 | content:"abc";control:"test";distance:5; -> abc 문자열 매칭 후 지점을 기준으로 5byte 이후 text 문자열 탐색 |
within | content 옵션 매칭 후 다음 지정된 탐색을 진행할 범위를 지정하는 옵션 | content:"abc";content:"test";within:5; -> abc 문자열 매칭 후 지점을 기준으로 5Byte 이내에 test 문자열 탐색 |
'정보보안' 카테고리의 다른 글
악성코드 분석 보고서 작성 연습 (0) | 2023.12.10 |
---|---|
악성코드 샘플 분석2 (0) | 2023.12.03 |
악성코드 샘플 분석 (0) | 2023.11.26 |
정적, 동적 Tool 실습 (0) | 2023.11.14 |
샘플 분석 환경 구성과 Search (0) | 2023.11.06 |