본문 바로가기

전공 공부/리눅스 보안 실습

DoS 공격(Ping of Death) 실습

728x90

이 글은 교육목적으로 작성하는 것으로 절대 타인의 컴퓨터에 공격을 해서는 안됩니다.

범죄 행위이고 처벌을 받을 수 있습니다.

모든 해킹 행위는 자기 자신에게 책임이 있습니다.

 

제 블로그는 불법적인 해킹 행위를 권장하거나 유도하지 않습니다. 오로지 테스트 및 연습 목적으로 읽어주시면 감사하겠습니다.

1. DoS 공격이란?

서비스 거부 공격인 DoS(Denial of Serivce attack) 공격은 공격 대상이 수용할 수 있는 능력 이상의 정보를 제공하거나 사용자 또는 네트워크 용량을 초과시켜 정상적으로 작동하지 못하게 하는 공격입니다.

CPU, 메모리, 디스크의 자원을 고갈시킬 수 있고 네트워크를 마비시킬 수 있습니다.

 

2. Ping of Death 공격 순서

1. ping을 이용하여 ICMP(Internet Control Message Protocol: 인터넷 제어 메시지 프로토콜) 패킷의 크기를 크게 키웁니다.

2. 이러한 패킷은 네트워크를 통해 공격 네트워크에 도달하는 동안 작게 나누어집니다.(라우팅)

3. 공격 대상은 조각화된 패킷을 모두 처리해야 하므로, 부하가 걸리게 됩니다.

- ICMP는 TCP/IP 계층 모델 프로토콜에서 3 계층인 Network 계층에 속합니다. (참고. 4 계층인 Transport에는 TCP, UDP가 있습니다.)

 

네트워크로 통신 데이터를 보내는 최적의 경로를 찾는 것을 라우팅이라고 하는데, 네트워크마다 최대로 전송이 가능한 패킷의 길이가 달라 최대 전송 가능한 패킷의 길이가 작은 네트워크를 지나면 데이터는 더 작게 분할됩니다.

이렇게 보낸 패킷은 중간에 다시 합쳐지지 않고, 최종 목적지에 도착해서 합쳐집니다.

 

3. ICMP 패킷 실습

hping3 --icmp --rand-source 192.168.196.143 -d 3000

TCP/IP 프로토콜용 무료 패킷 생성기 및 분석기인 hping3을 사용하였습니다.

 

--icmp: icmp 패킷 사용

--rand-source: 출발지(Source) 주소를 랜덤으로 설정

192.168.196.143: 메타스플로잇터블 서버 아이피 주소입니다.

-d: 데이터 크기

 

192.168.196.143 아이피를 쓰는 곳에 크기가 3000byte인 ICMP 패킷을 보내겠다. 그리고 출발지 주소는 랜덤으로 하겠다는 뜻입니다.

 

 

이를 네트워크 분석도구인 와이어 샤크를 이용하여 자세히 볼 수 있습니다..

출발지 주소인 Source를 보게 되면 패킷이 한번 전달될 때마다 출발지 주소가 바뀌는 것을 볼 수 있습니다.

그리고 ICMP 패킷은 총 3개로 나누어져서 전달이 되는데 저희가 보낸 3000byte를 1472 bytes 단위로 나누어서 총 3번에 걸쳐 보내게 됩니다. 패킷 길이(length)를 보면 1514 + 1514 + 82로 다른 것을 볼 수 있습니다.

 

 

참고로 D 옵션의 값을 1472byte로 설정할 경우 다음과 같이 하나의 패킷만을 보내게 됩니다.

 

 

4. Ping of Death 실습

이러한 ICMP 패킷을 엄청 크고 많이 보내면 해당 서버 및 네트워크는 마비될 수밖에 없을 것입니다.

 

hping3 --icmp --rand-source --flood 192.168.196.143 -d 65000

--flood: 최대한 빠른 속도로 패킷을 전달

 

위 옵션을 주어 65000byte에 달하는 패킷을 빠른 속도로 서버로 전달하였습니다.

 

 

 

 

공격을 시작하게 되면 다른 컴퓨터에서 icmp 패킷을 보내도 서버 측에서 제대로 응답이 안 되는 것을 볼 수 있습니다.

 

5. 보안대책

- 반복적으로 들어오는 일정 수 이상의 ICMP 패킷을 무시하도록 설정해야 합니다.

- 최신 버전의 윈도우에서는 반복되는 ICMP 차단 기능 탑재 기능을 가지고 있으므로 지속적인 보안 업데이트를 해야 합니다.

 

 

 

 

 

728x90