
Google, vous connaissez ?
Hello,
Cet article est le fruit de mes recherches pour la création d’un outil d’OSINT (Open Source Intelligence) dans le cadre d’un projet de 2ème année d’ingénieur @ENSIBS.
Pour créer mon outil, j’ai du m’intéresser aux recherches Google, mais pas seulement aux Dorks comme on pourrait le penser. Il existe également des paramètres à mettre dans l’URL permettant d’activer ou de désactiver certaines fonctionnalités de la recherche Google. En soit, tous les petits modes de Google (filtres de temps, modes avancés etc.) sont tous activables/désactivables via certains paramètres.
Pour pouvoir faire cet article de la manière la plus courte et résumée possible, je vais faire deux catégories: Les dorks et leur fonctionnement, et les paramètres GET ainsi que leur fonctionnement.
Note: Tous les dorks ne fonctionnent pas de la même manière sur tous les tlds de Google. Pour être sûr qu’un dork va fonctionner, allez sur Google.com. Pour ce qui est de la langue qui peut vous déranger, on en reparle dans la section “Paramètres GET”.
Pourquoi faire cette Doc me direz vous ? Il en existe des tas et des tas, pas besoin d’en rajouter une ! Et bien… Oui vous avez raison, mais sharing is caring ! right ?! Donc je vais essayer d’apporter des choses nouvelles ici 🙂
Les Dorks
Déjà, tout le monde ne sait pas ce qu’est un “dork”, alors courte définition:
Un dork est un mot clé, un filtre, ou une façon d’agencer une recherche (Google ou autre) pour pouvoir affiner les résultats, qui sont souvent a plusieurs centaines de milliers pour la majorité des recherches non filtrées.
Il faut savoir que tous les dorks sont cumulables entre eux, histoire d’affiner encore plus les recherches ! Vous pouvez également donner des mots de logique entre tous les filtres (OR [ou |], AND [ou &])
Passons à la liste et à sa description ainsi qu’a quelques exemples:
la suite est définie de la forme suivante:
Recherche [nombre de résultats google.com] -> explication
Recherches de texte/mots dans les pages
fromagère pelée [153 000 résultats] -> Résultats comprenant fromagère ou pelée ou des variations des mots (comme pelee, pelés etc).
fromagère + pelée [147 000 résultats] -> Résultats comprenant fromagère ET pelée ou des variations des deux mots.
fromag* [176 000 résultats] -> Résultats comprenant fromag[ère,e,...]
à noter que ce dorks est plus efficace en complétion des mots manquants dans une phrase, eg:
comment * dorks [176 000 résultats]
-> Donnera "comment utiliser google dorks" et "comment se protéger des google dorks"
(merci @datacrunchr pour la remarque)
fromagère -pelée [1 280 000 résultats] -> Résultats comprenant fromagère et ses variation, mais pas pelée et ses variations.
"fromagère" [866 000 résultats] -> recherche Stricte des occurrences de fromagère dans les pages, les titres, les URLs etc.
"fromagère"+"pelée" [42 résultats] -> recherche stricte des mots fromagère et pelée en même temps.
"fromagère" -"pelée" [784 000 résultats] -> Recherche stricte de fromagère sans le mot strict "pelée"
"fromagère pelée" [0 résultats] -> Recherche des occurrences strictes des mots "fromagère pelée" à la suite.
Bon, voilà pour les bases. Je suis sûr que 90% d’entre vous n’ont -pour le moment- rien appris. C’est normal, nous allons passer maintenant aux mots servant à filtrer un peu plus nos pages.
intitle:fromagère [15 300 résultats] -> Résultats comprenant fromagère ou ses variations dans une balise html <title></title>
intitle:fromag* [5 320 résultats] -> résultats comprenant fromag[ère,e,...] dans la même balise html <title></title>
/!\ différences avec la partie précédente /!\
intitle:"bière pong" [2 250 résultats] -> résultats comprenant dans le titre le mot strict "bière" OU "pong"
allintitle:"bière pong" [2 250 résultats] -> résultats comprenant dans le titre le mot strict "bière" ET "pong"
inurl:bière [365 000 résultats] -> Résultats comprenant bière ou ses variations dans l'URL
inurl:"bière pong" [627 résultats] -> résultats comprenant dans l'URL le mot strict "bière" OU "pong"
allinurl:"bière pong" [627 résultats] -> résultats comprenant dans le titre le mot strict "bière" ET "pong"
inanchor:"elsicarius" [1 résultat] -> Résultats comprenant "elsicarius" dans l'attribut href d'un lien de la page.
allinanchor:"elsicarius infosec" [0 résultats] -> résultats comprenant dans le titre le mot strict "elsicarius" ET "infosec" dans l'attribut href d'un lien de la page.
Bon voilà pour ce qui est du traitement du texte. Passons maintenant à des dorks un peu moins utilisés (à tord)
Misc
On va caser ici un peu tous ceux qui ne sont pas classables.
C’est frustrant de chercher une ressource sur google, et lorsqu’on a un résultat google avec un extrait du site qui nous intéresse, BAM 404 not found, unknown host ou que sais-je ?!
cache:<url> -> Va vous rediriger directement vers la version du site mise en cache par le système google. Y'a jamais de CSS mais si c'est le texte qui vous intéresse ça peut fonctionner (pas toujours ca dépend du robots.txt de la page)
notez que:
cache:<url> mots clés -> va vous rediriger et surligner les mots clés recherchés ! exemple:
Considérons la recherche “cache:https://elsicarius.fr PNG
” et bien vous serez redirigés vers mon site et les lettres “PNG” seront surlignées:
(D’ailleurs instant autopromotion, vous pouvez aller lire l’article sur le fonctionnement des PNGs, -je pense que- c’est intéressant 🙂 )
site:sousdomaine.domaine.tld -> filtrera les résultats pour tomber (ou exclure avec "-site:") que sur le site qui vous intéresse
related:domaine.tld -> vous donnera des sites/services proposant la même chose que le domaine recherché. Exemple: la recherche
“related:github.com
” donnera pour résultats:
ext:<extension> -> permet de ne sortir que les liens direct avec l'extension spécifiée. C'est très utile lorsque vous cherchez des travaux ou des articles scientifiques sur des sujets précis (ça permet de filtrer les sites publicitaires qui vous demandent de télécharger leur adware pour lire un PDF qu'ils n'ont pas en leur possession).
ou
filetype:<extension> -> Totu pareil
define:<mot ou terme> -> Permet de demander à google de nous sortir la définition la plus populaire du mot ou de l'expression qu'on recherche.
Exemple: je n’y connais rien en stack smashing, je vais donc demander a Google de me définir ce qu’est le “stack smashing”:
à noter que si la recherche ne fait qu’un seul mot, google joue les dictionnaires:
Donc ma recherche complète:
Pour finir, voici un Dork qui permet de filtrer les Google news en fonction de la source de l’article:
source:<nom> -> exemple:
Les paramètres GET
Lors de la création de mon outil, il a fallu s’adapter a des contraintes qui ne m’étaient pas venues à l’esprit tout de suite: comment filtrer depuis un programme en python ?
Il a fallu que je m’attarde sur la structure d’une query google, voici mes conclusions sur les paramètres utiles:
Une query google s’articule autour de plusieurs paramètres qui définissent la langue des résultats, le pays localisant les résultats, des potentiels filtres etc.
Voici une requête standard vers google:
https://www.google.com/search?hl=fr&q=query&btnG=Google+Search&tbs=0
hl -> définit la langue d'affichage de google.
Ainsi google.com peut être aussi bien affiché en Anglais:
Qu’en Français:
ou en Russe si ça vous chante:
q -> query
Ce paramètre peut aussi bien être une recherche mot à mot, qu’un dorks vu précédemment ! Pratique pour les programmes 🥰
btnG -> Le bouton Google choisi pour effectuer la recherche. Il est possible d'utiliser la valeur "Google+Search" ou ce que vous voulez ça n'a pas d'importance.
Vous pouvez le remplacer par btnI pour effectuer une recherche “i’m feeling lucky”
tbs -> C'est le filtre temporel de Google ! "0" signifie "tout le temps", "qdr:h" signifie la dernière heure, "qdr:d" les dernieres 24h, "qdr:m" le dernier mois etc.
lr -> Ce filtre va permettre de n'avoir que les résultats dans une langue spécifique ! ses valeurs sont de la forme "lr=lang_<langue>", eg: lr=lang_fr
Ça permet quelques étrangetés, comme un google russe ne donnant que des résultats français:
num -> Nombre de résultats par pages, assez pratique pour avoir beaucoup de résultats sur un seul retour de requête (ça évite le spam -> qui vous fera ban ip)
Safe -> Permet d'autoriser / refuser les contenus pornographiques dans les résultats
Ça fait bizarre hein ?
à savoir que si on commence à combiner les langues avec le mode safe, Google ne détecte plus le contenu pour adulte et recommence a proposer des résultats (dans la langue demandée):
Un dernier pour la route:
filter -> prend une valeur "1" ou "0", "1" étant par défaut. Ce paramètre permet de désactiver les filtres de doublons que Google à mis en place pour limiter le nombre de résultats (non pertinents d'après lui). En clair, ça désactive ce message que l'on voit si souvent en OSINT:
Au final, j’ai utilisé la lib python3 googlesearch qui implémente tout ça de base dans une fonction toute simple: “search”, et qui permet de changer de tld Google aussi facilement que je change de sujet sur ce site.
Aller, on va s’arrêter là pour cet article ! Merci d’avoir lu jusque ici!
La bize 🙂