DoS와 DDoS

DoS 공격

서비스 거부 공격(DoS)

  • DoS 공격은 시스템이나 네트워크의 구조적인 취약점을 공겨갷 정상적인 서비스를 지연 또는 마비시킴
  • 네트워크가 점점 커지고 빨라지는 만큼 DDoS 공격 사례가 일상생활에도 영향을 미쳐 더욱 심각해지고 있음

DoS 공격의 원리와 특징

  • 취약점 공격형

    • 특정 형태의 오류가 있는 네트워크 패킷을 공격 대상에게 전달
    • 처리 로직에 문제가 발생
    • 공격 대상이 그 문제점 때문에 오작동을 일으킴
      • Boink/Bonk/Teardrop 공격, Land 공격
  • 자원 고갈 공격형

    • 네트워크 대역폭이나 시스템의 CPU, 세션 등의 자원을 소모시키는 형태
      • Land 공격, Ping of Death 공격, SYN Flooding 공격, Smurf 공격, 동적 HTTP Request Flooding 공격, Slow Http Header DoS(Slowloris) 공격, Slow HTTP POST 공격, Mail Bomb 공격

Ping of Death 공격

a1.png

-그림 1. 패킷 분할도-

  • 죽음의 필 날리기
  • NetBIOS 해킹과 함께 시스템을 파괴하는 데 가장 흔히 쓰인 초기의 DoS 공격 방법
  • 네트워크에서 패킷을 적당한 크기로 잘라 보내는 특성을 이용한 공격
  • 실제로 이런 개념을 이용한 무기도 있음
    • 공중에서 3회 정도 여러 조각으로 쪼개진 뒤 지상으로 광범위하게 떨어지는 미사일

SYN Flooding 공격

  • SYN Flooding 공격은 동시 사용자 수 제한을 이용하는 것
  • 존재하지 않는 클라이언트가 서버별로 한정된 접속 가능 공간에 접속한 것처럼 속여 다른 사용자가 서비스를 제공받지 못하게 함
  • 이처럼 SYN Flooding 공격은 TCP의 연결 과정인 3-웨이 핸드셰이킹의 문제점을 악용하는

a2.png

-그림 2. SYN Flooding 공격 시 3-Way 핸드셰이킹-

  1. 공격자는 많은 숫자의 SYN 패킷을 서버에 보낸다.(클라이언트 1,2,3: “나 접속하고 싶어”)
  2. 서버는 받은 SYN 패킷에 대한 SYN/ACK 패킷을 각 클라이언트로 보낸다.
  3. 서버는 자신이 보낸 SYN에 대한 응답인 ACK패킷을 받지 못한다.
    • 시간이 한참 흐른 뒤
    • 클라이언트 1,2,3은 모두 가짜이므로 대답이 있을 리가 없다(이것이 클라이언트 1,2,3이 인터넷에 존재하지 않는 IP주소를 가지는 이유다).
  4. 서버는 세션의 연결을 기다리게 되고 결국 공격은 성공한다. 서버는 2~3 과정을 반복하며 그들의 자리를 비워둔다.

💡예방법
시스템에 패치를 설치 -> backlog 큐의 크기를 늘리고, timeout 시간 짧게 설정
침입 탐지 시스템이나 침입 차단 시스템과 같은 보안 시스템을 설치하는 것
Syn_Cookie: Syn_Cookie는 서버에서 클라이언트로 보내는 STN(+ACK) 패킷에 임의로 생성되는 시퀀스 넘버 대신 서버에서 암호화 기술을 이용해서 인증 정보가 담긴 시퀀스 넘버를 생성해 클라이언트에 보내는 것. 서버는 SYN을 받았을 떄가 아니라, ACK를 받았을때 Syn_Cookie를 확인하고 비로소 세션을 생성한다.

Boink, Bonk, Teardrop 공격

  • 프로토콜은 다음과 같은 오류 제어 기능을 제공해 신뢰성 있는 연결을 보장
    • 패킷의 순서가 올바른지 확인
    • 중간에 손실된 패킷이 없는지 확인
    • 손실된 패킷의 재전송을 요구
  • 프로토콜은 데이터 전송 시 신뢰를 확보하기 위해 패킷 전송에 문제가 있으면 반복적으로 재요청과 수정을 함
  • Boink, Bonk, Teardrop은 이런 프로토콜의 오류 제어 기능을 악용해 공격 대상이 반복적인 요구와 수정을 계속하도록 하여 시스템 자원을 고갈시키는 공격
  • 즉, TCP 패킷의 시퀀스 넘버를 조작해 공격 시스템에 과부하를 일으키는 공격

Bonk Bonk는 처음 패킷을 1번으로 보낸 후 두 번째, 세 번째 패킷 모두 시퀀스 넘버를 1번으로 조작하는 방식을 사용

Boink Boink 공격은 처음 패킷을 정상적으로 보내다가 중간에 계속 일정한 시퀀스 넘버를 사용

Teardrop Teardrop은 IP 패킷의 offset 중첩을 이용한 공격으로, 패킷을 겹치게 또는 일정한 간격의 데이터가 손실되도록 전송하여 패킷 재조합 과정에서 오류가 발생하도록 유도하는 방식

Land 공격

a3.png

-그림 3. Land 공격-

  • 패킷을 전송할 때 출발지 IP 주소와 목적지 IP 주소의 값을 똑같이 만들어서 공격 대상에게 보내는 것
  • 이 공격법은 SYN Flooding 처럼 동시 사용자 수를 점유하고 CPU 부하를 올려서 시스템이 금방 지치게 함.
  • Land 공격은 출발지 주소와 도착지 주소가 같은 TCP 패킷을 공격 시스템에 보내 공격 시스템의 가용 사용자 수를 점유해 시스템 부하를 높이는 공격
  • 보통 SYN 패킷을 사용

Smurf 공격

  • 웜이 네트워크를 공격할 때 아직도 많이 사용하는 것으로 Ping od Death처럼 ICMP 패킷을 이용
  • Smurf 공격은 ICMP 패킷과 네트워크에 존재하는 임의의 시스템을 이용해 패킷을 확장함으로써 서비스 거부 공격을 수행하는 것으로, 네트워클르 공격할 때 많이 사용

다이렉트 브로드캐스트(Direct Broadcast) a4.png

-그림 4. 공격자에 의한 에이전트로의 브로드캐스트-

공격자가 172.16.0.255로 다이렉트 브로드 캐스트를 하면 172.16.0.*의 모든 에이전트로 ICMP 패킷이 전달됨.

a5.png

-그림 5. 공격자에 의한 Smurf 공격 실행-

ICMP 패킷을 받은 에이전트들이 위조된 IP 주소(희생자의 IP)로 ICMP Reply를 다시 보냄.