IT/네트워크
Ping이란 무엇인가?(Ping Flood/Smurf Attack/Ping of Death)
ByteGuard
2025. 4. 18. 16:14
Ping
- 네트워크 진단 도구
- ICMP (Internet Control Message Protocol) 를 이용해서 네트워크 상의 다른 장치가 연결되어 있는지와 응답 시간(latency) 을 측정
- Ping은 기본적으로 ICMP Echo Request 패킷을 보내고, 상대가 ICMP Echo Reply 패킷을 보내오는 걸 기다려서 통신 상태를 체크하는 방식
ICMP
- ICMP는 IP 패킷 내부에 포함되어 전송되는 제어 메시지 프로토콜
- ICMP는 데이터를 전송하는 프로토콜이 아님
- TCP나 UDP처럼 데이터를 주고받지는 않고, 네트워크 문제를 진단하거나 에러를 알리기 위해 사용
- ICMP는 IP 계층에서 작동하는데, "신호"나 "에러 리포트"용으로 만들어짐
- ICMP는 IP 프로토콜 스택 내의 보조 프로토콜이고, L3(Network Layer)에 속함
- TCP/UDP처럼 포트 번호가 없음 → 방화벽에서 제어하려면 L4가 아니라 L3/L4 조합 규칙이 필요
IP Header
└─ ICMP Header
├─ Type (8: Echo Request, 0: Echo Reply)
├─ Code (보통 0)
├─ Checksum (오류 검사)
├─ Identifier (프로세스 ID 등)
└─ Sequence Number
Payload (보통 timestamp 또는 56바이트 dummy)
- Identifier + Sequence Number로 각 요청을 구분 → RTT 측정 가능
- 리눅스 ping은 이 필드들을 이용해 요청/응답을 정렬
타입 번호 | 이름 | 설명 |
0 | Echo Reply | Ping 응답 (상대가 "들었다"고 보냄) |
8 | Echo Request | Ping 요청 (우리가 먼저 보냄) |
작동 방식 (Ping의 흐름)
- 사용자가 ping 명령어를 입력해 특정 IP 주소나 도메인에 요청을 보냄.
- 컴퓨터는 ICMP Echo Request 패킷을 목적지로 보냄.
- 목적지가 이 패킷을 받으면, ICMP Echo Reply 패킷을 되돌려 보냄.
- 출발지 컴퓨터는 왕복 시간(RTT: Round Trip Time)을 측정함.
- 패킷 손실이 있는지, 지연이 심한지 등을 분석할 수 있음.
ping [대상 IP나 도메인]
시스템 | 옵션 | 설명 |
Linux/Unix | -c [횟수] | 보낼 ping 횟수 지정 |
Windows | -n [횟수] | 보낼 ping 횟수 지정 |
모두 | -t (Windows) or -i (Linux) | 지속적으로 ping (무한 반복 또는 인터벌 설정) |
- ttl (Time To Live) : 패킷이 네트워크를 몇 번 경유할 수 있는지
- time : 왕복 지연 시간(RTT)
Ping은 ICMP 프로토콜로 Echo Request를 보내고 Echo Reply를 받아서 네트워크 상태를 진단하는 것. 명령어로 쉽게 사용할 수 있으며, 결과를 통해 응답 시간과 네트워크 품질을 측정할 수 있다.
Ping Flood (ICMP Flood)
- 공격자가 다량의 ICMP Echo Request 패킷을 대상에게 빠르게 반복적으로 전송
- 대상 시스템은 매 요청마다 응답(Echo Reply)을 하려 하므로, CPU와 네트워크 자원이 소모됨
- 일반적으로는 raw socket을 사용해 수천~수만 개의 ICMP 요청을 지속적으로 전송
- 요청의 크기는 작지만 수가 많기 때문에, 대상 시스템의 처리 능력을 초과시키면 서비스 지연 발생
- 반응을 안 하면 시스템은 CPU가 덜 소모되지만, 인터넷 게이트웨이 장비(방화벽, 라우터)가 병목될 수도 있음
대응
- ICMP rate limiting (초당 응답 제한)
- Ping 요청 필터링 (iptables, cloud firewall)
- 이상 트래픽 감지 및 차단 (IDS/IPS)
Smurf Attack
- 공격자가 스푸핑된 IP(즉, 피해자 IP)를 출발지 주소로 넣은 ICMP Echo Request를 브로드캐스트 주소로 보냄
- 브로드캐스트 주소를 받은 네트워크상의 모든 호스트들이 피해자에게 Echo Reply를 보내기 때문에, 피해자는 다수에게서 동시에 트래픽을 받게 됨
- 공격자는 출발지 IP를 피해자의 IP로 조작하여 ping 192.168.0.255 같은 브로드캐스트를 실행
- 해당 서브넷 내 모든 시스템이 피해자 IP에 Echo Reply를 보냄
- 피해자는 엄청난 양의 응답을 받아 트래픽이 몰려 마비됨 (증폭 공격, amplification)
대응
- 라우터/스위치에서 브로드캐스트 ICMP 차단
- 내부 시스템이 브로드캐스트 Echo Request에 응답하지 않도록 설정
- Ingress/Egress Filtering (RFC 2827): 스푸핑 방지
Ping of Death
- 과거 OS들이 65535바이트보다 큰 IP 패킷을 조각(fragment)으로 받은 후, 재조립할 때 버퍼 오버플로우가 발생함
- 결과적으로 시스템이 다운되거나 리부팅됨
- 공격자는 IP 패킷을 정상 범위(<=65535 byte)보다 크게 조각화하여 전송
- 대상 시스템이 재조립할 때 메모리 버퍼를 초과하여 메모리 손상 → 커널 패닉, 크래시
- 대표적으로 Windows 95/NT, Unix 90년대 시스템이 취약했음
대응
- 현대 OS는 조각된 ICMP 조립 시 크기 검사 수행
- 대부분의 최신 커널은 이 문제에 패치됨
- 과거 네트워크 장비와 구형 임베디드 기기에서는 여전히 잠재적 위험
Ping 기반 DDoS 공격 비교
공격 기법 | 핵심 개념 | 작동 원리 | 피해 범위 | 주요 방어 기법 | 현재 위협도 |
Ping Flood | 과도한 ICMP 요청 | 다량의 Echo Request로 리소스 고갈 | 대상 서버 또는 라우터 | ICMP rate limit, ping 차단 | 높음 |
Smurf Attack | 스푸핑 + 브로드캐스트 증폭 | 스푸핑된 Echo Request를 브로드캐스트로 전송 → 많은 응답이 피해자에 집중 | 피해자에게 집중된 응답 트래픽 | 브로드캐스트 필터링, 응답 차단, 스푸핑 방지 | 낮음 (브로드캐스트 제한으로 거의 사라짐) |
Ping of Death | 버퍼 오버플로우 | ICMP 조각을 조작해 과대 재조립 유도 → 시스템 크래시 | 시스템 다운 또는 리부팅 | 최신 OS 업데이트, MTU 검사 | 매우 낮음 |
- Ping Flood는 단순하지만 여전히 유효해서 방화벽에서 기본적으로 감시
- Smurf는 증폭형 DDoS의 시조로, 구조적 허점을 악용하던 전통 공격
- Ping of Death는 고전적인 메모리 취약점 공격으로, 현대 시스템에서는 거의 재현 불가