본문 바로가기

해킹&보안/네트워크

[DDoS] Syn Flooding (+패킷 분석)

Syn Flooding, 자원 고갈 공격

TCP Flags를 다량으로 전송하여 장비의 CPU나 메모리, 운영체제의 자원을 고갈시키는 공격유형으로, 
대부분 TCP의 취약점을 이용한 공격 유형입니다. 공격 기법의 원리를 정확하게 이해하려면 3-way-handshake를 
이해해야 이 공격기법도 확실하게 이해할 수가 있습니다. 공격을 보기전에 3-way부터 알아봅시다

 

 

TCP통신을 위한 사전 인증 절차로서, 클라이언트와 서버 간에 데이터를 전송하기 전에 
서로 준비가 되어있는지를 확인하는 절차로 이해하시면 되고 총 3가지 (Syn, Syn-ack, Ack) 단계를 거칩니다.

1. Client는 Server에게 SYN을 전송한다

2. SYN을 전송받은 Server는 SYN을 정상적으로 수신하였다는 뜻으로 SYN-ACK을 전송한다.

3. Client는 SYN-ACK을 정상적으로 수신하였다는 의미로 ACK을 Server에게 전송 후 Connection이 된다

4. 이후에 Client는 Server에게 데이터를 요청하고 상호 간 데이터를 송수신을 할 수 있게된다.

 

SYN Flooding 특징

만약 악의적인 사용자가 source ip를 랜덤으로 위조하여 SYN을 보내면 어떻게 될까요?

서버 입장에서는 수신을 받은 SYN에 대해서 무조건 SYN-ACK를 전송하고 돌아올 ACK를 기다리는데, 이 상황은 반쯤 열린 단계라고 해서  Half-open이라고 하고, SYN_RECV라는 상태값을 가지게 됩니다. 랜덤으로 만든 IP로 SYN-ACK이 전송되었기 떄문에 당연히 ACK는 다시 돌아오지 않을 것이며, 서버는 언젠가 ACK이 돌아올 것을 대비해서 해당 정보를 backlog-queue라는 메모리에 저장하고 특정시간이 지나면 backlog-queue에서 삭제합니다.

 

+여기서 위조된 IP로부터의 연결이 backlog-queue에 초기화되는 양보다 더 많은 SYN패킷이 전송된다면 어떻게 될까요?

결국 backlog-queue가 가득차 더 이상 정상 접속도 연결할 수 없는 상태가 되는데 이게 SYN Flooding의 기본 원리입니다.

위 사진이 랜덤으로 위조된 ip로 서버에 SYN을 전송하고 
서버는 존재하지 않는 어딘가의 IP로 SYN-ACK를 보내는 상황입니다.

 

그런데 여기서 공격자가 존재하지 않는 랜덤 ip가 아닌 존재하는 ip로 위조를 하고 공격을 하면 어떻게 될까요?

위조된 IP로 사용된 Client는 SYN 요청을 하지 않았는데 SYN-ACK를 수신하여 Rst패킷으로 응답하고, Rst패킷을 수신한 공격대상 서버는 backlog-queue에서 해당 정보를 삭제하여 이 패킷같은 경우에는 공격이 성공하지 못하게 됩니다

즉, 이 공격에 성공하려면 SYN패킷 송신 후에 이벤트가 발생하지 않아야 합니다.

 

이제 실제 패킷으로 확인해봅시다.

[실습 pcap파일 사용]

 하나의 서버 IP에 다량의 IP가 SYN을 전송한 것이 보입니다.

출패킷만으로는 위조되었는지 알 수가 없습니다. 하지만 src ip가 반복되지 않고 다르다는점, ACK가 돌아오지 않는다는점을 보아 위조를 했다고 추측해볼 수 있습니다. 

 

SYN Flooding 대응방안 : 서버 구간에서의 설정 방안

  • Backlog-queue 크기 변경 = 조금이라도 더 크게 설정해준다.(하지만 크다고 무조건 좋은 것은 아님)
  • syncookies 기능 활성화 = syncookies 사용 시, SYN을 수신한 서버는 접속 관련 정보를 SYN-ACK에 포함하여 전송 후 backlog-queue에 정보를 저장하지 않아서 STN Flooding에서 발생하는 backlog-queue의 취약점 보완 가능하다.

 

SYN Flooding 대응방안 : 차단 장비에서의 설정 방안

  • 위조된 IP 차단 = IP가 무작위로 위조되다 보면 공인 IP로 사용될 수 없는 IP, 존재할 수 없는 형식의 비정상 IP의 형식으로도 위조가 되는데, 이런 IP들은 Anti-DDoS 장비에서 제공되는 비정상 IP차단 기능을 이용하여 대응할 수 있다.
  • 비정상 크기의 SYN 패킷 차단 = 정상적인 SYN 패킷은 60 ~ 80 바이트 정도의 크기이며, OPTION 해더의 크기에 따라 SYN 패킷의 크기는 달라질 수 있다. 오탐 가능성을 고려하여 128바이트 정도 이상의 SYN패킷은 drop하도록 라우터나 차단 장비에서 설정할 수 있다.

'해킹&보안 > 네트워크' 카테고리의 다른 글

[DDoS] 반사공격  (0) 2024.08.10
[DDoS] IP Flooding (+패킷 분석)  (0) 2024.08.09
무선 통신 보안  (0) 2024.06.16
[DDoS] UDP Flooding (+패킷 분석)  (0) 2024.03.29
[DDoS] ICMP Flooding (+패킷 분석)  (0) 2024.03.29