
TLS-Scanner v7.0.0-rtc
Scanner automatisé de configuration serveur et client TLS pour pentesteurs et chercheurs. Évalue les suites de chiffrement, les versions de protocole et les directives de sécurité avec une profondeur de scan personnalisable et une sortie lisible par machine.
TLS-Scanner
TLS-Scanner est un outil destiné à aider les pentesteurs et les chercheurs en sécurité dans l'évaluation des configurations de serveurs et de clients TLS.
Veuillez noter : TLS-Scanner est un outil de recherche conçu pour les développeurs TLS, les pentesteurs, les administrateurs et les chercheurs. Il ne dispose pas d'interface graphique. Il s'agit de la première version et peut contenir quelques bugs.
Compilation
Pour compiler et utiliser TLS-Scanner, vous devez exécuter :
$ cd TLS-Scanner
$ git submodule update --init --recursive
$ mvn clean package
Alternativement, si vous êtes pressé, vous pouvez ignorer les tests en utilisant :
$ mvn clean package -DskipTests=true
Si vous souhaitez utiliser TLS-Scanner comme bibliothèque, vous devez l'installer avec la commande suivante :
$ mvn clean install
Exécution
Pour exécuter TLS-Scanner, vous devez lancer l'un des fichiers jar dans le dossier apps/. Ces fichiers peuvent être obtenus en compilant l'application vous-même ou en téléchargeant les fichiers jar publiés depuis GitHub.
$ java -jar apps/TLS-Server-Scanner.jar -connect localhost:4433
Paramètres importants
Vous devez spécifier un hôte à analyser avec le paramètre -connect.
Si vous souhaitez améliorer les performances de l'analyse, vous pouvez utiliser le paramètre -threads pour augmenter le nombre de threads utilisés.
Un autre paramètre important pour les performances est le paramètre -scanDetail, qui permet de configurer le niveau de détail de l'analyse. Les valeurs possibles, allant de rapide à très détaillé, sont : QUICK, NORMAL, DETAILED, ALL.
Le détail de la sortie peut être configuré avec le paramètre -reportDetail. Pour voir plus de détails sur les directives, utilisez -reportDetail ALL.
Par défaut, les résultats sont écrits uniquement dans la console. Si vous souhaitez une sortie lisible par machine, vous pouvez utiliser -outputFile output.json pour écrire automatiquement les résultats dans un fichier JSON.
Cas d'utilisation
Les paramètres les plus importants à modifier sont -scanDetail et -reportDetail. Nous expliquons ci-dessous quelques cas d'utilisation de ces paramètres.
Analyse par défaut
Dans la plupart des cas, nos paramètres par défaut sont suffisants. Cela effectue une analyse avec les deux niveaux de détail réglés sur NORMAL.
Analyse rapide
Si vous souhaitez effectuer une analyse rapide et obtenir un aperçu rapide de votre système, nous vous recommandons de régler les deux niveaux de détail sur QUICK. Cela limite l'étendue de certaines sondes exécutées pour réduire le temps d'exécution et limite le rapport de détail afin de ne pas inclure d'informations très détaillées et techniques.
Analyse détaillée
Si vous souhaitez évaluer complètement votre système et exécuter tout ce que nous avons, nous vous recommandons de régler les deux niveaux de détail sur ALL. Cela exécute toutes les sondes existantes en totalité et imprime des informations très détaillées pour une analyse et une évaluation plus poussées.
Tous les paramètres
Pour obtenir des informations détaillées sur tous les paramètres possibles, utilisez le paramètre -help ou exécutez le jar sans aucun paramètre.
Docker
Nous fournissons des images Docker pré-construites pour une utilisation facile du TLS-Server-Scanner.
$ docker run -it --network host ghcr.io/tls-attacker/tlsscanner -connect localhost:4433
L'image est conçue pour être utilisée pour l'analyse de serveurs mais contient également les autres fichiers jar. Ils peuvent être consultés en modifiant le point d'entrée.
$ docker run -it --network host --entrypoint java ghcr.io/tls-attacker/tlsscanner -jar TLS-Client-Scanner.jar
Nous vous fournissons également un Dockerfile, pour construire vous-même le conteneur :
$ docker build . -t tlsscanner
$ docker run -t tlsscanner
Veuillez noter : Je ne connais absolument pas les bonnes pratiques Docker. Si vous savez comment améliorer le Dockerfile, n'hésitez pas à soumettre une pull request
Système de prérequis
Les sondes (TLS) ont parfois des prérequis qui doivent être satisfaits pour exécuter cette sonde spécifique. Le système de prérequis vous permet de définir des ensembles de ces prérequis qui doivent être remplis pour que la sonde soit exécutée.
Chaque prérequis offre une fonction evaluate qui retourne une valeur booléenne indiquant si le prérequis a été satisfait.
Les prérequis peuvent être enchaînés de plusieurs façons en utilisant des opérations logiques bien connues. Chaque prérequis offre des méthodes d'instance and, or, not et xor
pour enchaîner plusieurs prérequis. Les sondes suivantes sont actuellement implémentées et peuvent être utilisées directement :
FulfilledRequirement- Toujours évalué àtrue, utile pour indiquer l'absence de prérequis.UnfulfillableRequirement- Toujours évalué àfalse, empêche l'exécution des sondes.ProbeRequirement- Évalué àtruesi la ou les sondes spécifiées ont été exécutées.PropertyRequirement- Évalué àtruesi les propriétés analysées spécifiées ont une valeur prédéfinie. La valeur peut être fournie comme paramètre du constructeur ou on peut utiliserPropertyTrueRequirementetPropertyFalseRequirementcomme raccourci pourTestResults.TRUEetTestResults.FALSE.PropertyComparatorRequirement- Évalué àtruesi le résultat de la collection d'une propriété analysée est inférieur, égal ou supérieur à une valeur constante.ProtocolRequirement- Évalué àtruesi certaines versions de protocole sont supportées.ExtensionRequirement- Évalué àtruesi certaines extensions sont supportées par le pair distant.OptionsRequirement- Évalué àtruesi des indicateurs CLI supplémentaires sont définis. Actuellement utilisé dans certaines sondes client (ALPN, SNI, reprise de session).WorkingConfigRequirement- Évalué àtruesi une configuration fonctionnelle a été trouvée.
En dehors de ces prérequis prédéfinis, vous pouvez également étendre la classe Requirement de manière anonyme dans la méthode getRequirements. Si rien n'est requis, vous pouvez retourner un FulfilledRequirement qui est toujours évalué à true.
Des exemples d'utilisation des prérequis peuvent être trouvés dans les paquets probe de tls-client-scanner et tls-server-scanner.
@Override
public Requirement<ClientReport> getRequirements() {
return new ProbeRequirement<ClientReport>(TlsProbeType.CIPHER_SUITE)
.and(new PropertyTrueRequirement<>(TlsAnalyzedProperty.SUPPORTS_DHE));
}