오늘 동아리 시간에 ping of death를 간단히 실습해 보았다.
ping of death란 한글로 번역하면 죽음의 핑이라는 말이다.
위키백과에서 ping of death란 규정 크기 이상의 ICMP 패킷으로 시스템을 마비시키는 공격이라고 설명한다.
정상적인 ICMP 패킷의 크기는 65535Byte까지다.
하지만 ping of death공격은 ICMP 패킷의 크기를 65535Byte보다 크게 설정하여 ping을 보낸다.
여기서 20000Byte로 ping을 보냈다고 가정해보자.
이더넷 환경에서 MTU(Maximum Transmission Unit)는 기본적으로 1500으로 설정되어 있는데(IP Header + TCP Header 포함) 20000Byte로 ping을 보내게 되면 최대 전송 단위인 MTU를 초과해버린다. 따라서 단편화(Fragmetation)가 발생해 약 13개의 패킷으로 분할되어 전송된다. 패킷을 받으면 다시 재조합(Reassembly)되어 원래의 패킷이 만들어진다.
만약 여기서 패킷의 크기를 엄청나게 늘리게 된다면 컴퓨터는 이 과정을 무수히 반복하게 되고 결국에는 이 과정을 처리하기 위해 많은 시스템의 자원을 사용하게 되며, 이는 곧 시스템의 자원을 부족하게 만들어 정상적인 작동을 하지 못하게 만든다.
우리는 이러한 공격들을 Dos 공격(Denial-Of-Service attack)또는서비스 거부 공격이라고 부른다.
이제 실습해보자.

피해자PC의 IP주소를 확인한다.

공격은 hping3명령어를 사용하였으며 위 사진은 공격이 실행중인 화면이다.
sudo hping3 --icmp --rand-source ip -d 10000 --flood에서 옵션들을 하나씩 해석해보자.
- --icmp 패킷의 종류를 선택
- --rand 패킷 전송시 발신자의 ip를 랜덤으로 구성
- --source ip 수신자의 ip주소를 의미
- --d packetsize 패킷의 크기를 지정
- --flood 가능한 가장 빠르게 패킷을 전송, 응답을 보여주지 않음
명령어를 입력했다면 막대한 양의 패킷이 windows xp로 전송될 것이다. 확인해보자.


공격받지 않았을 때 CPU사용량과 네트워크 사용량


공격받았을 때 CPU사용량과 네트워크 사용량
CPU사용량과 네트워크 사용량이 증가하는 것을 확인할 수 있다.