정보보안기사

[정보보안기사(실기)] SECTION 04 네트워크 기본 학습 - DDoS

tnvori 2026. 5. 8. 03:31

양을 쳐내고 있긴 한데, 이게 맞나 싶다. 하루빨리 문제를 확인해야겠음

치폴레옹


13. DDoS

  1. 개요

    1. 정의
    2. 공격 구조(구성요소)
      • 공격자
      • 명령 제어 서버
      • 좀비 PC/디바이스
      • 공격 대상
    3. 공격 절차
  2. 봇넷 구조 및 제어 방식

    1. 개요
        • 웜/바이러스, 백도어, 스파이웨어, 루트킷 등의 기능이 결합된 형태
        • 정보 유출, 스팸 메일 발송, 디도스 공격, 트래픽 스니핑, 키 로깅 등 수행
      • 프로토콜 — IRC 봇넷, HTTP 봇넷, P2P 봇넷 등
      • 네트워크 구조 — 중앙 집중형 방식(IRC 봇넷, HTTP 봇넷)과 분산형 방식(P2P 봇넷)
    2. 봇넷의 명령/제어 방식
      • 중앙 집중형 명령/제어 방식
        • 초기 봇넷 — 구조가 단순하고 사용이 쉬운 IRC 기반 구조
        • 탐지 및 차단을 어렵게 하기 위해 HTTP 기반 C&C 구조로 진화
        • 여러 도메인을 확보하여 C&C 서버로 운영하고, 다수의 봇은 이 서버에 연결되어 명령 수행
        • 구조가 비교적 단순하지만, C&C 서버가 차단되면 전체 봇넷이 마비될 가능성
        • 대표적 봇넷 유형 — IRC 봇넷(Rbot 등), HTTP 봇넷(Robax 등)
      • 분산형 명령/제어 방식
        • 모든 봇이 서로 공격자의 명령 정보를 전파하는 구조
        • 중앙 관리를 위한 C&C 서버 없음
        • 네트워크 단절이나 차단에 대한 내성을 높이기 위한 구조
        • 대표적 봇넷 유형 — P2P 봇넷(Storm, Peacomm 등)
    3. DNS 싱크홀 서비스
      • 서비스 개요
        • 봇에 감염된 디바이스가 C&C 서버로 접속을 시도할 때 실제 C&C 서버가 아닌 싱크홀 서버로 연결을 우회시켜 더 이상 공격자의 명령을 받지 못하도록 차단하는 서비스
          • 싱크홀 — 악성 봇을 함정으로 유도하여 동작 무력화
      • 서비스 동작 방식
        • KISA는 알려진 C&C 서버 도메인 목록을 배포하고, ISP 및 적용 기관의 DNS 서버는 해당 목록을 주기적으로 업데이트
        • 좀비 디바이스 싱크홀 기능이 활성화된 DNS 서버에 C&C 서버 도메인에 대한 질의 수행
        • DNS 서버는 실제 C&C 서버 IP 주소 대신 싱크홀 서버 IP 주소를 응답으로 반환
        • 좀비 디바이스가 싱크홀 서버로 접속하게 되어 공격자의 명령 전달을 차단하고 추후 감염 분석 및 대응 가능
  3. DDoS 공격 유형 분류

    1. 개요
      • 공격 형태에 따라 — 네트워크 대역폭 소진 공격, 시스템 자원 소진 공격, 웹/DB 서버 부하 공격
    2. 네트워크 대역폭 소진 공격
      • 특징
        • 대량의 트래픽을 발생시켜 대상 시스템이 사용하는 네트워크 대역폭 소진
        • 공격자가 역추적을 어렵게 하기 위해 출발지 IP 주소 위조
      • 주요 공격 기법
        • UDP/ICMP Flooding — 대량의 패킷을 대상 시스템에 전송
        • UDP 기반 DRDoS — 다수의 UDP 기반 증폭/반사 서버를 이용하여 증폭된 대량의 트래픽을 대상 시스템에 전송
      • 피해 대상 — 공격 대상 시스템이 연결된 네트워크 회선 또는 동일 네트워크 대역을 공유하는 모든 시스템에 접속 장애 발생
    3. 시스템 자원 소진 공격
      • 특징
        • 적은 트래픽을 발생시켜 대상 시스템의 CPU, 메모리, 스토리지, 네트워크 연결 등 다양한 자원 소진
        • 출발지 IP 주소 위조
      • 주요 공격 기법
        • TCP SYN Flooding — 대량의 TCP SYN 패킷을 대상 시스템에 전송하여 TCP 연결 자원 소진
        • TCP ACK Flooding — 정상적인 연결 설정 과정 없이 대량의 TCP ACK 패킷을 전송하여 대상 시스템이 이를 검증하는 과정에서 TCP 상태 테이블을 조회하도록 유도함으로써 시스템 자원을 고갈시키는 공격
      • 피해 대상 — 공격 대상 서버 네트워크 장비 등의 과부하로 접속 장애 발생
    4. 웹/DB 서버 부하 공격
      • 고대역폭 기반 공격
        • 웹 서버와 정상적인 다수의 세션(TCP 연결)을 설정한 후 대량의 HTTP 요청 트래픽을 발생시켜 웹/DB 서버에 과부하를 유발
        • 정상적인 세션을 설정해야 하므로 출발지 IP 주소 위조 불가
        • HTTP GET/POST Flooding — 대량의 요청 패킷을 대상 웹 서버에 전송
      • 저대역폭 기반 공격
        • 웹 서버와 정상적인 다수의 세션을 연결을 설정한 후, 소량의 HTTP 요청 트래픽만 발생시켜 웹 서버의 TCP 연결 자원을 장시간 점유하여 소진
        • 출발지 IP 주소 위조 불가
        • Slow HTTP Header(Slowloris) — HTTP 요청 헤더를 조작하여 대상 웹 서버와 TCP 연결을 장시간 지속
        • Slow HTTP POST(RUDY) — HTTP 요청 메시지의 크기와 실제 전송 데이터를 조작하여 대상 웹 서버와의 TCP 연결을 장시간 지속
        • Slow HTTP Read — TCP 제로 윈도우 흐름 제어를 악용하여 대상 웹 서버와 TCP 연결을 장시간 지속
      • 피해 대상 — 공격 대상 웹/DB 서버의 과부하로 인해 접속 장애가 발생
  4. 네트워크 대역폭 소진 공격

    1. UDP/ICMP Flooding
      • 개요
      • 실습
      • 대응책
        • 임계치 기반 차단 정책 적용 — 목적지 IP를 기준으로 임계치 설정
        • 불필요한 프로토콜 차단
  5. 시스템 자원 소진 공격

    1. TCP SYN Flooding

      • 개요

      • 공격 원리 및 취약점

        1. TCP 클라이언트가 SYN 요청을 보내면 서버는 SYN/ACK 응답을 전송하고 해당 연결 요청 정보를 서버 소켓의 SYN Queue에 저장
        2. 클라이언트로부터 ACK 응답을 받아 연결이 완료되면 SYN Queue에 있던 연결 요청 정보는 Accpet Queue로 이동. 이후 accept() 시스템 콜을 통해 실제 클라이언트와 통신할 연결 소켓이 생성되고 연결 요청 정보는 Accept Queue에서 삭제
        • TCP SYN Flooding — 공격자가 의도적으로 TCP 연결 설정을 완료하지 않아 다수의 Half Open 연결 상태를 발생시켜 Backlog Queue(연결 요청 대기 큐)를 소모하게 만드는 공격
        • 출발지 IP 주소는 위조된 주소로, SYN/ACK 패킷에 대한 ACK 응답을 보내지 않아 다수의 Half Open 연결 상태가 유지되며 TCP 연결 자원 소진
        • 취약점 — TCP 연결 설정 과정에서 클라이언트를 인증하지 않는 구조적 취약점 이용
        • 희생자는 다수의 SYN_RECEIVED 상태 누적
      • 대응책

        • TCP SYN Cookie 기능 활성화

          • 정상 클라이언트로 확인될 때까지 서버의 Backlog Queue에 연결 요청 정보를 저장하지 않음

          • 동작 원리

            • 서버는 클라이언트의 SYN 요청에 대해 SYN/ACK 패킷을 전송할 때 Sequence Number 필드에 ISN 대신 SYN Cookie 값을 설정

            • 클라이언트는 SYN/ACK에 대한 ACK 패킷 응답에서 ACK Number=SYUN Cookie+1 값을 전송하고, 서버는 이를 판별

            • 리눅스 커널 파라미터 설정 예시

              sysctl -w net.ipv4.tvp_syncookies=1

        • 임계치 기반 차단 정책 적용

        • First SYN Drop 기능 활성화 — 출발지 IP별로 최초로 수신되는 SYN 패킷을 의도적으로 폐기

        • Backlog Queue의 크기 확장

          • 리눅스 — systcl -w net.ipv4.tcp_max_syn_backlog=1024
          • 유닉스/솔라리스 — ndd -set /dev/tcp tcp_conn_req_max_q0 1024
  6. 웹/DB 서버 부하 공격: 고대역폭 공격

    1. HTTP GET Flooding
      • 개요 — 동일한 동적 콘텐츠(URL)에 대한 HTTP GET 요청을 대량으로 발생시켜 대상 웹 서버가 이를 처리하기 위한 CPU, 메모리, 프로세스/스레드, DB Query 등의 자원을 과도하게 사용하도록 유도, 그 결과 정상적인 요청을 처리하지 못하게 만드는 서비스 거부 공격
      • 공격 원리 — 정상적인 TCP 연결 후 특정 동적 자원(예: index.php)에 대한 GET 요청을 대량으로 전송
      • 실습
      • 대응책
        • 임계치 기반 차단 정책 적용 — 출발지 IP 기반 차단 정책이 효과적
        • HTTP 쿠키 기반 검증 적용
          • 응용 계층에서 동작하는 네트워크 보안장비를 이용하여 클라이언트의 첫 번째 요청에 검증용 HTTP 쿠키를 설정해 응답하고, 이후 요청에서 동일 쿠키를 포함하지 않을 경우 비정상 사용자로 판단
          • 다수의 공격 도구는 HTTP 쿠키 저장 및 재전송 기능이 없어 지속적 요청 시 쿠키가 누락되는 특성을 이용한 방어 기법
      • 웹 서버 access 로그 분석
      • ngrep 도구를 이용한 패킷 분석
        • ngrep
          • 네트워크 패킷을 대상으로 문자열 패턴 검색을 수행하는 분석 도구
          • 실시간 패킷 분석뿐만 아니라 덤프 파일을 이용한 분석 가능
          • 주로 HTTP 요청, 특정 문자열이 포함된 트래픽, 간단한 패킷 모니터링/디버깅에 활용됨
          • 주요 옵션
            • -i — 지정한 패킷 덤프 파일을 입력으로 사용하여 패킷 분석 수행
            • -q — 불필요한 출력을 숨기고 조용한 모드로 실행
            • -t — 패킷 출력 시 타임스탬프를 함께 표시하여 시간 기반 분석이 가능하게 함
            • -w — 패킷 출력 형식을 지정하는 옵션. normal, byline, hex 등
        • 분석 목표: HTTP GET Flooding 공격이 발생했을 때 수집한 패킷 덤프 파일을 분석하여 GET 방식으로 요청한 자원과 요청 건수를 파악함
  7. 웹/DB 서버 부하 공격: 저대역폭 공격

    1. Slow HTTP Header(Slowloris)
      • 개요
        • 다수의 HTTP 요청을 전송하면서 요청 헤더의 끝을 의미하는 개행 문자(CRLF) 연속 2번을 보내지 않고, 의미없는 헤더만 매우 느린 속도로 지속적으로 전송하여 웹 서버와의 연결을 장시간 유지시키는 공격
        • 웹 서버의 동시 연결 자원이 소진되어 정상적인 서비스 제공이 불가능해짐
      • 공격 원리
      • 실습
    2. Slow HTTP POST(RUDY)
      • 개요
        • 다수의 HTTP POST 요청을 전송하면서 Content-Length 헤더 값을 실제 전송할 데이터 크기보다 매우 크게 설정한 후, 매우 작은 데이터를 천천히 지속적으로 전송하여 웹 서버와의 연결을 장시간 유지시키는 공격
        • 웹 서버의 동시 연결 자원이 소진되어 정상적인 서비스 제공이 불가능해짐
      • 공격 원리
      • 실습
    3. Slow HTTP Read
      • 개요 — 클라이언트가 TCP 윈도우 크기를 0으로 설정한 Zero Window 패킷을 지속적으로 전송하여 HTTP 응답 데이터의 수신을 지연시키는 공격
      • 공격 원리
        • 수신 측의 수신 버퍼에 여유 공간이 0이 되면 Window 필드를 0으로 설정한 Zero Window Packet을 전달하며, 이를 수신한 송신 측은 일정 시간 대기 후 수신 측의 상태를 확인하기 위해 Zero Window Probe Packet을 전송. 이에 대해 수신 측은 여유 공간이 생겼다면 해당 크기만큼 Window 필드를 설정하여 응답하며, 여유 공간이 없다면 다시 Zwero Window Packet으로 응답
        • 흐름 제어를 이용하여 요청에 대한 응답을 느리게 수신함으로써 서비스 거부 공격 수행
      • 실습
        • 와이어샤크에서 Zero Window Probe 패킷을 Keep-Alive 패킷으로 표시한 이유
          • 둘의 TCP 세그먼트의 형태가 매우 유사
          • 와이어샤크 수준에서 패킷의 전송 의도를 판단할 수 없어 둘을 구분하기 어려움
    4. Slow 계열 공격 대응책
      • 3가지 Slow 계열 공격에 모두 적용되는 대응책
        • 동시 연결 수에 대한 임계치 설정을 통해 차단
          • 출발지 IP별 동시 연결 수에 대한 임계치 설정
          • 리눅스 — iptables -A INPUT -p tcp --syn --dport 443 -m connlimit --connlimit-above 30 -j DROP
        • 연결 타임아웃 설정을 통한 차단
      • Slow HTTP Header와 Slow HTTP POST 공격 대응책
        • 읽기 타임아웃 설정을 통한 차단 — 요청 헤더 또는 요청 메시지 바디를 모두 수신할 때까지 허용되는 시간에 대해 읽기 타임아웃 설정