디도스(DDoS), DoS - (분산) 서비스 거부 공격 종류
요약
서비스 거부(DoS) 공격의 기본 개념과 분산 서비스 거부(DDoS) 공격과의 차이점을 알아봅니다. 또한, 증폭 공격 방식인 반사 서비스 거부(DRDoS)의 원리와 동작 방식에 대해 설명합니다. 정처기 실기 대비 실전 문제도 포함되어 있습니다.
💡 정처기 실기 대비를 위한 주관식 문제는 포스팅 마지막에 있습니다. 문제를 여러번 푸는 걸 권장합니다.
서비스 거부(DoS) 공격 종류
구분 | 공격 종류 |
---|---|
기본 | DoS (서비스 거부) |
분산 | DDoS (분산 서비스 거부), DRDoS (분산 반사 서비스 거부) |
주요 기법 | 랜드 어택, 스머프 어택, 티어드롭, 죽음의 핑, SYN 플러딩, UDP 플러딩 |
🚫 DoS(Denial of Service) 공격이란?
서비스 거부(Denial of Service, DoS) 공격은 시스템의 리소스를 과도하게 사용하여 정상적인 사용자가 서비스를 이용하지 못하도록 만드는 공격입니다. 공격자 한 명이 대상 서버에 대량의 요청을 보내거나, 시스템의 취약점을 이용하여 리소스를 고갈시키는 방식으로 이루어집니다.
예를 들어, 특정 웹사이트에 수많은 접속 요청을 보내 서버의 처리 용량을 초과하게 만들면 다른 사용자들이 해당 사이트에 접속할 수 없게 됩니다. 이는 마치 한 사람이 상점의 문 🚪을 막고 서서 다른 손님들이 들어가지 못하게 하는 것과 같습니다.
🆚 DoS와 DDoS의 차이점
DoS 공격이 단일 시스템에서 공격을 수행하는 반면, 분산 서비스 거부(Distributed Denial of Service, DDoS) 공격은 여러 곳에 분산된 다수의 시스템을 이용하여 공격하는 방식입니다.
공격자는 악성코드에 감염된 여러 컴퓨터(좀비 PC 🧟)를 제어하여 특정 목표 시스템을 동시에 공격하도록 지시합니다. 이로 인해 공격의 규모가 훨씬 커지고, 공격의 출처를 파악하기가 매우 어려워집니다.
구분 | DoS (서비스 거부) 🧍 | DDoS (분산 서비스 거부) 👨👩👧👦 |
---|---|---|
공격 주체 | 단일 시스템 | 다수의 분산된 시스템 (좀비 PC) |
공격 규모 | 상대적으로 작음 | 매우 큼 |
방어 난이도 | 비교적 쉬움 (공격 IP 차단) | 매우 어려움 (공격 IP가 다양함) |
🔄 DRDoS(Distributed Reflection DoS)란?
**분산 반사 서비스 거부(Distributed Reflection Denial of Service, DRDoS)**는 DDoS의 변종으로, 공격을 증폭시키는 특징을 가집니다. 공격자는 직접 목표를 공격하는 대신, 정상적인 서비스를 제공하는 제3의 시스템(반사체, Reflector)을 이용합니다.
공격 과정은 다음과 같습니다.
- 1️⃣ IP 스푸핑 (IP 주소 위조): 공격자는 출발지 IP 주소를 공격 대상의 IP 주소로 위조하여 다수의 반사체 서버(예: DNS, NTP 서버)에 요청을 보냅니다.
- 2️⃣ 요청 및 응답: 반사체 서버들은 위조된 출발지 IP, 즉 공격 대상에게 응답을 보냅니다.
- 3️⃣ 증폭 (Amplification): 이때 공격자는 요청보다 응답의 크기가 훨씬 큰 서비스를 이용하여 공격을 증폭시킵니다. 예를 들어, 작은 DNS 쿼리 요청에 대해 매우 큰 DNS 레코드 응답을 보내도록 유도하여 공격 대상에게는 수십, 수백 배 증폭된 트래픽이 전달됩니다. 💥
DRDoS는 공격자가 자신의 IP를 숨길 수 있고, 적은 자원으로 큰 공격 효과를 낼 수 있어 매우 위협적인 공격 방식입니다.
💥 주요 DoS 공격의 종류
다양한 DoS 공격 기법이 있으며, 각기 다른 방식으로 시스템을 마비시킵니다.
DoS 공격 유형별 암기 팁 💡
공격 이름 | 핵심 키워드/원리 | 간단한 비유 (이렇게 외워보세요!) |
---|---|---|
랜드 어택 | 자기 자신에게 보내는 편지 📮 | 내가 나에게 계속 전화를 걸어서 통화 중으로 만드는 상황 |
스머프 어택 | 남의 이름을 외쳐서 혼란 유발 📢 | 방송실에서 "A에게 모두 달려가세요!"라고 외쳐서 A를 곤란하게 만들기 |
티어드롭 | 깨진 장난감 조각 🧩 | 장난감(데이터)을 일부러 부서진 조각으로 보내서 조립하는 쪽을 고장 나게 하기 |
죽음의 핑 | 너무 큰 선물 상자 🎁 | 아주 작은 문에 집채만 한 선물 상자를 억지로 밀어 넣어 문을 부수는 상황 |
SYN 플러딩 | "똑똑"하고 도망가는 장난전화 🏃 | 계속 초인종만 누르고(SYN) 대답하면(ACK) 도망가서, 집주인이 계속 문을 열어두게 만들기 |
UDP 플러딩 | 모든 집에 무작정 전단지 돌리기 📬 | 아파트 모든 집의 초인종을 누르고(UDP) "여기 사는 사람 없나요?"라고 묻게 해서 경비실(서버)을 지치게 하기 |
🔄 랜드 어택 (LAND Attack)
랜드 어택은 출발지 IP 주소와 목적지 IP 주소를 모두 공격 대상의 IP로 설정하여 패킷을 전송하는 공격입니다. 시스템은 자기 자신에게 응답을 보내야 하는 무한 루프에 빠지게 되어 리소스를 소진하고 다운됩니다.
👨👩👧👦 스머프 / 스머핑 (Smurf / Smurfing)
스머프 공격은 출발지 IP를 공격 대상의 IP로 위조 한 후, 네트워크 내의 모든 장치(브로드캐스트 주소)에 ICMP Echo 요청을 보내는 방식입니다. 네트워크의 모든 장치는 위조된 IP 주소, 즉 공격 대상에게 일제히 응답을 보내게 되어 대량의 트래픽으로 시스템이 마비됩니다. 이는 DRDoS의 일종으로 볼 수 있습니다.
스머프(Smurf)는 어디서 왔을까요? 🍄
이 공격의 이름은 만화 **"개구쟁이 스머프"**에서 유래했습니다.
- 작지만 많은 스머프들: 네트워크에 연결된 수많은 장치들 (PC, 프린터 등)
- 하나의 목표를 향해 달려감: 이 장치들이 일제히 하나의 피해자에게 응답을 보냄
즉, 수많은 '스머프(장치)'들이 하나의 '가가멜(피해자)'을 향해 우르르 달려드는 모습과 같다고 해서 '스머프 공격'이라는 이름이 붙었습니다. 정말 직관적이죠? 😄
💧 티어드롭 (Teardrop)
데이터는 네트워크를 통해 전송될 때 여러 개의 작은 조각(Fragment)으로 나뉘었다가 목적지에서 재조합됩니다. 티어드롭 공격은 이 과정의 취약점을 이용합니다. 공격자는 의도적으로 조각의 순서를 뒤섞거나 일부를 누락시켜 보내, 수신 시스템이 조각을 재조합하는 과정에서 과부하가 걸리거나 오류가 발생하여 다운되도록 만듭니다.
💀 죽음의 핑 (Ping of Death)
죽음의 핑은 ICMP 패킷의 최대 크기(65,535바이트)를 초과하는 매우 큰 패킷을 의도적으로 만들어 보내는 공격입니다. 과거의 운영체제들은 이렇게 비정상적으로 큰 패킷을 처리하지 못하고 시스템 충돌을 일으켰습니다. 현대의 시스템은 대부분 이 공격에 대한 방어책이 마련되어 있습니다.
🚪 SYN 플러딩 (SYN Flooding)
SYN 플러딩은 TCP 연결 과정인 3-way-handshake의 취약점을 이용합니다. 공격자는 다수의 SYN(연결 요청) 패킷을 보내지만, 이후의 ACK(응답) 패킷을 보내지 않습니다. 서버는 각 SYN 요청에 대해 리소스를 할당하고 응답을 기다리는 'SYN-RECEIVED' 상태에 머무르게 됩니다. 수많은 연결 요청이 반쯤 열린 상태(Half-Open)로 쌓이면서 서버의 연결 테이블이 가득 차고, 더 이상 새로운 연결을 받아들일 수 없게 됩니다.
SYN이란 무엇일까요? 🤔
SYN은 'Synchronize'(동기화하다)의 약자입니다.
TCP 통신에서 데이터를 주고받기 전, "우리 이제 통신 시작할까요? 준비됐나요? 👋"라고 가장 먼저 보내는 첫인사와 같은 신호입니다.
이 신호에는 "내가 보낼 데이터는 이 번호부터 시작할게!"라는 '순서 번호(Sequence Number)' 정보가 담겨있습니다. 즉, SYN은 통신의 시작을 알리는 동시에, 데이터를 순서대로 잘 주고받기 위해 서로의 시작 번호를 **동기화(Synchronize)**하는 핵심적인 역할을 합니다.
🌊 UDP 플러딩 (UDP Flooding)
UDP는 TCP와 달리 연결 설정 과정이 없는 비연결성 프로토콜입니다. UDP 플러딩은 이러한 특징을 악용하여 다량의 UDP 패킷을 특정 포트로 무작위로 전송하는 공격입니다. 서버는 해당 포트에서 실행 중인 애플리케이션이 있는지 확인하고, 없으면 ICMP "Destination Unreachable" 메시지를 응답합니다. 이 과정이 반복되면서 서버의 리소스가 고갈되어 정상적인 요청을 처리할 수 없게 됩니다.
정처기 실기 대비 실전 문제
기출 | |
문제 | 3 way handshake의 취약점 이용하여 공격하는 방법 공격자가 클라이언트 역할로 수많은 SYN 패킷을 서버에 전송한 뒤 마지막 ACK를 고의로 보내지 않아 서버가 연결 대기 상태를 계속 유지 하는 공격 방법은 무엇인가요? |
답변 | |
정답 | 정답 보기 |
문제 | 공격자가 패킷의 출발지 주소나 포트를 임의로 변경해서 출발지와 목적지 주소를 동일하게 함으로써 공격 대상 컴퓨터의 실행속도를 느리게 하거나 동작을 마비시켜 서비스를 거부 상태에 빠지도록 하는 공격 방법은? |
답변 | |
정답 | 정답 보기 |
문제 | 출발지 주소를 공격 대상의 IP로 변조하여 네트워크 전체에게 ICMP Echo 패킷을 직접 브로드 캐스팅하여 타겟 시스템을 마비시키는 공격 방법은? |
답변 | |
정답 | 정답 보기 |
문제 | 데이터를 여러 개의 작은 조각으로 나누어 전송하는 과정에서 조각의 순서를 뒤섞거나 일부를 누락시켜 보내, 수신 시스템이 조각을 재조합하는 과정에서 과부하가 걸리거나 오류가 발생하여 다운되도록 만드는 공격 방법은? |
답변 | |
정답 | 정답 보기 |
문제 | ICMP 패킷의 최대 크기(65,535바이트)를 초과하는 매우 큰 패킷을 의도적으로 만들어 보내는 공격 방법은? |
답변 | |
정답 | 정답 보기 |
문제 | TCP 연결 과정인 3-way-handshake의 취약점을 이용하여 다수의 SYN(연결 요청) 패킷을 보내지만, 이후의 ACK(응답) 패킷을 보내지 않는 공격 방법은? |
답변 | |
정답 | 정답 보기 |
문제 | UDP 플러딩은 이러한 특징을 악용하여 다량의 UDP 패킷을 특정 포트로 무작위로 전송하는 공격입니다. 서버는 해당 포트에서 실행 중인 애플리케이션이 있는지 확인하고, 없으면 ICMP 'Destination Unreachable' 메시지를 응답합니다. 이 과정이 반복되면서 서버의 리소스가 고갈되어 정상적인 요청을 처리할 수 없게 됩니다. 이 공격 방법은? |
답변 | |
정답 | 정답 보기 |