Capturer uniquement la connexion ssl avec tcpdump
J'ai un serveur pour laquelle de nombreux clients de se connecter en utilisant SSL. Récemment, je suis d'observation SSL handshake erreurs dans les logs du serveur (ex SSL erreur MAC). L'erreur elle-même n'est pas important, mais je veux voir pourquoi certains clients sont en mesure de se connecter alors que d'autres échouent, et doivent également identifier les clients ne sont pas.
Pour le débogage de ce problème, je veux capturer tous les certificats SSL des poignées de main qui se passe au niveau du serveur et depuis je ne sais pas quand la problématique des clients se connectent, je ne veux pas capturer tout le trafic jusqu'à ce qu'il se passe. Je veux juste de capturer tous les SSL, les poignées de main et plus tard de les analyser avec Wireshark. Supposons que je n'ai accès qu'à tcpdump et pas d'autres outils pour la capture.
oui, mais il permettra de saisir toutes les données de ce port. Je veux juste saisir des données jusqu'à la SSL/TLS handshake complète pour chaque demande.
OriginalL'auteur sadiq.ali | 2016-09-21
Vous devez vous connecter pour publier un commentaire.
Je ne sais pas exactement ce que vous demandent poignée de main, mais je propose cette commande qui sera probablement la capture de plus de 95% de ce que vous voulez:
Maintenant, que fait-elle:
tcp[12]
signifie s'emparer de la 13e octet du paquet tcp, correspondant à la première moitié étant le décalage, la seconde moitié étant réservée.Le décalage, une fois multiplié par 4 donne le nombre d'octets de l'en-tête TCP, sens
((tcp[12] & 0xf0) >> 2)
fournit la taille de l'en-tête TCP.Le premier octet d'un TLS paquet de définir le type de contenu. La valeur 22 (0x16 en hexadécimal) a été définie comme étant la "poignée de main" du contenu.
En conséquence,
tcp[((tcp[12] & 0xf0) >> 2)] = 0x16
capture chaque paquet ayant le premier octet de l'en-tête TCP set de0x16
.Plus de filtrage peut être effectué, mais cette strictement répond à votre question.
Cette commande doit faire la chose.
Oui, c'est la capture de paquets uniquement pour la durée de poignée de main. Mais quand j'ai ouvert le fichier résultant dans Wireshark, il est seulement montrer les paquets TCP et pas en mesure de reconstituer les messages de SSL (exemple ClientHello) complètement. Serait-ce parce que ce filtre est de retirer certaines des paquets?
Probablement oui. Lors de mon test, Wireshark automatiquement décode les paquets TLSv1.2, mais si par exemple vous avez tronqué paquets au niveau TCP, vous ne serez pas en mesure de retrouver la pleine poignée de main. Je suppose que vous ne pouvez pas résoudre cela en utilisant seulement tcpdump.
J'ai eu le même problème où wireshark ne pourrait pas interpréter le trafic tcp comme protocole TLS/SSL. J'ai suivi les conseils [ask.wireshark.org/questions/34075/... pour résoudre ce problème car j'ai été la capture de trafic sur un non-standard ssl port.
OriginalL'auteur Jyo de Lys