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이란? 수신 호스트가 존재하지 않거나 존재 하더라도 필요한 프로토콜이나 포트 번호가 없어 수신 호스트에 접근할 수 없을 때 발생한다.
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주소를 똑같이 하여 공격대상에게 보내는 것.
TearDrop: MTU(Maximum Transmission Unit:최대전송단위)보다 큰 패킷을 분할하여 작은 패킷으로 나누어진 각각의 패킷의 스퀀스번호를 조작하여 전송하고 수신자 측에서 패킷의 재조합 과정에서 문제점을 이용한 공격방법.
TearDrop은 서비스 거부공격(DOS)의 하나로 희생자 컴퓨터에 시퀀스 넘버(패킷의 순서번호)가 조작된 IP패킷들을 전송함으로써 컴퓨터의 OS를 다운시키는 공격이다. (즉, TCP패킷 안에는 각 패킷이 데이터의 어느 부분을 포함하고 있는지를 표시하기 위하여 시퀀스 넘버가 기록되는데, TearDrop은 시스템의 패킷 재전송과 재조합에 과부하가 걸리도록 이 시퀀스 넘버를 속이는 것이다.)
시퀀스 넘버가 조작된 패킷을 받은 희생자 컴퓨터는 시퀀스 넘버를 맞추기 위해 과도하게 시스템 자원을 소모하다가 작동을 멈춰버리게 된다. 이러한 취약점은 주로 패치 관리를 통해서 제거하며 과부하가 걸리거나 계속 반복되는 패킷은 무시하고 버리도록 처리한다.
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 |