Maison >Tutoriel système >Linux >Comment SYN utilise-t-il le protocole TCP pour lancer des attaques ?

Comment SYN utilise-t-il le protocole TCP pour lancer des attaques ?

PHPz
PHPzoriginal
2024-07-27 08:24:02839parcourir

L'attaque SYN est une méthode couramment utilisée par les pirates informatiques et est l'une des méthodes DDoS. Les attaques SYN exploitent les failles du protocole TCP en envoyant un grand nombre de requêtes de semi-connexion, consommant des ressources CPU et mémoire. En plus d'affecter les hôtes, les attaques SYN peuvent également endommager les systèmes réseau tels que les routeurs et les pare-feu. En fait, les attaques SYN n'ont pas d'importance sur le système cible, tant que ces systèmes ouvrent des services TCP, elles peuvent être mises en œuvre.

Pour comprendre les principes de base de cette attaque, il faut encore commencer par le processus d'établissement d'une connexion TCP :

Tout le monde sait que TCP est basé sur des connexions, c'est-à-dire : pour transmettre des données TCP entre le serveur et le client, un lien virtuel, c'est-à-dire une connexion TCP, doit d'abord être établi. Le processus standard d'établissement d'un. La connexion TCP est la suivante :

Comment SYN utilise-t-il le protocole TCP pour lancer des attaques ?

Dans la première étape, l'extrémité requérante (client) envoie un message TCP contenant le drapeau SYN signifie synchronisation. Le message de synchronisation indiquera le port utilisé par le client et le numéro de séquence initial de la connexion TCP ;

Dans la deuxième étape, après avoir reçu le message SYN du client, le serveur renverra un message SYN+ACK, indiquant que la demande du client est acceptée. En même temps, le numéro de séquence TCP est augmenté de un et ACK est. confirmé.

Dans la troisième étape, le client renvoie également un message de confirmation ACK au serveur. Le numéro de séquence TCP est également augmenté de un et une connexion TCP est établie.

Le processus de connexion ci-dessus est appelé prise de contact à trois dans le protocole TCP.

Le problème réside dans la négociation à trois de la connexion TCP. Supposons qu'un utilisateur se bloque ou se déconnecte soudainement après avoir envoyé un message SYN au serveur. Le serveur ne peut alors pas recevoir le message ACK du client après l'envoi d'un message de réponse SYN+ACK (. La troisième poignée de main ne peut pas être terminée.) Dans ce cas, le serveur réessayera généralement (enverra à nouveau SYN+ACK au client) et attendra un certain temps avant d'abandonner la connexion inachevée. La durée de cette période est appelée SYN Timeout. d'une manière générale, ce temps est de l'ordre de quelques minutes (environ 30 secondes-2 minutes).

Ce n'est pas un gros problème pour un utilisateur d'avoir une exception qui fait attendre un thread du serveur pendant 1 minute, mais si un attaquant malveillant simule cette situation en grand nombre, le serveur consommera beaucoup d'argent pour maintenir un très grande liste de semi-connexions. De nombreuses ressources - des dizaines de milliers de semi-connexions. Même une simple sauvegarde et un parcours consommeront beaucoup de temps CPU et de mémoire, sans parler de la nécessité de réessayer constamment SYN+ACK pour les adresses IP de cette liste. .

En fait, si la pile TCP/IP du serveur n'est pas assez puissante, le résultat final est souvent un crash de débordement de pile --- même si le système côté serveur est suffisamment puissant, le côté serveur sera occupé à traiter les données forgées par l'attaquant. Demandes de connexion TCP et n'aura pas le temps de prêter attention à la demande normale du client.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn