서비스 거부 공격(DoS, Denial of Service)
는 시스템, 애플리케이션, 네트워크에 과도한 요청을 보내 서비스 제공을 방해하는 공격입니다.
DoS
는 서비스를 이용하지 못하게 훼방하는데 초점을 두는 가용성
에 대한 공격입니다.
또한 DoS
크게 취약점 공격과 자원 고갈 을 노리는 두 가지 공격 방식으로 나뉩니다.
취약점 공격형 DoS는 서비스의 취약점을 이용해 서비스 다운, 오작동 등의 문제를 유발시킵니다.
보잉크 Boink, 봉크 Bonk, 티어드롭 TearDrop 공격
은 프로토콜의 오류 제어 로직을 악용해 시스템 자원을 고갈시키는 공격입니다.
TCP
의 전송 과정에서 신뢰성을 위해 패킷 전송 과정에서 문제가 발생하면 재요청 & 수정을 합니다. 이때 보잉크/봉크/티어드롭
은 공격 대상이 반복적으로 재요청 & 수정을 하게 함으로써 시스템 자원을 고갈시킵니다.
보잉크, 봉크
는 TCP가 재전송/재조립을 위해 사용하는 시퀀스 넘버를 속여 시스템의 재전송, 재조립 과정에서 부하를 일으킵니다.
티어 드롭
은 패킷의 시퀀스 넘버, 길이를 조작하여 데이터가 겹치거나 누락된 패킷을 전송하도록 만듭니다.
이 공격들은 패치 관리를 통해 과부하, 반복되는 패킷을 무시하도록 하게 만들어줍니다.
랜드 land 공격
은 패킷 전송시 출발지의 IP 주소와 도착지의 IP 주소를 동일하게 만들어서 공격 대상에게 전송하는 공격방식입니다.
출발지와 도착지가 같기 때문에 공격 대상의 자원을 계속해서 점유하게되고 CPU를 부하시켜 시스템 부하를 유발합니다.
운영체제의 패치, 방화벽을 이용해 대책을 마련합니다.
자원 고갈 공격형 DoS는 네트워크 대역폭, CPU, 세션 등의 자원을 소모시키는 공격 방식입니다.
죽음의 핑 Ping of death 공격
은 초기에 사용되는 DoS 공격 방식으로 네트워크 상태를 점검할 때 사용하는 ping 명령
을 보낼 때 공격 대상에게 패킷을 최대한 길게 보내는 공격입니다. 이렇게 길게 보내면 패킷이 여러 개로 잘게 쪼개지는데 공격 대상은 잘게 쪼개진 무수히 많은 패킷을 수신하게 됨으로서 네트워크가 마비되게 됩니다.
ping이 사용하는 ICMP를 차단함으로서 방지할 수 있습니다.
SYN 플러딩
은 네트워크가 정해놓은 동시 사용자 수 제한을 이용하는 공격입니다. 가짜 클라이언트를 서버에 삽입하여 사용자 수가 가득 찬 것 처럼 보이게 해 다른 사용자가 서비스를 사용하지 못하도록 만듭니다.
3-Way handshake에 대한 기본 지식을 필요로 합니다.
SYN은 TCP 연결 과정의 3-Way Handshake
의 취약점을 악용합니다.
TCP 최초 연결 시 클라이언트는 SYN
패킷을 보내고 서버로부터 SYN + ACK
패킷을 받은 뒤, 서버로 ACK
패킷을 보냄으로서 TCP 연결이 성공하게 됩니다.
클라이언트가 SYN + ACK
를 받고 다시 서버로 ACK
패킷을 보내지 않으면 서버는 SYN Recieved
상태로 일정 시간을 대기하게 됩니다. 대기 시간동안 공격자는 무수히 많은 가짜 SYN
을 보내 서버의 가용 사용자 수만큼 SYN Recieved
상태로 만들어 버려 다른 사용자가 서비스를 이용할 수 없게 만드는 것이 SYN 플러딩
의 공격 기본 원리입니다.
이는 SYN Recieved
의 대기 시간을 줄이거나 침입 방지 시스템 IPS
을 통해 예방할 수 있습니다.
스머프 공격
은 ICMP 패킷과 네트워크에 존재하는 임의의 시스템을 이용하여 패킷을 확장해 서비스 거부 공격을 수행하는 방식으로 주로 네트워크 공격에 사용됩니다.
공격자는 출발지 IP를 공격 대상의 IP 주소로 위장해서 ICMP 브로드캐스트에 전송하게 됩니다. 이때 ICMP echo가 수행되어 echo에 대한 응답을 공격 대상의 IP 주소로 보내 공격 대상은 수많은 응답을 받아 서비스가 부하되게 됩니다. 이때 서버도 무수한 응답을 주고받기 때문에 서버에도 부하가 발생합니다.
메일 폭탄
은 메일 시스템에서 서버는 각 사용자에게 일정한 공간을 부여하는데, 이 공간이 꽉차게 되면 받아야하는 메일을 받을 수 없게 됩니다.
때문에 스팸 메일을 서비스 거부 공격으로 분류하게 됩니다.
분산 서비스 거부 공격 (DDoS, Distributed Denial of Service)
은 여러 컴퓨터 or 장치를 이용하여 서버, 네트워크, 애플리케이션에 대규모 트래픽을 발생시켜 정상적인 서비스를 이용할 수 없게 만드는 공격입니다.
DoS는 단일 공격자가 한 지점에서 공격하고, DDoS는 다수의 공격자가 다수의 지점에서 공격하게 되어 방어가 어렵습니다.
광범위한 대규모 트래픽 공격을 위해 최종 공격 대상 외에 중간자를 이용하게 됩니다. 현대에는 악성 코드와 결합한 좀비 PC 방식을 이용하는 경우가 많으며 그 공격 과정은 다음과 같이 나타납니다.
1. 인터넷을 통해 악성 코드를 전파 (이때 DDoS에서 사용하는 악성 코드를 봇 Bot
이라고 부릅니다.)
2. 이때 봇에 감염된 PC는 좀비 PC라고 하며, 봇은 전파 과정에서는 별다른 공격을 수행하지 않고 잠복합니다.
3. 공격자가 공격 명령을 내리면 봇넷(좀비 PC 간의 네트워크)의 좀비 PC들은 일제히 공격 명령을 수행하여 DDoS 공격이 수행됩니다.