본문 바로가기
모의해킹

[ 모의 해킹 ] Dos(Denial of Service) Attack

by JINJINC 2023. 5. 25.
728x90
반응형

DoS(Denial of Service)

공격 시스템/네트워크 구조적인 취약점을 이용하거나 대량의 데이터를 보내 타겟 시스템이 정상적인 서비스하지 못하도록 마비시키는 공격

 

▶ 서비스 공격의 3가지 범주

  • . 물리적인 파괴 (디스크 및 시스템 파괴)
  • . 시스템 자원 공격 (CPU, MEM, DISK의 자원 고갈)
  • . 네트워크 자원 공격 (대역폭 고갈)

 

▶ DoS 공격의 종류

  1.  Ping Of Death
  2.  Land Attack
  3.  SYN Flooding
  4. TearDrop Attack (Fragment Manipulation)
  5. Smurf

 

<참고>

. DoS(Denial of Servcie)

서비스 거부 공격, DoS공격은 자신이 직접 공격 (1:1)

 

. DDoS(Distributed Denial of Service)

DDoS공격은 해커가 감염시킨 PC 또는 서버 여러대에 공격을 하게 지시하는 것 (N:1)


유형1. Ping Of Death Attack

죽음의 핑(Ping of Death)은 해킹 기법의 하나이다. 규정 크기 이상의 ICMP 패킷으로 시스템을 마비시키는 공격을 말한다. PING OF DEATH 공격 방어는 서버의 앞단 혹은 서버에서 ICMP 패킷을 블로킹해주는 설정을 통해 '죽음의 핑'을 피할 수 있습니다

유형1. Ping Of Death Attack

연습

더보기

#hping -1 [VictimIP] -d [Data(ping) 크기]

 

# hping3 -1 192.168.10.1 -d 100000 ; 희생자 192.168.0.141에 데이터크기 10000인 ICMP 패킷을 보내고 있다.

# hping3 --help

 

 

 

유형2. Land Attack

Land Attack은 Local Area Network Denial Attak으로 IP스푸핑을 이용한 SYN 공격이다.

공격자는 공격대상 시스템의 IP주소로 출발지 주소를 변경한(Spoofed) TCP SYN패킷을 보냅니다. 패킷을 받은 시스템은 TCP SYN-ACK을 자신에게 보내게 되고 유휴시간제한(Idle timeout)까지 빈 연결 만들게 됩니다. 이 과정을 반복하게 되면 시스템에는 빈 연결이 계속해서 쌓여 시스템 버퍼가 범람하게 되고, 결과적으로 서비스거부(DoS)상태가 된다.

 

 

▶ 발생원인

. 자신으로부터 전달된 TCP SYN 패킷에 대한 검증 없이 스스로에게 응답을 함으로써 발생

. 출발지주소/포트 와 목적지주소/포트가 같은 곳으로 설정

 

▶ 피해

. SYN Flooding 공격과 같이 타겟의 자원 고갈로 인한 서비스 장애를 유발

 

▶ 대응방안 

. 해당 취약점에 대한 운영체제 업데이트 패치근래의 대부분의 Firewall은 Land Attack으로 판단되는 패킷에 대한 필터링 하도록 패 치 되어 있음

연습

더보기

#hping3 [목적지VictimIP] -a [출발지VictimIP] -s [보내는 포트번호] -p [받는 포트 번호] -S -c 100

-S : Syn
-c:보낼 갯수

 

# hping3 192.168.0.20 -a 192.168.0.20 -s 80 -p 80 -S -c 100

. source IP 와 destination IP가 같을 시 패킷을 폐기하는 패치가 대부분의 OS에서 되어 있기 때문에 먹히지 않는 공격이다.

 

 

유형3. SYN Flooding Attack

아래의 그림처럼 SYN Flooding 공격의 특징은 특정 IP에서 과도한 통신시도를 한다라는 것이 특징입니다. 예를 들어 일반적인 통신은 1개의 IP에서 SYN 패킷이 20개정도가 일반적이라면, 공격자 IP에서는 SYN패킷이 200개, 300개 이상이 발생하는 것입니다. 우리는 이러한 형태를 보고 이게 SYN Flooding 공격이구나라는 것을 파악 할 수 있습니다.

SYN Flooding은 말 그대로 SYN 패킷이 흘러 넘친다이며 이는 과도한 SYN 패킷을 서버에게 전송 하는 것입니다.

과도한 SYN 패킷을 전송함으로서 Server에게 많은 부하를 발생하게 하여 서버가 제기능을 못하도록 하는 것이 바로 SYN Flooding의 목적입니다.

 

SYN Flooding 이외에도 아래와 같이 여러 종류의 Flooding 공격들이 존재합니다. ACK Flooding, UDP Flooding, ICMP Flooding, HTTP GET Flooding 등 여러 Flooding 공격들이 존재하지만, 대부분의 Flooding 공격은 SYN Flooding와 유사한 공격형태를 가지고 있으며,

 

목적은 역시 서버의 부하를 발생시켜 시스템 자원을 고갈 시키는 것이 목적입니다. 하지만 DDoS 방어 기능을 이용하여 대부분의 Flooding 공격은 대응이 가능한 부분입니다.

연습

더보기

#hping3 [VictimIP] -a [없는IP] -p [포트번호] -S -i [시간간격]

-S : SYN

u10000 : 1초 간격(숫자가 낮을수록 더 빠르게 보낸다.)

 

칼리에서 공격
공격받은 부분의 wireshark

# netstat -na | grep SYN <- 리눅스 명령어

# netstat -na | find "SYN"

. 웹서버에 SYN Queue가 채워지고 있다.

. 웹서버에 과부하가 걸려서 접속할 수 없게 되었다.

. SYN Flooding 공격은 동일 Client에서 방지하는 SYN패킷의 제한, SYN송신시간 체크 및 인터벌 설정, 3-Way handshake의 timeout 설정 등 다양한 방법으로 방지 할 수 있다.

 

 

 

※ SYN Flooding 방어 방법

SYN Flooding을 막기위해서는 어떠한 방법들이 있을까요? 인터넷에 검색해보면 Server의 time out을 줄여준다, SYN cookie 값을 조정한다 등이 있지만 이는 실질적으로 SYN Flooding 공격을 막을 수 있는 방법은 아닙니다.

과도한 SYN 패킷이 몰려올때 우리의 구세주가 되어줄 분이 계십니다. 바로 Anti-DDoS 기능이다. DDoS방어 기능을 간략히 설명드리면 DDoS장비에서는 SYN Flooding 방어에 대해서 아래와 같이 룰을 조정합니다.

 

EX) 특정 IP에서 10초 동안 SYN 패킷이 200개 들어오면 30초 동안 출입 금지시킨다. 이러한 방어를 임계치 기반 방어라고 합니다

 

 

유형4. TearDrop_눈물방울 Attack

TearDrop 공격은 패킷크기가 MTU크기보다 클때, 발생하는 fragment들의 offset을 조정하여 공격하는 방법으로써, 잘못된 offset을 통해 조립 시도시 오류로 과부하를 걸리게 하는 공격이다.

 

 

▶ 신뢰성 있는 연결

  • 올바른 순서의 패킷 전달
  • 패킷 손실여부 확인
  • 손실 되었다면 재전송 요구

 

▶ 발생원인

  • Fragment Offset 필드는 컴퓨터가 조각화된 패킷을 재구성 하는데 사용된다.
  • 공격자는 TCP/IP패킷의 Fragment Offset 필드를 조작하여 타겟 시스템이 해당 패킷을 재조합하는 과정에서 오류가 발생하도록 만든다.

▶ 대응방안 

  • 운영체제에 따른 적절한 패치

연습

더보기

[TearDrop Attack 연습]

#cd tmp <- 여기에 newtear.c 파일 복사한다.

 

#gcc -o newtear newtear.c

#./newtear [Attack's IP] [Target's IP] -s [Source's Port] -t [Destination's Port] -n [Packet Number Size]

 

 

# ./newtear 192.168.10.1 192.168.10.2 -s 2000 -t 80 -n 1000000 패킷(size 1000000)을 공격자 2000포트에서 대상자 80포트로 보내고 있다.

 

. Offset 0-27 다음에는 28부터 시작해야 한다. 그러나, 24부터 시작되는 잘못된 offset을 확인할 수 있다.

. 현재 teardrop은 OS에서 부정확한 offset은 자동 폐기하도록 패치가 되어 있기 때문에 통하지 않는 공격이다.

 

 

유형5. Smurf Attack

스머프 공격(Smurf attack)은 희생자의 스푸핑된 원본 IP를 가진 수많은 인터넷 제어 메시지 프로토콜(ICMP)패킷들이 IP 브로드캐스트 주소를 사용하여 컴퓨터 네트워크로 브로드캐스트하는 분산 서비스 거부 공격이다.

 

※ Smurt Attack 공격 방어

 

- 다른 네트워크로부터 자신의 네트워크로 들어오는 IP broadcast 패킷을 막 으면 됩니다.

그렇다면, 누가 막을 수 있을까요!? 정답은 바로 라우터이다. 네트워크의 경계를 담당하는 라우터에 IP broadcast 패킷에 대한 설정을 해주면 됩니다.

 

- 호스트들은 IP broadcast 주소로 전송된 ICMP 패킷에 대하여 응답하지 않도록 설정한다.

 

더보기

[Smurf Attack 연습] #hping3 [Broadcast IP] -a [VictimIP] --icmp --flood

 

# hping3 192.168.0.255 -a 192.168.0.50 --icmp --flood . ping을 255로 broadcast

했더니 망에 있는 네트워크들로 부터 reply 패킷이 날아온다.

. smurt 공격에 대한 보안 방법으로는 목적지IP가 Broadcast인 ping을 막는 방법이 있다.

 

결과

 

 

Wireshark를 통해 보면 희생자의 IP로 미친듯이 전체에게 request하고 있는 것을 볼 수 있다. 이 때 같은 대역에서 켜져있는 컴퓨터의 수가 많을수록 더 많이 Reply하기 때문에 공격효과가 커진다

 

 

728x90
반응형

'모의해킹' 카테고리의 다른 글

[ 모의해킹 ] DDos(Distribute Denial of Service) 공격  (0) 2023.05.26
[ 모의해킹 ] SideJacking  (0) 2023.05.25
[ 모의해킹 ] IP Spoofing  (0) 2023.05.25

댓글