OSINT : Utiliser les mêmes méthodes des hackers pour se protéger sur le Web

*Cet article est basé sur la présentation de Sebdraven aux RSSIL*

Le concept d’OSINT signifie Open Source Intelligence ou récupération de données sur sources ouvertes et implique d’arriver à connaître ses vulnérabilités Web avant qu’un pirate ne les découvre, donc être pro-actif, avoir toujours un temps d’avance sur un potentiel attaquant pour pouvoir les corriger.

Sur le marché ou dans le milieu open-source, les outils n’étaient pas totalement satisfaisants. L’idée a donc été de réécrire un framework complet afin de répondre à certaines problématiques d’OSINT. La contrainte majeure a été d’automatiser ce qui est appelé les audits de surface, dont une console PHPMyAdmin, un CMS dont la version est dépassée avec existences de failles et exploits pour les exploiter et donc faciliter le boulot des pentesteurs, dont le travail ne consiste pas à découvrir des CMS ou des serveurs Apache qui ne sont plus à jour ou mal configuré.

De manière générale, aujourd’hui, que ce soit les institutions ou les grands groupes de sociétés industrielles, en France ou au niveau mondial, on se rend compte qu’il faut être de plus en plus visible sur Internet. Le problème de cette visibilité est le grand nombre de création de sites Web, relié de près ou de loin à l’activité de l’entreprise. Parfois certaines entreprises recréent chaque année de nouveaux sites. Ce que l’on voit se dessiner, pour chaque marque, produit, région, c’est qu’il va y avoir des milliers de sites, ce qui fait, qu’à un moment, les entreprises oublient que ces sites sont sur Internet. Inévitablement, les mises à jour, la supervision, le monitoring sur sites sont défaillants et les entreprises ne s’en souviennent que lorsqu’il y a eu une attaque.

L’autre constat est qu’il faut travailler de partout, il faut toujours être disponible, joignable et avoir accès aux systèmes d’information. Les entreprises mettent en place des systèmes de VPN, de Webmails et les salariés ont accès à leurs informations sur leurs ordinateurs personnels, sur leurs téléphones mobiles ou sur leurs tablettes. En ouvrant au maximum ses différents services, on s’expose encore plus aux vulnérabilités.

Au niveau technique, pour une société donnée, il va y avoir autant de sites que de technologies. Elle va mettre en place différents CMS, différents langages de développement et multiplication d’hébergeurs. Il n’y a pas de cohérence dans les différentes technologies utilisées et bien souvent, les entreprises ne s’en souviennent pas, au point qu’elles en oublient de renouveler les noms de domaine.

Il va y avoir des risques techniques, communicationnel et marketing. Le premier est celui d’être blacklisté. Si les sites ont été compromis ou propagent des malwares, au niveau du référencement, vous pouvez être blacklisté de Google. Ce système est également utilisé par Firefox.

Le SI va être compromis car certains sites sont un point d’entrée au SI et il suffit que par exemple qu'une passerelle SSL mise en place soit oubliée et plus maintenu pour être compromise. Du code malveillant peut également être envoyé via ses sites.

Les entreprises, pour pallier à ces différents problèmes, vont utiliser des WAF (Web Application Firewall). Cela est fait pour bloquer les attaques de type injections SQL par exemple. Mais ce sont souvent des signatures de bases. Dans cette hypothèse, les WAF ne détectent pas les attaques. Elles utilisent également des scanners de vulnérabilités, qui sont des outils automatiques, avec des scénarios prédéfinis. L’outil va analyser tout le site et utiliser tous les champs. Si les failles sont béantes, cela va se voir mais il faut savoir quel site scanner. Si on oublie quel site appartient à l’entreprise et donc lequel scanner, il va être compliqué de procéder à des tests.

Les sociétés s’appuient également beaucoup sur les firewalls. Si on veut procéder par tautologie, on peut aussi dire que 100% des attaques passent par les firewalls. Pour peu qu’une vulnérabilité se situe sur un site au niveau de l’upload – c’est-à-dire d’un endroit où l’internaute va envoyer au site un document – un outil comme Metasploit va ouvrir directement un shell et le firewall sera inutile.

Au niveau du scanner, comment scanner des sites dont je ne me souviens pas ? De façon plus générale : comment appliquer des règles de sécurité alors que je ne connais pas mon architecture de base ?
Fortes de ces expériences, des personnes ont commencé à parler d’OSINT, orienté social engineering. L’idée est de récupérer un maximum d’informations, peu importe où elles existent (moteurs de recherche, réseaux sociaux, etc.) pour récupérer un maximum d’informations, compiler ces informations, les trier et en faire un premier niveau permettant d’établir les sites sur lesquelles résident des vulnérabilités, sans faire quoique ce soit puisque le moteur de recherche Google a déjà listé les sites vulnérables. C’est notamment ce que font certains botnets.

L’OSINT permet de récupérer les noms, prénoms, adresses email, numéros de téléphone, et dans une attaque, c’est souvent le premier niveau. On fait de la récupération d’informations afin de créer une attaque ciblée. On a une interaction très faible avec le SI car il n’y a pas besoin de beaucoup de visites. Les sondes de détection d’intrusion ne vont rien détecter.

Dans les concepts d’OSINT, il y a la cartographie de l’attaque humaine et technique, on va cartographier de manière technique les sites, les frameworks utilisés, les technologies utilisées, leurs localisations et humaine, la géolocalisation des personnes. Aujourd’hui, vu que la nature des attaques ont complétement changé, elles ont une dimension beaucoup plus tactique et opérationnelle qui vont réutiliser les notions d’OSINT pour cibler de manière la plus précise possible une personne dans une entreprise dans un système donné afin d’entrer le plus facilement possible. Cela a typiquement été le cas du piratage de Bercy. L’idée est d’être le plus furtif possible pour ne jamais être détecté.

Les outils qui existent sont par exemple Maltégo, qui tourne sur Back Track. Le souci est que le code n’est pas GPL, même s’il est bien fait et les fonctionnalités les plus intéressantes sont payantes. Par ailleurs, les informations vont dans le cloud de Maltégo et selon la sensibilité de l’entreprise, stocker des informations dans un SI inconnu est impossible.

Des Français se sont emparés du sujet en construisant un système, mais en Open-Source, ce qui a donné naissance à Netglub. Il est très bien pour cartographier mais juste une fois. Il va fonctionner pour un serveur mais pas pour plusieurs. L’interface en Qt, qui donne ce côté graphique, va nécessiter 16 Giga de RAM. Par ailleurs, Qt utilise des librairies particulières qui ne sont pas virtualisables.

Il y a également E-search, orienté réseaux sociaux et social engineering. Il va chercher partout sur les réseaux et dès qu’il va trouver des informations intéressantes, il va les afficher à l’écran. Le problème est qu’il est codé en Ruby, donc pour ceux qui veulent développer des plung-in, c’est indigeste et la dernière version ne s’installait pas sur la dernière Debian.

Il y a un autre outil qui a été développé, TheHarvester, pour la Def Con, qui est très efficace voire trop efficace car le code, sous GPL, est fait de telle façon que dès qu’il s’agit de rajouter des fonctionnalités, on est obligé de rajouter six ou sept ligne de sources et donc de modifier totalement l’outil. Par ailleurs, il est trop violent et donc l’utilisateur va très vite être blacklisté des moteurs de recherche.

Une des particularités de ces outils est qu’ils vont énormément chercher des informations sur les moteurs de recherche et l’un des problèmes qu’ont tous ces outils est qu’ils n’ont pas d’approche marketing, ils ne vont pas analyser les contenus. Ils ne remontent que les informations en brut mais il n’y a pas d’aides à la décision sur ce qu’il faut regarder. L’autre souci est qu’ils se limitent à la recherche de noms de domaine. Il faut aller plus loin dans les requêtes de recherche et aller plus loin dans la classification d’informations.

Donc, à partir de différents bouts de codes, l’idée a été de développer un Meta-TheHavester. On va utiliser plusieurs briques et plusieurs concepts. Tout d’abord la recherche sur les moteurs de recherche, en utilisant une surcouche de casperJS, qui est un framework en Javascript, tournant sur du Python, simulant ce que va faire un navigateur Web. L’avantage étant qu’au niveau des moteurs de recherche, il n’y aura de blacklistage puisque le moteur de recherche aura l’impression que c’est un navigateur qui visite, comportant les mêmes métriques qu’un internaute normal.

La seule chose étant de « randomiser » l’user agent afin d’éviter le blacklistage.

Sur Bing, on va utiliser la recherche de vhost. La recherche « ip :vhost » permet de lister toutes les IP qui sont sur ce nom de domaine.

Avec le WHOIS d’Harvesting, on va rechercher tous les WHOIS, utilisant toutes les bases disponibles et on calcule un pourcentage de ce que remontent les différents WHOIS pour ensuite le proposer à l’utilisateur.

A également été ajouté un analyseur lexycométrique et syntaxique, qui est un outil utilisé dans l’analyse de discours politique. Ici va être analysé les meta-data et les index HTML qui peuvent être remontés. Les méta-data permettent aux entreprises d’être visibles sur Internet. Elles vont remonter des informations auxquelles on n’aurait pas pensé. Cela va permettre de définir au niveau graphique des nuages de mots pertinents, qui vont être réinjectés dans les moteurs de recherche qui vont chercher d’autres sites.  

On va analyser les contenus : images et liens, qui vont permettre une classification des sites appartenant, ou non, à l’entreprise. Il existe des bases de données communes sur lesquelles il est possible de passer le MD5 d’une photo, qui va donner le site sur lequel la photo a été incluse.

La deuxième chose qui paraît simple pour récupérer des noms de domaine est l’analyse des certificats. En effet, quel que soit l’IP, dans une session SSL, le certificat va être renvoyé, incluant le nom de domaine associé ainsi que le champ « other DNS name ».

Enfin, on va géolocaliser les sites Web.

On a trois modules :
•    la partie récupération de noms de domaine, IP, informations consolidées ;
•    la partie fringerprinting ;
•    la partie classification avec analyse lexicométrique.

Les briques peuvent être utilisées ensemble ou séparément.

Les technologies utilisées vont être le Python, TheHarvester patché, SSLyse patché qui va analyser les certificats, MongoDB/redis, PhantomJS/casperJS ou encore Iramuteq/R.

La finalité de ce framework est de faire une cartographie Web la plus complète possible afin d’avoir le même niveau d’exhaustivité qu’un attaquant. L’idée est de réduire au maximum les possibilités de non détection de vulnérabilités, pour donner les informations à un scanner de vulnérabilités, qui va dégager les bugs simples.

Tags: 

Ajouter un commentaire