ICMP 플러딩
IT 위키
더 많은 작업
ICMP 플러딩은 네트워크 진단용으로 쓰이는 ICMP 메시지를 양으로 밀어붙이는 공격이다. 대상 호스트는 들어오는 Echo Request 마다 Echo Reply 를 만들어 돌려보내야 하므로, 회선 대역폭과 CPU 를 함께 소모한다. 패킷의 모양 자체에는 이상이 없고 개수가 많을 뿐이라는 점에서, 비정상적인 패킷으로 시스템의 처리 결함을 건드리는 공격(티어드롭, Ping of Death)과 구별된다.
공격자 한 대의 대역폭으로는 효과가 작기 때문에 실제로는 좀비 PC 여러 대를 쓰는 분산 서비스 거부 공격의 한 유형(대역폭 소진형)으로 나타나는 경우가 많다. 출발지 IP 를 위조하면 응답이 위조된 주소로 가므로 공격자는 자기 회선을 아낄 수 있다.
- 대상 IP 로 ICMP Echo Request 를 쉬지 않고 대량 전송한다
- 응답을 기다리지 않고 보내는 것이 보통이며, 큰 크기의 패킷을 섞어 대역폭 소진을 노리기도 한다
- 출발지 IP 를 위조(IP 스푸핑)하면 추적이 어려워진다
- Echo Request 외에 Destination Unreachable, Timestamp 같은 다른 ICMP 유형을 쓰기도 한다
| 공격 | 무엇을 이용하나 | ICMP 플러딩과 다른 점 |
|---|---|---|
| 스머프 공격 | 출발지를 대상 IP 로 위조한 ICMP Echo Request 를 브로드캐스트 주소로 보냄 | 공격자가 직접 대상에게 퍼붓지 않고, 네트워크의 여러 호스트가 대신 Echo Reply 를 대상에게 보내게 하는 증폭 공격이다 |
| Ping of Death | 최대 크기(65,535바이트)를 넘는 ICMP 패킷 | 개수가 아니라 크기로 재조합 과정의 버퍼 문제를 일으킨다 |
| 티어드롭 공격 | 오프셋이 겹치거나 어긋난 IP 단편 | 단편 재조합 오류를 노린다. 프로토콜이 ICMP 일 필요가 없다 |
| UDP 플러딩 | 대량의 UDP 패킷 | 같은 대역폭 소진형이지만 프로토콜이 UDP 이다. 닫힌 포트로 오면 대상이 ICMP Port Unreachable 를 만들어 보내므로 부하가 더해진다 |
| SYN 플러딩 | TCP SYN 만 보내고 응답하지 않음 | 대역폭보다 연결 대기 큐를 채운다 |
- 경계 라우터·방화벽에서 ICMP 를 유형별로 허용 범위를 정하고, 외부에서 들어오는 Echo Request 의 초당 허용량을 제한(rate limit)한다
- 꼭 필요한 ICMP(경로 MTU 탐색에 쓰는 Fragmentation Needed 등)는 막지 않는다. ICMP 를 통째로 차단하면 네트워크 진단과 MTU 조정이 깨진다
- 운영체제에서 ICMP 응답 속도를 제한한다. 리눅스는 net.ipv4.icmp_ratelimit, net.ipv4.icmp_echo_ignore_all 같은 커널 변수를 둔다
- 대량 공격은 회선 앞단에서 걸러야 하므로 DDoS 방어 장비나 통신사·클라우드의 트래픽 세척(scrubbing) 서비스를 쓴다