1. 침입탐지시스템
[+] 정의
- 오픈소스 기반 N/W 트래픽 감시 및 분석 SW
- Snort 설치(linux) : /etc/snort/ 설정파일
- Snort Rule : 크게 헤더(Header)와 바디(Body)로 구성
2. Header
- 패킷이 탐지되었을 때, 처리 방식
- 구조 : [action] + [Protocol] + [IP] + [Port]
> 예) alert udp 0.0.0.0/0 any -> 192.168.10.0/24 any
[+] action 유형
- alert: 알람 발생, 패킷 log 기록
- log: 패킷 log만 기록
- pass: 패킷 무시
- activate: alert 발생 후 dynamic 룰 동작 (dynamic와 한쌍)
- dynamic: activate에 의해 실행되고(트리거) 패킷 log 기록
- 환경변수(snort.conf)
> $EXTERNAT_NET (외부)
> $HOME_NET (내부)
※ 아래는 IPS 역할 ( 패킷 차단 기능)
- drop: 패킷 차단하고 log 기록
- reject: 패킷 차단하고 log 기록 (TCP : Reset / UDP : ICMP port unreachable 메시지 전송)
- sdrop: 패킷 차단만 하고 로그 기록하지 않음 (실무에서는 잘 사용되지 않음)
3. Body
- 패킷 검출을 위한 다양한 옵션 설정 가능
[+] 일반옵션 설정
- msg : alert 발생 시 이벤트 명
- sid : 스노트 룰 ID
> 99 이하 : 시스템 예약 ID
> 100 ~ 1,000,000 이하 : snort 자체지정 sid
> 1,000,000 이상 : 사용자 정의 sid
- rev : 룰 수정 횟수 수정 시 +1씩 증가
[+] 페이로드 범위 설정
- content : 검사할 문자열 지정
> content:"문자열" : text형식의 해당 문자열 검사
> content:"|00 11|" : 바이너리형식의 해당 값 검사
- offset : 검사할 시작 위치 (0부터 시작)
- depth : 검사 시작 위치 기준으로 몇 바이트 검사 할 것인지 지정
- distance : 이전 검사 패턴 후 몇 바이트 떨어진 곳에서 다음 패턴 검사할지 지정
- within : distance 위치 기준으로 몇 바이트 검사 할 것인지 지정
- nocase : 페이로드 검사 시 대소문자 구분 X
4. Suricata
- 기존 스노트의 장점을 가지고 있으며, 대용량 트래픽을 실시간으로 처리하는데 특화된 소프트웨어
- 2010년 미국 OISF에서 개발
[+] Snort와 차이점( 스노트+ 기능)
- Protocol Identification : 포트번호를 지정 안 하고 Protocol의 Name으로 Rule 지정가능
- HTTP Normalizer & Parser : 7계층 (응용프로그램 계층)의 프로토콜 인식 가능
- File Identification : 네트워크 패킷에서 전송되는 파일을 탐지
5. Snort 기출 복원
[+] 3회
5. “/administrator” 라는 문자열이 포함되어 있는 경우 “Web Scan Detected”란 메시지 로깅을 위한 Snort rule은 각각 무엇인가?
Alert tcp any any -> 192.168.0.1 ( A ) ( ( B ) : “/administrator; ( C ): “Web Scan Detected”;)
- 정답 :
A: any : 모든 포트
B: content : 텍스트 검출
C: msg : 메세지 출력
[+] 7회(단답형)
4. Snort 정책에서 10바이트에서 12바이트 중 00FF 바이트에 해당하는 내용을 찾으려고 한다. 보기의 rule에 빈칸을 채워 rule을 완성하시오.
alert tcp any any (( A ):"|00FF|";( B ):9,( C ):2)
- 정답 :
A: content : 텍스트 검출
B: offset : 시작할 위치
C: depth : offset기준 몇바이트를 검사할 것인지
[+] 11회
16. 모든 네트워크 대역에서 Telnet으로 접속하는 패킷 중 14번째 자리까지 'anonymous'가 포함된 트래픽에 대해서 'Dangerous' 메시지로 경고하는 snort rule을 만드시오.
- 정답 :
alert tcp any any -> any 23 (msg: "Dangerous"; content: "anonymous"; depth: 14; sid: 1000001;)
- alert: 패킷이 룰에 탐지되었을 때 알림을 보내는 액션 지정
- tcp: 규칙이 TCP 프로토콜에 대해 동작함
- any any: 모든 소스 IP 주소와 포트를 허용
- ->: 트래픽의 방향을 나타내며, 이 경우에는 어떤 대상 IP 주소의 23번 포트로 트래픽이 전송되는 것을 의미
- msg: "Dangerous": 이 규칙이 위협을 나타낼 때 출력되는 알림 메시지
- content: "anonymous": 패킷 내용에 "anonymous"라는 문자열이 포함되어 있는지 확인합니다.
- depth: 14: 패킷 내용에서 문자열을 검색할 때의 최대 길이를 제한합니다. 여기서는 14바이트까지만 확인합니다.
- sid: 1000001: 규칙을 식별하기 위한 고유한 규칙 ID입니다.
※ TCP를 넣는 이유??? 텔넷의 포트 번호가 23/TCP이기 때문에 사용
※ sid: 1000001의 경우 사용자 지정이기 때문에 사용
[+] 11회
16. 다음은 공개 IDS 소프트웨어인 snort의 관제 규칙(rule)이다. 각각의 질문에 답하시오.
alert any any - > any 80 ( msg "XSS"; content "GET"; offset:1; depth:3: content:"/login.php.. XSS"; distance 1;)
위와 같은 snort 룰을 등록하였는데 아래 접근이 탐지되지 않았다.
Content :"/Login.php?id=...";
1) content:"GET"; offset:1 depth:3 의미
2) content:"/login.php XSS"; distance 1; 의미
3) 탐지되지 않은 접근이 탐지되도록 하려면 어떻게 수정해야 하는가?
- 정답 :
1) 2번째 부터(offset:1) 3바이트(deoth:3) 범위에서 GET문자열 패턴 찾기
2) Content 패턴에 매치된(GET찾기) 이후 바이트부터, 1바이트 떨어진 위치에(distance:1) /login.php XSS 문자열 패턴이 있는지(content:"/login.php XSS") 찾기
3) 패턴 등록시 대소문자 구별 없이(nocase;)을 추가하거나, 아래 주어진 탐색에서 대문자를 소문자로 적어 사용(nocase; 권고)
[+] 17회
15. 각각의 Snort Rule 설정의 의미를 작성하시오.
(1) msg:"GET Flooding"
(2) content:"GET / HTTP1."
(3) content:"USER"; content:!"anonymous"
(4) content:"|00|";depth:1
- 정답 :
1) 알람 발생시 GET Flooding으로 이벤트명으로 기록
2) GET/HTTP 1. 을 검사
3) 문자열이 USER포함하고, anonymous 포함되지 않는지 검사
4) 1바이트의 바이너리 값 |00|을 찾아라
'소소한 IT이야기 > 정보보안기사 실기' 카테고리의 다른 글
[정보보안기사] 침해사고 시나리오 - 01 리버스 쉘(Reverse Shell) (3) | 2023.07.14 |
---|---|
[정보보안기사] 애플리케이션 보안 - HTTP (0) | 2023.07.11 |
정보처리기사 실기 요약 - 1. 요구 사항 확인 (2) | 2022.10.03 |