[SNORT] SNORT ์Šคํ‚ค๋งˆ ๊ตฌ์กฐ์™€ ๋ฃฐ ๊ตฌ์„ฑ ๋ฐ ์˜ต์…˜ ์ •๋ณด

2025. 4. 2. 11:00ยท๐Ÿšจ ๋ณด์•ˆ ์‹ค๋ฌด/๋ณด์•ˆ ๊ด€์ œ
728x90
๋ฐ˜์‘ํ˜•

1๏ธโƒฃ SNORT ๊ฐœ์š”

๐Ÿ”น1. SNORT ๋™์ž‘ ๋ฐฉ์‹

  1. ํŒจํ‚ท ์ˆ˜์ง‘
    • ์‹ค์‹œ๊ฐ„์œผ๋กœ ํŠธ๋ž˜ํ”ฝ์„ ์ˆ˜์ง‘
  2. ์ „์ฒ˜๋ฆฌ ๊ณผ์ •
    • ์ˆ˜์ง‘๋œ ํŒจํ‚ท์€ Preprocessor๋กœ ์ „๋‹ฌ๋˜์–ด ๋ถ„์„ ์ „ ํ•„์š”ํ•œ ์ „์ฒ˜๋ฆฌ๋ฅผ ์ˆ˜ํ–‰
  3. ๋ณ‘๋ ฌ ํŒจํ„ด ๋งค์นญ 
    • SNORT์˜ ๋ฃฐ์— ๋”ฐ๋ผ ํŒจํ‚ท ๋‚ด์šฉ์„ ๊ฒ€์‚ฌ
    • ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•ด Aho-Corasick ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ธฐ๋ฐ˜์˜ ๋ณ‘๋ ฌ ๋ฌธ์ž์—ด ๊ฒ€์ƒ‰ ์‚ฌ์šฉ
    • ๋งค์นญ ๋Œ€์ƒ์ด ๋˜๋Š” ๋ฃฐ์ด ๋งŽ์„์ˆ˜๋ก ์†๋„๊ฐ€ ์ €ํ•˜๋˜๋ฏ€๋กœ, ์ „์ฒ˜๋ฆฌ์—์„œ ์ผ๋ถ€ ํ•„ํ„ฐ๋ง ๊ธฐ๋Šฅ ์ˆ˜ํ–‰
  4. ๋ฃฐ ํŒจํ„ด ๋งค์นญ
    • SNORT ๋ฃฐ ํŒŒ์ผ์— ์ •์˜๋œ ์กฐ๊ฑด๊ณผ ํŒจํ‚ท์„ ๋น„๊ตํ•˜์—ฌ ๊ณต๊ฒฉ ์—ฌ๋ถ€๋ฅผ ํƒ์ง€
    • ํƒ์ง€๋˜๋ฉด ๊ฒฝ๊ณ (Alert) ๋˜๋Š” ๋กœ๊ทธ(Log)๋กœ ๊ธฐ๋ก

๐Ÿ”น2. SNORT ๊ด€๊ณ„ ๊ตฌ์กฐ

sensor (sid)
   โ”‚
   โ””โ”€โ”€โ”€โ”
                    โ–ผ
     event (sid, cid) โ”€โ”€โ”€โ–ถ signature (sig_id)
         โ”‚
         โ”œโ”€โ”€โ–ถ iphdr (sid, cid)
         โ”œโ”€โ”€โ–ถ tcphdr / udphdr / icmphdr (sid, cid)
         โ””โ”€โ”€โ–ถ data (sid, cid)

ํ…Œ์ด๋ธ” ์ฃผ์š” ํ•„๋“œ ์„ค๋ช…
sensor (๋™๊ธฐํ™” ํ•„๋“œ) ``sid``
  • Snort๊ฐ€ ์„ค์น˜๋œ ์žฅ๋น„(์„ผ์„œ)๋ฅผ ๋‚˜ํƒ€๋ƒ„
  • ๊ฐ ์„ผ์„œ์—๋Š” ๊ณ ์œ ํ•œ sid(sensor ID) ์กด์žฌ
``hostname``, ``interface``, ``filter`` ๋“ฑ
event (๋™๊ธฐํ™” ํ•„๋“œ) ``sid``, ``cid``
  • Snort๊ฐ€ ํƒ์ง€ํ•œ ํ•˜๋‚˜์˜ ์ด๋ฒคํŠธ(alert)๋ฅผ ์˜๋ฏธ
  • ``sid``์™€ ``cid``๋กœ ๊ณ ์œ ํ•˜๊ฒŒ ์‹๋ณ„๋จ
  • ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”๊ณผ ์—ฐ๊ฒฐ๋˜๋Š” ์ค‘์‹ฌ์ด ๋˜๋Š” ํ…Œ์ด๋ธ”
``signature`` (ref > signaure.sig_id), ``timstamp``
signature (๋™๊ธฐํ™” ํ•„๋“œ) ``sig_id``
  • ํ•ด๋‹น ์ด๋ฒคํŠธ๊ฐ€ ์–ด๋–ค ์‹œ๊ทธ๋‹ˆ์ฒ˜(ํƒ์ง€ ๋ฃฐ)์— ์˜ํ•ด ๋ฐœ์ƒํ–ˆ๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋ƒ„
  • ์ด๋ฒคํŠธ๋Š” ํŠน์ • ์‹œ๊ทธ๋‹ˆ์ฒ˜๋ฅผ ์ฐธ์กฐํ•จ
``sig_name`` ๋“ฑ
iphdr (๋™๊ธฐํ™” ํ•„๋“œ) ``sid``, ``cid``
  • ์ด๋ฒคํŠธ์— ํฌํ•จ๋œ IP ํŒจํ‚ท์˜ ํ—ค๋” ์ •๋ณด
  • ์ถœ๋ฐœ์ง€/๋ชฉ์ ์ง€ IP ์ฃผ์†Œ ๋“ฑ์„ ํฌํ•จ
``ip_src``, ``ip_dst``, ``ip_ver`` ๋“ฑ
tcphdr / udphdr
/ icmphdr
(๋™๊ธฐํ™” ํ•„๋“œ) ``sid``, ``cid``
  • ์‚ฌ์šฉ๋œ ํ”„๋กœํ† ์ฝœ์— ๋”ฐ๋ผ ํ•˜๋‚˜์˜ ํ—ค๋” ํ…Œ์ด๋ธ”์— ์—ฐ๊ฒฐ๋จ
  • ํฌํŠธ ๋ฒˆํ˜ธ, ํ”Œ๋ž˜๊ทธ, ํƒ€์ž… ๋“ฑ์˜ ์ •๋ณด๊ฐ€ ๋“ค์–ด๊ฐ
``_sport``, ``_dport``, ``_flags`` ๋“ฑ
data (๋™๊ธฐํ™” ํ•„๋“œ) ``sid``, ``cid``
  • ์ด๋ฒคํŠธ์™€ ๊ด€๋ จ๋œ ์‹ค์ œ ํŽ˜์ด๋กœ๋“œ(๋ฐ์ดํ„ฐ)๋ฅผ ์ €์žฅ
  • ์ด์ „ ํ˜•ํƒœ์˜ ์›๋ณธ ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Œ
``data_payload``

 


๐Ÿ”น3. ์ฃผ์š” ํ…Œ์ด๋ธ” / ํ•„๋“œ ๋‚ด์—ญ

event
  • ๊ฐ ํƒ์ง€๋œ ์ด๋ฒคํŠธ์˜ ๊ธฐ๋ณธ ์ •๋ณด๋ฅผ ์ €์žฅ
  • ํ•„๋“œ ์˜ˆ์‹œ:
    • ``sid`` : Snort์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ณ ์œ  ์‹๋ณ„์ž (Signature ID)
    • ``cid ``: ์—ฐ๊ฒฐ(Connection) ID
    • ``signature`` : ํƒ์ง€๋œ ์‹œ๊ทธ๋‹ˆ์ฒ˜์™€ ์—ฐ๊ฒฐ๋จ
    • ``timestamp`` : ์ด๋ฒคํŠธ ๋ฐœ์ƒ ์‹œ๊ฐ„
signature
  • ํƒ์ง€ ๋ฃฐ์˜ ์‹œ๊ทธ๋‹ˆ์ฒ˜ ์ •๋ณด๋ฅผ ์ €์žฅ
  • ํ•„๋“œ ์˜ˆ์‹œ:
    • ``sig_id`` : ์‹œ๊ทธ๋‹ˆ์ฒ˜ ๊ณ ์œ  ID
    • ``sig_name`` : ์‹œ๊ทธ๋‹ˆ์ฒ˜ ์ด๋ฆ„ (๋ฃฐ ์ด๋ฆ„)
    • ``sig_priority`` : ์‹ฌ๊ฐ๋„(Priority)
    • ``sig_class_id ``: ๋ถ„๋ฅ˜ ID (sig_class ์ฐธ์กฐ)
sig_class
  • ์‹œ๊ทธ๋‹ˆ์ฒ˜ ๋ถ„๋ฅ˜ ์ •๋ณด ์ €์žฅ (์˜ˆ: ๊ณต๊ฒฉ ์œ ํ˜•)
  • ํ•„๋“œ ์˜ˆ์‹œ:
    • ``sig_class_id`` : ํด๋ž˜์Šค ID
    • ``sig_class_name ``: ํด๋ž˜์Šค ์ด๋ฆ„ (์˜ˆ: "Attempted Admin")
iphdr
  • IP ํ—ค๋” ์ •๋ณด ์ €์žฅ
  • ํ•„๋“œ ์˜ˆ์‹œ:
    • ``ip_src``, ``ip_dst ``: ์ถœ๋ฐœ์ง€/๋ชฉ์ ์ง€ IP ์ฃผ์†Œ
    • ``ip_proto`` : ์‚ฌ์šฉ๋œ ํ”„๋กœํ† ์ฝœ (TCP/UDP/ICMP ๋“ฑ)
tcphdr / udphdr / icmphdr
  • ๊ฐ๊ฐ TCP, UDP, ICMP ํ—ค๋” ์ •๋ณด๋ฅผ ์ €์žฅ
  • ์˜ˆ์‹œ ํ•„๋“œ:
    • TCP: ``tcp_sport``, ``tcp_dport``, ``tcp_flags``
    • UDP: ``udp_sport``, ``udp_dport``
    • ICMP: ``icmp_type``, ``icmp_code``
data
  • ํŒจํ‚ท์˜ ``raw payload`` ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ
sensor
  • ์ด๋ฒคํŠธ๊ฐ€ ํƒ์ง€๋œ ์„ผ์„œ ์žฅ๋น„์— ๋Œ€ํ•œ ์ •๋ณด ์ €์žฅ
  • ํ•„๋“œ ์˜ˆ์‹œ:
    • ``sid`` : ์„ผ์„œ ID
    • ``hostname``, ``interface``

๐Ÿ”น4. SNORT ์Šคํ‚ค๋งˆ

snort ์ „์ฒด ์Šคํ‚ค๋งˆ ๊ตฌ์กฐ


2๏ธโƒฃ SNORT ๋ฃฐ

๐Ÿ”น1. ๊ตฌ์„ฑ ์š”์†Œ

์ถœ์ฒ˜: writing snort rules with examples and cheat sheet (https://cyvatar.ai/write-configure-snort-rules/)

 

ํ—ค๋” (Header)
  • ํŒจํ‚ท์˜ ๊ธฐ๋ณธ ์†์„ฑ์— ๋Œ€ํ•œ ์กฐ๊ฑด ๋“ฑ ํŠธ๋ž˜ํ”ฝ ๋ฐœ์ƒ ์ฃผ์ฒด ๋ฐ ๋ฐฉํ–ฅ ๋“ฑ์„ ์ •์˜ํ•œ๋‹ค.
์š”์†Œ ์„ค๋ช…
``action`` ๋™์ž‘ ์ข…๋ฅ˜ (``alert``, ``log``, ``pass``, ``drop``, ``reject``, ``sdrop``)
``protocol`` ``tcp``, ``udp``, ``icmp``, ``ip`` ๋“ฑ
``src_ip`` ์ถœ๋ฐœ์ง€ IP
``src_port`` ์ถœ๋ฐœ์ง€ ํฌํŠธ
``->``, ``<-``, ``<>`` ํŠธ๋ž˜ํ”ฝ ๋ฐฉํ–ฅ
``dst_ip`` ๋ชฉ์ ์ง€ IP
``dst_port`` ๋ชฉ์ ์ง€ ํฌํŠธ

 

์˜ต์…˜ (Options)
  • ํŒจํ‚ท ๋‚ด์šฉ์„ ๋” ์ž์„ธํžˆ ๋ถ„์„ํ•˜๊ณ , ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€๋‚˜ ๋ฃฐ ์ •๋ณด ๋“ฑ์„ ์„ค์ •ํ•˜๋Š” ๋“ฑ ํŠธ๋ž˜ํ”ฝ ์„ธ๋ถ€ ํŠน์ง•์„ ์ •์˜ํ•œ๋‹ค. 
์˜ต์…˜ ์„ค๋ช…
``msg`` ํƒ์ง€ ์‹œ์ถœ๋ ฅํ•  ๋ฉ”์‹œ์ง€ 
``content`` ํŽ˜์ด๋กœ๋“œ์—์„œ ๊ฒ€์ƒ‰ํ•  ๋ฌธ์ž์—ด 
``sid`` ๋ฃฐ ๊ณ ์œ  ๋ฒˆํ˜ธ (Signature ID)
``rev`` ๋ฃฐ ๋ฒ„์ „ (Revision)
``classtype`` ๊ณต๊ฒฉ ์œ ํ˜•
``priority`` ์‹ฌ๊ฐ๋„ (1=๋†’์Œ, 2=์ค‘๊ฐ„, 3=๋‚ฎ์Œ)
``flow`` ํŠธ๋ž˜ํ”ฝ ๋ฐฉํ–ฅ ์กฐ๊ฑด (``to_server``, ``from_client``, ``established`` ๋“ฑ)
``depth/offset`` content ๊ฒ€์‚ฌ ๋ฒ”์œ„ ์ง€์ •
``metadata`` ๋ฃฐ ๊ด€๋ จ ๋ฉ”ํƒ€ ์ •๋ณด

๐Ÿ”น 2. Payload ๊ฒ€์‚ฌ ๋ฃฐ

  • ํŒจํ‚ท์˜ ์‹ค์ œ ๋ฐ์ดํ„ฐ ๋ถ€๋ถ„์„ ๋ถ„์„ํ•ด์„œ ๊ณต๊ฒฉ์„ ํƒ์ง€ํ•œ๋‹ค.
์ฃผ์š” ๋ฃฐ ์˜ต์…˜
์˜ต์…˜ ๊ฒ€์‚ฌ ๋ฒ”์œ„ ๋น„๊ณ 
content ํŽ˜์ด๋กœ๋“œ ์ „์ฒด ์ˆœ์ˆ˜ ๋ฌธ์ž์—ด ๊ฒ€์‚ฌ๋งŒ ์ง€์›
uricontent URI
pcre ํŽ˜์ด๋กœ๋“œ ์ „์ฒด ์ •๊ทœํ‘œํ˜„์‹ ์ง€์›

๐Ÿ”น 3. Non-Payload ๊ฒ€์‚ฌ ๋ฃฐ

  • Non-Payload ๋ฃฐ์€ ์ „์†ก๋œ ์‹ค์ œ ๋ฐ์ดํ„ฐ๊ฐ€ ์•„๋‹Œ **ํ—ค๋”์™€ ํŠธ๋ž˜ํ”ฝ ์ƒํƒœ**๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ถ„์„ํ•œ๋‹ค
์ฃผ์š” ๋ฃฐ ์˜ต์…˜
์˜ต์…˜ ์„ค๋ช…
flow ํŠธ๋ž˜ํ”ฝ ๋ฐฉํ–ฅ ์„ ํƒ (SYN ํ”Œ๋ž˜๊ทธ ๊ธฐ์ค€)
flags TCP flag bit ๊ฒ€์‚ฌ
dsize ํŽ˜์ด๋กœ๋“œ ์‚ฌ์ด์ฆˆ ๊ฒ€์‚ฌ

3๏ธโƒฃ Payload ๊ฒ€์‚ฌ ๋ฃฐ ์˜ต์…˜

๐Ÿ”น1. content/uricontent ์˜ต์…˜

  • ๋ฌธ์ž์—ด ๊ธฐ๋ฐ˜์˜ ํŽ˜์ด๋กœ๋“œ ํƒ์ง€ ์˜ต์…˜
  • snort ๋ฃฐ์—์„œ ํŒจํ‚ท ๋ฐ์ดํ„ฐ ๋‚ด ํŠน์ • ๋ฌธ์ž์—ด ์กด์žฌ ์—ฌ๋ถ€๋ฅผ ๊ฒ€์‚ฌ
  • ``content``: ํŽ˜์ด๋กœ๋“œ ์ „์ฒด ์˜์—ญ์—์„œ ๋ฌธ์ž์—ด์„ ํƒ์ง€
  • ``uricontent``: HTTP ์š”์ฒญ URI ๊ฒฝ๋กœ์—์„œ ๋ฌธ์ž์—ด ํƒ์ง€
์ฃผ์š” ์ˆ˜์ •์ž (Modifier)
  • ``nocase`` ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„ ํ•ด์ œ
  • ์ ˆ๋Œ€ ์œ„์น˜
    • ``offset`` ๊ฒ€์‚ฌ ์‹œ์ž‘ ์œ„์น˜
    • ``depth`` ๊ฒ€์‚ฌ ๋ฒ”์œ„
  • ์ƒ๋Œ€ ์œ„์น˜
    • ``distance`` ๊ฒ€์‚ฌ ์‹œ์ž‘ ์œ„์น˜ (์ด์ „ ๊ฒ€์‚ฌ๊ฐ€ ๋๋‚œ ์ง€์ ๋ถ€ํ„ฐ)
    • ``within`` ๊ฒ€์‚ฌ ๋ฒ”์œ„
์˜ˆ์‹œ
  • ํŽ˜์ด๋กœ๋“œ ์ฒ˜์Œ 3๋ฐ”์ดํŠธ ์•ˆ์— ``"GET"`` ๋ฌธ์ž์—ด์ด ์žˆ๋Š”์ง€ ๊ฒ€์‚ฌ
  • ``"GET"`` ๋ฌธ์ž์—ด ๋๋‚˜๊ณ  2๋ฐ”์ดํŠธ ํ›„๋ถ€ํ„ฐ 7๋ฐ”์ดํŠธ ์•ˆ์— ``"rawdata"``๊ฐ€ ์žˆ๋Š”์ง€ ๊ฒ€์‚ฌ
alert tcp any any -> any 80 (
    msg:"Test rule for GET and rawdata detection";
    content:"GET"; offset:0; depth:3;
    content:"rawdata"; distance:2; within:7;
    sid:1000010; rev:1;
)


[ ํŽ˜์ด๋กœ๋“œ ์˜ˆ์‹œ ]  
0000: 47 45 54 20 78 78 72 61 77 64 61 74 61
           ↑ "GET"
                    ↑ (space)  
                      ↑ "x x r a w d a t a"
                          ↑ rawdata๋Š” "GET" ์ดํ›„ +2 ์œ„์น˜๋ถ€ํ„ฐ +7 ์•ˆ์— ์žˆ์Œ → โœ… ๋งค์นญ

 

๐Ÿ”น2. pcre ์˜ต์…˜

  • Perl-Compatible Regular Expressions
  • ์ •๊ทœํ‘œํ˜„์‹์„ ์ด์šฉํ•ด ๋ณด๋‹ค ๋ณต์žกํ•˜๊ณ  ์œ ์—ฐํ•œ ๋ฌธ์ž์—ด ํŒจํ„ด์„ ํƒ์ง€
pcre ์ˆ˜์ •์ž
  • ``/i`` ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„ ์•ˆํ•จ
  • ``/s`` ์ค„๋ฐ”๊ฟˆ ๋ฌธ์ž ๊ฒ€์‚ฌ
  • ``/m`` ์•ต์ปค ๋ฌธ์ž์˜ ์ค„ ๊ตฌ๋ถ„ ํ•ด์ œ
  • ``/R`` 'distance:0`๊ณผ ๋™์ผ (snort only)

 


4๏ธโƒฃ Non-Payload ๊ฒ€์‚ฌ ๋ฃฐ ์˜ต์…˜

๐Ÿ”น1. flow ์˜ต์…˜

  • ํŒจํ‚ท์ด TCP ์—ฐ๊ฒฐ ๋‚ด์—์„œ ์–ด๋А ๋ฐฉํ–ฅ์œผ๋กœ, ์–ด๋–ค ์ƒํƒœ๋กœ ํ๋ฅด๊ณ  ์žˆ๋Š”์ง€๋ฅผ ์ง€์ •ํ•˜๋Š” ์˜ต์…˜
  • TCP SYN ํ”Œ๋ž˜๊ทธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ฐฉํ–ฅ์„ ๊ตฌ๋ถ„
  • Client ↔ Server ๊ตฌ๋ถ„์ด ๋ช…ํ™•ํ•œ ๋„คํŠธ์›Œํฌ์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์Œ 
์ฃผ์š” ํ‚ค์›Œ๋“œ
  • ``to_server``: ํด๋ผ์ด์–ธํŠธ → ์„œ๋ฒ„ ๋ฐฉํ–ฅ์œผ๋กœ ํŠธ๋ž˜ํ”ฝ
  • ``from_client``:  ํด๋ผ์ด์–ธํŠธ์—์„œ ์‹œ์ž‘๋œ ํŠธ๋ž˜ํ”ฝ
  • ``to_client``: ์„œ๋ฒ„ → ํด๋ผ์ด์–ธํŠธ ๋ฐฉํ–ฅ์˜ ํŠธ๋ž˜ํ”ฝ
  • ``from_server``: ์„œ๋ฒ„์—์„œ ์‹œ์ž‘๋œ ํŠธ๋ž˜ํ”ฝ
  • ``established``: TCP ํ•ธ๋“œ์‰์ดํฌ๊ฐ€ ์™„๋ฃŒ๋œ ์„ธ์…˜์—์„œ๋งŒ ๋งค์นญ (SYN-ACK ํ›„)
  • ``stateless``: ์ƒํƒœ ์ถ”์  ์—†์ด ๊ฒ€์‚ฌ (UDP์ฒ˜๋Ÿผ ์„ธ์…˜ ์—†์Œ)
  • ``not_established``: ์„ธ์…˜์ด ์•„์ง ์„ค์ •๋˜์ง€ ์•Š์€ ์ƒํƒœ์—์„œ๋งŒ ํƒ์ง€ (ex. SYN ํŒจํ‚ท ํƒ์ง€ ๋“ฑ)
์˜ˆ์‹œ
  • TCP SYN ํ”Œ๋ž˜๊ทธ๋ฅผ ์ˆ˜์‹ ํ•œ ์„œ๋ฒ„๋กœ ํ–ฅํ•˜๋Š” ํŠธ๋ž˜ํ”ฝ๋งŒ ๊ฒ€์‚ฌ
alert tcp any any -> any any (
	flow:to_server; 
    content:”aaa”
)

๐Ÿ”น2. flags ์˜ต์…˜

  • TCP ํ—ค๋”์˜ ํ”Œ๋ž˜๊ทธ ๋น„ํŠธ๋ฅผ ๊ฒ€์‚ฌํ•˜๋Š” ์˜ต์…˜
  • SYN, ACK, FIN, RST ๋“ฑ TCP ํ†ต์‹  ๊ณผ์ •์—์„œ ์„ค์ •๋˜๋Š” ํ”Œ๋ž˜๊ทธ ์กฐํ•ฉ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํƒ์ง€ํ•  ์ˆ˜ ์žˆ์Œ
์ฃผ์š” TCP ํ”Œ๋ž˜๊ทธ ๋ชฉ๋ก 
  • ``S`` SYN (์„ธ์…˜ ์‹œ์ž‘ ์š”์ฒญ)
  • ``A`` ACK (์‘๋‹ต ํ™•์ธ)
  • ``F`` FIN (์„ธ์…˜ ์ข…๋ฃŒ ์š”์ฒญ)
  • ``R`` RST (์„ธ์…˜ ๊ฐ•์ œ ์ข…๋ฃŒ)
  • ``P`` PSH (์ฆ‰์‹œ ์ „์†ก ์š”์ฒญ)
  • ``U`` URG (๊ธด๊ธ‰ ๋ฐ์ดํ„ฐ ์žˆ์Œ)
  • ``E`` ECN-Echo (Congestion Notification ์‘๋‹ต)
  • ``C`` CWR (Congestion Window Reduced)
์˜ˆ์‹œ
  • ์ข‹์€ ์˜ˆ์‹œ - SYN ํ”Œ๋ž˜๊ทธ + ํŠน์ • ํŽ˜์ด๋กœ๋“œ ํƒ์ง€
    • ``flags: S;`` → SYN ํ”Œ๋ž˜๊ทธ ์„ค์ •๋œ ํŒจํ‚ท๋งŒ ๋Œ€์ƒ์œผ๋กœ
    • ``"aaa"``๋ผ๋Š” ๋ฌธ์ž์—ด์ด ์žˆ๋Š” ๋น„์ •์ƒ SYN ์š”์ฒญ ํƒ์ง€
alert tcp any any -> any 80 (
    flags: S; 
    content: "aaa"; 
    msg: "SYN packet with suspicious payload"; 
    sid:1000001; 
    rev:1; 
    classtype:attempted-recon;
)
  • ๋‚˜์œ ์˜ˆ์‹œ – content ๋จผ์ € ๊ฒ€์‚ฌ (๋น„ํšจ์œจ์ )
    • ์ˆœ์„œ์ƒ ๋ฌธ์ œ๋กœ ๋ชจ๋“  TCP ํŒจํ‚ท์˜ content๋ฅผ ๋จผ์ € ๊ฒ€์‚ฌ → ๋น„ํšจ์œจ
    • ์„ฑ๋Šฅ ์ €ํ•˜ ์šฐ๋ ค
alert tcp any any -> any 80 (
    content: "aaa"; 
    flags: S; 
    msg: "Inefficient order: content before flags"; 
    sid:1000002; 
    rev:1; 
    classtype:bad-unknown;
)
  • ๋” ๋‚˜์œ ์˜ˆ์‹œ – ์˜๋ฏธ ์—†๋Š” ์กฐํ•ฉ
    • ``flags: PA;``๋Š” ์ •์ƒ์ ์ธ ๋ฐ์ดํ„ฐ ์ „์†ก์šฉ ํŒจํ‚ท
    • ``"aaa"``๊ฐ€ ๋“ค์–ด์žˆ์„ ๊ฐ€๋Šฅ์„ฑ์€ ๋‚ฎ์Œ → ํƒ์ง€ ์˜๋„ ๋ถ€์ •ํ™•
alert tcp any any -> any 80 (
    content: "aaa"; 
    flags: PA; 
    msg: "Invalid flag-content logic"; 
    sid:1000003; 
    rev:1; 
    classtype:bad-unknown;
)

๐Ÿ”น3. dsize ์˜ต์…˜

  • ํŒจํ‚ท์˜ Payload(๋ฐ์ดํ„ฐ) ํฌ๊ธฐ๋ฅผ ๊ฒ€์‚ฌํ•˜๋Š” ์˜ต์…˜
  • ์ด์ƒํ•˜๊ฒŒ ํฌ๊ธฐ๊ฐ€ ์ž‘๊ฑฐ๋‚˜ ํฐ ํŒจํ‚ท์„ ํƒ์ง€ํ•˜๊ฑฐ๋‚˜, ๋ฌด์˜๋ฏธํ•œ ํŒจํ‚ท, ์Šค์บ๋‹ ์‹œ๋„ ๋“ฑ์„ ์žก์•„๋‚ด๋Š” ๋ฐ ์œ ์šฉ
์‚ฌ์šฉ ๋ฐฉ๋ฒ•
  1. ๊ณ ์ • ํฌ๊ธฐ ๊ฒ€์‚ฌ
  2. ์ด์ƒ ๊ฒ€์‚ฌ
  3. ์ดํ•˜ ๊ฒ€์‚ฌ
# ๊ณ ์ • ํฌ๊ธฐ ๊ฒ€์‚ฌ
dsize: 0;		// ํŽ˜์ด๋กœ๋“œ ํฌ๊ธฐ๊ฐ€ ์ •ํ™•ํžˆ 0๋ฐ”ํŠธ์ผ๋•Œ ๋งค์นญ
				// ํ”ํžˆ Null ์Šค์บ”์ด๋‚˜, ์˜๋ฏธ ์—†๋Š” ํŒจํ‚ท ๋“ฑ ํƒ์ง€์—์„œ ์‚ฌ์šฉ๋จ

# ์ด์ƒ ๊ฒ€์‚ฌ
dsize: >300;	// ํŽ˜์ด๋กœ๋“œ ํฌ๊ธฐ๊ฐ€ 300๋ฐ”์ดํŠธ๋ณด๋‹ค ํด ๋•Œ ๋งค์นญ
				// ๋ณดํ†ต์€ ๋น„์ •์ƒ์ ์œผ๋กœ ํฐ ์š”์ฒญ, ์šฐํšŒ ๊ณต๊ฒฉ ์‹œ๋„ ๋“ฑ์„ ํƒ์ง€ํ•  ๋•Œ ์‚ฌ์šฉ

# ์ดํ•˜ ๊ฒ€์‚ฌ
dsize: <10;		// ํŽ˜์ด๋กœ๋“œ ํฌ๊ธฐ๊ฐ€ 10๋ฐ”์ดํŠธ ๋ฏธ๋งŒ์ผ ๋•Œ ๋งค์นญ
				// ์Šค์บ”์ด๋‚˜ ์ทจ์•ฝํ•œ ์งง์€ ๋ช…๋ น์–ด ์š”์ฒญ ํŒจํ‚ท ํƒ์ง€

5๏ธโƒฃ Thresholds ๊ฒ€์‚ฌ ๋ฃฐ ์˜ต์…˜

  • ๋™์ผํ•œ ์ด๋ฒคํŠธ๊ฐ€ ํŠน์ • ์‹œ๊ฐ„ ๋‚ด์— ๋ฐ˜๋ณต๋  ๊ฒฝ์šฐ, ์•Œ๋ฆผ ๋ฐœ์ƒ์„ ์ œ์–ดํ•˜๋Š” ์„ค์ •
์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํƒ€์ž…
  • ``type`` ์ž…๊ณ„๊ฐ’ ๋™์ž‘ ๋ฐฉ์‹์„ ์ง€์ •
    • ``limit`` ์ผ์ • ํšŸ์ˆ˜๋งŒ ํ—ˆ์šฉํ•˜๊ณ  ๋‚˜๋จธ์ง€๋Š” ๋ฌด์‹œ
    • ``threshold`` ์ผ์ • ํšŸ์ˆ˜๋งˆ๋‹ค ํ•œ ๋ฒˆ์”ฉ ๊ฒฝ๊ณ  ๋ฐœ์ƒ
    • ``both`` ์ผ์ • ํšŸ์ˆ˜ ๋„๋‹ฌ ์‹œ 1๋ฒˆ ๊ฒฝ๊ณ  ํ›„ ๋‚˜๋จธ์ง€ ๋ฌด์‹œ 
  • ``track`` ์ž„๊ณ„๊ฐ’์„ ์–ด๋–ค ๊ธฐ์ค€์œผ๋กœ ์ถ”์ ํ• ์ง€ ์ง€์ •
    • ``by_src`` ์ถœ๋ฐœ์ง€ IP ๊ธฐ์ค€
    • ``by_dst`` ๋ชฉ์ ์ง€ IP ๊ธฐ์ค€
  • ``count`` ์ง€์ •ํ•œ ``seconds`` ๋‚ด์— ์ด๋ฒคํŠธ๊ฐ€ ๋ช‡ ๋ฒˆ ๋ฐœ์ƒํ•ด์•ผ ๊ฒฝ๊ณ ๋ฅผ ๋‚ผ์ง€
  • ``seconds`` ์ด๋ฒคํŠธ ๋ฐœ์ƒ์„ ์ธก์ •ํ•˜๋Š” ์‹œ๊ฐ„ ๋ฒ”์œ„ (๋‹จ์œ„: ์ดˆ)
์˜ˆ์‹œ
  • ๋™์ผํ•œ ๋ชฉ์ ์ง€ IP์— ๋Œ€ํ•ด 3์ดˆ ๋™์•ˆ ping์ด 2ํšŒ ๋ฐœ์ƒํ•˜๋ฉด → 1๋ฒˆ ๊ฒฝ๊ณ  ๋ฐœ์ƒ
  • ์ดํ›„ ์ถ”๊ฐ€์ ์ธ ping์ด ๊ณ„์† ์™€๋„ → 3์ดˆ ์•ˆ์— ๋‹ค์‹œ 2ํšŒ ์žˆ์–ด์•ผ ๋˜ alert
alert icmp any any-> any any (
	msg:“threshold-test"; 
    itype:8; 
    threshold:type threshold, 
    track by_dst, 
    count 2, 
    seconds 3; 
    sid:1000005; 
    rev:1;
)

๐Ÿ”— ๋ ˆํผ๋Ÿฐ์Šค

๋”๋ณด๊ธฐ
  1. The Snort Project, ใ€ŒSNORT Users Manualใ€, SNORT ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€(๋งํฌ)

 

728x90
๋ฐ˜์‘ํ˜•

'๐Ÿšจ ๋ณด์•ˆ ์‹ค๋ฌด > ๋ณด์•ˆ ๊ด€์ œ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[์นจ์ž…ํƒ์ง€์‹œ์Šคํ…œ ์‹ค์Šต] โ‘ข SNORT ๋ฃฐ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•œ PCRE ์ž‘์„ฑ (SQL Injection)  (0) 2025.04.04
[SNORT] PCRE ์ •๊ทœํ‘œํ˜„์‹ ์‚ฌ์šฉ ๋ฐฉ๋ฒ• (VIM ํ™œ์šฉ)  (0) 2025.04.03
[์นจ์ž…ํƒ์ง€์‹œ์Šคํ…œ ์‹ค์Šต] โ‘ก SNORT ํƒ์ง€ ๋กœ๊ทธ๋ฅผ MySQL๋กœ ์—ฐ๋™ํ•˜๊ธฐ (Barnyard2)  (0) 2025.04.01
[์นจ์ž…ํƒ์ง€์‹œ์Šคํ…œ ์‹ค์Šต] โ‘  SNORT ์„ค์น˜ ๋ฐ ping ํŠธ๋ž˜ํ”ฝ ํƒ์ง€ (CentOS)  (0) 2025.04.01
[SOC] SIEM๊ณผ SOAR  (0) 2025.04.01
'๐Ÿšจ ๋ณด์•ˆ ์‹ค๋ฌด/๋ณด์•ˆ ๊ด€์ œ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [์นจ์ž…ํƒ์ง€์‹œ์Šคํ…œ ์‹ค์Šต] โ‘ข SNORT ๋ฃฐ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•œ PCRE ์ž‘์„ฑ (SQL Injection)
  • [SNORT] PCRE ์ •๊ทœํ‘œํ˜„์‹ ์‚ฌ์šฉ ๋ฐฉ๋ฒ• (VIM ํ™œ์šฉ)
  • [์นจ์ž…ํƒ์ง€์‹œ์Šคํ…œ ์‹ค์Šต] โ‘ก SNORT ํƒ์ง€ ๋กœ๊ทธ๋ฅผ MySQL๋กœ ์—ฐ๋™ํ•˜๊ธฐ (Barnyard2)
  • [์นจ์ž…ํƒ์ง€์‹œ์Šคํ…œ ์‹ค์Šต] โ‘  SNORT ์„ค์น˜ ๋ฐ ping ํŠธ๋ž˜ํ”ฝ ํƒ์ง€ (CentOS)
WISHee
WISHee
IT์™€ ๋ณด์•ˆ์— ๋Œ€ํ•œ ๊ณต๋ถ€ ๊ธฐ๋ก์„ ์ฐจ๊ณก์ฐจ๊ณก ์Œ“์•„๊ฐ€๋Š” ๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ ๐Ÿ›ก๏ธ๐Ÿ’ป
  • WISHee
    DevwithWish
    WISHee
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๐ŸŒณ ROOT (128)
      • โ›“๏ธ ๋„คํŠธ์›Œํฌ ๋ณด์•ˆ (10)
        • ๊ธฐ๋ณธ ๊ฐœ๋… (9)
        • ํŒจํ‚ท ๋ถ„์„ (1)
        • ์นจ์ž… ํƒ์ง€ ๋ฐ ๋ฐฉ์ง€ (0)
      • โš™๏ธ ์‹œ์Šคํ…œ ๋ณด์•ˆ (0)
        • ์šด์˜์ฒด์ œ ๋ณด์•ˆ (0)
        • ์ทจ์•ฝ์  ๋ถ„์„ (0)
        • ๋กœ๊ทธ ๋ถ„์„ (0)
      • ๐ŸŒ ์›น ๋ณด์•ˆ (1)
        • OWASP TOP 10 (1)
        • ์›น ์„œ๋ฒ„ ๋ณด์•ˆ (0)
        • ์›น ์ทจ์•ฝ์  ๋ถ„์„ (0)
      • โ˜๏ธ ํด๋ผ์šฐ๋“œ ๋ณด์•ˆ (3)
        • AWS (3)
      • ๐Ÿ” ์•”ํ˜ธํ™” & ์ธ์ฆ (3)
        • ์•”ํ˜ธํ™” ๊ฐœ๋… (2)
        • TLS,SSL (0)
        • ์ธ์ฆ & ์ ‘๊ทผ์ œ์–ด (1)
      • ๐Ÿšจ ๋ณด์•ˆ ์‹ค๋ฌด (30)
        • ๋ณด์•ˆ ๊ด€์ œ (14)
        • ๋ชจ์˜ ํ•ดํ‚น (12)
        • ์ทจ์•ฝ์  ์ง„๋‹จ (3)
        • ๋””์ง€ํ„ธํฌ๋ Œ์‹ (1)
      • ๐Ÿ“š ISMS & ISO27001 (9)
        • ISMS, ISMS-P ์ธ์ฆ (2)
      • ๐Ÿ“ฐ ๋ณด์•ˆ ๋‰ด์Šค & ํŠธ๋ Œ๋“œ (1)
        • ์ตœ์‹  ๋ณด์•ˆ ์ด์Šˆ (1)
        • ์‚ฌ์ด๋ฒ„ ์œ„ํ˜‘ ์ •๋ณด (0)
        • ๋ณด์•ˆ ์ปจํผ๋Ÿฐ์Šค ๋ฆฌ๋ทฐ (0)
      • ๐Ÿ”ฅ SKShieldusRookies (15)
        • Review (3)
        • PBL (0)
        • ๊ณผ์ œ (4)
        • ๋ชจ๋“ˆ ํ”„๋กœ์ ํŠธ (8)
        • ์ตœ์ข… ํ”„๋กœ์ ํŠธ (0)
      • ๐Ÿ—‚๏ธ Project (3)
        • SOAR (0)
        • BlockChain (3)
      • ๐Ÿงฉ Language (23)
        • Java (1)
        • Python (16)
        • Programmers (6)
      • ๐Ÿ‘ฅ ๋ฒ„์ „๊ด€๋ฆฌ & ํ˜‘์—…๋„๊ตฌ (9)
        • Git, GitHub (4)
        • etc (5)
      • ๐Ÿ’œ ์ผ์ƒ (21)
        • Boot Camp (4)
        • Study (6)
        • Travel (8)
        • Study Abroad (3)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

    • GitHub
  • ๊ณต์ง€์‚ฌํ•ญ

    • ๋ฐ˜๊ฐ‘์Šต๋‹ˆ๋‹ค!
  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ํ•ด์™ธ์—ฌํ–‰
    ํ”Œ๋ผ์Šคํฌ
    ํ˜‘์—…๋„๊ตฌ
    ๋ธ”๋ก์ฒด์ธ์‹ค์Šต
    ์œˆ๋„์šฐ๋ณด์•ˆ
    ์นผ๋ฆฌ๋ฆฌ๋ˆ…์Šค
    ํ”„๋ž‘์Šค์—ฌํ–‰
    ์ •๋ณด๋ณด์•ˆ
    ๋ฆฌ๋ˆ…์Šค๋ณด์•ˆ
    ๋ชจ์˜ํ•ดํ‚น
    ๊นƒํ—ˆ๋ธŒ
    ํ•œ๋‹ฌ์—ฌํ–‰
    git
    ์™€์ด์–ด์ƒคํฌ
    ์ฝ”๋”ฉํ…Œ์ŠคํŠธ
    VSCode
    ํŒŒ๋ฆฌ์—ฌํ–‰
    flask
    Python
    Github
    ๋ณด์•ˆ์‹ค์Šต
    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
    ์˜นํ”Œ๋ขฐ๋ฅด
    sk์‰ด๋”์Šค๋ฃจํ‚ค์ฆˆ
    ํŒŒ์ด์ฌ
    ๋ชฝ์ƒ๋ฏธ์…ธ
    ์œ ๋Ÿฝํ•œ๋‹ฌ์—ฌํ–‰
    ์œ ๋Ÿฝ์—ฌํ–‰
    slack
    ๋Ÿฐ๋˜์—ฌํ–‰
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • 160x600
    250x250
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
WISHee
[SNORT] SNORT ์Šคํ‚ค๋งˆ ๊ตฌ์กฐ์™€ ๋ฃฐ ๊ตฌ์„ฑ ๋ฐ ์˜ต์…˜ ์ •๋ณด
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”