Always-Try(정보보안 및 일상)

[정보보안기사][실기] DDoS 공격 유형 및 대응 방법 본문

정보보안 자격증 + ISMS-P

[정보보안기사][실기] DDoS 공격 유형 및 대응 방법

Always-Try 2021. 9. 27. 21:39

TCP SYN Flooding 공격 

 

더보기

1. 개요

  • TCP 3-Way Handshake의 취약점을 이용한 공격으로 TCP 연결 자원(Backlog Queue)를 소진시켜 외부로부터 더이상 TCP 연결 요청을 받을 수 없도록 하는 공격

2. 대응 방법

  • 완전한 3-Way Handshake가 이루어지지 않으면, Backlog Queue가 소비되지 않도록 Syn Cookie를 설정한다.
    • #sysctl -w net.ipv4.tcp_syncookies=1
  • 방화벽 또는 DDoS 대응 장비의 임계치 설정을 통해 동일한 IP에서의 과도한 SYN 요청을 제한한다.
    • iptables -A INPUT -p TCP --dport 80 --syn -m connlimit --connlimit-above 5 -j DROP
  • 일단 First SYN은 DROP 하고 본다. 정상적인 요청이라면 재전송 요청이 올 것이다.
  • Backlog Queue의 크기를 늘린다.
    • sysctl -w net.ipv4.tcp_max_syn_backlog = 1024
  • SYN+ACK에 대한 대기 시간(connection time out)을 줄인다.

 



HTTP GET Flooding , HTTP Hulk DoS

 

더보기

1. HTTP GET Flooding

  • 웹 서버에 동일한 동적 컨텐츠에 대한 HTTP GET 요청을 다량으로 발생시켜 공격대상 웹서버에 부하를 유발하는 공격이다.

2. HTTP Hulk DoS

  • 만약 동일한 컨텐츠가 아니라 매번 다른 컨텐츠(또는 파라미터만 변조)에 대한 GET 요청이라면 Hulk DoS 공격이다. 

 



Hash DoS 공격

 

더보기

1. 개요

  • 웹 서버는 클라이어트의 HTTP 요청과 함께 전달되는 파라미터를 Hash 테이블에 저장한다.
  • 공격자는 이를 이용하여 조작된 수 많은 파라미터 값을 POST 방식으로 웹서버로 전달하여 웹 서버에 다수의 해시 충돌(HASH Collision) 발생 및 많은 CPU 자원을 소모하도록 한다.

 

 

 

Slow 계열 공격 유형

 

더보기

1. Slow HTTP Header DoS(Slowloris) 공격

  • 개요
    • HTTP 요청 메세지의 개행은 CRLF을 의미하는 것으로 16진수로 0x0d0a로 표현한다. HTTP 헤더에서 이러한 개행이 2번 연속 발생하면 헤더의 끝으로 인식하는데, 이는 다시 말해 개행이 2번 연속으로 발생하지 않으면 헤더가 끝나지 않는것으 인식한다는 의미이다.
    • 공격자는 이 점을 이용하여 개행을 연속 2번 전달하지 않고 천천히 불필요한 헤더 필드 정보를 계속 전달하면서 웹 서버의 연결 자원을 유지시킨다. 이와 같은 방식으로 다수의 연결을 생성하면 웹 서버는 더 이상 연결 자원이 없어 정상적인 연결 요청을 받을 수 없는 상태에 빠진다.
  • 대응 방법
    • 동일한 출발지 IP에서의 연결에 대한 임계치 설정을 통한 차단
      • iptables -A INPUT -p tcp --dport 80 -m connlimit --coinnlimit-above 30 -j DROP
        (30개 초과 동시 연결 시 차단)
    • 연결 타임아웃 설정을 통한 차단
      • Apache httpd.conf 에서 Timeout 120 으로 설정
    • 읽기 타임아웃 설정을 통한 차단
      • Apache httpd.conf 에서 아래와 같이 설정
        <IfModule reqtimeout_module>
            Apache httpd.conf 에서 RequestReadTimeout header=5 body=10
        </IfModule>

 

2. Slow HTTP POST DoS(RUDY) 공격

  • 개요
    • HTTP 요청헤더에는 Content-Length 라는 메시지 크기를 전달하는 부분이 있다. 이 값이 크면 클수록 전달할 데이터가 많다는 의미이다.
    • 공격자는 Content-Length에 엄청 큰 값을 넣어서 전달하고, 실제 데이터 전송은 소량씩 천천히 전달한다면서 웹 서버의 연결 자원을 유지시킨다. 이와 같은 방식으로 다수의 연결을 생성하면 웹 서버는 더 이상 연결 자원이 없어 정상적인 연결 요청을 받을 수 없는 상태에 빠진다. 
  • 대응 방법
    • Slow HTTP Header DoS(Slowloris) 대응책과 동일

 

3. Slow HTTP Read DoS 공격

  • 개요
    • TCP의 흐름 제어 메커니즘을 이용한다. 만약, 데이터 수신측에 수신 버퍼에 여유 공간이 없다면 TCP 헤더의 Window 필드(수신 버퍼 크기)를 0으로 설정한 Zero Window Probe Packet을 송신측으로 보내서 잠시 데이터 전송을 지연시킨다.
    • 공격자는 이를 이용하여 웹 서버에 HTTP 요청을 보낸 후 지속적으로 Window 필드(수신 버퍼 크기)가 0인 패킷(Zero Window Probe Packet)을 전달하여 웹 서버가 요청에 대한 응답을 공격자에게 전송하지 못하도록 하여 연결 자원을 유지시킨다. 이와 같은 방식으로 다수의 연결을 생성하면 웹 서버는 더 이상 연결 자원이 없어 정상적인 연결 요청을 받을 수 없는 상태에 빠진다. 

 


DRDoS 공격

 

더보기

1. 개요

  • 패킷의 출발지 IP를 공격 대상(Victim)의 IP로 위조(IP Spoofing)하여 다수의 반사서버(Reflector)로 요청 정보를 전송한다. 이후 공격 대상은 반사 서버로부터 다수의 응답을 받아 서비스 거부 상태가 된다.

2. 유형

  • TCP 3way-hndshake 취약점 이용
  • ICMP Echo Request와 Rech Response를 이용
  • UDP 프로토콜 서비스를 제공하는 서비스를 반서 서버로 이용(DNS ANY/TXT, NTP monlist, SNMP GetBulkRequest, CHARGEN)

3. 특징

  • 공격 근원지 파악이 어려움
  • 좀비 PC의 공격 트래픽 효율 증가
    • 반사 서버는 전달한 Syn+Ack의 응답이 없으면 일정횟수 재전송하기 때문

4. 대응 방법

  • ISP 단에서 IP가 위조된 패킷이 인터넷망에서 인입되지 않도록 차단
  • ICMP 프로토콜을 사용하지 않는다면 해당 프로토콜을 차단
  • DNS 서버가 반사 서버로 사용되지 않도록 설정
    • 내부 DNS는 내부 사용자의 DNS 쿼리만 처리하도록 설정
    • 크기가 큰 DNS 요청을 차단
    • 동일한 IP에 대한 반복 요청 임계치 설정
  • NTP 서버에서 Monlist 명령 해제

 

 

 

Comments