Protéger son domaine contre le Phishing : techniques basées sur l’OSINT

I. Présentation

Dans cet article, nous allons passer en revue quelques méthodes et outils que peuvent utiliser les entreprises afin de se protéger des attaques par phishing. Les méthodes présentées dans cet article vont surtout permettre d'avoir une démarche proactive et une analyse sur les campagnes de phishing potentiellement en cours ou passées, et ce en utilisant les méthodes de l'OSINT (Open Source Intelligence ou renseignement par source ouverte).

II. Recherche et détection de noms de domaine

Dans un premier temps, il est important de s'intéresser aux noms de domaine possédés par votre entreprise, une technique couramment utilisée par les attaquants est d'acheter un nom de domaine ressemblant fortement au vôtre afin de tromper les utilisateurs. En cela, plusieurs techniques visant à tromper l'œil et le cerveau humain sont utilisées, en voici quelques exemples basés sur le nom de domaine redbull.com (liste non exhaustive) :

  • Mot-clé : Le nom de domaine contient un mot-clé important provenant du nom de domaine original (ex : rh-redbull.com)
  • Tiret : Changer le point par un tiret sur un sous-domaine (ex: www-redbull.com).
  • Nouveau TLD : Utiliser le domaine avec un TLD non enregistré (ex : redbull.xyz)
  • Homoglyphe : Remplacer les lettres par des lettres qui se ressemblent ou une lettre proche sur le clavier (ex : reclbull.com, rzdbull.com).
  • Transposition : Inverse la position de deux lettres dans le nom de domaine (ex : rebdull.com).
  • Singularisation/Pluralisation: Ajouter ou supprimer un s à la fin d'un nom de domaine (ex : redbulls.com).
  • Omission/Répétition: Répéter ou supprimer une lettre du nom de domaine (Ex: redbul.com, redbulll.com)
  • Sous-domaine : Ajouter un point dans le nom de domaine (Ex: red.bull.com).
  • Insertion : Insérer une lettre dans le nom de domaine (Ex: rezdbull.com).
  • etc.

Il va de soi que tous ces noms de domaine n'appartiennent pas à la société Redbull, même si ils se ressemblent. Ce fait est pourtant difficile à concevoir pour un utilisateur "non technique". Toutes ces techniques sont l'assurance d'un succès pour un attaquant lorsque suffisamment d'utilisateurs sont ciblés, notamment pour des utilisateurs non sensibilisés.

Afin de détecter au plus tôt l'utilisation de ces techniques par un attaquant, différents outils peuvent être utilisés pour générer une liste de noms domaine sur lesquels ces types de modifications sont appliquées, puis de vérifier si ces noms de domaine sont enregistrés, voire utilisés à des fins de phishing.

Le premier outil est dnstwists, téléchargeable sur Github : https://github.com/elceef/dnstwist

# OS Linux
git clone https://github.com/elceef/dnstwist.git
cd dnstwist 
pip install

# Kali Linux
apt install dnstwist

Celui-ci va générer une liste de noms de domaine à partir d'une entrée fournie en utilisant les méthodes citées précédemment. Pour chaque nom de domaine, il vérifiera son enregistrement auprès d'un serveur DNS mondial, ce qui vous permettra de détecter des cas suspects rapidement. Voici un exemple en utilisant le nom de domaine credit-agricole.fr :

Utilisation de l'outil dnstwist pour trouver des dérivés du domaine crédit-agricole.fr enregistrés
Utilisation de l'outil dnstwist pour trouver des dérivés du domaine crédit-agricole.fr enregistrés

Sur la capture d'écran ci-dessus ne sont affichés que les noms de domaine ayant effectivement un enregistrement DNS. La première chose à remarquer ici est que le serveur DNS chenar.credit-agricole.fr et le MX mercure.credit-agricole.fr reviennent plusieurs fois. On peut donc savoir qu'il s'agit des serveurs DNS de la véritable entité du Crédit Agricole et que les noms de domaine qui y sont enregistrés sont bien maitrisés. D'autres noms de domaine enregistrés avec des serveurs DNS, qui eux n'apparaissent qu'une fois comme crdit-agricol.fr ou credit-agricolle.fr, semblent plus suspects.

On peut voir ici plusieurs éléments :

  • des noms de domaine que l'entreprise a choisi d'acheter afin de se protéger des attaques par phishing ou de la dégradation de son image
  • des noms de domaine achetés par d'autres entités, soit pour du simple cybersquatting, soit pour du phishing
  • Éventuellement des noms de domaine achetés par les prestataires de test d'intrusion ayant effectivement acheté des noms de domaine similaires pour tester la sensibilisation des utilisateurs

Une fonctionnalité intéressante de dnstwists est qu'il peut générer une sortie au format CSV, ce qui facilite les potentielles automatisations de ces vérifications. Vous pourrez alors facilement créer une tâche planifiée qui se chargera de vous envoyer un mail si une nouvelle entrée apparaît, signe potentiel d'une attaque par phishing en cours, ou simplement garder un historique des différentes exécutions.

Le second outil est urlcrazy, qui a une démarche similaire, mais lorsque l'on parle d'outils open source, il est bon d'en connaitre plusieurs, car leur développement peut parfois s'arrêter sans prévenir. Celui-ci peut également être téléchargé sur Github : https://github.com/urbanadventurer/urlcrazy.git.

# OS Linux
git clone https://github.com/urbanadventurer/urlcrazy.git
sudo apt install ruby
gem install bundler
bundle install
gem install json colorize async async-dns async-http

# Kali Linux
apt install urlcrazy

L'outil urlcrazy permet notamment de renseigner la disposition du clavier (qwerty, azerty, qwertz, dvorak) afin de simuler au mieux les éventuelles fautes de frappe couramment faites par les utilisateurs :

Utilisation de l'outil urlcrazy pour trouver des dérivés du domaine crédit-agricole.fr enregistrés
Utilisation de l'outil urlcrazy pour trouver des dérivés du domaine crédit-agricole.fr enregistrés

À nouveau, des exports CSV peuvent être réalisés et je vous invite à découvrir par vous-même les quelques options de personnalisation qu'urlcrazy propose.

À la suite de la génération de noms de domaine et de leur vérification par ces deux outils, plusieurs actions peuvent être menées :

  • récolter des informations sur ces noms de domaine, pour par exemple savoir s'il s'agit d'un achat de nom de domaine pour du cybersquatting (auquel cas les entreprises ne s'en cachent pas vraiment), de connaitre l'âge du domaine et le registrar utilisé :
whois crdt-agricole.fr
  • identifier les interfaces web présentes sur ces noms de domaine, notamment en utilisant Aquatone.

Aquatone est un outil qui permet de prendre des captures d'écran et de récolter des informations sur les en-têtes de services web éventuellement présents à partir d'un fichier contenant une liste de noms de domaine. Il s'agit d'un simple binaire qui peut être trouvé ici : Aquatone

Après avoir mis tous les noms de domaine récoltés via dnstwist et urlcrazy dans un simple fichier texte, on utilise se dernier avec aquatone :

cat domaines.txt |aquatone

Ce dernier va alors tenter d'établir une connexion vers chacun des noms de domaine et si il présente une interface web (sur une liste plus ou moins longue de ports en fonction des options utilisées), y récolter des informations qui seront synthétisées dans une page HTML :

Résultat de l'utilisation d'aquatone sur une liste de noms de domaine à vérifier
Résultat de l'utilisation d'aquatone sur une liste de noms de domaine à vérifier
  • Identifier un potentiel port 3333 ouvert sur l'IP correspondant au nom de domaine à vérifier, pouvant trahir la présence potentielle d'un portail gophish
  • Ajouter ces noms de domaine dans liste noire des proxy d'entreprise et pare-feu centralisés afin d'éviter que vos utilisateurs ne puissent être piégés

III. Google & moteurs de recherche

Une seconde méthode qui peut être utilisée est simplement l'utilisation de moteurs de recherche. De simples Google Dorks peuvent mener à la découverte de pages de phishing et d'autres moteurs de recherche, plus avancés, peuvent se révéler pertinents.

Prenons l'exemple de la page d'authentification de l'espace client Orange, celle-ci comporte plusieurs éléments qui lui sont propres, à commencer par le texte "Indiquez votre compte Orange" :

Page de login Orange
Page de login Orange

Cet élément caractéristique d'une page peut être utilisé afin de voir si d'autres sites n'utilisent pas le même, dans notre cas, il y aurait de très grandes chances qu'il s'agisse de page de phishing. Avec la requête Google suivante : intext:"Indiquez votre compte Orange" -inurl:"orange.fr", je tombe très rapidement sur plusieurs pages de phishing :

Page de phishing Orange trouvée via Google
Page de phishing Orange trouvée via Google

Ici, j'ai utilisé l'option de recherche intext pour rechercher une suite de caractères précise qui devrait se trouver dans la code source de la page et ai exclu (-inurl) tous les résultats comportant orange.fr dans le nom de domaine, afin de ne pas me retrouver avec de vrais sites appartenant à Orange (ce n'est pas le but de ma recherche).

Même chose ici pour une page d'authentification PayPal :

Page de phishing Paypal trouvée via Google
Page de phishing PayPal trouvée via Google

D'autres moteurs de recherche spécialisés existent afin d'effectuer ce type de recherche, je pense notamment à publicWWW. Ce dernier est payant et je n'ai donc pas pu le tester autant que je l'aurais voulu, mais il permet d'effectuer une recherche sur des éléments techniques (le code source) comme une suite de balises HTML que l'on retrouverait avec exactitude dans d'autres pages web.  Sur ce principe, il devient aisé de faire une recherche sur quelques balises caractéristiques du code source de votre page d'authentification (images importées, nom d'un répertoire, etc.).

A noter que les pages de phishing sont rarement finement conçues, les attaquants utilisent la plupart du temps une image qui représente le menu, pied de page et tout ce qui n'est pas utile. Seul le code source du formulaire d'authentification est réellement constitué de balises HTML. En cela, il est courant que les attaquants ne se contentent que de reprendre le code CSS utilisé afin de coller au mieux à ce que les utilisateurs ont l'habitude de voir (couleurs, forme des boutons, etc.). Les noms des fichiers CSS et de leurs fonctions sont donc une bonne base de recherche.

IV. Transparence des certificats

Les certificats SSL sont, dès qu'ils sont créés, considérés comme publics. Ceux-ci contiennent un grand nombre d'informations qui peuvent être utilisées afin de savoir quels sont les domaines nouvellement créés, puisqu'un certificat SSL va contenir tous les domaines pour lesquels il est considéré comme valide. La démarche de la transparence des certificats est détaillée ici : https://certificate.transparency.dev/

Divers projets permettent d'effectuer des recherches sur les certificats SSL, nouveaux comme anciens. On peut alors utiliser ces informations pour détecter des certificats SSL créés pour des noms de domaine similaires aux nôtres. La solution la plus simple pour attaquant étant d'utiliser la technique du mot de clé (redbull-rh.com, paypal-credit.com, etc.)

Plusieurs sites, gratuits ou payants, existent pour réaliser ce type de recherche. Le plus facile d'accès étant https://crt.sh/. Ce dernier permet d'effectuer des recherches sur les certificats contenant une chaine de caractères précise, par exemple le mot clé principal de votre nom de domaine :

Utilisation de crt.sh pour découvrir des noms de domaine par mot-clé
Utilisation de crt.sh pour découvrir des noms de domaine par mot-clé

Également, il y a le projet https://github.com/x0rz/phishing_catcher, qui se base sur https://certstream.calidog.io/, monitor et affiche en direct les nouveaux certificats créés. Ces derniers peuvent être intéressants afin de mettre en place, dans la durée, une surveillance des potentielles attaques de phishing pouvant cibler vos utilisateurs.

git clone https://github.com/x0rz/phishing_catcher.git
cd phishing_catcher
pip3 insall - requirements
python3 catch_phishing.py

Phishing catcher se base sur une liste de mots pour appliquer un score à un nom de domaine, cette liste étant bien sûr personnalisable pour être adaptée à votre contexte, pour par exemple faire en sorte que tous les noms de domaine contenant un de vos noms de domaine ou un dérivé/une mutation, apparaissent un rouge :

Utilisation de phishing catcher (configuration par défaut)
Utilisation de phishing catcher (configuration par défaut)

Au bout de quelques instants, je détecte par exemple un nom de domaine pouvant paraitre suspect, utilisant un tiret au lieu d'un point pour créer un sous-domaine :

En personnalisant la configuration, notamment pour y supprimer la surveillance de noms de domaine qui ne vous intéressent pas et en y ajoutant les noms de domaine détenus par votre entreprise, vous pourrez faire en sorte de détecter au plus tôt les créations de noms de domaine similaires au votre. Par défaut, l'outil phishing catcher applique une permutation de lettre sur les noms de domaine à surveiller. Aussi, je vous invite à explorer sa configuration pour l'utiliser au mieux.

V. Conclusion

Avec ce type de solution correctement configurée, il vous sera possible de détecter des tentatives de phishing dès l'étape de mise en place du "piège" par l'attaquant, peut-être même avant qu'il n'envoie un premier mail. Bien sûr, aucune solution magique n’existe en sécurité et toutes ces méthodes doivent être complétées par les protections habituelles, notamment par la sensibilisation des utilisateurs.

Au cours de mes recherches, j'ai également noté que de nombreuses grandes entreprises (paypal, booking, leboncoin, etc.) font appelle à des sociétés externes spécialisées afin de prendre en charge la protection de leur nom de domaine. Ces sociétés proposent notamment l'achat des noms de domaine libres pouvant être utilisés pour nuire à une entreprise, voir le rachat des noms de domaine actuellement utilisés par les attaquants (je ne sais en revanche pas comment ils s'y prennent).

Toutefois, je remarque que pour des sites web très connus et grand public, il est assez aisé de trouver des pages de phishing actives, dont certaines sont là depuis assez longtemps (puisque parfois référencées sur Google). Pour des entreprises de taille plus modeste et potentiellement moins fréquemment ciblée par les attaquants, je pense qu'un monitoring régulier au travers la recherche des noms de domaine et en utilisant la transparence des certificats permet d'avoir une solution pertinente.

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Mickael Dorigny

Co-fondateur d'IT-Connect.fr. Auditeur/Pentester chez Orange Cyberdéfense.

Nombre de posts de cet auteur : 526.Voir tous les posts

One thought on “Protéger son domaine contre le Phishing : techniques basées sur l’OSINT

  • Erreur lors de linstallation de urlcrazy. Des idees ?
    Fetching gem metadata from https://rubygems.org/…….
    Using console 1.8.2
    Using timers 4.3.0
    Using protocol-http 0.15.1
    Using protocol-hpack 1.4.2
    Using bundler 2.2.15
    Using colorize 0.8.1
    Using json 2.3.0
    Following files may not be writable, so sudo is needed:
    /usr/local/bin
    /var/lib/gems/2.7.0
    /var/lib/gems/2.7.0/build_info
    /var/lib/gems/2.7.0/cache
    /var/lib/gems/2.7.0/doc
    /var/lib/gems/2.7.0/extensions
    /var/lib/gems/2.7.0/gems
    /var/lib/gems/2.7.0/specifications
    Using protocol-http1 0.10.3
    Using protocol-http2 0.11.6
    Fetching nio4r 2.5.2

    Your user account isn’t allowed to install to the system RubyGems.
    You can cancel this installation and run:

    bundle config set –local path ‘vendor/bundle’
    bundle install

    to install the gems into ./vendor/bundle/, or you can enter your password
    and install the bundled gems to RubyGems using sudo.

    Password:
    Installing nio4r 2.5.2 with native extensions
    Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    current directory: /tmp/bundler20210407-1029-rq8vcwnio4r-2.5.2/gems/nio4r-2.5.2/ext/nio4r
    /usr/bin/ruby2.7 -I /usr/lib/ruby/2.7.0 -r ./siteconf20210407-1029-1ji36gn.rb extconf.rb
    mkmf.rb can’t find header files for ruby at /usr/lib/ruby/include/ruby.h

    You might have to install separate package for the ruby development
    environment, ruby-dev or ruby-devel for example.

    extconf failed, exit code 1

    Gem files will remain installed in /tmp/bundler20210407-1029-rq8vcwnio4r-2.5.2/gems/nio4r-2.5.2 for inspection.
    Results logged to /tmp/bundler20210407-1029-rq8vcwnio4r-2.5.2/extensions/x86_64-linux/2.7.0/nio4r-2.5.2/gem_make.out

    An error occurred while installing nio4r (2.5.2), and Bundler cannot continue.
    Make sure that `gem install nio4r -v ‘2.5.2’ –source ‘https://rubygems.org/’` succeeds before bundling.

    In Gemfile:
    async-dns was resolved to 1.2.5, which depends on
    async-io was resolved to 1.27.7, which depends on
    async was resolved to 1.24.2, which depends on
    nio4r

    Répondre

Répondre à merwan Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.