Sécuriser aujourd'hui

Protéger demain

Contexte - Vision défenseur

La détection et la connaissance de sa surface d'attaque sont primordiales dans la gestion de risques. Elle fait partie du processus d'amélioration continue. Il est donc impératif d'implémenter un programme de gestion de la surface d'attaque pour réduire les vulnérabilités et améliorer le niveau de cybersécurité. Pour rappel, le plan de gestion de la surface d'attaque a pour but de protéger les données sensibles ainsi que d'autres ressources précieuses des cyberattaques.

Contexte - Vision attaquante

L'identité visuelle de votre site web, et ainsi votre image de marque, passe par son design, son contenu, son logo, mais aussi son favicon. Votre favicon peut facilement être récupéré via le code source de votre page web.

Un attaquant cherchant à usurper votre identité dans le cadre d'une campagne de Phishing, va procéder de la manière suivante :

  • Trouver un nom de domaine typosquatable
  • Copier votre site web, son design, son css
  • Récupérer votre favicon

Exemple

Prenons l'exemple d'une entreprise lambda "Amazon" dont le site web est entreprise-amazon.fr .

Un attaquant pourrait trouver un domaine typosquatable avec un outil comme dns-twist

Copier votre site web, son design, son css avec un outil comme WebCopy Et récupérer votre favicon afin d'être plus crédible.

Comment se servir de la technique du Favicon côté Blue Team ?

La technique des favicons est peut-être ancienne et peut apparaitre insignifiante, mais ces éléments plus anciens ne sont parfois pas reconnus (ou pas assez) pour la menace potentielle qu'ils peuvent représenter. Ils peuvent s'avérer être un atout puissant, tant pour un attaquant, pentesteur, bounty hunter, dans leurs recherches, mais aussi un membre blue team pour détecter les angles morts, d'éventuelle spoofed domains, mais aussi et surtout, du Shadow IT.

Des solutions comme :

  • shodan.io

Il propose aussi un graphique de l'historique du nombre de résultats pour une requête donnée (soit dans notre cas, un favicon donné). Il peut être utilisé pour rechercher des tendances, ou pour identifier / découvrir les campagnes de Phishing passées.

  • hunter.how

Ces solutions permettent de rechercher le hash de votre favicon sur internet.

Il suffit ensuite d'analyser le résultat, ou d'affiner la recherche, afin de trouver :

  • Des spoofed domains, et ainsi les surveiller, ou demander un takedown.
    • Le combat est déséquilibré, car un attaquant pourra remonter rapidement un serveur une fois le takedown réalisé (et surtout ca prend du temps un takedown...)
    • Il est aussi possible qu'un attaquant modifie légèrement le favicon (un pixel) ou ne l'utilise pas du tout... et dans ce cas, la technique ne sert à rien.
  • Du Shadow IT, et ainsi voir ce qui est exposé sur Internet, et ce qu'un attaquant pourrait venir taquiner... Bref, c'est un bon moyen d'alimenter et d'avoir connaissance de sa surface d'attaque.
    • Faut-il encore utiliser un favicon pour sa marque, ou connaitre les produits utilisés au sein de son infrastructure et ainsi identifier les favicons des produits.

Pour un attaquant (ou pentester), c'est aussi un très bon moyen d'identifier votre surface d'attaque, techno etc... et éventuellement trouver des angles morts afin de les exploiter, de manière plus ou moins sneaky.

Comment générer le hash de notre favicon ?

Shodan utilise mmh3 afin de générer les hash des favicons. Il liste l'ensemble des favicons récupérés lors du crawling, que vous pouvez trouver sur cette map : (https://faviconmap.shodan.io/) :

MurmurHash3 (mmh3) est une fonction de hachage conçue spécialement pour de la recherche par hash.

Il est possible d'utiliser le script suivant pour générer le hash utilisé par shodan :

pip install mmh3

import mmh3
import requests
import codecs

response = requests.get('https://cybersecurity.wtf/favicon.ico')
favicon = codecs.encode(response.content,"base64")
hash = mmh3.hash(favicon)
print(hash)

Ou même utiliser un outil comme FavFreak (https://github.com/devanshbatham/FavFreak) qui va automatiquement chercher le favicon.ico sur le site donné.

Une fois généré, il suffit d'aller sur https://shodan.io et d'avoir une clef API query pour faire la recherche :

http.favicon.hash:1320981061

Il est d'ailleurs possible de retrouver toute une liste de hash de favicon pour des applications / produits sur github :

https://github.com/sansatart/scrapts/blob/master/shodan-favicon-hashes.csv

Hunter.how quant à lui fonctionne différemment, mais le script suivant permettra de générer le hash nécessaire (dans le cas d'un favicon <= 256KB):

import hashlib
def favicon_hash():
print(hashlib.md5(open('favicon.ico','rb').read()).hexdigest())

Si le favicon est > 256KB il faut prendre uniquement les 256 premiers KB du favicon pour générer le hash.

Une fois généré, il suffit d'aller sur hunter.how (juste besoin d'un compte ici ) pour faire la recherche :

favicon_hash=="ca6619b86c2f6e6068b69ba3aaddb7e4"

Si vous êtes feignant, il est toujours possible d'utiliser un outil online : cyberwarzone.com générant à la fois le MD5, SHA1, SHA256 et MM3H.

Limitations

  • Les pages de Phishing utilisant l'hébergement partagé sur des plates-formes d'hébergement gratuites similaires à 000webhost et l'hébergement Firebase ne peuvent pas être détectées, car ces sites ne sont pas accessibles directement par adresse IP. Par conséquent, ils ne sont pas indexés sur ces moteurs de recherche.
  • Les favicons utilisés sur le site Web de n'importe quelle marque aujourd'hui peuvent être différents de ce qu'ils étaient il y a quelques mois, selon qu'ils ont subi des modifications de conception. Et toutes les pages de phishing n'utilisent pas les favicons officiels ou à jour de la marque. Il est important de créer un historique des favicons utilisés sur votre site web. Il est aussi possible de les retrouver via archive.org
  • Cette technique de Favicon n'est pas une fin en soi, et n'est pas suffisante pour gérer votre Shadow IT et de menace Phishing. Des mesures organisationnelles doivent être mises en place pour la gestion de votre Shadow IT. Pour le Phishing, il n'y a malheureusement pas de moyen de gérer cela en amont proprement et de manière pérenne.