>  기사  >  시스템 튜토리얼  >  SYN은 TCP 프로토콜을 사용하여 공격을 시작하는 방법은 무엇입니까?

SYN은 TCP 프로토콜을 사용하여 공격을 시작하는 방법은 무엇입니까?

PHPz
PHPz원래의
2024-07-27 08:24:02768검색

SYN 공격은 해커가 흔히 사용하는 수법이자 DDoS 수법 중 하나입니다. SYN 공격은 다수의 반 연결 요청을 전송하고 CPU 및 메모리 리소스를 소비함으로써 TCP 프로토콜 결함을 악용합니다. SYN 공격은 호스트에 영향을 미칠 뿐만 아니라 라우터 및 방화벽과 같은 네트워크 시스템에도 해를 끼칠 수 있습니다. 실제로 SYN 공격은 대상 시스템이 무엇인지는 중요하지 않습니다. 이러한 시스템이 TCP 서비스를 개방하는 한 공격을 구현할 수 있습니다.

이 공격의 기본 원칙을 이해하려면 TCP 연결 설정 프로세스부터 시작해야 합니다.

TCP는 연결을 기반으로 한다는 것은 누구나 알고 있습니다. 즉, 서버와 클라이언트 간에 TCP 데이터를 전송하려면 먼저 가상 링크, 즉 TCP 연결을 설정해야 한다는 표준 프로세스가 필요합니다. TCP 연결은 다음과 같습니다 :

SYN은 TCP 프로토콜을 사용하여 공격을 시작하는 방법은 무엇입니까?

첫 번째 단계에서 요청하는 쪽(클라이언트)은 SYN 플래그가 포함된 TCP 메시지를 보냅니다. SYN은 동기화를 의미합니다. 동기화 메시지는 클라이언트가 사용하는 포트와 TCP 연결의 초기 시퀀스 번호를 나타냅니다.

두 번째 단계에서는 클라이언트로부터 SYN 메시지를 받은 후 서버는 클라이언트의 요청이 수락되었음을 나타내는 SYN+ACK 메시지를 반환합니다. 동시에 TCP 시퀀스 번호가 1 증가하고 ACK가 발생합니다. 확인됨.

세 번째 단계에서는 클라이언트도 서버에 확인 메시지 ACK를 반환하고 TCP 시퀀스 번호도 1 증가하여 TCP 연결이 완료됩니다.

위의 연결 과정을 TCP 프로토콜에서는 3방향 핸드셰이크라고 합니다.

문제는 TCP 연결의 3방향 핸드셰이크에 있습니다. 사용자가 서버에 SYN 메시지를 보낸 후 갑자기 작동이 중단되거나 연결이 끊어지면 서버는 SYN+ACK 응답 메시지를 보낸 후 클라이언트의 ACK 메시지를 받을 수 없습니다. 세 번째 핸드셰이크는 완료할 수 없습니다.) 이 경우 서버는 일반적으로 재시도(SYN+ACK를 클라이언트에 다시 전송)하고 완료되지 않은 연결을 삭제하기 전에 일정 시간 동안 기다립니다. 이 기간을 SYN 시간 초과라고 합니다. 일반적으로 이 시간은 분 단위(약 30초~2분) 정도입니다.

서버의 스레드가 1분 동안 대기하는 예외 상황이 발생하는 것은 사용자에게는 큰 문제가 아니지만 악의적인 공격자가 이 상황을 대량으로 시뮬레이션할 경우 서버는 서버의 스레드를 유지하기 위해 많은 돈을 소비하게 됩니다. 매우 큰 반 연결 목록 많은 리소스 - 수만 개의 반 연결 간단한 저장 및 탐색도 이 목록의 IP에 대해 지속적으로 SYN+ACK를 재시도해야 하는 것은 말할 것도 없이 많은 CPU 시간과 메모리를 소비합니다. .

실제로 서버의 TCP/IP 스택이 충분히 강력하지 않으면 최종 결과는 스택 오버플로 충돌이 발생하는 경우가 많습니다. 서버 측 시스템이 충분히 강력하더라도 서버 측에서는 공격자의 위조된 항목을 처리하느라 바쁠 것입니다. TCP 연결을 요청하고 클라이언트의 일반적인 요청에 주의를 기울일 시간이 없습니다.

위 내용은 SYN은 TCP 프로토콜을 사용하여 공격을 시작하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.