OSINT for the blue team – Shodan 101

Salut à tous, aujourd’hui je me suis payé un compte « member » sur Shodan sur les conseils de mon copain PYL. Donc je me suis dit que c’était l’occasion de se pencher sur la recherche en source ouverte (souvent dit OSINT pour Open Source INTelligence, et moins souvent ROSO en français pour Renseignement d’Origine Sources Ouvertes) et de vous un petit Tuto « OSINT for the blue team ».

Ce n’est pas nouveau comme sujet et ça fait plusieurs années maintenant que les pentesteurs et autre red-teamer savent bien qu’il faut toujours commencer leur travail par un tour sur Shodan, Google, Linkedin et compagnie pour trouver les trucs qui trainent dehors et qui ne devraient pas.

Pour info, j’ai aussi découvert Onyphe en concurrent français récemment. Je le trouve moins mature que Shodan. Mais, pour les curieux et ceux attachés à la souveraineté : allez jeter un œil.

OSINT for the blue team ? Pour qui ? pour quoi ?

Alors comme je l’ai dit l’OSINT pour les attaquants (qu’ils soient pentesteur bien intentionnés ou de vrai méchants) est un moyen connus depuis bien longtemps. Ça leur permet d’identifier le périmètre technique et organisationnel exposé sur Internet et bien souvent de trouver des points d’entrée à moindre effort.

Là où c’est un peu plus « nouveau » depuis quelques années, c’est qu’on commence à voir cette activité dans les équipes de défense. Leur objectif est de faire du traitement amont pour :

  • identifier des fuites des données ;
  • repérer des périmètres exposés en dehors de la supervision de sécurité ;
  • réduire la surface d’exposition avant que les attaquants le fassent.

Que je sois bien clair ici je parle d’OSINT « infrastructure informatique », on cherche à identifier des service IP exposés : telnet, serveur http, automate. Je ne cherche pas à reconstruire l’organigramme d’une entreprise ou identifier à qui il faut péter les genoux à grand coup de MICE/VICE. Mais c’est aussi une activité que les services de renseignements adorent, hein.

Étape 1 – Cartographier le périmètre

Bon alors quand même, avant de se lancer dans Shodan comme un.e gros.se barbu.e. Il y a quand même une 1ère étape « orga » : Identifier son périmètre cible. On ne lance pas dans la recherche OSINT d’une multinationale genre LVMH, Airbus ou Société Générale la fleur au fusil. C’est trop gros vous allez vous perdre dans le plat de spaghetti.

Du coup, la bonne méthode c’est de partir du point d’entrée que sont les résultats annuels par exemple. Ils sont systématiquement publiés par les groupes privés pour des raisons légales et financières. N’hésitez pas le compléter avec une bonne exploration du ou des sites web de l’entreprise, une grosse recherche Google, et un tour sur Wikipédia, hein ? Exemple de Google dorks du style :

site:*target.fq.dn filetype:pdf|xlsx|xls|csv|rtf|xml|docx

En général, vous allez tomber sur un ou plusieurs jolis PDF qui liste les principales marques, filiales, emplacements géographiques du groupe.

Pour les plus motivés, allez chercher directement le bilan comptable de l’entreprise sur info-greffe (ou des sites comme pappers ou y a juste tout ce qu’il faut). Faite un passage aussi sur le site de l’INPI pour identifier les noms déposés par l’entreprise. Et n’oubliez pas si vous êtes en mode interne, n’allez pas payer le bilan comptable chez info-greffe hein. Demandez-le directement à votre direction financière ou Juridique… 🙂

Pensez bien à ajouter dans votre scope les trucs qui aurait été achetés plus ou moins récemment par votre cible mais qui ne serait pas encore intégré. Genre y a 2 ans votre cible « A » a acheté la société « B » qui appartenait à « C » : jetez un coup d’œil à « B » mais aussi un peu à « C » du coup. Cherchez aussi d’anciens noms de vos cibles, par exemple : l’entreprise « Spanghero » s’appelle maintenant « La Lauragaise ». Les 2 sont à rechercher dans votre scope si c’était votre cible et en particulier si vous cherchez d’anciens noms de domaines techniques oublié par les équipes de MCO.

De là, vous pouvez commencer à vous construire un premier document de préparation de vos recherches croisant les mots clés (marques, filiales, noms) avec des zones géographiques, des catégories d’impacts pour le groupe (ça représente 70% du chiffre d’affaire, versus c’est une startup de 4 bonhommes dans un coin) et surtout la typologie de trucs que vous pourriez chercher et trouver (sur base des codes NAF des structures) : de l’indus, de l’IT classique, du terminal de paiement, etc.

Une fois cette cartographie effectuée, vous pouvez commencer à étudier méthodiquement et branche par branche chacune des entités, en définissant vos priorités (les petites structures en premier vs les gros éléments de l’organisation) et votre plan d’analyse sur une période définie.

Étape 2 – définition du périmètre technique.

Pour chacune des lignes dans le document en sortie de l’étape un, vous avez récupérer un tas de mots clé : marques, entreprises, filiales, etc. Il est temps de convertir ces indicateurs en éléments techniques : IP, nom de domaines, autorités de certifications, emplacement géographique, outils spécifiques… bref, tout ce qui pourrait vous permettre de pivoter dans vos recherches.

Et pour ça, un bon point de départ, c’est les RIR (Regional Internet registry). Pour rappel, les RIR sont les organismes chargés de la délivrance des adresses IP et AS aux organismes qui en ont besoin. Ils sont répartis par région du globe :

Pour exemple pour le RIPE-NCC, vous avez un moteur de recherche FullText plutôt puissant :

https://apps.db.ripe.net/db-web-ui/fulltextsearch

Et dans lequel vous allez pouvoir rentrer tous les jolis noms de marques et d’entreprises identifiés à l’étape 1 et les convertir en plage IP ou d’AS à rechercher dans Shodan.

Pour les noms de domaines, c’est un peu plus compliqué comme il n’existe pas de moyen direct d’avoir tous les domaines associés à un nom facilement. Cependant, indirectement, il y a plein de moyen de le faire :

  • Vous pouvez déjà être créatif à partir des infos collectées à l’étape 1.
  • Vous pouvez aussi vous appuyer sur des outils comme securitytrails de recorded futur (pour ceux qui veulent refaire par eux même, les détails des techniques et outils utilisé ici).
  • Et tout un tas d’autres technique plus ou moins agressive listé ici par exemple.

Étape 3 – Creusez avec Shodan !

Énumération des plages IP et AS

Bon jusqu’ici vous êtes passé d’un nom groupe cible à des listes d’IP, AS, domaine et autres marqueurs de recherches comme des autorité de certification (proposition d’introduction d’un nouveau terme, IoS : Indicator of Searchability ?).

Donc on est parti dans Shodan pour chercher un sous-réseau, utilisez la recherche suivante (en remplaçant avec votre subnet hein) :

net:1.23.45.67/30 

pour les AS la recherche c’est :

ASN:AS12345

Et puis vous passez subnet par subnet (ou AS par AS pour ceux que vous avez identifiez pour votre cible). Par exemple là au troisième subnet, je suis tombé sur vieille interface d’administration d’un routeur Huawei installé en 2019 dans mon scope de recherche:

OSINT for the blue team

Cliquez sur l’IP pour visualisez les détails :

OSINT for the blue team

Ici vous noterez que Shodan indique un « Remedy AR System Server » ce qui est normalement un BMC (plein de doc par ici). En fait, Shodan se vautre sur le nommage similaire avec ce produit Huawei dont le nom est proche. Ce qui me permet de vous mettre en avant un point de vigilance : ne faite pas confiance à Shodan aveuglément, il se plante parfois… Donc allez vérifiez par vous même.

Ici, ça vaudrait bien le coup de tester les credentials par défaut pour le système :-D. Mais bon, pas de chance ici, il n’y a pas de default password sur ces systèmes.

Fouillez l’onglet history

Alors il ne faut pas s’arrêter là, hein. Une mine d’information sans fond c’est l’onglet History qui va vous indiquer toute qui a déjà été vu sur l’hôte en question. Ici en l’occurrence on s’aperçoit qu’on a le port 500 en UDP qui a été ouvert jusqu’à fin 2018 pour du VPN.

OSINT for the blue team

Après contrôle, ce port est fermé maintenant mais il arrive que ces derniers soit encore ouvert et mal tagué en history par Shodan… alors que le service est toujours en ligne et accessible…

Bon je pense vous avez compris l’idée, vous passer sur vos périmètres identifiés un par un jusqu’à trouver des trucs plus ou moins crado oublié là par vos administrateurs… et vous cherchez à pivoter en étendant vos périmètres de recherches quand vous trouvez des éléments spécifiques à vos cibles.

Pivoter

Maintenant le niveau suivant c’est de réussir à pivoter ou sortir de son scope initial (qui en général est déjà surveillé par votre entreprise, après tout dans la grande majorité c’est des périmètre connus et déclarés par vos équipes).

Un truc sympa que vous pouvez faire c’est relancer des recherches à partir d’élément déjà trouvé. Exemple, ci-dessous je suis tombé sur deux machines intéressantes dans un de mes scopes de recherches.

OSINT for the blue team

Vous voyez la petite Favorimage que je vous ai entouré en rouge ci-dessus ? bah vous pouvez pivoter pour lancer une autre recherche de tous ces favicon-là simplement en cliquant dessus. Cela va ajouter le paramètre ci-dessous dans votre recherche :

http.favicon.hash:-1234567890

Ce qui vous permettra de chercher tous les services HTTP connus de Shodan qui ont ce favicon. Alors cherchez pas ici, c’est une favorimage pour un automate de Schneider Electric, et il n’y a pas de pivot direct en interne sur la cible. En revanche, si jamais vous tomber sur un vieux favicon maison bien custom : là, ça vaut le coup d’aller voir où est-ce qu’il existe aussi en dehors du scope (et retrouver la plateforme de dev ou de préprod par exemple).

Facet Analysis

Si vous prenez le problème « dans l’autre sens » et que vous cherchez un favicon dont vous n’avez pas encore le condensat. Vous pouvez utiliser la fonction de Facet Analysis avec une recherche pour tous les sites web dont le contenu html contient un bout de texte (ici portainer) :

http.html:portainer
OSINT for the blue team

Il ne vous reste plus qu’à cliquer et retrouver le favicon (et son hash) qui vous intéresse et rajouter les mots clé qu’il vous manque.

http.html:portainer http.favicon.hash:150574832

Le facet analysis c’est vachement bien pour pivoter. Par exemple, faite une recherche un peu large genre

all:nomdemacible

Puis passez, entres autres, sur les éléments suivants :

  • ssl.cert.subject.cn
  • country
  • asn
  • org
  • http.title
  • mongodb.database.name
  • snmp.name|location|contact

Cliquez sur les éléments peu attendus, genre une marque autrichienne avec un élément localisé au Chili alors que le groupe n’a pas d’activité la-bas normalement. C’est toujours intéressant à aller regarder et parfois on trouve des pépites.

Étape 4 : cherchez les choses croustillantes…

Ça peut paraitre évident mais cherchez pas forcément les vulnérabilités TLS1.2 en 1er hein… Gratter plutôt du côté de SNMP, de Telnet, de X11, ou encore des protocoles industriels,

Si vous avez des difficultés à identifier un équipement pensez à pivoter sur tout ce qui est disponible :

  • Basiles HTML ou En-tête HTTP ;
  • OUI lookup sur les adresses MAC ;
  • Pays ;

Étape 5 : AUTOMATISED YOUR OSINT for the blue team !

Bon tout ce que je vous ai montré là, c’est du manuel, on tape un par un les IP et vous risquez de finir par taper la limite de requête par jour sur l’IHM web de Shodan…

OSINT for the blue team

Du coup, c’est relou, mais ce n’est pas si grave, il y a l’API aussi :-), 2 options :

Module PowerShell Shodan

Du coup, le module PowerShell Shodan date de 2014, donc je vous conseille vivement de passer sur la Lib Python fournie officiellement. Mais juste pour jouer, je l’ai installée et fait fonctionner :

> iex (New-Object Net.WebClient).DownloadString("https://gist.githubusercontent.com/darkoperator/9378450/raw/7244d3db5c0234549a018faa41fc0a2af4f9592d/PoshShodanInstall.ps1")

Puis :

Du coup à partir de là, vous avez tout ce qu’il faut pour piloter automatiquement vos recherches Shodan sur des périmètres donnés et mettre ça dans un Splunk par exemple :

Monitor

Et avant de terminer ce tuto « OSINT for the blue team », n’oubliez pas qu’à partir d’un accès member, vous pouvez demander à Shodan de surveiller régulièrement des domaines et IP ainsi conserver un accès simple sur vos périmètres dans l’outil. Mais aussi vous mettre des alertes si un élément dangereux est détecté.

OSINT for the blue team

Conclusion

Bon on en a vu un paquet de trucs sur Shodan aujourd’hui, de la recherche web à l’automatisation dans Splunk à partir de l’API et la surveillance de périmètre. Avec ce petit 101 vous devriez avoir tout ce qu’il faut pour commencer à fouiller vos poubelles et mieux maitriser le périmètre externe de votre entreprise ou de vos clients et faire de l’OSINT for the blue team.

Pour ceux qui veulent un peu plus d’info je vous conseille la lecture de Complete Guide to Shodan – Collect. Analyze. Visualize. Make Internet Intelligence Work for You. Une bonne centaine de page avec les détails sur l’ensemble de la plateforme. Et puis sinon, il y a toujours l’aide officielle : https://help.shodan.io/.

Un grand merci à PYL pour le cours et la relecture de ce post. Maintenant pour vous : il y a plus qu’à geekez avec Shodan !

Laisser un commentaire

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.