본문 바로가기

정처기지식, 소프트웨어 공학

DOS공격의 모든것!!!(UDP Flooding, Smurf attack(ICMP Flooding), SYN Flooding, PoD(Ping of Deadth), Land Attack, Tear Drop, Bonk, Ping Flood)

UDP Flooding설명: https://www.youtube.com/watch?v=es0_b5PANPY

UDP Flooding: DOS의 한 종류로 UDP패킷을 다량으로 발생시켜 상대방이 정상적인 서비스를 이용하지 못하도록 대역폭을 소모시키는 공격

(ICMP는 인터넷 환경에서 오류에 관한 처리를 지원하는 용도로 사용됨. ICMP패킷을 받으면 수신자는 송신자에게 자기 상태를 보고하도록 약속한 프로토콜, Internet Control Message Protocol)
(복습. TCP는 신뢰성은 있지만 실시간성이 없음. 반면 UDP는 실시간성(속도)은 있지만 신뢰성이 없음 TCP는 3hand-shacking이 필요하지만 UDP는 보내면 끝임. 다만 수신자측에서 받은 메시지에 이상이 있다면 이상이 있다고 송신자에게 알려 주게 되는데 여기에 사용되는 것이 ICMP프로토콜임)

아래 그림에서 확인할 수 있듯이 공격자는 Target에게 UDP패킷을 마구 보내고 그에 대한 응답인 ICMP는  임의의 좀비 pc가 받도록 함(공격자는 대량의 UDP패킷을 B의 임의의 포트번호로 보내면 패킷을 받은 B는 포트를 사용하는 어플리케이션을 조사하여 포트를 사용하는 어플리케이션이 없다는 것을 확인한다. 이것을 확인한 B는 ICMP Destination Unreachable 패킷을 공격자가 보낸 패킷의 송신자 주소로 보내게 되는데 대부분의 경우 공격자 UDP패킷의 송신자 주소를 임의의 Host주소로 스푸핑(Spoofing, 위장)하여 보내기 때문에 ICMP패킷은 공격자에게 전달되지 않는다(즉, 임의의 Host는 받은 ICMP을 해석해야 하는데 자원을 사용하는 엉뚱한 피해자가 되는 것임). UDP Flooding공격의 효율을 좋게 하기 위해서 다량의 데이터(패킷의 데이터부분)를 함께 전송합니다. 데이터가 많아지면 이것이 쪼개져서 수많은 세그먼트 패킷이 되는데 이것을 지칭해서 flooding이라고 하는 것입니다)

(참고. ICMP패킷을 Ping이라고도 함. Ping은 UDP Flooding에서 뿐만이 아니라 죽음의 핑(Ping Of Death)공격에서도 사용됨)

Destination Unreachable이란? 수신 호스트가 존재하지 않거나 존재 하더라도 필요한 프로토콜이나 포트 번호가 없어 수신 호스트에 접근할 수 없을 때 발생한다.

UDP Flooding에 대한 해결책: OS또는 방화벽에서 ICMP응답비율을 제한하거나 불필요한 UDP서비스를 Disable처리 한다.

 

ICMP Flooding(Smurf Attack): 목표사이트에 ICMP응답 패킷의 트래픽이 넘쳐서 다른 사용자로부터 접속을 받아들일 수 없게 만드는 것(즉, DOS공격의 일종임). 즉, 공격자(Cracker)는 IP를 공격대상 서버의 IP주소로 위장하여 다른 호스트들에게 ICMP(broadcast)전송. ICMP를 수신한 다수 호스트들이 송신자로 위장된 희생자(공격타겟)에게 ICMP Echo를 전송. 희생자 서버는 다수의 ICMP Echo수신=>성능문제 발생(ICMP = 인터넷 환경에서 오류에 관한 처리를 지원하는 용도로 사용되는 프로토콜. ICMP패킷을 받으면 수신자는 송신자에게 자기 상태를 보고하도록 약속한 프로토콜)

Smurf Attack(ICMP Flooding)에 대한 대책: 라우터에 IP directed broadcast패킷을 막도록 설정. 호스트는 IP broadcast주소로 전송된 ICMP 패킷에 대해 응답하지 않도록 설정. 

SYN Flooding: TCP프로토콜의 구조적인 문제(3 hand shakings)를 이용한 공격. 서버의 동시 가용 사용자 수를 SYN패킷만 보내 점유하여 다른 사용자가 서버를 사용 불가능하게 하는 공격.

공격자는 ACK를 발송하지 않고 계속 새로운 연결 요청을 하게 되어 서버는 자원할당을 해지하지 않고 자원만 소비하여 자원이 고갈.

SYN Flooding해결책: TCP Connection Time Out을 짧게 가져가서 연결 요청 대기 시간을 줄인다. Backlog Queue를 늘려준다. Syncookie기능 활성화를 시켜준다. Anti-DDos, 방화벽, 침입 차단시스템 등 보안 장비를 통해 침입 탐지 및 차단을 수행한다.

Land Attack: 패킷을 보낼때(Network Layer,NL3계층, IP패킷을 말함)출발지 IP주소와 도착지 IP주소를 똑같이 하여 공격대상에게 보내는 것.

공격자가 공격대상에 출발지와 도착지의 IP주소를 똑같이 해서 보내면 희생자(공격대상)는 공격자가 처음 보낸 SYN패킷의 출발지 주소값을 참조하여 그 응답 패킷의 목적지 주소를 SYN패킷의 출발지 주소로 설정하여 보내게 된다. 그런데 SYN패킷의 출발지 주소는 공격자의 주소가 아닌 희생자의 주소이므로 패킷은 네트워크 밖으로 나가지 않고 자신에게 돌아온다.이러한 공격은 SYN Flooding처럼 동시 사용자 수를 점유해버리고 cpu부하를 올려서 시스템이 곧 지쳐버리게 한다.

 

TearDrop: MTU(Maximum Transmission Unit:최대전송단위)보다 큰 패킷을 분할하여 작은 패킷으로 나누어진 각각의 패킷의 스퀀스번호를 조작하여 전송하고 수신자 측에서 패킷의 재조합 과정에서 문제점을 이용한 공격방법. 

TearDrop은 서비스 거부공격(DOS)의 하나로 희생자 컴퓨터에 시퀀스 넘버(패킷의 순서번호)가 조작된 IP패킷들을 전송함으로써 컴퓨터의 OS를 다운시키는 공격이다. (즉, TCP패킷 안에는 각 패킷이 데이터의 어느 부분을 포함하고 있는지를 표시하기 위하여 시퀀스 넘버가 기록되는데, TearDrop은 시스템의 패킷 재전송과 재조합에 과부하가 걸리도록 이 시퀀스 넘버를 속이는 것이다.)

시퀀스 넘버가 조작된 패킷을 받은 희생자 컴퓨터는 시퀀스 넘버를 맞추기 위해 과도하게 시스템 자원을 소모하다가 작동을 멈춰버리게 된다. 이러한 취약점은 주로 패치 관리를 통해서 제거하며 과부하가 걸리거나 계속 반복되는 패킷은 무시하고 버리도록 처리한다.

위 그림의 왼쪽위는 정상패킷을 전송하는 것으로 패킷들 각각의 시퀀스 번호가 아귀가 맞는다. 하지만 TearDrop을 적용한 패킷의 시퀀스 번호는 그 아귀가 맞지 않아 수신측에서 패킷들을 reassemble할때 시스템의 부하가 증가된다. 이것이 바로 Tear Drop이다.


TearDrop은 서비스 거부공격(DOS)의 하나로 희생자 컴퓨터에 시퀀스 넘버(패킷의 

순서번호)가 조작된 IP패킷들을 전송함으로써 컴퓨터의 OS를 다운시키는 공격이다. 

봉크(Bonk)와 보인크(Boink)는 TearDrop공격의 종류들이다.

bonk: 패킷의 시퀀스 번호를 동일하게 붙이는것(1,1,1)
boink:패킷의 시퀀스 번호를 순차적으로(Sequential)붙이지 않는것(1,8,15)

(Tear Drop은 봉크와 보인크를 넘어서 MTU보다 큰 하나의 패킷을 분할(Tear)하여 패킷의 시퀀스 번호를 중접과 빈 공간을 만들어 시퀀스 번호를 좀더 복잡하게 섞는 것을 의미.

패킷이 전송될 때 유의해서 볼 것이 하나있다. 패킷안에 포함된 알짜내용인 데이터의 크기가 크면 이를 패킷은 하나로 전송되지 않고 전송계층(Transport Layer)에서 이를 여러개로 쪼갠다. 그 후 각각의 계층에서 각각의 패킷들에 해더를 붙여나가는 것이다. 그리고 TL계층에서 쪼개진 이 패킷들간의 순서를 알려주는 것이 TCP세그먼트 헤더에 있는 시퀀스넘버(Sequence Number)인 것이다. 이 시퀀스넘버를 가지고 수신측에서는 TL계층에서 시퀀스 넘버를 가지고 TCP세그먼트들을 조립한다. 이 조립과정에서의 문제점을 이용해서 하는 공격이 Tear Drop인 것이다.

Ping Of Death: ICMP패킷(=Ping)을 정상크기보다 아주 크게 만들어서 공격. 공격 타겟은 fragmentation패킷을 처리하다 부하 발생. 
Ping Of Death에 대한 해결책: Ping Of Death방어하기 위한 패치를 적용. Ping이 내부 네트워크에 들어오지 못하도록 방화벽에서 차단

핑은 네트워크를 통해 다른 컴퓨터로 전송되는 신호를 가리키는 네트워크 유틸리티이다. 이 신호는 데이터 패킷이 컴퓨터에서 인터넷의 서버로 이동했다가 다시 돌아오는 데 걸리는 시간을 알려준다. 또한 핑은 문맥에 따라서 패킷을 의미하기도 한다. 아래 죽음의 핑(PoD; Ping of Death)의 정의를 살펴보자.

Ping of Death란? ICMP(Internet Control Message Protocol)패킷(Ping)을 정상적인 크기보다 아주 크게 만들어 전송하면 다수의 IP단편화가 발생하고, 수신 측에서는 단편화된 패킷을 처리(재조합)하는 과정에서 많은 부하가 발생하거나, 재조합 버퍼의 오버플로우가 발생하여 정상적인 서비스를 하지 못하도록 하는 공격기법.

 

 

 

'정처기지식, 소프트웨어 공학' 카테고리의 다른 글

DDOS, DRDOS  (1) 2024.02.16
핑이란?  (0) 2024.02.16
CryptoGraphy 양방향 암호화 방식  (0) 2024.02.15
CryptoGraphy. 단방향 암호화 방식에 대해서  (1) 2024.02.15
CryptoGraphy  (1) 2024.02.15