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)을 이용하여 클라이언트 정보 복원
'모의 해킹 해봐~ > Network 기반 해봐~' 카테고리의 다른 글
DoS(Denial of Service)(UDP Flooding) (0) | 2023.12.13 |
---|---|
DoS(Denial of Service)(TCP Connection Flooding) (0) | 2023.12.13 |
DoS(Denial of Service)(Smurf Attack) (0) | 2023.12.13 |
DoS(Denial of Service)(Land Attack) (0) | 2023.12.13 |
DoS(Denial of Service)(Ping of Death) (0) | 2023.12.13 |
댓글