IDS & IPS

IDS

IDS는 Intrusion Detection Systems의 줄임말로, 악의적인 네트워크 트래픽을 감지하는 도구이다.

  • Passive monitoring and anslysis
  • Alert generation
  • Logging
  • Out-of-band

IPS

IPS는 Intrusion Prevention Systems의 줄임말로, 악의적인 트래픽에 대해서 악성 행위가 일어나기 전에 차단하는 도구이다.

  • Traffic inspection
  • Blocking and dropping packets
  • Terminating connections
  • Logging
  • Inline deployment

Network Based-IDS/IPS

  • Operate at the nerwork level
  • Analyze traffic flowing through network appliances
  • Alert, log and/or block malicious traffic

Host-Based IDS/IPS

  • Operate at the endpoint level
  • analyze activities on the host
  • Alert, log, and/or block malicious host actions

탐지 방법

  • Signature-based Detection
    • 기존 악의적인 트래픽 혹은 행위와 비교한다.
    • 기존에 알고 있던 악성 행위 차단에 효과적이다.
    • 새로운 방법의 공격을 탐지하지 못한다.
  • Behavior-based Detection
    • 사전에 확립된 기준을 바탕으로 변칙적인 행위를 탐지한다.
    • 비교적 새로운 공격 탐지에 효과적임
    • 위양성이 발생할수있다.
  • Rule-based Detection
    • 허용 행위 혹은 위반을 정의하고 정책을 시행한다.
    • 집단의 요구사항에 맞게 커스텀이 가능하다.
    • 잦은 규칙 변경 및 유지가 필수적이다.

Snort란?

snort는 1998년에 만들어진 오픈소스 IDPS( Instrusion Detection Prevention System )입니다. snort packet sniffing & snort packet filtering 기술과 같은 시그니처 기반 탐지는 시스템 패턴과 매칭될 경우 탐지되는 방식을 사용합니다.

동작 구조

sniffer > Preprocessor > Detection Engine > Alert & Log

다음과 같은 순서를 통해서 동작합니다.

  • sniffer
    • 네트워크에서 이뤄지는 모든 패킷을 수집하는 단계입니다. 네트워크 인터페이스를 선택하고, 해당 인터페이스를 통해 수신되는 모든 패킷을 캡쳐합니다.
  • Preprocessor
    • 전처리기는 패킷의 압축 해제, IP 조각화 처리, 이상 패킷 필터링 등의 다양한 전처리를 수행하는 단계입니다.
  • Detection Engine
    • 탐지 엔진은 전처리로 이미 정제된 패킷을 기반으로 규칙을 적용하여, 침입 여부를 판단합니다.
  • Alert & Log
    • 침입 탐지 시 해당하는 정보를 로그 파일에 남기거나, 경고(alert)를 발생시킵니다.

Snort 규칙 설정

Snort Rule Signature

Snort Rule는 2개의 영역(Rule Header / Rule Option)으로 분리됩니다.

ex ) alert tcp any any any 80 (msg:“SQL injection”;content:“‘1’=‘1”;nocase;sid:1000001;)

Rule Header

  • Action : 패턴이 매칭이 되었을 경우 할 행동을 정의
명령어설명
alert로그를 남기고 경고를 발생시킨다.
log해당 패킷을 기록합니다.
pass해당 패킷을 무시합니다.
activatealert를 발생 시킨 후 대응하는 Dynamic 을 유효합니다.
reject패킷을 차단하고 기록합니다.
TCP Protocol 의 경우 TCP Reset UDP Protocol 의 경우 ICMP Port Unrechable 메세지를 전송
drop상대방에게 응답하지 않고 패킷을 차단하고 기록합니다.
sdrop기록을 남기지 않고 패킷을 차단합니다.
  • Protocol : 탐지할 프로토콜을 정의
명령어설명
TCP
UDP
ICMP
IP
Any
  • Direction : 탐지할 방향 지시
명령어설명
<>
  • Source IP & Port / Destination IP & Port : 출발지 & 목적지 IP 및 Port 설정
명령어설명
!부정 연산자
Any
Port Number
Poer Number1 : Port Number2
: Port Number2
Portnumber1 :

Rule Option

Snort 설치

sudo apt-get update
 
sudo apt-get install snort2

설치가 잘 되었는지 확인하기 위해서 다음 명령어를 사용합니다.

sudo snort --version

snort는 /etc/snort에서 rule 설정 파일을 수정할 수 있습니다.

cd /etc/snort
 
sudo nano snort.conf
 
sudo snort -T -c /etc/snort/snort.conf

Snort 실행 실습

  • -i : interface 선택
  • -e :
  • -d :
  • -X :
  • -l : 특정 로그 파일 만들기
  • -r : 로그 파일 읽어오기
sudo snort -i enp0s3 -e -d
sudo snort -i enp0s3 -X
 
sudo snort -A console -l /var/log/snort -i enp0s3 -c /etc/snort/snort.conf -q

Snort 규칙 작성 실습

alert tcp any any -> any 4444 (msg: "Connection to Remote IP on Port 4444; sid:1000002; rev:1;)

다음과 같이 규칙을 작성할 경우 tcp 통신으로 나가는 모든 IP에 대해서 도착지 IP 상관없이 4444 포트로 들어가는 모든 네트워크 트래픽에 대해서 요청을 보내라라는 명령어입니다.

sudo snort -A console -l /var/log/snort -i enp0s3 -c /etc/snort/snort.conf -q
 
sudo hping3 -c 1 -p 4444 -S example.com

community rule 실습

community rule은 공식 사이트에서 제공하는 공식적인 snort 규칙입니다.

https://www.snort.org

위 사이트로 들어가서 download로 들어갑니다.

Download 페이지에서 살짝 내려가면 다음과 같이 community rule.tar.gz라는 압출 파일을 볼수 있습니다.

snorpy

https://snorpy.cyb3rs3c.net 다음 사이트 링크를 통해서 snorpy에 접속할수 있습니다.

snorpy는 snort의 filtering 규칙을 자동으로 만들어주는 프로그램입니다.

1.PCAP 실습

alert tcp any any -> any 80 ( msg:"HTTP URI contains.exe";  content:"|2e|exe"; nocase; http_uri; sid:1000001; rev:1; )
sudo snort -r /var/log/snort/<snort_file_name> -n 5 -q -d