반응형
ி 개요
Rule 기반으로 패턴을 검색하며 , 포트스캔, BOF , CGI 공격 , SMB 탐색, OS 확인 시도 등
다양한 공격을 탐지할 수 있다.
ி 설치
snort 설치
필자는 win10에서 윈버전으로 설치한다.
설치하기전에 패킷을 수집하기 위한 도구인
winpcap
을 설치해야한다. 그리고 snort 공식홈페이지에 들어가서
Next로 쭉 진행한다. snort는 보통 루트경로에 설치한다.
https://snort.org/
추가적으로 snort에 적용할 룰 파일을 다운받아야하는데
snort 회원가입이 필요하다. (메일계정 인증 필요)
Get Started
를 누르고 인스톨러를 내려받아서Next로 쭉 진행한다. snort는 보통 루트경로에 설치한다.
https://snort.org/
snort 룰 파일 다운
snort 회원가입이 필요하다. (메일계정 인증 필요)
Snort v2.9에 최신룰을 내려받는다.
압축해제하면
rules 폴더
에 있는 파일들을 snort\rules
에, preproc_rules
폴더안 파일들을 snort\preproc_rules
폴더에 붙여넣는다.완료되면 cmd를 열고 snort가 설치된 경로로 이동하여
snort -V
(snort 버전 확인)명령을 입력해보자.ி 설정
bin
폴더에는 실행파일이 있고, rules
는 탐지 룰을 설정할 수 있으며, etc
는 snort 관련 설정 파일이 들어있다. log
는 탐지된 로그가 저장되는 곳이다. 네트워크 설정
etc 폴더 밑에
snort.conf
라는 메인 설정 파일이 있다.해당 파일의 옵션을 설정해보자.
내용 중에
ipvar
랑 portvar
는 모두 var
로 바꾼다. HOME_NET
은 snort가 감시할 목적지 IP를 적는 곳이다.
EXTERNAL_NET
은 외부 IP 주소를 적는다. 주로 ANY를 적지만 !$HOME_NET
를 하면 출발지와 목적지가 동일한 ip로 들어오는 공격을 막을 수 있다. 룰 설정
RULE_PATH
는 패턴검사에 적용될 룰 파일이 있는 디렉토리를 지정한다. snort는 룰 기반으로 공격을 찾아 경고해준다.
PREPROC_RULE_PATH
는 preprocessor가 있는 디렉토리를 지정한다.preprocessor는 패킷 전처리기로써 패킷이 탐지 엔진에 도달하기 전에 패킷에 대한 경고를 하거나
수정 또는 버리기 위하여 사용한다.
dynamicpreprocessor directory
는 본인이 설치한snort\lib에 snort_dynamicpreprocessor 폴더를 지정하고
dynamicengine
은 snort\lib\snort_dynamicengine\sf_engine.dll 파일을 지정한다./
로 되어있는 것은 리눅스 경로라서 윈도우에 맞게 모두 \(역슬래시)
로 바꿔준다. 로그 설정
config logdir
은 snort 로그를 저장할 위치를 지정한다.ி 룰 추가
msg 이전에 정보들을
RTN(Rule Tree Node)
라고 하며 , 시그니처 내용을 담고 있는 msg 부분부터
OTN(Option Tree Node)
이라고 한다.rules 폴더에local.rules
파일을 열어서 탐지할 규칙을 추가한다.
룰 헤더
Alert
- 알람 발생 시키고 로그 남김 Log
- 로그남김 Pass
- 무시 Activate
- 알람 발생, 대응하는 Dynamic Action활성화 Drop
- Iptables를 통해 패킷 차단 및 로그 남김 sdrop
- Iptables를 통해 패킷 차단 및 로그 남김 rejet
- Drop과 동일 하고 메시지를 남김 룰 옵션
msg
- Alert, log 출력시 이벤트명으로 사용 content
- 패킷의 페이로드 내부를 검색하는 문자열 offset
- Content에서 검색할 문자열 offset(검색 시작위치 지정)depth
- Content를 어디까지 검색할지 지정 nocase
- 대소문자 구별 X rev
- 룰 수정 횟수 sid
- 룰 식별자- 100 미만 : 예약
- 100~100만사이 : www.snort.org에서 배포하는 룰
100만초과 : 사용자 정의 룰
resp
- 지정된 응답 패킷을 보낸다 rst_snd, rst_rcv
- [snd(송신측), rcv(수신측)] 연결을 끊는다. rst_all
- 양측의 연결을 끊는다 icmp_net, icmp_host, icmp_port
: ICMP [network, host, port] unreachable 메시지를 전송한다 icmp_all
: 양측의 연결을 끊는다 react
- 패킷을 차단하거나 경고 메시지를 출력한다. react:block;
- 패킷을 차단한다 react:warn, msg;
- 사용자 브라우저에 msg 문구를 전송한다. threshold
- 동일한 특정 패킷이 설정한 시간안에 일정 수가 발견되면 경고 알림 출력, BruteForce 공격 검출시 유용
threshold:type [limit . threshold, both], track [by_src, by_dst], count [number], seconds [time]
limit
- count 하는 동안 x 번째 트래픽 까지 탐지 threshold
- 횟수마다 계속 탐지 both
- count 하는 동안 횟수만큼 트래픽이 탐지되면 1번만 알림 by_src
- 출발지 패킷 by_dst
- 도착지 패킷 실습
내부 = HOME_NET = 192.168.0.0/24
①
내부에서 외부로 나가는 ICMP 트래픽 탐지 alert icmp HOME_NET any -> !HOME_NET any (msg:"in-out udp"; sid: 1000001;)
②
외부에서 내부 telnet 서버로 접근하려는 트래픽 탐지 및 차단 alert tcp !HOME_NET any -> telnet_srv 23 (msg:"Telnet illegal approach Detection"; resp:rst_snd; sid:1000002;)
➽ 만약 출발지에 any를 쓴다면 내부망에 있는 사용자들도 차단되므로 주의
③
모든 네트워크 대역에서 Telnet으로 접속하는 패킷 중 14번째 자리까지 'anonymous'가 포함된 트래픽에 대해서 'Dangerous' 메시지로 경고하기 alert tcp any any -> any 23 (msg: "Dangerous"; content: "anonymous"; depth: 14; sid: 1000003;)
④
특정 페이지의 소스 코드 중 악성코드가 삽입된 아이콘(hacker.png)을 요청하는 코드가 포함되어 있음. 해당 아이콘(hacker.png) 파일명이 포함된 HTTP 요청 트래픽 탐지
alert tcp HOME_NET any -> !HOME_NET 80 (msg:"risk icon Request"; content:"hacker.png"; sid:100004;)
⑤
외부에서 내부 웹 서버 관리자 페이지 접근시도를 탐지 및 차단 alert tcp !HOME_NET any -> adserv_ip 80 (msg:"Web-AdminPage illegal approach Detection"; content:"admin.html"; http_uri; react:block; sid:1000005;)
⑥
FTP 서버에 로그인이 실패하면 "Login incorrent" 메시지가 출력된다. 20초 동안 15번의 로그인 시도 실패 탐지
alert tcp any 21 -> any any (msg:"FTP Broute Force";threshold: type both, track by_src, count 15, seconds 20; content:"Login incorrect"; sid:1000006;)
⑦
Snort 정책에서 10바이트에서 12바이트 중 00FF 바이트에 해당하는 내용을 찾으려고 한다. 보기의 rule에 빈칸을 채워보기
alert tcp any any (( A ):"|00FF|";( B ):9,( C ):2)
A: content
B: offset
C: depth
자료 출처
https://www.google.com/search?q=snort+rule+example&source=lnms&tbm=isch&sa=X&ved=0ahUKEwjhuqmmp9vkAhVCMN4KHeQOAC0Q_AUIEigB&biw=1920&bih=937#imgrc=65ZA6rZf3BHAMM:
https://steeljin.tistory.com/39
https://shut-down.tistory.com/45
https://steeljin.tistory.com/39
https://shut-down.tistory.com/45
반응형
'네트워크' 카테고리의 다른 글
네트워크 방화벽(Firewall) (0) | 2019.09.25 |
---|---|
패킷 트레이서 ACL(Access Control List) (0) | 2019.09.21 |
와이어샤크 주요 기능 (0) | 2019.09.02 |
VMware 네트워크 구조 (0) | 2019.06.09 |
망분리 유형 (0) | 2019.04.24 |