반응형
Snort
- 1998년 SourceFire사의 CTO Martin Roesch에 의해 발표된 오픈 소스 침입탐지 시스템
- 패킷을 스니핑 하여 지정한 Rule과 동일한 패킷을 탐지한다.
- Snort Rule
- 공격을 탐지하기 위해 등록하는 규칙(패턴)이다.
- 수신되는 패킷은 등록한 룰과 비교해 탐지 여부를 결정한다. 탐지가 완료되면 규정된 조건에 따라 경고 및 로그를 발생한다.
Snort 구조
1. 스니퍼(Sniffer)
- 네트워크 인터페이스에 입력되는 패킷을 수신받는다.
- Promiscuius 모드로 동장하여 네트워크에 전송되는 모든 패킷을 수신한다.
- 스니핑은 WinPcap 라이브러리가 수행한다.
2. 전처리기(Preprocessing)
- 입력되는 패킷에 대해 특정 행위가 탐지될 경우 탐색 엔진으로 전송한다.
- 프로토콜의 종류별로 검사 여부를 결정할 수 있다.
3. 탐색 엔진(Detection Engine)
- 등록된 룰과 동일한지 여부를 확인하는 역할을 맡는다.
- 일치하는 경우 로그를 기록하거나 알람을 발생한다.
4. 경고 및 로깅(Alert & Logging)
- 탐지된 정보에 대해 로그파일, 네트워크, SNMP 프로토콜 등으로 결과를 전송한다.
- 로그 파일이나 데이터베이스에 결과를 기록한다.
Snort Signature
- Snort 시그니처는 룰 헤더와 룰 옵션으로 구성된다.
- 헤더는 처리 방법, 프로토콜, IP주소 및 포트번호 등으로 구성되어 탐지하는 대상을 정한다.
- 룰 옵션은 탐지하는 대상의 세부적인 조건을 정한다.
룰 헤더(Rule Header)
처리 방법(action)
- 조건에 맞는 패킷을 처리하는 방법
프로토콜(Protocol)
- TCP, UDP, IP, ICMP의 프로토콜을 설정하여 해당 프로토콜을 탐지한다.
IP주소, port번호
- 송신자와 수신자의 IP주소, port 번호가 들어간다.
- IP주소는 서브넷 마스크와 함께 설정이 가능하며 서브넷 마스크와 함께 설정하는 경우 IP주소/24와 같은 형태를 사용한다.
Direction
- Direction은 패킷의 방향을 의미하는 것으로 ->의 경우 왼쪽은 송신자, 오른쪽은 수신자로 표시한다.(송신자 -> 수신자)
- 송신자와 수신자를 구별하지 않고 전송되는 모든 패킷을 탐지하려면 <>을 사용한다.
룰 옵션(Rule Option)
- 세부적인 탐지 조건을 설정하는 부분으로 Snort는 세부 조건을 매우 많이 제공한다.
- 탐지 조건을 여러 개 설정할 때에는 각 조건마다 세미콜론(;)을 넣어 구분한다.
content
페이로드를 검색해 지정한 문자열이 있는지 확인하는 옵션.
단순 문자열과 바이너리 문자열로 지정할 수 있다.
단순 문자열은 대소문자를 구분하며 바이너리 문자열은 16진수를 사용해 지정해야 한다.
flags
TCP 프로토콜에서 Control Flag를 지정하는 것으로 SYN, ACK, PSH, URG, FIN, RST을 설정할 수 있다.
SYN을 설정하려면 flasgs:S;, SYN FIN을 둘 다 설정하고 싶으면 flags:SF;
flow
- TCP 연결이 확립된 세션을 탐지하기 위해서 established를 설정한다.
- to_server, to_client, from_server, from_client를 사용해서 전송되는 곳을 지정할 수 있다.
- 예 : flow:to_server, established; (TCP로 연결되어 서버로 전송되는 패킷)
itype, icode
- ICMP 프로토콜의 타입 값과 코드 값을 탐지한다.
- Type 값이 0이면 echo reply, 8이면 echo requset
sameip
- 송수신자의 IP주소가 동일한 것을 탐지하기 위해 사용할 수 있다.
- 예 : alert ip any any -> IP/24 any (msg:"land attack";sameip;
session
- TCP 세션에서 사용자 입력 데이터를 검출한다.
threshold
- 특정한 동일 패킷에 대해 설정한 시간 내에 일정 수가 발생하면 탐지한다.
- 무작위 공격을 탐지할 수 있다.
- threshold: type[limit, threshold, both], tack[by_src, by_dst], count[count], seconds[seconds]
반응형
'공부 > 정보보안기사' 카테고리의 다른 글
가상 사설망 (VPN, Virtual Private Network) (0) | 2020.04.06 |
---|---|
허니팟(Honey Pot) (0) | 2020.04.06 |
침입탐지시스템 (Intrusion Detection System) (0) | 2020.04.06 |
침입 차단 시스템 (0) | 2020.04.04 |
스푸핑 공격(Spoofing Attack) (0) | 2020.04.04 |
댓글