Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
jarm — Outil actif d'empreinte numérique de serveur TLS qui envoie des paquets Client Hello conçus pour générer des hachages JARM uniques afin d'identifier les configurations de serveurs, de regrouper l'infrastructure et de détecter les serveurs malveillants. | Kitploit
Outils/GitHubGitHub/salesforce/jarm
ReconnaissanceCollecte d'InformationsSécurité RéseauRenseignement sur les Menaces
GitHubsalesforce/jarm

jarm

Outil actif d'empreinte numérique de serveur TLS qui envoie des paquets Client Hello conçus pour générer des hachages JARM uniques afin d'identifier les configurations de serveurs, de regrouper l'infrastructure et de détecter les serveurs malveillants.

Voir le dépôt
1.3k151il y a 7 joursVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

JARM

Veuillez lire l'article de blog initial sur JARM pour plus d'informations.

JARM est un outil actif d'empreinte numérique (fingerprinting) de serveur TLS (Transport Layer Security).

Les empreintes JARM peuvent être utilisées pour :

  • Vérifier rapidement que tous les serveurs d'un groupe ont la même configuration TLS.
  • Regrouper des serveurs disparates sur Internet par configuration, en identifiant qu'un serveur peut appartenir à Google vs. Salesforce vs. Apple, par exemple.
  • Identifier des applications ou infrastructures par défaut.
  • Identifier les infrastructures de commande et de contrôle des malwares et autres serveurs malveillants sur Internet.

La prise en charge de JARM a été ou est ajoutée à :
SecurityTrails
Shodan
BinaryEdge
RiskIQ
Palo Alto Networks
Censys
360

Exécuter JARM

python3 jarm.py [-h] [-i INPUT] [-p PORT] [-v] [-V] [-o OUTPUT] [-j] [-P PROXY] [domain/IP]
Exemple :
% python3 jarm.py www.salesforce.com
Domain: www.salesforce.com
Resolved IP: 23.50.225.123
JARM: 2ad2ad0002ad2ad00042d42d00000069d641f34fe76acdc05c40262f8815e5

Pour l'utiliser avec Python 2, vous aurez besoin du module ipaddress :

pip install -r requirements.txt

Exécution par lots de JARM sur une grande liste rapidement

./jarm.sh <list> <output_file>
Exemple :
% ./jarm.sh alexa500.txt jarm_alexa_500.csv

Exemple de sortie

Comment JARM fonctionne

Avant d'apprendre comment JARM fonctionne, il est important de comprendre comment TLS fonctionne. TLS et son prédécesseur, SSL, sont utilisés pour chiffrer les communications à la fois pour des applications courantes comme les navigateurs Internet, afin de sécuriser vos données, et pour les malwares, afin qu'ils puissent se cacher dans le bruit. Pour initier une session TLS, un client envoie un message TLS Client Hello après la poignée de main TCP à trois voies. Ce paquet et la manière dont il est généré dépendent des paquetages et des méthodes utilisés lors de la construction de l'application cliente. Le serveur, s'il accepte les connexions TLS, répondra avec un paquet TLS Server Hello.

Les serveurs TLS formulent leur paquet Server Hello en fonction des détails reçus dans le paquet TLS Client Hello. La manière dont le Server Hello est formulé pour un Client Hello donné peut varier en fonction de la façon dont l'application ou le serveur a été construit, notamment :

  • Système d'exploitation
  • Version du système d'exploitation
  • Bibliothèques utilisées
  • Versions de ces bibliothèques utilisées
  • L'ordre dans lequel les bibliothèques ont été appelées
  • Configuration personnalisée

Tous ces facteurs amènent chaque serveur TLS à répondre de manière unique. Les combinaisons de facteurs rendent peu probable que des serveurs déployés par différentes organisations aient la même réponse.

JARM fonctionne en envoyant activement 10 paquets TLS Client Hello à un serveur TLS cible et en capturant des attributs spécifiques des réponses TLS Server Hello. Les réponses agrégées du serveur TLS sont ensuite hachées d'une manière spécifique pour produire l'empreinte JARM.

Ce n'est pas la première fois que nous travaillons sur l'empreinte numérique TLS. En 2017, nous avons développé JA3/S, une méthode passive d'empreinte numérique client/serveur TLS que l'on retrouve désormais dans la plupart des outils de sécurité réseau. Mais là où JA3/S est passif, en prenant l'empreinte des clients et serveurs en écoutant le trafic réseau, JARM est un scanner actif d'empreinte de serveur. Vous pouvez en savoir plus sur la négociation TLS et l'empreinte passive JA3/S ici.

Les 10 paquets TLS Client Hello dans JARM ont été spécialement conçus pour extraire des réponses uniques des serveurs TLS. JARM envoie différentes versions TLS, chiffrements et extensions dans des ordres variés pour rassembler des réponses uniques. Le serveur prend-il en charge TLS 1.3 ? Négociera-t-il TLS 1.3 avec des chiffrements 1.2 ? Si nous ordonnnons les chiffrements du plus faible au plus fort, quel chiffrement choisira-t-il ? Ce sont le genre de questions inhabituelles que JARM pose essentiellement au serveur pour obtenir les réponses les plus uniques. Les 10 réponses sont ensuite hachées pour produire l'empreinte JARM.

Le hachage de l'empreinte JARM est un hachage flou hybride, il utilise la combinaison d'un algorithme de hachage réversible et non réversible pour produire une empreinte de 62 caractères. Les 30 premiers caractères sont composés du chiffrement et de la version TLS choisis par le serveur pour chacun des 10 client hello envoyés. Un « 000 » indique que le serveur a refusé de négocier avec ce client hello. Les 32 caractères restants sont un hachage SHA256 tronqué des extensions cumulatives envoyées par le serveur, en ignorant les données du certificat x509. Lors de la comparaison des empreintes JARM, si les 30 premiers caractères sont identiques mais les 32 derniers différents, cela signifierait que les serveurs ont des configurations très similaires, acceptant les mêmes versions et chiffrements, bien que pas exactement les mêmes étant donné que les extensions sont différentes.

Après avoir reçu chaque message TLS server hello, JARM ferme la connexion proprement avec un FIN afin de ne pas laisser les sockets ouverts.

Il est important de noter que JARM est une fonction d'empreinte haute performance et ne doit pas être considérée, ou confondue, avec une fonction cryptographique sécurisée. Nous avons conçu l'empreinte JARM pour être aussi consommable par l'homme que par la machine. Cela signifie qu'elle est suffisamment petite pour être examinée, partagée, et tweetée avec suffisamment de place pour des détails contextuels.

Comment JARM peut être utilisé pour identifier des serveurs malveillants

Les serveurs de commande et de contrôle (C2) de malwares et les serveurs malveillants sont configurés par leurs créateurs comme tout autre serveur, puis déployés sur leur flotte. Ceux-ci ont donc tendance à produire des empreintes JARM uniques. Voici des exemples de malwares courants et d'outils offensifs ainsi que le chevauchement JARM avec les sites Alexa Top 1M (en date d'octobre 2020) :

Avec un chevauchement faible ou nul avec les sites Alexa Top 1M, il est peu probable qu'un hôte au sein d'une organisation se connecte à un serveur avec ces empreintes JARM.

Équipe JARM

John Althouse - Idée originale, concept et chef de projet
Andrew Smart - Concept et tests
RJ Nunnally - Programmation et tests
Mike Brady - Programmation et tests

Réécrit en Python pour une utilisation opérationnelle par Caleb Yu

Télécharger l’outil
DomainJARM
salesforce.com2ad2ad0002ad2ad00042d42d00000069d641f34fe76acdc05c40262f8815e5
force.com2ad2ad0002ad2ad00042d42d00000069d641f34fe76acdc05c40262f8815e5
google.com27d40d40d29d40d1dc42d43d00041d4689ee210389f4f6b4b5b1b93f92252d
youtube.com27d40d40d29d40d1dc42d43d00041d4689ee210389f4f6b4b5b1b93f92252d
gmail.com27d40d40d29d40d1dc42d43d00041d4689ee210389f4f6b4b5b1b93f92252d
facebook.com27d27d27d29d27d1dc41d43d00041d741011a7be03d7498e0df05581db08a9
instagram.com27d27d27d29d27d1dc41d43d00041d741011a7be03d7498e0df05581db08a9
oculus.com29d29d20d29d29d21c41d43d00041d741011a7be03d7498e0df05581db08a9
Serveur C2 malveillantEmpreinte JARMChevauchement avec Alexa Top 1M
Trickbot22b22b09b22b22b22b22b22b22b22b352842cd5d6b0278445702035e06875c0
AsyncRAT1dd40d40d00040d1dc1dd40d1dd40d3df2d6a0c2caaa0dc59908f0d36029430
Metasploit07d14d16d21d21d00042d43d000000aa99ce74e2c6d013c745aa52b5cc042d0
Cobalt Strike07d14d16d21d21d07c42d41d00041d24a458a375eef0c576d23a7bab9a9fb10
Merlin C229d21b20d29d29d21c41d21b21b41d494e0df9532e75299f15ba73156cee38303