DRDos 공격 실습

공격기법 및 탐지|2021. 1. 6. 14:31

분산 반사 서비스 공격

 

 

drdos

denial of service

distributed denial of service

distributed reflection denial of service

분산 반사 서비스 거부 공격

 

 

 

99프로 DRDos를 ddos라고 부릅니다.

 

원점 추적이 굉장히 어렵기때문에 왠만한공격을 DRDos를 씁니다.

 

smurf 공격과 매우 유사합니다

 

공격자는 출발지 ip를 목적지(피해서버) ip로 조작

 

 

 

 

 

 

요청대비 큰거같은 것을 피해자로 공격을 시킨다고생각하면된다.

(ifconfig 하나를 쳤을때 쭈욱 나오는것처럼)

 

 

 

칼리리눅스를 vmware에 2개를 띄웁니다

 

공격자          반사서버         피해자

kali 1번        ----- 메타스플로이터블 --- kali 2번

(192.168.1.) ---- (192.168.1.109)      ----(192.168.1.110)

 

 

칼리1과 칼리2는 핑이 통하지않아도됩니다

 

칼리1과 메타스플로이터블의 핑이통하고

메타스플로이터블과 칼리2번과 핑이통해야합니다.

 

=========================

hping3 -S 반사서버ip -a 피해자ip -p 80

===============================

 

 

 

 

 

wireshark에서는 

 

tcp and ip.dst==반사서버 ip

 

 

칼리1에서 출발지 ip를

칼리2로 조작하여 메타스플로이터블(109)로 보냈는데

보냈을때

 

 

=-===================================

 

정리

무한반복

칼리1->메타스플로잇->칼리2->메타스플로잇->칼리2~~계속반복

 

 

 

칼리1에서 출발지 ip를 칼리2(피해자)로 조작하여  ->> syn패킷보내기->

메타스플로잇-> syn,ack 패킷 보내기->

칼리2 ->이게뭐야내가 syn 보낸적없는데 연결 끊을래 rst패킷보내기->

메타스플로잇  

 

 

칼리1(공격자)은 hping3를 이용해서

칼리2(피해자)의 ip로 출발지를 조작을해서 

 

칼리1이 칼리2의출발지로 조작된 syn패킷을 먼저

메타스플로잇(서버)에게 보냅니다 

(three hand-shaking을 이용)

 

syn패킷을 메타스플로잇(서버)이 받았으므로

메타스플로잇(서버)은 칼리2(피해자)가 보낸줄 알기떄문에

 

이에대한 응답으로 출발지라고 알려진 칼리2(피해자)에게 syn,ack 패킷을 보냅니다.

 

(

tcp의 (three hand-shaking)을 이용해서

칼리2가 메타스플로잇에게 syn을보내면

응답으로 메타스플로잇은 syn,ack를 칼리2에게 보내는것을 이용하게되는 공격입니다.

)

 

 

칼리2(피해자)에는 syn,ack가 들어올떄는

 

syn이 들어와야하는데 syn,ack가 들어오고

자기가 syn 패킷을 보낸적이 없기떄문에

연결을 끊는 rst 패킷을 메타스플로잇에게 보내는것입니다

 

이것을 무한 반복하기때문에 서비스가 마비되는것입니다.

===========================================

 

 

 

 

 

 

 

 

 

출발지의 맥주소가 하나당 하나인데

지금은 출발지 ip가같은데 맥주소가 전부다르다는것도 알게되엇습니다.

그러면 이 ip가 조작이됬다는걸 알수있습니다.

 

 

일반적으로는 공격자 

라우팅 테이블을 검사하고 거기에서 오랜시간동안 찾아야

공격자 ip를 찾을수있겠지만

찾을때되면 공격자는 없어졌을 것이다.

 

추적하기도힘들고 방어하기도힘들다

 

 

 

===================

 

칼리1에서 hping3 를 쓸떄 출발지를 칼리2(피해자 ip)로 쓰는데

그 출발지를 칼리2로 쓸수있는 이유는

 

그냥 데이터를 조작할수가있는데 (패킷)

그걸 조작할수있는 프로그램을 만드는 프로그램이 HPING3입니다.

 

 

===========================

댓글()