학교에서 컴퓨터 네트워크 수업을 수강하다가 SYN Flooding에 관련한 내용을 짧게 배웠었다. 간단히 정리해보자.
SYN Flooding, 즉 폭주 공격을 이해하기 위해서는 TCP 초기연결을 하는 원리를 알아야 한다.

다음의 3단계를 통해 client와 server사이의 TCP 연결이 설정된다.
1. client는 server에 연결하기 위해 SYN 패킷을 전송한다.
2. server는 SYN에 대한 응답으로 ACK을 보낼건데, server에서 client방향의 연결을 위해 SYN도 보낸다.
3. client는 SYN에 대한 응답으로 ACK을 보낸다.
이렇게 client와 server사이에 데이터를 주고받기 위해서는 SYN 패킷을 보내는 것으로 시작해야 하는데, SYN을 반복적으로 서버에 전송해서 사용 가능한 모든 자원을 소모하게 하여 서버가 원활히 동작하지 못하게 하는 것이 SYN Flooding이다.
위의 TCP 연결 과정에서 server는 자신에게 SYN을 보낸 client에게 SYN + ACK을 보내고, ACK을 받기까지 기다린다. SYN Flooding은 이것을 악용한다.

* 스푸핑(spoofing): 눈속임(spoof)에서 파생된 IT 용어로, 직접적으로 시스템에 침입을 시도하지 않고 피해자가 공격자의 악의적인 시도에 의한 잘못된 정보, 혹은 연결을 신뢰하게끔 만드는 일련의 기법들을 의미
공격자는 자신에 대한 정보를 찾는 것을 더 어렵게 만들기 위해 전송하는 각 SYN 패킷에 IP 주소를 스푸핑할 수 있다.
공격자의 정보가 다시 추적될 가능성이 있고, 이러한 종류의 감지 작업을 수행하는 것은 어렵지만, 특히 ISP(인터넷 서비스 공급자)가 도와준다면 가능하다.
봇넷을 사용하여 공격이 생성되는 경우, 공격을 소스로 추적할 가능성은 낮다. 또한, 난독 처리 수준을 높이기 위해 공격자는 각각의 분산형 장치가 패킷을 전송하는 IP 주소를 스푸핑하게 할 수도 있다.