Est-il possible d'empreinte digitale passivement un client HTTPS, basé uniquement sur des données visibles à un écoute de réseau?
En d'autres termes, envisagez une boîte de surveillance réseau pouvant voir tous les paquets (mais ne connaît aucune touche privée et ne surveille passivement au trafic). Peut déduire une supposition raisonnable à la version du client qui est utilisée, basée uniquement sur ce qui est visible dans la trace du réseau? Par exemple, pouvons-nous deviner quel navigateur et quelle version est utilisée du côté du client?
Bien sûr, TLS crypte les données et la charge utile, mais certaines valeurs sont envoyées dans l'Effacer: l'ensemble des ciiphersuites suggérées par le client, la date/heure du client (4 premiers octets de client_random
), une liste de méthodes de compression pris en charge par le client et une liste des extensions TLS pris en charge par le client et, bien sûr, l'ordre des valeurs dans chacune de ces listes. Y at-il suffisamment de variation ici pour déduire quel navigateur l'utilisateur utilise et distingue-t-il parmi la plupart des grands navigateurs? Y a-t-il assez de distinction entre les versions de navigateur?
Je pense à quelque chose d'analogue à P0F (qui fait Esprimpinting digitals passif ), mais nous recherchons ici la partie non cryptée d'une connexion HTTPS (plutôt que TCP= Les en-têtes), et ici l'objectif est de déduire le client de navigateur/https utilisé par l'hôte du client (plutôt que d'inférer le système d'exploitation utilisé par le client).
Lee Brotherston a parlé à DerbyCon 2015 sur les attaques furtives et plus intelligente défense avec TLS Fingerprinting - diapositives - vidéo .
Il a également publié le code pour aller avec le talk - https://github.com/LeeBrotherston/tls-fingerprinting/tree/master/fingerprintls
Le dessous est extrait de son site - http://blog.squarelemon.com/tls-fingerprinting/
Transports Lay Security (TLS) fournit une sécurité sous forme de cryptage à toutes sortes de connexions réseau à partir de transactions financières légitimes, aux conversations privées et aux logiciels malveillants appelant à la maison. L'incapacité à analyser ce trafic crypté protège ses utilisateurs, qu'ils soient légitimes ou malveillants. Ceux qui utilisent des TLS fonctionnent sous l'hypothèse selon laquelle, bien qu'un écouteur puisse facilement observer l'existence de leur session, ses adresses IP source et de destination, que le contenu lui-même est sécurisé et illisible sans accès au matériau de clés cryptographique à une ou deux extrémités de la connexion. SUR LA SURFACE Ceci est vrai, sauf des défauts de configuration ou des vulnérabilités exploitables. Toutefois, Utilisation de l'empreinte digitale TLS, il est facile de déterminer rapidement et de manière passive quel client est utilisé, puis pour appliquer ces informations de l'attaquant et des perspectives de défenseur.
[...]
digitalprintls
Les empreintes digitales sont conçues pour identifier rapidement les connexions TLS connues et les connexions TLS inconnues des empreintes digitales. L'entrée est prise via le réseau en direct reniflant ou en lisant un fichier PCAP. La sortie des connexions reconnues est (actuellement) sous forme lisible par l'homme et pour des empreintes digitales inconnues dans le format JSON utilisé pour les définitions d'empreintes digitales.
Les empreintes digitales générées peuvent être exportées comme une structure C par empreinte digitale et compilée dans des empreintes digitales pour permettre la détection des instances futures.
Lee montre combien il est facile pour les clients d'empreintes digitales par les signatures de TLS dans un discours plus tard, il a fait à SecTor CA - http://www.slideshare.net/LeeBrotherston/tls-fingerprinting-sectorca-edition - assurez-vous de vérifier les diapositives 66 et 69-70.
fingerprintls -i en0 -s
Il montre aussi comment importer de nouvelles signatures ici - https://Gist.github.com/LeeBrotherston/1a0ae1aedd968af1fce
Une autre montre de démonstration comment tirer parti du filtre Berkeley Packet (FPB) à partir d'autres outils et des cadres tels que Wireshark, tcpdump, et/ou libpcap - https://Gist.github.com/LeeBrotherston/92cc2637f33468485b8f
Enfin, Lee analyse un échantillon PPCE du jeu vidéo Pokemon Décrochez un Android appareil - https://Gist.github.com/LeeBrotherston/5cca4b372277d7c6a049b26f87544351
Certaines méthodes plus anciennes décrites par certaines des autres réponses ici peuvent toujours être pertinentes, mais que je vous suggère de vérifier le travail ci-dessus. Pour en savoir plus sur le travail qui a fait SSLLabs, consultez - https://github.com/ssllabs/sslhaf - qui est un module Apache pour fingerprinting client SSL passif
Oui, vous pouvez effectuer des empreintes digitales du trafic SSL. Bien que vous puissiez trouver de l'empreinte digitale un client dur, car la plupart d'entre eux utiliseront l'une des bibliothèques communes telles que OpenSSSL. Vous pouvez donc être capable d'empreintes digitales différentes versions de ces bibliothèques par opposition à curl vs firefox vs wget.
Oui. Il est possible d'empreintes digitales des clients de cette manière. Il existe même des outils existants qui implémentent cela.
Cependant, il semble ne pas être très précis. Il pourrait être en mesure de reconnaître un type de navigateur majeur (par exemple, Firefox, Chrome, Safari), mais il est peu probable de pouvoir identifier avec précision le numéro de version, et toutes les empreintes digitales obtenues de cette manière ont une chance significative d'être ambiguës. Il semble que plusieurs clients puissent souvent être compatibles avec la trace SSL observée et vous n'obtenez généralement que quelques bits d'entropie de cette manière.
L'outil P0F comprend la prise en charge de déduire le client TLS basé sur une trace, à l'aide d'une base de données d'empreintes digitales. Vous pouvez trouver des descriptions de la façon dont cela fonctionne sur la page Github de SSL Labs .
Le document suivant discute également des expériences sur les clients des empreintes digitales TLS de cette manière:
Martin Husák, Milan Čermák, Tomáš Jirsık, Pavel Čeleda. Analyse du trafic HTTPS et identification du client à l'aide d'empreintes digitales SSL/TLS passifs . URASIP Journal sur la sécurité de l'information, 2016