IT와 예술이 만나면?

[해킹강좌]02.Kali linux를 활용한 DoS공격

IT/해킹

 

 

Denial of Service(서비스 거부)공격은, 이름 그대로 서비스를 제공하는 서버가 서비스를 하지 못하게 하는 모든 공격을 통틀어서 일컫는 말입니다. 그 말은, DoS공격도 여러가지 종류가 있다는 것이죠.

우리는 수많은 DoS공격 방식 중, 대표적인 SYN Flood 공격과 UDP Flood 공격을 배워보겠습니다.

 

SYN Flood 공격

먼저 SYN Flood 공격은 TCP연결의 특성을 이용한 방식인데요. TCP의 연결 방식은 3Way Handshake라고 불립니다.  

 

위의 사진에 아주 잘 설명되어 있는데, 먼저 클라이언트가 서버에게 연결을 하고싶다고 물어봅니다. 물어보는 것을 SYN패킷을 통해 하죠. 그리고 서버는 SYN패킷을 받으면 연결해도 좋다는 대답을 클라이언트에게 SYN+ACK패킷으로 보낸 후, 클라이언트로부터 올 ACK패킷을 기다리게 됩니다. 마지막으로 클라이언트가 서버에게 ACK패킷을 보내면, 연결이 성사 되는 것 이죠.

 

서버가 ACK패킷을 기다린다는 것을 강조했죠? 바로 이 점을 이용해서 SYN Flood 공격이 이루어지기 떄문에 그랬습니다. 이제 SYN Flood 공격을 설명해 드리자면, 공격자가 서버에게 막대한 양의 SYN 패킷을 보냅니다. 하지만, 원래 정상적인 SYN패킷은 클라이언트의 ip주소가 적혀있어서 서버가 그 ip주소로 SYN+ACK패킷을 보내지만 SYN Flood 공격을 할때는 모든 SYN 패킷의 ip주소를 각각 다른 엉뚱한 IP주소로 변조하여 보내기 때문에 서버는 엉뚱한 클라이언트에게 SYN+ACK 패킷을 보내죠. 결국 엉뚱한 클라이언트는 ACK패킷을 리턴 해 주지 않고, 서버는 계속 ACK패킷을 기다리니 리소스가 모두 소모되면 더 이상의 연결이 불가능해지게 됩니다.

 

그렇다면 이제 원리를 알았으니 Kali Linux를 통해 SYN Flood공격을 직접 해봅시다.

 

 

칼리 리눅스를 켜시고 맨 위에 보시면 터미널 아이콘이 있습니다. 그 아이콘을 누르고 위의 사진과 같은 명령어를 자신의 상황에 맞게 맞춰 바꿔 써 주시면 되겠습니다.

 

 hping3:SYN Flood공격을 위해 사용하는 프로그램 이름

192.168.0.1:표적의 IP주소

-S:SYN패킷을 사용하라는 옵션

--flood:최대한 빠른 속도로 패킷을 전송하라는 옵션

--rand-source:Client(Source)IP를 랜덤으로 변조하라는 옵션

-p 80:표적의 80번 포트로 패킷을 전송하라는 옵션

 

직접 자기가 명령어 하나하나 써가면서 해야 실력이 늘기 때문에, 위의 사진을 보고 직접 따라 치시기 바랍니다.

 

저렇게 명령어를 작성하고 Enter버튼을 누르면..!


 

 

위 사진의 'hping in flood mode~'까지 나올겁니다. 'hping in flood mode~'가 나온다면 현재 공격이 진행중인 것이고, 표적 웹서버에 접속을 해보시면 접속이 되지 않는것을 확인하실 수 있습니다. 그리고 공격을 이제 멈추고 싶다면 Control+C를 누르시면 '표적 IP hping statistic~'가 나오고, 공격이 멈추게 됩니다.

 

여기까지가 SYN Flood 방식의 공격이고, 만약 표적 서버가 자동으로 복구가 안된다면..뭐 간단하게 서버를 재부팅 하시면 됩니다.

 

UDP Flood 공격

UDP는 TCP와는 달리 비연결지향적이라서, TCP처럼 뭔가를 막 주고 받지는 않습니다. 그러면 UDP Flood는 어떻게 서비스거부를 일으키냐.! UDP Flooding은 쉽게 말하면 무식하게 많은 패킷들을 표적에게 보내서 표적의 네트워크 대역폭을 모두 차지해버리는 방식입니다. 뭐 자세하게 들어가자면 표적 서버가 ICMP패킷을 보내는 내용도 있지만.. 중요해보이진 않는군요. 어찌됬던 이제 UDP Flood공격은 어떻게 진행하는지 알아보죠.

 

보통 NAVER같은 포털 사이트들의 서버를 UDP Flood공격으로 마비 시키려면....음.....그냥 불가능합니다.. 서버의 네트워크 대역폭이 어마어마하게 크기 때문이죠. 그래서 보통은 흔히들 알고있는 DDoS공격을 합니다. DDoS공격은 Distributed DoS, 그냥 UDP Flooding을 수백마리의 좀비피씨들을 통해 동시에 진행한다고 생각하시면 됩니다. 하지만 뭐 개인용 웹서버, 혹은 컴퓨터 등은 별도의 방화벽만 없으면 혼자서 공격해도 충분히 마비시킬 수 있습니다.

 

 

보시면 아시겠지만 UDP Flood공격도 SYN Flood와 명령어가 상당히 비슷합니다. 사용하는 프로그램이 같기 때문이죠. 사실 hping3이외에도 solaris 등의 다양한 프로그램이 있지만, 개인적으로 hping3이 가장 간단한 것 같습니다. 명령어 설명드리겠습니다.

 

 hping3:SYN Flood공격을 위해 사용하는 프로그램 이름

192.168.0.1:표적의 IP주소

-2:UDP패킷을 사용하라는 옵션

--flood:최대한 빠른 속도로 패킷을 전송하라는 옵션

--rand-source:Client(Source)IP를 랜덤으로 변조하라는 옵션

-d 100:패킷의 데이터 크기를 100byte로 설정하라는 옵션

-p 80:표적의 80번 포트로 패킷을 전송하라는 옵션

 

역시 직접 자기가 명령어 하나하나 써가면서 해야 실력이 늘기 때문에, 위의 사진을 보고 직접 따라 치시기 바랍니다.

 

저렇게 치고 나면..

 

 

역시 SYN Flood 공격과 마찬가지로, 공격이 시작되고, Control+C를 누르면 멈추고 밑에 statistic이 나오게 됩니다. 우리는 statistic에 관심이 없기 떄문에 넘어가도록 하죠.

 

아마 공격이 진행되고 5분정도 지나게 되면 대부분의 시스템은 마비될것 입니다. 아, 그리고 DoS공격은 무선인터넷으로 진행하는것이 거희 불가능한 수준이니 유선인터넷으로 하는것이 좋겠습니다.

 

 

2015/01/21 - [IT/해킹] - [해킹강좌]00.Prologue

 

2015/01/22 - [IT/해킹] - [해킹강좌]01.Kali Linux 설치

 

*공감은 블로거에게 힘이 됩니다(로그인이 필요없습니다)

*이 곳의 강좌를 악용하는데 있어서 발생하는 책임을 UniqueZ는 대신 져 주지 않습니다.