System Security DAY_011 snort 로컬 룰, snort local.rules, snort 탐지 , snort 환경설정 , 네트워크 기반 침입 탐지 시스템,NIDS,리눅스 탐지하는방법 snort FIN, NULL,X-MAX 탐지 ,스노트 웹탐지, snort Web 탐지

2023. 12. 27. 16:31Information Security 정보보안/System Security 시스템 보안

728x90

배울 내용: 

snort 로컬 룰

snort local.rules

snort 탐지 

snort 환경설정  

네트워크 기반 침입 탐지 시스템

NIDS

리눅스 탐지하는방법 

snort FIN, NULL,X-MAX 탐지 

스노트 웹탐지

snort Web 탐지

 

 

 

 

 

 

 

제가 지금 부터 작성하는 모든글은 제가 공부기록용이기 때문에 정확하지 않을수 있음을 알려드립니다.

틀린게 있으면 댓글로 써주시면 고치겠습니다.

 

 

 

 

지난번에 했던 Snort 란걸  이어서 해볼거다

 

다시 한번 씹어보자면 

 

Snort는 

인기 있는 오픈 소스로

네트워크 침입 탐지 시스템(Network Intrusion Detection System, NIDS)과

침입 예방 시스템(Intrusion Prevention System, IPS)의 이름이다 

 

 

 

 

먼저 


Scanning 탐지에는 4가지로 
1 syn
2 FIN
3 NULL
4 X-MAX 

가있다

 

vi /etc/snort/rules/local.rules 로 가서

# nmap (SYN)
alert tcp any any -> $HOME_NET any (msg:"Nmap Scan Syn";flags:S;sid:1000006; rev:1;)

이렇게 입력해준다 

 

 

 

그리고 저장후 나와서 터미널을 하나 더 만든뒤

 

콘솔 출력을 위한 

snort -i ens33 -A console -l /etc/snort/ -c /etc/snort/snort.conf

를 해주면 이런 창이 뜬다

 

 

 

를 해주면 이런 창이 뜬다 

 

 

 

 

 

 

그리곤 공격자로 nmap 192.168.10.101 을 해보면 

 

 

 

 

 

 

 

 

 

제대로 탐지가 된걸 볼수가 있다. 

 

 

 

 

다음으론 FIN으로 하면 이렇다

 

# nmap (FIN)
alert tcp any any -> $HOME_NET any (msg:"Nmap Scan FIN"; flags: F; sid:1000006;  rev:1;)
 
이렇게 바꾸면 되고 

 

 

 

 


flags 만 0 으로 바꾸면  NULL 이고  

UPF 는 flags 를   X-MAS 바꾸면 된다 

 

 

이때 주의할점은 

sid 는 같지 않게 수정해주자  

 

 

 

 

 

 

 

 

 

 

 

이번에는 Web 으로 가보자 

 

 

alert tcp any any -> $HOME_NET 80 (msg:"HTTP Request"; sid:1000010; rev:1;)
이렇게 웹은 포트번호만 80번으로만 지정해주면 간단하다 

 

 

 

 

그대신

 

 

 

 Web (get)
alert tcp any any -> $HOME_NET 80 (msg:"HTTP Request-GET"; content:"GET /cmd.exe";nocase; sid:1000011; rev:1;)

 

 

이렇게 GET을 하는것은 처음 볼것이다  

이건 칼리에 cmd 에서 http 로 GET 할경우 알람이 뜨게한다 

 

 

  

 먼저 포트가 열려있는지 확인하고 

 

 

curl http://192.168.10.101/cmd.exe
이렇게하면 탐지가 된다 

 

 

kali에선 이렇게 나오지만 

centos에선 

 

 

이렇게 탐지가 된다. 

 

 

 

 

 

 

이렇게 다 비슷비슷하게 응용하면된다 

 

 

 ICMP Flooding

 

또한 

 

10초 내에 들어오는 패킷이 5개에 대해서 이벤트 (로그)를 1개  발생 이라는 조건 걸면 

 

 

alert icmp any any -> $HOME_NET any (msg:"ICMP Flooding-Threshold";threshold:type threshold, track by_dst, count 5, seconds 10; sid:1000012; rev:1;)

 

이렇게 할수있다.

 

 

참고로 여기서 threshhold 엔 3가지 type이 있는데

 

 

>threshold : type threshold <-- 패킷량 기준 탐지
>threshold : type both         <--  IP 기준 탐지
>threshold : type limit     <-- 임계값 기준 탐지

 

 

잘 기억 하도록 하자 

 

 

 

track by 도  2 가지로 나뉜다

 

>track by_src  <-- 동일한 출발지 IP주소 기준으로 탐지(1:N)
>track by_dst  <-- 동일한 목적지 IP주소 기준으로 탐지(N:1)
 

 

간단히 출발지와 목적지라고 생각하자 

 

 

그외에는 

>count  <--패킷 발생량 탐지 
 

>seconds  <-- 시간 기준 

 

 

등이 있다. 

 

 

 

 

 

 

 

참고로 전 포스팅에서 말했지만 탐지는 로그를 남길수도 아니면 그냥 할수도있다 

 

콘솔 출력, 로그 파일 저장
snort -i ens33 -A console -l /etc/snort/ -c  /etc/snort/snort.conf

 

 

그냥 콘솔 출력만 하려면

snort -i ens33 -A console -c /etc/snort/snort.conf 

 

 

 

 

 

 

하면 된다 . 그럼 20000~!

 

 

 

 

 

728x90