SYN 폭주 공격

SYN 폭주는 웹 서비스를 중단할 수 있도록 TCP/IP 핸드셰이크에 존재하는 취약성을 이용합니다.

Share facebook icon linkedin icon twitter icon email icon

SYN 폭주

학습 목표

이 글을 읽은 후의 당신이 할 수 있는 것은:

  • SYN 폭주 DDoS 공격 정의
  • SYN 폭주 공격이 작동하는 방식 설명
  • 다양한 유형의 SYN 공격 구분
  • SYN 폭주에 대한 일부 완화 기법 파악

SYN 폭주 공격이란?

SYN 폭주(반개방 공격)는 사용 가능한 모든 서버 리소스를 소비하여 합법적인 트래픽에 대해 서버를 사용 불가능하게 만드는 것이 목표인 서비스 거부(DDos) 공격의 한 유형입니다. 공격자는 초기 연결 요청(SYN) 패킷을 반복적으로 전송함으로써 표적 서버 기계에 있는 사용 가능한 모든 포트를 압도할 수 있으므로 표적 장치가 합법적인 트래픽에 느리게 응답하거나 전혀 응답하지 못하게 할 수 있습니다.

SYN 폭주 공격은 어떻게 작동하나요?

SYN 폭주 공격은 TCP 연결의 핸드셰이크 프로세스를 이용하는 방식으로 작동합니다. 정상적인 조건에서 TCP 연결은 연결하기 위한 세 가지 다른 프로세스를 보여줍니다.

  1. 첫째, 연결을 시작하기 위해 클라이언트가 SYN 패킷을 서버로 전송합니다.
  2. 그런 후에 서버는 이 통신을 승인하기 위해 SYN/ACK 패킷으로 해당 초기 패킷에 응답합니다
  3. 마지막으로 클라이언트는 서버로부터 패킷의 수신을 승인하기 위해 ACK 패킷을 반환합니다. 이러한 패킷의 전송 및 수신 순서를 완료하고 나면 TCP 연결이 열리고 데이터를 전송하고 수신할 수 있습니다.
TCP 세 방향 핸드셰이크 다이어그램

서비스 거부를 생성하기 위해 공격자는 초기 SYN 패킷이 수신된 후 서버가 하나 이상의 SYN/ACK 패킷으로 다시 응답하고 핸드셰이크의 마지막 단계를 기다린다는 사실을 이용합니다. 작동 방식은 다음과 같습니다.

  1. 공격자는 종종 스푸핑된 IP 주소를 사용하여 표적 서버로 대량의 SYN 패킷을 전송합니다.
  2. 그런 후에 서버가 각 연결 요청에 응답하고 해당 응답을 수신할 준비가 되어 있는 열린 포트를 남겨둡니다.
  3. 도착하지 않는 마지막 ACK 패킷을 서버가 기다리는 동안 공격자는 계속해서 더 많은 SYN 패킷을 전송합니다. 각각의 새 SYN 패킷이 도착하면 서버는 일정 시간 동안 새 개방 포트 연결을 일시적으로 유지하게 되며 일단 사용 가능한 모든 포트를 사용하고 나면 이 서버는 정상적으로 기능할 수 없습니다.
SYN 폭주 DDoS 공격 애니매이션

네트워킹에서 서버가 연결을 열린 상태로 남겨두고 있지만 이 연결의 다른 쪽에 있는 기계가 아닌 경우에는 이 연결이 반개방 상태인 것으로 간주합니다. 이러한 유형의 DDoS 공격에서는 포트를 다시 사용할 수 있게 되기 전에 표적 서버가 지속적으로 열린 연결을 남겨두고 각 연결이 시간 초과되기를 기다립니다. 그 결과는 이러한 유형의 공격을 "반개방 공격"으로 간주할 수 있다는 것입니다.

SYN 폭주는 다음과 같은 세 가지 다른 방법으로 발생할 수 있습니다.

  1. 직접 공격: IP 주소가 스푸핑되지 않은 SYN 폭주는 직접 공격으로 알려져 있습니다. 이러한 공격에서는 공격자가 자신의 IP 주소를 전혀 가리지 않습니다. 공격자가 공격을 생성하기 위해 실제 IP 주소를 가진 단일 소스 장치를 사용한 결과 공격자는 검색 및 완화에 매우 취약합니다. 표적 기기에서 반개방 상태를 생성하기 위해 해커는 이 기기가 서버의 SYN-ACK 패킷에 응답하지 못하도록 막습니다. 이는 종종 SYN 패킷 이외에 나가는 패킷을 중지하는 방화벽 규칙이나 들어오는 모든 SYN-ACK 패킷이 악의적인 사용자의 기기에 도달하기 전에 이러한 패킷을 필터링하여 이루어집니다. 완화는 각각의 악의적인 시스템의 IP 주소를 차단하기만 하면 되므로 실제로 이 방법은 (설사 존재한다고 해도) 거의 사용되지 않습니다. 공격자가 Mirai 봇넷과 같은 봇넷을 사용하는 경우 감염된 장치의 IP를 가리는 데에는 전혀 신경쓰지 않습니다.
  2. 스푸핑된 공격: 또한, 악의적인 사용자는 또한 완화 활동을 억제하고 자신의 신원을 찾는 것을 더 어렵게 만들기 위해 전송하는 각 SYN 패킷에 IP 주소를 스푸핑할 수 있습니다. 패킷은 스푸핑될 수 있지만 해당 패킷은 소스로 다시 추적될 가능성이 있습니다. 이러한 종류의 감지 작업을 수행하는 것은 어렵지만, 특히 인터넷 서비스 공급업체(ISP)가 기꺼이 도와준다면 불가능하지는 않습니다.
  3. 분산형 공격 (DDoS): 봇넷을 사용하여 공격이 생성되는 경우 공격을 소스로 추적할 가능성은 낮습니다. 또한, 난독화 수준을 높이기 위해 공격자는 각각의 분산형 장치가 패킷을 전송하는 IP 주소를 스푸핑하게 할 수도 있습니다. 공격자가 Mirai 봇넷과 같은 봇넷을 사용하는 경우 일반적으로 이들은 감염된 장치의 IP를 가리는 데에는 전혀 신경쓰지 않습니다.

SYN 폭주 공격을 사용함으로써 부정 행위자는 다른 DDoS 공격보다 트래픽이 상당히 적은 표적 장치 또는 서비스에 서비스 거부를 생성하는 것을 시도할 수 있습니다. 표적 주위의 네트워크 인프라를 포화 상태로 만드는 것이 목표인 볼륨 공격 대신 SYN 공격은 표적 운영 체제에서 사용 가능한 백로그보다 크기만 하면 됩니다. 공격자가 백로그의 크기와 각 연결이 시간 초과되기 전에 얼마나 오래 열린 상태로 남아 있게 되는지 확인할 수 있다면 공격자는 시스템을 비활성화하는 데 필요한 정확한 매개 변수를 표적으로 지정할 수 있으므로 총 트래픽을 필요한 최소 양으로 줄여 서비스 거부를 생성할 수 있습니다.

완화된 SYN 폭주 공격이란?

SYN 폭주 취약성은 오랫동안 알려져 있었으므로 여러 가지 완화 경로가 활용되어 왔습니다. 다음과 같은 몇 가지 접근 방법이 있습니다.

백로그 대기열 증가

표적 장치의 각 운영 체제는 허용된 특정한 수의 반개방 연결을 가지고 있습니다. SYN 패킷의 많은 볼륨에 대한 한 가지 응답은 운영 체제에서 허용하는 반개방 연결의 가능한 최대 수량을 늘리는 것입니다. 최대 백로그를 성공적으로 증가시키려면 모든 새 요청을 처리할 추가 메모리 리소스를 예약해야 합니다. 시스템에 메모리가 부족하여 증가된 백로그 대기열 크기를 처리할 수 없는 경우 시스템 성능에 부정적인 영향을 미치지만 이는 여전히 서비스 거부보다 나을 수 있습니다.

가장 오래된 반개방 TCP 연결 재사용

또 다른 완화 전략은 백로그가 채워지면 가장 오래된 반개방 연결을 덮어쓰는 것입니다. 이 전략을 사용하려면 백로그를 악의적인 SYN 패킷으로 채울 수 있는 것보다 더 적은 시간 내에 합법적인 연결을 완전히 설정할 수 있어야 합니다. 공격량이 증가하거나 실제로 적용하기에는 백로그 크기가 너무 작은 경우 이러한 특정 방어는 실패합니다.

SYN 쿠키

이 전략에는 서버에 의한 쿠키 생성이 포함됩니다. 백로그가 채워졌을 때 연결이 끊어질 위험을 방지하기 위해 서버는 각 연결 요청에 SYN-ACK 패킷과 함께 응답한 다음 백로그에서 SYN 요청을 끊어 요청을 메모리에서 제거하고 포트를 개방 상태로 남겨두고 새 연결을 만들 준비를 합니다. 연결이 합법적인 요청이고 최종 ACK 패킷이 클라이언트 시스템에서 서버로 다시 전송되는 경우 서버는 SYN 백로그 대기열 항목을 (일부 제한 사항과 함께) 재구성합니다. 이러한 완화 활동은 TCP 연결에 대한 일부 정보를 손실하지만, 공격의 결과로 서비스 거부가 합법적인 사용자에게 발생할 수 있도록 허용하는 것보다는 더 낫습니다.

Cloudflare는 어떻게 SYN 폭주 공격을 완화하나요?

Cloudflare는 표적 서버와 SYN 폭주 사이에 존재하기 때문에 이러한 유형의 공격을 부분적으로 완화합니다. 초기 SYN 요청이 이루어지면 Cloudflare는 클라우드에서 핸드셰이크 프로세스를 처리하여 TCP 핸드셰이크가 완료될 때까지 표적 서버와의 연결을 보류합니다. 이러한 전략은 표적 서버에서 가짜 SYN 패킷과의 연결을 유지하기 위해 필요한 리소스 비용을 줄이고 이를 Cloudflare의 Anycast 네트워크에 배치합니다. Cloudflare의 DDoS 방어 작동 방식에 관해 더 자세히 알아보십시오.

Cloudflare의 SYN 폭주 공격 중단 다이어그램