📌 본 게시물은 자기 학습 목적으로 작성되어 일부 내용이 부정확하거나 최신 정보와는 다를 수 있습니다.
💬 잘못된 부분이나 보완할 점이 있다면 댓글로 공유하여 주시면 감사하겠습니다!

1️⃣ DoS(Denial of Service) 공격

  • 특정 시스템, 네트워크 또는 서비스의 자원을 과도하게 사용하거나 고갈 시켜 정상적인 사용자들이 해당 서비스를 이용할 수 없도록 만드는 공격

  • 일반적으로 네트워크 트래픽이나 시스템의 처리 능력을 초과하는 방식으로 서비스를 마비시킴

  • DoS 공격은 단일 공격원에서 발생하는 서비스 거부 공격이며 DDoS(Distributed Denial of Service)이란 여러 분산된 공격원(봇넷 등)을 통해 대뮤모 트래픽을 발생시키는 공격으로 다수의 공격원이 동시에 공격을 수행하여 방어와 대응이 훨씬어려움


2️⃣ DoS 및 DDoS 공격 도구

공격 도구주요 특징지원 공격 유형
TrinooUDP Flooding에 특화된 DDoS 도구 / UDP 기반의 트래픽을 대량으로 전송하여 네트워크를 마비시킴 / 암호화 기능 XUDP Flooding
TFN (Tribe Flood Network)다양한 공격 유형을 지원하며 UDP, ICMP, TCP Flooding과 Smurf 공격도 수행 가능 / 암호화 기능 XUDP, ICMP, SYN Flooding, Smurf 공격
StacheldrahtTFN과 유사한 기능을 제공하며 TCP, UDP, ICMP 기반 공격을 지원 / 암호화 가능UDP, ICMP, SYN Flooding, Smurf 공격
TFN2KTFN의 확장 버전으로 SYN, UDP, ICMP Flooding을 포함하여 여러 프로토콜로 복잡한 공격을 수행 가능.UDP, ICMP, SYN Flooding, Smurf 공격

3️⃣ DDoS(Distributed Denial of Service) 공격

📌 1. TCP SYN Flooding

  • TCP의 연결 과정인 3-way handshake를 악용하여 서버의 연결 자원을 고갈시키고 정상적인 사용자들이 서버에 접속하지 못하도록 만드는 공격
  • TCP 3-way Handshake : TCP는 연결 지향 프로토콜로 통신을 시작하기 위해 클라이언트와 서버는 3-way handshake 과정을 수행
    1. SYN : 클라이언트가 서버에 연결 요청을 보냄
    2. SYN-ACK : 서버가 요청을 받아들였음을 응답
    3. ACK : 클라이언트가 응답을 확인하고 연결 설정 완료
  • TCP SYN Flooding 공격의 원리

    이미지

  1. 공격자는 서버에 연결 요청을 위한 SYN 패킷을 대량으로 전송
  2. 서버는 요청을 처리하기 위해 SYN-ACK 응답을 보낸 후 클라이언트의 ACK를 기다리며 연결 상태 유지
  3. 공격자는 의도적으로 ACK 패킷을 보내지 않거나 가짜 IP 주소를 사용하여 응답이 도달하지 않게 함
  4. 서버는 연결 요청에 대해 일정 시간 동안 리소스를 점유하여 새로운 연결 요청을 처리할 수 없게 됨
  • TCP SYN Flooding 대응책
  1. Connection Timeout 조정 : 서버에서 SYN 요청을 처리하지 않고 일정 시간 대기 상태로 남아 있는 연결의 타임아웃 값을 단축
  2. Rate Limiting : IP별 트래픽 제한 또는 TCP SYN 패킷의 초당 처리량(PPS)을 제한
  3. 백로그 큐 크기 조정 : 서버의 TCP 백로그 큐 크기를 늘려 SYN 요청을 처리할 수 있는 용량을 확장
    • 예: 리눅스 서버의 tcp_max_syn_backlog 파라미터 조정

📌 2. ICMP Flooding

  • ICMP(Internet Control Message Protocol) 패킷을 대량으로 전송하여 타깃 네트워크, 장치 또는 서버를 과부화 상태로 만들어 서비스 거부 상태를 초래하는 공격

  • Smurfing Attack이라고도 함

  • ICMP 프로토콜 : 네트워크 상태를 모니터링하거나 오류 메시지를 전달하기 위해 사용되는 프로토콜

  • ICMP Flooding 공격의 원리

    이미지

  1. 공격자는 ICMP Echo Request(Ping 요청) 메시지의 출발지 IP를 타깃 시스템의 IP 주소로 위조
  2. 위조된 ICMP Echo Request 메시지를 특정 네트워크의 IP 브로드캐스트 주소로 전송
  3. 브로드캐스트 패킷을 받은 네트워크 내의 모든 장치는 ICMP Echo Reply 패킷을 위조된 타깃 IP로 전송
  4. 타깃 시스템으로 대량의 트래픽 유입
  • ICMP Flooding 대응책
  1. 브로드캐스트 트래픽 차단
  1. 리눅스 
  sudo sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1

  2. 유닉스 
  ndd -set /dev/ip ip_respond_to_echo_broadcast 0
  1. ICMP 트래픽 제한 : Rate Limiting을 설정하여 초당 허용되는 ICMP 요청/응답 수를 제한

📌 3. Tear Drop : IP Fragmentation (Ping of Death)

  • Tear Drop 공격 종류
종류설명
Tiny Fragment작은 크기의 Fragment를 만들어 네트워크 침입 탐지 시스템이나 패킷 필터링 장치를 우회하도록 설계된 공격 방식.
Fragment OverlapTiny Fragment 공격보다 더 복잡한 기법으로 IDS의 Fragment 처리 과정과 패킷 재조합 방식의 허점을 악용
IP Fragmentation 기반 공격- Ping of Death: Ping을 이용하여 ICMP 패킷 길이를 비정상적으로 증가 수신 시스템에서 처리 불가 상태를 유발하여 시스템 마비
- Tear Drop: 단편화된 패킷의 재조합 과정에서 발생하는 취약점을 악용해 시스템 중단 또는 비정상 작동을 유발하는 공격으로 Offset이 중복된 패킷을 전송

  • Tear Drop 공격의 원리
  1. IP 패킷 단편화(Fragmentation)

    • 네트워크에서 큰 데이터 패킷은 전송 가능한 크기(MTU, Maximum Transmission Unit)를 초과하면 여러 조각으로 나뉘어 단편화되어 전송됨
    • 재조합 과정에서 타깃 시스템은 단편화된 패킷 수신후 Offset(단편이 원래 데이터에서 존재했던 위치 값)을 기반으로 원래 데이터를 조합
  2. Tear Drop 공격

    • 공격자는 단편화된 IP 패킷의 Offset 값을 의도적으로 중복되거나 비정상적인 값으로 설정하여 타깃 시스템이 정상적으로 패킷을 조합할 수 없도록 함
    • 타깃 시스템은 재조합에 실패하여 CPU 과부화 또는 커널 패닉과 같은 오류 발생

📌 4. Land Attack

  • 네트워크 프로토콜의 취약점을 악용하여 출발지 IP 주소(Source IP)와 목적지 IP 주소(Destination IP)를 동일하게 설정하여 트래픽을 전송하는 공격

  • 송신자와 수신자의 IP주소와 Port 번호가 동일하여 네트워크 장비에 부하를 유발

    이미지

  • Land Attack 대응책

    • 방화벽 설정 : IP 주소 동일 패킷 차단

📌 5. HTTP Get Flooding

  • 정상적인 TCP 연결 수행 후에 지속적으로 HTTP GET 요청을 대량으로 전송하여 웹 서버의 리소스를 소모시키고 정상적인 사용자가 이용하지 못하도록 만드는 공격
  • HTTP GET 요청은 클라이언트가 서버에 특정 리소스(HTML 페이지, 이미지, 동영상 등)를 요청하는 일번적은 HTTP 메서드로 서버는 해당 요청을 처리하고 HTTP Response를 반환
  • TCP의 3-Way Handshaking 이후에 공격이 이루어 지기 때문에 IP를 변조하지 않음
  • 공격자는 다수의 봇(Botnet)을 사용하여 수많은 HTTP GET 요청을 서버로 보내 서버의 리소스를 과부하 상태로 만듦

이미지


📌 6. Slow HTTP Get/Post Attack

1. Slow HTTP Get 방식

  • 소량의 트래픽과 세션 연결을 통해 공격을 수행
  • 정상 IP 주소를 기반으로 하여 탐지가 어려우며 서비스의 취약점을 이용한 공격

2. Slow HTTP Post 방식(RUDY Attack)

  • 서버에 대량의 데이터를 장시간에 걸쳐서 분할 전송하여 Post 데이터가 모두 수신될 때까지 연결을 장시간 유지
  • HTTP POST 메서드를 활용하여 헤더의 Content-Length 값을 비정상적으로 낮게 설정하고 데이터를 여러 작은 조각으로 나누어 천천히 전송하는 방식

3. Slow HTTP Read DoS

  • 웹 서버와 TCP 연결 시에 TCP 윈도우 크기와 데이터 처리율을 감소시킨 후 HTTP 데이터를 송신하여 웹 서버가 정상적으로 응답하지 못하도록 하는 공격

  • TCP 윈도우 크기 및 데이터 처리율을 감소시키면 서버는 정상상태로 회복될 때까지 대기 상태에 빠져 부하를 유발

  • Slow HTTP Read DoS 공격의 원리

    • 공격자는 윈도우 크기를 0Byte로 조작하여 Zero Window Packet을 지속적으로 서버에 젼달
    • 서버는 윈도우 크기가 0Byte인 것을 확인하여 데이터를 전송하지 않고 Pending 상태에 빠짐

4. Slow HTTP Header DoS (Slowloris)

  • HTTP Header를 비정상적으로 조작하여 웹 서버가 헤더 정보를 구분할 수 없도록 하는 공격
    - HTTP Header와 Body는 개행문자(\r\n\r\n)로 구분되나 \r\n만 전송하여 불완전한 Header를 전송
  • 웹 서버는 HTTP Header 정보가 모두전달되지 않은 것으로 판단하여 연결을 장시간 유지하게 됨
SLOW HTTP POST HEADER Read
동작 분할 전송 헤더 조작 Window Size

📌 7. HULK DoS

  • 웹 서버의 가용량(최대 클라이언트 수)을 모두 소모시켜 정상적인 서비스 제공을 불가능하게 만드는 Get Flooding 공격 유형

  • 공격 대상 URL에 지속적으로 임의의 파라미터를 추가하여 URL을 변경하고 임계치 기반의 DDoS 방어 정책을 우회

  • HULK DoS대응책

    • 동시 연결 제한 : 한 IP에서 연결할 수 있는 최대 동시 연결 수를 제한
      # 동시 연결이 30개 초과 시에 차단
      iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 30 -j DROP
      			```

📌 8. UDP Flooding

  • 대량의 UDP 패킷을 이용하여 대상 호스트의 네트워크 자원을 소모시키는 공격
  • 단일 공격 호스트만으로는 충분한 효과를 내기 어려우며 일반적으로 다수의 공격 지점을 활용한 DDoS 형태로 수행

    이미지

📝 참고

https://www.imperva.com/learn/ddos/syn-flood/
https://www.imperva.com/learn/ddos/smurf-attack-ddos/
https://indusface.com/learning/land-attacks/
https://www.cloudflare.com/ko-kr/learning/ddos/http-flood-ddos-attack/
https://webstone.tistory.com/162

0개의 댓글