네트워크 보안

DoS 공격 실습

JNU 2022. 11. 8. 11:57
반응형

DoS 공격을 저번 시간에 배워봤고 오늘은 DoS 실습을 해볼게!

그전에 저번에 설명 못한 DDoS에 대해서 알아보고 바로 실습으로 들어가 보자~

 

 

 

1. DDoS

DDoS는 Distribute Denial of Service의 줄임말이야

분산 서비스 거부 공격이라는 뜻인데 말이 어렵지...?

DoS의 변형된 형태인데 DoS와 큰 차이점이 있어

그 차이점이 뭐냐면,

 

1. 대부분의 공격이 자동화된 도구로 실행

2. 공격자, master, agent(slave) 구성으로 이뤄짐

 

-공격자: 공격을 주도하는 해커의 컴퓨터

-마스터: 공격자에게 직접 명령을 받는 시스템으로 여러 대의 에이전트를 관리

-에이전트: 공격 대상에 직접 공격을 가하는 시스템

-데몬: 에이전트 시스템의 역할을 수행하는 프로그램

 

 

최근에는 DDoS 공격의 변화로 악성코드와 결합하는 형태가 등장했고

PC에서 전파가 가능한 형태의 악성코드를 통해

인터넷을 통해 전파되도록 하는 형태로 진화하게 되었어.

여기서 악성코드를 일명 'Bot'이라고

그리고 악성코드에 감염된 PC를 '좀비 PC'라고 하고,

좀비 PC끼리 형성된 네트워크를 'Botnet'이라고 불러

이렇게 형성된 네트워크는 공격자의 명령으로 동시에 수행되기 때문에

대규모의 DDoS 공격이 가능하게 되었어

 

 

 

자, 여기까지가 DDoS에 대한 설명이었고,

이젠 진짜로 DoS 공격을 실습을 해볼 시간이야

kali, CentOS, 그리고 windows 7을 가지고 실습을 지금부터 해볼게

 



 

2. DoS 실습

 

DoS 공격에 쓰이는 명령어

1. ping

2. Hping3

 

ping은 ICMP 기반으로 이뤄지는 거 알지? 지난번에 한번 실습을 해봐서 PASS~

우리가 여기서 사용할 명령어는 Hping3 명령어야

Hping3에는 ICMP, TCP, UDP 통신 기능이 들어가 있어

뿐만 아니라 system test, 취약점 점검도구, 공격용 도구, port scan에도 사용되는 명령어야

그렇다면 Hping3의 option들을 알아볼게

 

 

명령어 형식: hping3 [option] [공격 대상]

<option>

-a, --spoof : 출발지 IP주소 변경

-c, --count : packet 개수 지정

-i, --interval : packet의 간격 지정

--rand-source : 출발지 IP 주소 변경 (random)

-P, --dest port : 목적지 port 지정

-d, --data : 전송 data size를 지정

 

<tcp flag option>

-A, --ack : ack packet 전송

-F, --fin : fin packet 전송

-R, --rst : rst packet 전송

-S , --syn : syn packet 전송

 

 

 

여러 가지 option들을 알아봤으니 배운 것들을 가지고

저번에 배웠던 DoS 공격을 종류별로 실행해보자

명령어는 kali에서 실행하고,

CentOS는 희생자로 설정해서 wireshark로 packet 분석해보도록 할게

 

 

1. SYN flooding attack

존재하지 않는 client가 server별로 한정된 접속 가능한 공간에 접속하는 것처럼 속여

다른 user가 server의 service를 제공받지 못하게 하는 공격

 

hping3 -a 100.100.100.100 192.168.10.100 --flood

100.100.100.100 spoofing을 192.168.10.100으로 flooding

 

--flood option이 들어가면 flooding을 수행하는데

이 option이 들어간 명령은 system을 과부하시키기 때문에

실습할 때 hping3 명령 후 바로 ctrl+c로 중지시켜줘야 해!

CentOS가 한동안 작동을 안 할 수 있어 (경험담이에요 ㅜㅜ)

위에 사진도 hping3을 종료한 지 1분 지났는데도

CPU 사용률이 춤을 추고 있는 거 보이지?? 그만큼 강력한 공격이라는 걸 알 수 있어

 

 

 

2. Land Attack 

출발지 IP 주소와 도착지 IP 주소를 똑같이 설정하여 공격 대상에게 보내는 공격

 

hping3 --icmp -a 192.168.10.100 192.168.10.100 -d 65000 --flood

출발지 주소를 도착지 주소와 똑같이 하여 icmp로 data 65000개를 flooding

 

 

출발지 주소랑 도착지 주소가 192.168.10.100으로 분석되는 것을 볼 수 있지?

사실, 중간에 명령어 실행 중단하고 wireshark로 packet을 분석했는데 

number가 40000개가 넘어가더라고......

진짜로 이렇게 많은 packet을 단기간에 받으면 시스템은 쉽게 다운될 수밖에 없어 

그러니 실습 때 시스템이 다운되지 않도록 조심하기!

 

 

 

3. Smurf Attack

출발지 주소를 공격 대상자의 IP주소로 하되, 목적지 주소는 한 network의 broadcast 주소로 설정 후,

network의 모든 host들이 공격 대상자에게 braodcasting에 대한 응답을 하도록 하는 공격

 

hping3 --icmp 192.168.10.255 [목적지] -a 192.168.10.100 [출발지] --flood

 

packet을 보면 출발지 주소가 192.168.10.2와 192.168.10.100만 분석되고,

목적지 주소도 192.168.10.100과 192.168.10.255만 분석되는 걸 볼 수 있어

이것이 뜻하는 바가 무엇이냐!

192.168.10.100을 출발지 주소로 설정하고 목적지를 브로드캐스트 주소로 설정했기 때문에

브로드캐스팅을 하기 위해서는 해당 네트워크의 default gateway를 거쳐야만 해 

그 default gateway가 바로 192.168.10.2!

그래서 192.168.10.2 packet에 항상 목적지는 192.168.10.100과 쌍으로 분석되는 거야

smurf attack을 방지하기 위해서 directed broadcasting으로 들어오는 ICMP echo request를 차단하도록 해야 돼!

 

 

4.Ping Of Death

packet 분할 공격 (MTU로 packet 크기 설정 후 자원고갈 공격)

 

hping3 -a 100.100.100.100 192.168.10.100 -d 65000 --flood

data의 크기를 65000byte로 설정 후

100.100.100.100으로 spoofing 하여 192.168.10.100으로 flooding

 

packet을 살펴보면 length에 모두 1514로 측정되어서 나와

packet의 최대 크기는 1500byte라고 했었지? 1500byte=MTU size!

결국 속이 꽉 찬 packet을 지금 11832개가 넘도록 받고 있다는 것을 알 수 있어

 

 

 

5. Tear Drop

packet을 작은 단위로 쪼개어 재요청과 응답을 계속하도록 하는 공격

 

hping3 -a 100.100.100.100 192.168.10.100 --id 3200 -M 34343 -p 21 -d 320 --flood

100.100.100.100 spoofing을 통해 식별자는 3200으로

시퀀스 번호는 34343, 목적지 포트는 21, 데이터 크기는 320byte로 flooding

21번은 ftp니까 해당 패킷의 protocol에 FTP가 분석되는 걸 볼 수 있어

 

id는 3200이고 total length: 360은 packet의 크기를 뜻하는데......

어?  packet크기를 320으로 잡았는데 왜 360이 뜨지?

TCP/IP header가 각각 20byte이기 때문에 40byte를 더해주니까 360byte가 되는 거야!

 



 

오늘은 hping3을 이용한 DoS 공격을 실습해봤어!

다음에는 DoS 공격을 어떻게 막을 수 있는지 한번 실습하면서 알아보도록 할게!

다음 시간에 또 보자~

반응형