Certificate Transparency : Une technique d'OSINT pour identifier l'ensemble des sous-domaines d'une entreprise
Connaissez-vous le Certificate Transparency ? Il s'agit d'un service de cybersécurité permettant de détecter et de prévenir les attaques par certificats non autorisés. Ce mécanisme assure une plus grande protection des données et des informations sensibles des utilisateurs.
Le meilleur schéma détaillant sont fonctionnement est probablement celui du site certificate.transparency.dev qui détaille l'ensemble des flux de la solution de logs distribués.
Comment accéder aux logs des certificats détectés ?
Ces logs sont consultables auprès de certains sites comme le site de Comodo disponible à l'adresse suivante par exemple : https://crt.sh
Il vous suffit de rentrer le nom de domaine d'une entreprise pour identifier l'exhaustivité des noms de domaines qui utilisent des certificats TLS même si vous avez interdit le transfert de noms de domaines sur votre serveur DNS.
En plus de fournir les noms de domaine, la plateforme détaille l'ensemble des certificats utilisés ainsi que leur date de validité. C'est assez bluffant.
En investiguant de plus près les capacités du site, celui-ci est capable de retourner une réponse en JSON via le paramètre "output=json" et peut être requêté directement via le paramètre "q". Vous commencez à voir où je veux en venir ?
https://crt.sh/?q=www.perdu.com&output=json
Comment utiliser Crt.sh comme source de données pour de l'OSINT ?
Il est pour le coup possible d'appeler ce portail directement depuis un script pour en extraire facilement l'ensemble des domaines et identifier les adresses IP des serveurs au travers d'une simple résolution DNS.
Pour finaliser le script, un simple appel à Shodan.io est possible pour retourner l'ensemble des vulnérabilités connues sur les adresses IP identifiées.
Cette astuce permet d'identifier très rapidement l'ensemble des points d'entrée vulnérables d'une entreprise.
Avec ChatGPT ou le playgroud GPT il est très simple de créer un script dans le langage de votre choix pour automatiser une analyse :
Create a script in Go lang that calls https://crt.sh/?q=domain.com&output=json and parses the JSON response, taking a command line parameter that is the domain name to analyse. For each common name found in the JSON, resolve the IP address behind the domain and call shodan.io to identify the vulnerabilities.
Bref, identifier les vulnérabilités d'un système d'information complexe est désormais accessible à n'importe quel "script kiddie" qui connait https://crt.sh et GPT.