Cet article est un condensé de méthodologies utilisables pour faire de l’OSINT (Open Source INTelligence) orienté sur les informations que l’on peut trouver sur les réseaux sociaux. Il retrace uniquement certains outils pouvant être utiles, leur exploitation et les résultats qu’il est possible d’obtenir.
Le but de cet article n’est pas de faire une liste exhaustive de tous les outils à disposition pour collecter ces informations ou de débattre de la notion d’éthique liée à l’utilisation de ces données ; mais tout simplement de montrer un aperçu des techniques permettant leur obtention afin de sensibiliser sur leur partage et leur utilisation sur les réseaux sociaux.
Dans cet article, les outils d’OSINT tels que Maltego [1], Shodan [2] ou encore the Harvester [3] ne seront pas traités. En effet, et bien que le dernier possède une fonctionnalité liée à Facebook et Twitter, ces outils ne sont pas orientés réseaux sociaux. De plus, ce sont parmi les outils d’OSINT les plus connus, et leur exploitation a déjà été traitée dans de nombreux articles ; ils mériteraient d’ailleurs à eux seuls un article dédié.
1. Avant-propos
1.1 Présentation de l’OSINT
L’OpenSource INTelligence ou plus communément appelée OSINT, est une méthode de renseignement basée sur la collecte et l’exploitation d’informations librement accessibles. Ces informations peuvent provenir de sources multiples telles que les réseaux sociaux, les journaux, les annuaires publics, les bases de données commerciales, etc.
Tout d’abord utilisée par les services de renseignements des différents pays, elle tend désormais à être utilisée par les entreprises pour des objectifs stratégiques et économiques. Cette méthode est également utilisée par de nombreux black hat, afin d’effectuer des phases de reconnaissances en amont de la réalisation de leurs méfaits tels que du social engineering ou des campagnes de phishing personnalisées.
1.2 Prérequis et prévention d’utilisation
Bien entendu, comme la matière principale de cette méthode est l’information personnelle, il est très important de faire attention au cadre légal. En l’occurrence, celui-ci ne semble pas être défini précisément pour l’OSINT, mais uniquement basé sur des non-interdictions. Il faut néanmoins tenir compte que la notion de vie privée est toujours bel et bien existante, bien que les informations soient disponibles librement : Open is not free.
Ainsi, des droits tels que le droit à la vie privée, la propriété intellectuelle et toutes autres notions arrivées avec le RGPD (consentement pour le traitement des données, droit à la limitation du traitement, etc.) sont à prendre en considération.
Il faut également prendre en compte les chartes d’utilisation des différentes sources d’informations telles que les réseaux sociaux. En effet, il est possible que l’utilisation de certains des outils qui seront présentés ne soit pas en adéquation avec elles. Leur utilisation doit s’effectuer en toute connaissance de cause et sous l’entière et unique responsabilité de son utilisateur.
1.3 Contexte
Pour présenter cette méthodologie compendieuse, nous partirons sur le cas fictif (bien que malheureusement assez proche de la réalité) suivant : lors d’un voyage en train, nous avons entendu un autre voyageur effectuer une réunion téléphonique avec une personne qui semble être le DSI de son entreprise.
Alors que les hommes discutent de l’impénétrabilité de leur système d’information, nous en profitons pour prendre une photo du voyageur.
Avec comme base cette photo et son nom (nous l’appellerons John Doe) que l’on a pu entendre, nous décidons d’utiliser l’OSINT pour leur démontrer la vulnérabilité de leur SI.
2. Eagle Eye
2.1 Présentation d’Eagle Eye
Pour commencer l’investigation, nous utilisons tout d’abord Eagle Eye [4] afin de trouver les principaux réseaux sociaux de John Doe. Il s’agit d’un script écrit en python qui propose une méthode pour trouver les comptes Facebook, Twitter et Instagram d'une personne à partir de son nom et d’une ou plusieurs photos.
Seulement une partie du nom peut également suffire (uniquement le nom de famille ou les premiers caractères de celui-ci par exemple), mais plus celui-ci sera exact, plus Eagle Eye se montrera précis dans ses recherches.
2.2 Présentation de Eagle Eye
L’intégralité du code ainsi que les prérequis nécessaires à son fonctionnement sont présents sur GitHub.
Une fois ces derniers en place et le code source récupéré, il est possible d’exécuter le script. Il est néanmoins nécessaire d’incorporer en amont dans un des dossiers, l’image de la cible prise dans le train. Une fois cela effectué, le script lancé dans un terminal et le nom de John Doe renseigné en paramètre, la recherche va s’effectuer de la manière suivante :
- Tout d’abord, Eagle Eye lancera une requête au sein de la barre de recherche Facebook avec le nom donné en entrée.
- Ensuite, pour chaque profil trouvé, il va effectuer une reconnaissance faciale entre la photo de profil du compte et la photo de la cible fournie, afin de faire correspondre le visage présent sur chacune d'elle.
- Suite à cela, il effectuera une recherche inversée à partir des photos données en entrée afin de trouver les autres comptes sur les réseaux sociaux. Cette recherche est effectuée par le biais de Google et d’ImageRaider Reverse Image Search. Si un profil Instagram est trouvé, celui-ci sera vérifié en comparant une des images du compte avec les photos de la personne ciblée.
- Eagle Eye fournira alors un rapport PDF contenant tous les comptes qu’il a pu trouver lors de sa recherche.
Fig. 1 : Exemple d’utilisation d’Eagle Eye.
2.3 Obtention des principaux réseaux sociaux
Avec Eagle Eye, il est donc ainsi possible d’obtenir les comptes de notre cible sur les principaux réseaux sociaux. En se rendant sur les pages de ces comptes, d’autres informations personnelles seront disponibles. Par exemple :
- La ville de résidence : par le biais des informations du compte Facebook, d’un j’aime sur la page de la ville ou d’un partage sur la fête communale.
- Les membres de sa famille : via les commentaires, les identifications sur les photos ou les amis, il est assez simple de retracer un arbre familial.
- Une date de naissance : un tweet ou un message pour un anniversaire suffissent à donner cette information.
- L’intérêt de la personne pour ses animaux de compagnie, et leur dénomination.
Ce n’est là qu’une toute petite partie de toutes les informations que l’on peut trouver sur la cible, et c’est autant d’informations qui pourront se démontrer utiles par la suite.
3. Lusha
3.1 Présentation de Lusha
La suite de l’investigation s’effectue avec Lusha [5] et s’oriente vers la récupération des adresses e-mail et des numéros de téléphone. Lusha est une extension pour navigateur qui permet d'obtenir ces informations par le biais de comptes LinkedIn, Twitter, Gmail ou SalesForce.
C'est via Twitter que beaucoup ont découvert ce service et suite à cela, des tests réalisés par différentes personnes sur des hommes politiques français tels que le Premier ministre ont démontré la véracité des informations obtenues.
Lusha est une extension créée par une entreprise américaine qui fournit des informations personnelles obtenues par le biais « des partenaires commerciaux qui contribuent à la communauté Lusha ».
3.2 Exploitation de Lusha
Pour l’exploiter, il suffit de se rendre sur le compte Twitter que l’on aura eu par le biais d’Eagle Eye et de récupérer dans la pop-up générée par l’extension, les informations que l’on souhaite.
Si cela n’a pas été fructueux, il est possible de s’orienter vers le compte LinkedIn de la personne ciblée. En effet, beaucoup d’employés de grandes entreprises et surtout dans le domaine de l’informatique, sont présents sur ce réseau social. Avec uniquement le nom et un peu de patience, il est assez aisé de trouver le compte souhaité.
Une fois le compte obtenu, l’exploitation est identique à celle de Twitter.
Il faut cependant noter que son utilisation est gracieuse dans un premier temps (5 profils par mois) puis payante. Il faudra débourser pas moins de 300 dollars par an (30 consultations par mois).
Fig. 2 : Exemple d’utilisation de Lusha sur Twitter.
3.3 Obtention d’e-mails / numéro de téléphone
Avec un peu de chance, le numéro de téléphone et l’adresse e-mail professionnels sont obtenus par le biais de Lusha. Son adresse e-mail personnelle est également trouvée, mais par un biais légèrement différent : en effet, sur LinkedIn, John a mis son CV en pièce jointe téléchargeable qui contient l’adresse e-mail personnelle.
Ce sont de nouvelles informations qui se montreront utiles par la suite.
4. Hunter
4.1 Présentation d’Hunter
Si lors de l’utilisation de Lusha, il fut impossible de trouver les coordonnées professionnelles de notre cible, alors une recherche par le biais d’Hunter [6] peut le permettre.
Il s’agit d’une entreprise proposant comme service, l’obtention d’informations professionnelles sur des personnes et des entreprises. Proposé sous forme d’un site internet ou d’une extension de navigateur, ce service procure :
- une liste des adresses e-mail de l’entreprise ainsi que leur source d’obtention ;
- le pattern des adresses (ex : prénom.nom@entreprise.fr) ;
- un outil permettant de deviner l’adresse e-mail d’une personne ;
- un outil de vérification d’adresse.
Pour les deux premières fonctionnalités, le service se base sur le nom de domaine de l’entreprise que l’on doit fournir en entrée.
Pour la troisième, il s’agit de donner le nom d’une personne et le domaine de son entreprise pour que le service nous propose une adresse e-mail respectant le pattern habituel de l’entreprise.
Quant à la dernière, elle cherche à vérifier si une adresse fournie en entrée est valide. Pour cela, elle cherchera entre autres à contacter le serveur SMTP.
La version extension de navigateur effectue automatiquement les deux premières fonctionnalités en se basant sur le domaine du site sur lequel on se trouve.
4.2 Exploitation d’Hunter
À ce stade de l’investigation, la société dans laquelle travaille John Doe a de fortes chances d’être connue. Il est donc possible d’utiliser notre outil afin de rechercher son adresse e-mail professionnelle.
Si l’outil ne la trouve pas, nous obtenons tout de même des adresses e-mail de collaborateurs de John et nous pouvons deviner via le format de celles-ci, l’adresse e-mail qui nous intéresse.
À l’instar de Lusha, cet outil est également gratuit (100 requêtes par mois) au départ, mais il faut ensuite débourser mensuellement 34€ pour 1000 requêtes.
4.3 Obtention de l’adresse e-mail professionnelle
Avec Hunter, nous obtenons l’adresse e-mail professionnelle John ainsi que celles de plusieurs autres employés. De plus, le format des e-mails étant le même pour toutes les personnes travaillant dans l’entreprise, il est possible de deviner l’adresse d’une grande partie des employés, dont l’obtention du nom s’effectue aisément par le biais de LinkedIn.
5. Twint
5.1 Présentation de Twint
Maintenant que nous avons les réseaux sociaux et les contacts de John Doe (e-mail, téléphone, etc.), il peut être intéressant de rechercher de plus amples informations et notamment sur Twitter. C’est la fonctionnalité du prochain outil que nous allons voir, appelé Twint [7].
À partir du compte Twitter, ce programme open source codé en python, va permettre de récupérer tous les tweets postés par la personne que l’on cible.
Il n’est pas nécessaire d’avoir de compte Twitter pour l’utiliser, car Twint ne passe pas par l’API Twitter et permet donc une utilisation sans avoir le besoin de se connecter au réseau social.
5.2 Exploitation de Twint
Pour exploiter Twint, avoir une machine avec python3 d’installé est nécessaire. Son installation s’effectue par le biais de la commande pip3 install twint pour une version stable ou via GitHub si l’on souhaite une version développement.
À partir du compte de notre cible, que l’on a pu récupérer préalablement (Eagle Eye par exemple), l’exécution de la commandetwint -u username où username représente le nom du compte ciblé, suffit à lancer l’acquisition des tweets postés par ce compte.
Il existe plusieurs autres options pouvant se montrer utiles telles que :
- -s : permet d’inclure un mot clef dans notre recherche ;
- --year : permet d’obtenir les tweets postés avant une certaine année ;
- -o file.csv --csv : permet l’exportation des résultats au format csv au sein du fichier file.csv ;
- --email : permet de ne récupérer que les tweets qui semblent contenir une adresse e-mail ;
- --phone : permet un filtrage des tweets pour les numéros de téléphone.
Il existe une multitude d’autres options ; ces dernières sont listées et expliquées au sein de la documentation GitHub de l’outil.
5.3 Obtention de tweet contenant des informations personnelles
En utilisant cet outil, il très simple de lire tous les tweets de notre cible et ainsi obtenir les informations personnelles qu’elle aurait pu poster sur Twitter.
Il est possible de se concentrer dans un premier temps sur les e-mails et les numéros de téléphone par le biais des options vues ci-dessus ou bien même de développer nos propres scripts permettant de repérer d’autres informations spécifiques telles que des adresses ou des dates d’anniversaire (avec des expressions régulières par exemple). Autant d’informations qui pourront être utiles par la suite.
Twint permet également l’acquisition des followers du compte ou des comptes que ce dernier suit, mais l’outil que nous allons voir dans la prochaine partie est plus développé dans cette expertise.
6. Tinfoleak
6.1 Présentation de Tinfoleak
À l’instar de Twint, Tinfoleak [8] est également un programme open source écrit en python et qui permet d’obtenir de multiples informations concernant un compte.
Là où Twint permettait un simple scrapping du compte de la personne ciblée, Tinfoleak effectue une véritable analyse du profil et fournit en sortie un ensemble d’informations qu’il a pu récupérer comme les hashtags et les mots les plus cités, les applications utilisées pour publier les tweets ou encore les métadonnées des images.
6.2 Exploitation de Tinfoleak
Tinfoleak est trouvable sur GitHub, mais il est également natif dans certains systèmes d’exploitation Linux tels que Kali ou BlackArch.
Bien que son installation soit simple, l’exploitation de cet outil est légèrement plus compliquée que pour les outils précédents.
En effet, il sera tout d’abord nécessaire de posséder un compte Twitter, mais comme l’outil utilise l’API du réseau social, il sera également demandé de créer une application auprès de Twitter afin d’obtenir des tokens d’authentification. Les procédures pour effectuer cet enregistrement sont détaillées au sein de la page Twitter dédiée aux développeurs.
Suite à la création de l’application, il est nécessaire d’incorporer les jetons récupérés au sein d’un des fichiers de configuration et par la suite l’outil est prêt à être utilisé.
Il suffit pour cela de définir en entrée les paramètres que l’on souhaite utiliser. Parmi ces derniers, on trouve :
- -u : nom de l’utilisateur ;
- --geo : obtenir les informations de géolocalisation ;
- -i : obtenir les informations générales concernant l’utilisateur ;
- --meta : obtenir les métadonnées des images ;
- -w i : récupérer les i-mots les plus utilisés ;
- -o : définir un fichier en sortie.
Il est ainsi possible de générer un fichier HTML retraçant toutes les informations récupérées en fonction des paramètres d’entrée.
6.3 Obtention d’informations à partir de tweets
En plus des informations récupérées avec Twint, il est possible avec Tinfoleak de cerner encore plus la personnalité et les habitudes de la personne ciblée.
En récupérant ses localisations, les hashtags utilisés ou les applications qu’il utilise pour poser ses tweets (navigateur web, application iOS ou Android, etc.), il est beaucoup plus simple de créer des campagnes de phishing personnalisées, basées sur ses préférences et habitudes.
7. Exploitation des informations
Maintenant que nous avons vu plusieurs outils pouvant se montrer utiles pour récupérer des informations, nous allons voir quelles approches peuvent prendre les attaques. Toutes auront pour but l’objectif initial, qui est l’atteinte du système d’information de l’entreprise. De nombreux autres scénarios, axés notamment sur l’atteinte de l’individu et non l’entreprise, sont possibles.
Pour faire un résumé des données que l’on peut avoir en notre possession actuellement, il y a :
- toutes les informations dites civiles : nom, prénom, date de naissance, adresse, membres de la famille, etc. ;
- les points de contact : adresses e-mails, numéro de téléphone, de fax, etc. ;
- les informations professionnelles : nom de l’entreprise, noms des différents collègues, métier et responsabilités, missions et clients, horaires ;
- préférences et vie sociale : nom des animaux de compagnie, passion, artiste, réseaux sociaux, voyages, amis, etc. ;
- etc.
7.1 Phishing
Un des premiers types d’attaques possibles est bien entendu le phishing. Pour cette attaque qui consiste à tenter de récupérer des informations en usurpant une identité, la récupération d’informations sur une personne peut permettre l’amélioration de leur attaque en la personnalisant.
Reprenons notre contexte. Nous avons trouvé par le biais de son profil LinkedIn, que John Doe était volontaire dans une association de lutte contre le SIDA. Par le biais de son Facebook, et notamment de ses connaissances, nous trouvons des photos de Jane Doe, une parente qui semble être atteinte de la maladie (via des messages concernant l’évolution de sa maladie).
À partir de ce moment-là, il est possible de créer un e-mail en usurpant l’identité d’un membre de l’association et d’écrire à John pour l’inviter à une levée de fonds pour financer les tests d’un nouveau médicament. Bien entendu, un formulaire d’inscription est à remplir et celui-ci est fourni en pièce jointe de l’e-mail.
De bonne volonté, John Doe téléchargera la pièce jointe… et le malware qu’il contenait. Suite à cela, une backdoor est installée sur son poste et l’attaquant a trouvé une porte d’accès vers le système d’information de l’entreprise.
7.2 Recouvrement de mots de passe
De nombreux sites à usages personnels ou professionnels incorporent un système de recouvrement de mots de passe par le biais de quelques questions comme :
- Quel est le nom de votre animal de compagnie ?
- Quel est le nom de votre film préféré ?
- Quel est le nom de la ville où se situait votre lycée ?
- Quel est le prénom de votre mère ?
Autant d’informations récupérables assez aisément. Une fois ces informations obtenues et les réponses fournies, il est alors possible de générer un nouveau mot de passe et d’accéder au compte professionnel de John et a fortiori à des informations internes à l’entreprise.
Ce type de recouvrement devient un peu plus rare de nos jours, mais de nombreuses applications continuent à l’utiliser.
7.3 Wyd
Toujours concernant les mots de passe, il est possible d’utiliser l’outil wyd [9]. Ce programme écrit en perl, permet la génération de wordlist en fonction de mots clefs. Il peut être très intéressant dès lors que l’on connaît des informations telles que :
- date de naissance ;
- nom des enfants ;
- nom des animaux de compagnie ;
- nom du compagnon ;
- etc.
En effet, il est assez récurrent d’utiliser ce type d’informations pour générer des mots de passe dont on se souviendra. Wyd va donc permettre à un attaquant de pouvoir tenter une attaque par brute-force sur des comptes personnels ou professionnels de la personne ciblée.
Ce type de dictionnaires se montrera plus efficace sur les mécanismes de type authentifications web, SSH ou Basic AuthN.
Comme pour le cas du recouvrement de mots de passe, l’utilisation de wyd peut nous permettre d’avoir accès au compte professionnel de John Doe et aux informations s’y trouvant.
7.4 Réseaux sociaux
Une grande majorité des informations obtenues le furent par le biais des réseaux sociaux et c’est également par cette même source qu’il est possible de les utiliser, que ce soit pour de faux comptes créés de toute pièce ou pour usurper l’identité numérique d’une personne.
7.4.1 Faux compte
Avec le flux d’informations obtenues, il est très facile de les réutiliser pour créer de faux comptes qui seront utiles par la suite pour mener à bien d’autres attaques telles que du social engineering ou du phishing sur des cibles connaissant la véritable personne de plus ou moins loin.
Cela peut également permettre de réaliser ces attaques envers des personnes totalement inconnues, mais les informations du compte resteront assez réelles pour endormir la vigilance des moins prévenus à ce type d’attaque.
Dans notre contexte, cela peut permettre à l’attaquant de récupérer des informations sur les clients de l’entreprise en se faisant passer pour John Doe auprès de certains membres des équipes commerciales par exemple.
7.4.2 Social Box
SocialBox [10] est un outil open source écrit en Bash disponible sur GitHub et permettant une attaque de type brute-force sur les principaux réseaux sociaux que sont Facebook, Instagram et Twitter. L’outil inclut également une fonctionnalité pour effectuer l’attaque sur les comptes Gmail.
Pour ce faire, il suffit simplement de fournir le nom d’utilisateur du réseau social ou l’e-mail pour le compte Gmail ainsi qu’un dictionnaire et le programme s’occupera d’effectuer le brute-force pour chacun des mots de passe contenus dans le dictionnaire.
Il est possible d’en utiliser des communs tels que rockyou ou d’inclure son propre dictionnaire, qui a été généré par wyd par exemple. Il est donc envisageable d’étudier les réseaux sociaux d’une personne afin de générer un dictionnaire de mots de passe personnalisé puis d’essayer une attaque par brute-force pour récupérer son compte Gmail personnel ou professionnel.
Fig. 3 : Exemple d’utilisation du programme Social Box.
L’accès au compte Gmail permettra la récupération d’informations (e-mails, fichiers Drive, etc.) et l’accès aux réseaux sociaux, la possibilité d’effectuer du social engineering si John Doe est ami avec certains de ses collègues.
8. Pour aller plus loin
Nous n’avons vu qu’un petit nombre de tous les outils utilisables pour l’OSINT. Les deux prochains outils ne furent pas détaillés auparavant, car ils ne correspondaient pas forcément à notre cas d’usage, mais peuvent être tout aussi efficaces que les précédents lorsqu’ils sont bien utilisés.
8.1 Outils de détection de cycle de sommeil
Il existe des outils permettant d’analyser la présence des utilisateurs sur les réseaux sociaux afin de deviner le cycle de sommeil de ces derniers ; comme par exemple fb-sleep-stats [11] (un outil open source sur GitHub) et sleeping-time.org[12].
Le premier utilise la fonctionnalité Facebook permettant de savoir si des amis sont en ligne ou hors-ligne, tandis que le second analyse les 1000 derniers tweets de l’utilisateur visé. Dans les deux cas, le but est de trouver le cycle de sommeil. Cette information peut permettre à l’attaquant de déterminer le meilleur créneau pour attaquer le SI d’une entreprise ; par exemple, lorsque les membres de la DSI sont en train de dormir. Son intérêt principal est de permettre d’agir lorsque les responsables de la sécurité ne le peuvent pas.
8.2 Raven [13]
Cet outil écrit en Go permet de recueillir des informations sur les collaborateurs d’une entreprise à partir du réseau social LinkedIn.
Pour ce faire, il le scanne afin de récupérer le nom des employés puis génère des adresses e-mail possibles à partir de formats habituels puis vérifie si des fuites de mots de passe y sont associées via le site HaveIBeenPwed.com. De plus amples informations sur son installation et son exploitation sont disponibles sur la page GitHub du projet.
Conclusion
Comme indiqué au début, cet article n’est qu’un condensé des multiples possibilités d’utilisation de l’OSINT. Si l’on ne devait retenir qu’une chose de celui-ci, c’est que chaque information disponible sur Internet est une potentielle vulnérabilité pour quelqu’un de mal intentionné.
Il est aussi important de se rendre compte que l’utilisation des réseaux sociaux et la diffusion d’informations personnelles ne sont pas forcément néfastes que pour soi, mais peuvent également déteindre sur le cadre professionnel.
Références
[1] Maltego : https://www.paterva.com
[2] Shodan : https://www.shodan.io
[3] The Harvester : https://github.com/laramies/theHarvester
[4] Eagle Eye : https://github.com/ThoughtfulDev/EagleEye
[5] Lusha : https://www.lusha.co/
[6] Hunter : https://hunter.io/
[7] Twint : https://github.com/twintproject/twint
[8] Tinfoleak : https://github.com/vaguileradiaz/tinfoleak
[9] Wyd : https://www.darknet.org.uk/2006/11/wyd-automated-password-profiling-tool/
[10] SocialBox : https://github.com/TunisianEagles/SocialBox
[11] fb-sleep-stats : https://github.com/sqren/fb-sleep-stats
[12] Sleeping-time : sleeping-time.org
[13] Raven : https://github.com/0x09AL/raven