모의 해킹 해봐~/Network 기반 해봐~

DoS(Denial of Service)(TCP SYN Flooding)

Alias._.B 2023. 12. 13.

TCP SYN Flooding

   • TCP Protocol의 특성인 연결지향성(3way-handshake)을 이용한 공격

      ⸰ Attacker는 Victim에 출발지 IP 주소를 Spoofing하여 SYN Packet을 특정 포트로 전송

      ⸰ 해당 포트의 대기 큐(Backlog Queue)가 가득차도록 함

      ⸰ 해당 포트에 들어오는 정상적인 연결요청을 큐가 빌때까지 무시

   • 시스템 리소스 공격: Memory 부하(Backlog Queue)

   • Backlog Queue

      ⸰ TCP 서비스에서 클라이언트의 연결 상태 정보를 기억하기 위한 공간(IP로 구분)

 

            ‣ SYN Backlog: 클라이언트의 SYN를 받고 SYN/ACK를 전달한 SYN_RCVD 상태정보 기억

            ‣ Listen Backlog: SYN/ACK의 대해 응답받은 Established 상태정보 기억

   • 공격 원리

      ⸰ 출발지 IP를 Random하게 변조(Spoofing)하여 특정포트로 연결요청(SYN Packet) 전달

      ⸰ 공격대상의 Backlog Queue가 가득차면 정상 클라이언트의 연결정보 저장 불가

   • 공격 예시

      ⸰ hping3 --rand-source <공격대상 IP> -p <공격대상 Port> -S --flood

      --rand-source: 출발지 IP 랜덤 -p: 목적지 Port -S: SYN Flag --flood: 최대속도 전송

   • 보안 대책

      ⸰ 시스템 최적화: Backlog Queue 사이즈 증가, SYN_RCVD 대기시간 단축, Registry 설정

      ⸰ syncookie 기능 활성화: sysctl net.ipv4.tcp_syncookies=1

      ⸰ 보안 솔루션

   • syncookie

      ⸰ SYN Flooding 발생 시 정상 사용자의 Connection을 보장하는 기술

      ⸰ 연결요청(SYN)의 초기 순서번호(ISN)를 이용하여 정상 연결 구분

      ⸰ 동작 순서

            ‣ 클라이언트의 SYN에 대해 SYN/ACK 전달 후 ISN을 식별값으로 설정

            ‣ syncookie에 연결 정보 전달 후 서버는 SYN_RCVD 정보를 Backlog Queue에서 삭제

            ‣ 정상적인 확인 응답(ACK) 수신 후 정상 통신 연결(3way-handshake)

            ‣ Backlog Queue에 식별값(ISN)을 이용하여 클라이언트 정보 복원

댓글