ν”„λ‘œν† μ½œμ˜ 이해와 DDoS 곡격

ν”„λ‘œν† μ½œμ˜ μ •μ˜μ™€ TCP, UDP ν”„λ‘œν† μ½œμ˜ 차이λ₯Ό μ•Œμ•„λ³΄κ³ , 각 ν”„λ‘œν† μ½œμ˜ νŠΉμ„±μ„ ν™œμš©ν•œ DDoS 곡격에 λŒ€ν•΄ μ•Œμ•„λ΄…λ‹ˆλ‹€.

ν”„λ‘œν† μ½œμ΄λž€?

호슀트 사이 데이터 톡신을 μœ„ν•΄ μ •μ˜ν•œ κ·œμΉ™μž…λ‹ˆλ‹€.

ν”„λ‘œν† μ½œμ€ OSI 7계측 λͺ¨λΈμ„ 기반으둜 λΆ„λ₯˜λ©λ‹ˆλ‹€.

osi-model

7-layers

μ‚¬μš©μžμ˜ 데이터와 직접 μƒν˜Έμž‘μš©ν•˜λŠ” ν”„λ‘œν† μ½œμ€ 계측 7(Layer 7, L7)에 λΆ„λ₯˜λ©λ‹ˆλ‹€.

μ‘μš© 계측이라고도 뢈리며, 이 ν”„λ‘œν† μ½œμ—λŠ” μš°λ¦¬μ—κ²Œ μΉœμˆ™ν•œ HTTP와 SMTP, FTPκ°€ μžˆμŠ΅λ‹ˆλ‹€.

μ›Ή μ„œν•‘μ„ ν•  λ•Œμ— HTTP ν”„λ‘œν† μ½œμ„,
이메일을 μ£Όκ³  받을 λ•Œμ—λŠ” SMTP ν”„λ‘œν† μ½œμ„ μ‚¬μš©ν•˜λ©°,
컴퓨터 κ°„ 파일 전솑 μ‹œμ—λŠ” FTP ν”„λ‘œν† μ½œμ„ μ‚¬μš©ν•©λ‹ˆλ‹€.

비둝 μ†Œν”„νŠΈμ›¨μ–΄ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ‘μš© 계측에 μ˜μ§€ν•˜μ§€λ§Œ, λ‘˜μ˜ ꡬ뢄은 λͺ…ν™•ν•©λ‹ˆλ‹€.

HTTP와 Chrome은 μ„œλ‘œ λ‹€λ₯Έ 것이며, HTTPλŠ” Chrome이 데이터λ₯Ό 주고받을 λ•Œ μ‚¬μš©ν•˜λŠ” κ·œμΉ™μž„μ„ 생각해보면 μ΄ν•΄ν•˜κΈ° μ‰½μŠ΅λ‹ˆλ‹€.

4-layers

ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„ μ‚¬μ΄μ˜ 데이터 전솑을 λ‹΄λ‹Ήν•˜λŠ” ν”„λ‘œν† μ½œμ€ 계측 4(L4)에 λΆ„λ₯˜λ©λ‹ˆλ‹€.
전솑 계측이라고도 뢈리며, 이 ν”„λ‘œν† μ½œμ—λŠ” TCP와 UDPκ°€ μžˆμŠ΅λ‹ˆλ‹€.

TCP (Transmission Control Protocol)

전솑 μ œμ–΄ ν”„λ‘œν† μ½œ(TCP)은 μ—°κ²° μ§€ν–₯적인 ν”„λ‘œν† μ½œμž…λ‹ˆλ‹€.

높은 신뒰성을 보μž₯ν•˜κΈ°μ— λŒ€λΆ€λΆ„μ˜ μ›Ή μ„œλΉ„μŠ€μ—μ„œ μ‚¬μš©λ©λ‹ˆλ‹€.

  • μ—°κ²° μ§€ν–₯ 방식 (가상 νšŒμ„  제곡)
    • 3-way handshakeλ₯Ό 톡해 μ—°κ²°
    • 4-way handshakeλ₯Ό 톡해 μ—°κ²° ν•΄μ œ
  • νŒ¨ν‚·1의 μˆœμ„œλ₯Ό 보μž₯
  • νŒ¨ν‚·μ˜ 신뒰성을 보μž₯
  • 속도가 느림

μ—°κ²° μ§€ν–₯μ μ΄λž€ λœ»μ€ ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„κ°€ μ—°κ²°λ˜μ–΄ 데이터λ₯Ό μ£Όκ³ λ°›μŒμ„ μ˜λ―Έν•©λ‹ˆλ‹€.
즉 TCPλŠ” ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„λ₯Ό μ—°κ²°ν•˜μ—¬ νŒ¨ν‚·μ„ μ£Όκ³ λ°›κΈ° μœ„ν•΄ κ°€μƒμ˜ 논리적 경둜λ₯Ό λ°°μ •ν•©λ‹ˆλ‹€.

μ΄λ•Œ 데이터λ₯Ό μ£Όκ³ λ°›κΈ° μœ„ν•΄ 연결을 λ§ΊλŠ” 과정을 handshake라고 ν•©λ‹ˆλ‹€.
이 κ³Όμ •μ—μ„œ νŒ¨ν‚·μ΄ μˆ˜μ‹ λ˜μ–΄μ•Ό ν•˜λŠ” μˆœμ„œλ₯Ό λ‚˜νƒ€λ‚΄κ³  νŒ¨ν‚·μ΄ μ˜λ„ν•œ λŒ€λ‘œ λ„μ°©ν–ˆλŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€.
덕뢄에 데이터λ₯Ό 주고받을 λ•Œ νŒ¨ν‚·μ˜ 신뒰성이 보μž₯λ©λ‹ˆλ‹€.
ν•˜μ§€λ§Œ 일련의 κ³Όμ • λ•Œλ¬Έμ— 속도가 λŠλ¦¬λ‹€λŠ” 단점이 μžˆμŠ΅λ‹ˆλ‹€.

TCP μ—°κ²° κ³Όμ •

handshake

λ‹€μŒκ³Ό 같은 과정을 거쳐 연결을 λ§ΊμŠ΅λ‹ˆλ‹€.

  1. ν΄λΌμ΄μ–ΈνŠΈκ°€ μ„œλ²„μ—μ„œ SYN νŒ¨ν‚·μ„ λ³΄λƒ…λ‹ˆλ‹€.
  2. μ„œλ²„λŠ” ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ SYN-ACK νŒ¨ν‚·μ„ λ³΄λƒ…λ‹ˆλ‹€.
  3. ν΄λΌμ΄μ–ΈνŠΈλŠ” μ„œλ²„μ—κ²Œ ACK νŒ¨ν‚·μ„ 보내 연결을 λ§ΊμŠ΅λ‹ˆλ‹€.

이후 ESTABLISHED μƒνƒœκ°€ λ˜μ–΄ 데이터λ₯Ό 주고받을 수 있게 λ©λ‹ˆλ‹€.

UDP (User Datagram Protocol)

μ‚¬μš©μž λ°μ΄ν„°κ·Έλž¨ ν”„λ‘œν† μ½œ(UDP)은 λΉ„μ—°κ²° μ§€ν–₯적인 ν”„λ‘œν† μ½œμž…λ‹ˆλ‹€.

λΉ λ₯Έ 속도λ₯Ό 보μž₯ν•˜κΈ°μ— μ‹€μ‹œκ°„ 슀트리밍 μ„œλΉ„μŠ€μ—μ„œ μ‚¬μš©λ©λ‹ˆλ‹€.

  • λΉ„μ—°κ²° μ§€ν–₯ 방식 (λ°μ΄ν„°κ·Έλž¨ 제곡)
    • λ°μ΄ν„°κ·Έλž¨μ„ 보내고 λ°›λŠ” 방식
    • λ°μ΄ν„°μ˜ μˆ˜μ‹  μ—¬λΆ€λ₯Ό ν™•μΈν•˜μ§€ μ•ŠμŒ
  • νŒ¨ν‚·μ˜ μˆœμ„œλ₯Ό 보μž₯ν•˜μ§€ μ•ŠμŒ
  • νŒ¨ν‚·μ˜ 신뒰성을 보μž₯ν•˜μ§€ μ•ŠμŒ
  • 속도가 빠름

UDP μ—°κ²° κ³Όμ •

tcp-vs-udp

DDoS 곡격

λΆ„μ‚° μ„œλΉ„μŠ€ κ±°λΆ€ 곡격(DDoS)은 μ„œλ²„λ₯Ό λ§ˆλΉ„μ‹œν‚€κΈ° μœ„ν•œ κ³΅κ²©μž…λ‹ˆλ‹€.
μ—¬λŸ¬ 곡격 방법이 μžˆμ§€λ§Œ 이 κΈ€μ—μ„œλŠ” L4 ν”„λ‘œν† μ½œμ„ μ΄μš©ν•œ 곡격에 λŒ€ν•΄ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.

UDP Flood

UDPλŠ” 톡신 μ‹œμž‘ κΆŒν•œμ„ μ–»κΈ° μœ„ν•œ Handshake 과정이 λΆ€μž¬ν•©λ‹ˆλ‹€.
κ³΅κ²©μžλŠ” μ΄λŸ¬ν•œ νŠΉμ„±μ„ ν™œμš©ν•˜μ—¬ μ„œλ²„μ— λŒ€λŸ‰μ˜ νŒ¨ν‚·μ„ 전솑, μ„œλ²„λ₯Ό λ§ˆλΉ„μ‹œν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€.

ddos-attack

  1. κ³΅κ²©μžλŠ” λŒ€λŸ‰μ˜ μ•…μ˜μ μΈ UDP νŒ¨ν‚·μ„ μž„μ˜μ˜ 포트둜 μ „μ†‘ν•©λ‹ˆλ‹€.
  2. μ„œλ²„λŠ” νŒ¨ν‚·μ„ 받아듀이고 λ™μΌν•œ 수의 ICMP νŒ¨ν‚·2으둜 μ‘λ‹΅ν•©λ‹ˆλ‹€.
    즉 ν•΄λ‹Ή ν¬νŠΈμ— μ—°κ²°ν•  수 μ—†μŒμ„ λœ»ν•©λ‹ˆλ‹€. (Data Unreachable)
  3. μ„œλ²„λŠ” 사기성 λ°μ΄ν„°κ·Έλž¨μ— μ‘λ‹΅ν•˜λŠ” 데 μžμ›μ„ μ†Œλͺ¨ν•˜κ²Œ 되고 μ„œλΉ„μŠ€κ°€ λ§ˆλΉ„λ©λ‹ˆλ‹€.

TCPλŠ” Handshake 과정이 있기 λ•Œλ¬Έμ— λŒ€λŸ‰μ˜ 데이터λ₯Ό μ „μ†‘ν•˜κΈ° 전에 연결을 λ§Ίμ–΄μ•Ό ν•©λ‹ˆλ‹€.
λ”°λΌμ„œ DDoS 곡격에 μ•ˆμ „ν•œ κ²ƒμ²˜λŸΌ λ³΄μž…λ‹ˆλ‹€.

SYN Flood

ν•˜μ§€λ§Œ κ³΅κ²©μžλŠ” SYN Flood 곡격을 톡해 TCP 연결을 λ§ΊλŠ” κ³Όμ •μ—μ„œ μ„œλ²„λ₯Ό λ§ˆλΉ„μ‹œν‚¬ μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

syn-flood-attack

  1. κ³΅κ²©μžλŠ” λŒ€λŸ‰μ˜ SYN νŒ¨ν‚·μ„ μ„œλ²„μ— μ „μ†‘ν•©λ‹ˆλ‹€.
  2. μ„œλ²„λŠ” SYN νŒ¨ν‚·μ„ 받아듀이고 SYN-ACK νŒ¨ν‚·μ„ μ‘λ‹΅ν•©λ‹ˆλ‹€.
  3. κ³΅κ²©μžλŠ” ACK νŒ¨ν‚·μ„ 보내지 μ•Šκ³  연결을 λŠμ–΄ μ„œλ²„μ— λŒ€λŸ‰μ˜ 반개방(half-open) 연결을 λ‚¨κΉλ‹ˆλ‹€.
  4. μ„œλ²„λŠ” 반개방 연결을 μ²˜λ¦¬ν•˜κΈ° μœ„ν•΄ μžμ›μ„ μ†Œλͺ¨ν•˜κ²Œ 되고 μ„œλΉ„μŠ€κ°€ λ§ˆλΉ„λ©λ‹ˆλ‹€.

Ping of Death

Ping of Death 곡격은 ICMP νŒ¨ν‚·μ„ μ΄μš©ν•˜μ—¬ μ„œλ²„λ₯Ό λ§ˆλΉ„μ‹œν‚€λŠ” κ³΅κ²©μž…λ‹ˆλ‹€.

ping-of-death-attack

  1. κ³΅κ²©μžλŠ” μ•…μ˜μ μœΌλ‘œ 큰 크기의 ICMP νŒ¨ν‚·μ„ μ„œλ²„μ— μ „μ†‘ν•©λ‹ˆλ‹€.
  2. νŒ¨ν‚·μ΄ μ„Έκ·Έλ¨ΌνŠΈλ‘œ λΆ„ν• λ©λ‹ˆλ‹€.
  3. μ„œλ²„λŠ” μ„Έκ·Έλ¨ΌνŠΈλ₯Ό μž¬μ‘°λ¦½ν•˜λ €κ³  μ‹œλ„ν•˜λ©°, 크기가 μ΅œλŒ€κ°’μ„ μ΄ˆκ³Όν•˜κ²Œ λ©λ‹ˆλ‹€.
  4. μ„œλ²„λŠ” 버퍼 μ˜€λ²„ν”Œλ‘œμš°λ‘œ 인해 λ§ˆλΉ„λ©λ‹ˆλ‹€.

UDP Flood와 λΉ„μŠ·ν•˜κ²Œ ICMP νŒ¨ν‚·μ„ μ΄μš©ν•˜μ—¬ μ„œλ²„λ₯Ό λ§ˆλΉ„μ‹œν‚€μ§€λ§Œ
Ping of Death 곡격은 ICMP νŒ¨ν‚·μ˜ 크기λ₯Ό μ•…μ˜μ μœΌλ‘œ μ‘°μž‘ν•˜μ—¬ μ„œλ²„λ₯Ό λ§ˆλΉ„μ‹œν‚΅λ‹ˆλ‹€.

특히 일뢀 TCP μŠ€νƒμ€ μ΅œλŒ€κ°’λ³΄λ‹€ 큰 νŒ¨ν‚·μ„ μ²˜λ¦¬ν•˜λ„λ‘ μ„€κ³„λ˜μ§€ μ•Šμ•˜μœΌλ―€λ‘œ λ”μš± μ·¨μ•½ν•©λ‹ˆλ‹€. λ‹€ν–‰νžˆλ„ 이 곡격은 ν˜„μž¬ λŒ€λΆ€λΆ„μ˜ μ„œλ²„μ—μ„œ λ°©μ–΄λ˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

κ²°λ‘ 

  • ν”„λ‘œν† μ½œμ€ 호슀트 사이 데이터 톡신을 μœ„ν•œ κ·œμΉ™μž…λ‹ˆλ‹€.
  • TCPλŠ” μ—°κ²° μ§€ν–₯적이며 높은 신뒰성을 보μž₯ν•©λ‹ˆλ‹€.
  • UDPλŠ” λΉ„μ—°κ²° μ§€ν–₯적이며 λΉ λ₯Έ 속도λ₯Ό 보μž₯ν•©λ‹ˆλ‹€.
  • DDoS 곡격은 μ„œλ²„λ₯Ό λ§ˆλΉ„μ‹œν‚€κΈ° μœ„ν•œ κ³΅κ²©μž…λ‹ˆλ‹€.
    • SYN Flood 곡격은 TCP 연결을 λ§ΊλŠ” κ³Όμ •μ—μ„œ μ„œλ²„λ₯Ό λ§ˆλΉ„μ‹œν‚΅λ‹ˆλ‹€.
    • UDP Flood 곡격은 UDP ν”„λ‘œν† μ½œμ˜ νŠΉμ„±μ„ ν™œμš©ν•˜μ—¬ μ„œλ²„λ₯Ό λ§ˆλΉ„μ‹œν‚΅λ‹ˆλ‹€.
    • Ping of Death 곡격은 ICMP νŒ¨ν‚·μ˜ 크기λ₯Ό μ•…μ˜μ μœΌλ‘œ μ‘°μž‘ν•˜μ—¬ μ„œλ²„λ₯Ό λ§ˆλΉ„μ‹œν‚΅λ‹ˆλ‹€.

μ°Έκ³ 

μ°Έμ‘°

Footnotes

  1. νŒ¨ν‚·(Packet)
    λ„€νŠΈμ›Œν¬λ₯Ό 톡해 μ „μ†‘λ˜λŠ” λ°μ΄ν„°μ˜ μ΅œμ†Œ λ‹¨μœ„μž…λ‹ˆλ‹€. ↩

  2. ICMP(Internet Control Message Protocol) νŒ¨ν‚·
    ICMP νŒ¨ν‚·μ€ 였λ₯˜ λ¦¬ν¬νŒ…μ— μ‚¬μš©λ˜λŠ” νŒ¨ν‚·μž…λ‹ˆλ‹€.
    데이터가 λ„λ‹¬ν•˜μ§€ λͺ»ν•œ 경우 μ „μ†‘ν•˜λŠ” μž₯μΉ˜μ™€ κ³΅μœ ν•  였λ₯˜λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€. ↩