TCP: Comment les numéros seq / ack sont-ils générés?
Je suis actuellement en train de travailler sur un programme qui détecte les paquets TCP envoyés et reçus et à partir d'une adresse particulière. Ce que je suis en train d'accomplir, c'est de répondre avec sur mesure des paquets de certains paquets reçus. J'ai déjà de l'analyse effectuée. Je peux déjà généré valide Ethernet, IP, et-pour la plupart-les paquets TCP.
La seule chose que je ne peux pas savoir comment la seq /ack nombre sont déterminés.
Même si cela peut être pertinent pour le problème, le programme est écrit en C++ à l'aide de WinPCap. Je demande des conseils, des articles ou d'autres ressources qui peuvent m'aider.
source d'informationauteur xian
Vous devez vous connecter pour publier un commentaire.
Lorsqu'une connexion TCP est établie, chaque côté génère un nombre aléatoire que son numéro de séquence initiale. Il est vivement nombre aléatoire: il y a des problèmes de sécurité si n'importe qui sur internet peut deviner le numéro de séquence, car ils peuvent facilement tisser des paquets pour les injecter dans le flux TCP.
Par la suite, pour chaque octet transmis le numéro de séquence incrémenté de 1. Le champ accusé de réception est le numéro de séquence de l'autre côté, envoyé pour accuser réception.
RFC 793 (l'original du protocole TCP spécification) serait d'une grande aide.
J'ai le même travail à faire.
Tout d'abord la première seq# sera généré de manière aléatoire(0-4294967297).
Ensuite, le récepteur compter la longueur des données qu'il a reçues et envoyer l'accusé de réception de
seq# + length = x
à l'expéditeur. La séquence sera alors x et l'expéditeur d'envoyer les données. De même, le récepteur compter la longueurx + length = y
et d'envoyer l'accusé de réception commey
et ainsi de suite... Sa façon dont la la seq/accusé de réception est généré...Si vous voulez montrer qu'il est pratiquement essayez de renifler un paquet dans Wireshark et suivez les flux TCP et de voir le scénario...
Si je vous comprends bien, vous essayez de monter une TCP SEQ prédiction attaque. Si c'est le cas, vous aurez envie d'étudier les spécificités de votre cible OS Numéro De Séquence Initial générateur.
Y ont été largement diffusés vulnerabilties dans à peu près tous les principaux OS du wrt leur N'générateurs d'être prévisible. Je n'ai pas suivi les retombées de près, mais ma compréhension est que la plupart des vendeurs publié des correctifs pour randomize leur N'est incréments.
Semble que le reste des réponses a expliqué à peu près tous sur la façon de trouver détaillées et des informations officielles sur ACK, à savoir TCP RFC
Voici un moyen plus pratique et "facile à comprendre" la page que j'ai trouvé quand je faisais semblables qui peuvent aussi aider à TCP Analyse - Section 2: Séquence & la Reconnaissance des Numéros de
RFC 793 la section 3.3 couvre les numéros de séquence. La dernière fois que j'ai écrit le code à ce niveau, je pense que nous avons juste gardé un comptoir pour les numéros d'ordre qui a persisté.
Ces valeurs de référence de l'attendu de décalage du début de la charge utile du paquet par rapport au numéro de séquence initial pour la connexion.
Référence
Numéros sont générés aléatoirement à partir des deux côtés, puis augmenté par le nombre d'octets (bytes) envoyer.
Les numéros de séquence incrément après une connexion est établie. Le numéro de séquence initial sur une nouvelle connexion est idéalement choisis au hasard, mais beaucoup d'OS ont certains semi-algorithme aléatoire. Les RFC sont le meilleur endroit pour en savoir plus TCP RFC.