samedi 23 février 2008

[PENTESTING] [Information gathering] Find the relevant information

La mission du jour, cher agent, est de vous former à la récupération d'information. En effet, cette étape est cruciale lors d'un test d'intrusion. C'est même la première à considérer et celle qui pourra faire la différence par la suite. Vous connaissez certainement des pistes pour trouver sur Internet des informations sur votre cible: bases WHOIS, annuaires et moteurs de recherche, newsgroups, etc...
Mais saurez vous trouver les portes plus cachées ? La porte d'entrée ouverte d'une filiale qui vous facilitera certainement grandement la tâche ... A vous de jouer !


Automatisation des recherches

L'information que l'on recherche se trouve très certainement sur Internet mais il s'agit clairement, la plupart du temps, de chercher une aiguille dans une botte de foin ! Alors dans ce cas, brûlons le foin me direz-vous ! Notre "brûleur" pourrait très bien être la suite BiLE car cet outil a pour objectif de trouver les liens entre les sites de manière automatique et, dans notre cas, les sociétés qui pourraient être en rapport avec notre cible. De plus, cette suite est capable de noter la pertinence des résultats trouvés. Voici un bon départ pour notre test ! Alors passons à l'action !

Installation de la solution

Pour récupérer la solution, il suffit de ce rendre sur le site de Sensepost et après enregistrement, on obtient la suite BiLE. Nous décompressons le fichier obtenus pour récupérer les fichiers Perl qui nous intéresse. Aussi, nous avons besoin de httrack (aspirateur de site WEB). Voilà, nous sommes prêts !

Exécution des scripts

Notre recherche va s'effectuer en deux étapes en exécutant l'un après l'autre les scripts suivants:

  • BiLE.pl pour trouver les liens avec notre cible;
  • BiLE-weigh.pl pour pondérer les résultats trouvés avec BiLE.pl.

Le premier script se lance de la manière suivante (ex avec www.blackhat.com):

perl BiLE.pl www.blackhat.com blackhat_1.txt

Une fois terminé, le script génère un fichier *.mine. En l'ouvrant, on obtient ce genre de résultats :

site1:site2

Les relations sont donc établies. Le deuxième script va nous permettre de pondérer ces liens:

perl BiLE-weigh www.blackhat.com blackhat_1.txt.mine

Cette fois, nous obtenons un fichier *.mine.sorted:


Pour comprendre la pondération attribuée, il faut juste savoir que plus le nombre est important, plus la relation entre les deux sites est forte. Nous obtenons de nombreux résultats mais peu en réalité avec une pondération pertinente. Quoiqu'il en soit, voici des pistes qui nous seront certainement bien utiles ;)


Comment ça marche ?

Nous allons expliquer ici en quelques mots le fonctionnement des deux scripts utilisés.

Le script BiLE.pl

Ce premier script repose sur deux choses :
  • HTTRACK ;
  • GOOGLE.
Le premier permet de récupérer les pages du site cible et de lire ainsi les liens qui figure dans le code sources de celles-ci. Quant à Google, il joue son rôle de moteur de recherche pour savoir à qui correspond chaque lien récupéré. Les relations entre sites sont ainsi établies.

Le script BiLE-weigh.pl

Ce second script ajoute une pondération donc. Pour cela, plusieurs critères sont à retenir :
  • Les liens "entrants";
  • Les liens "sortants";
  • Les relations entre les liens.
Concernant les liens entrants, ce sont les sites qui contiennent un lien vers notre cible. On comptera donc le nombre de liens entrants. Mais si un site ne contient qu'un seul lien et que celui ci est notre cible, alors, il aura plus de poids que s'il contenait une centaine de lien dont un vers la cible. Voici un extrait du code concernant les liens entrants avec ws, weight-source et wd, weight-destination):

if ($src eq ){
$newsites{$dst}=$newsites{$dst}+($sites{$src}*(1/$ws));
}

Quant aux liens sortants, il s'agit d'énumérer les liens du site cible vers les autres sites en relation. De le même façon que pour les liens entrants, si un site de notre cible ne contient qu'un seul lien vers un certain site relation, ce lien aura plus de poids que si le site cible en contient une centaine vers différents site en relation. Voici un extrait du code concernant les liens sortants :

if ($dst eq @ARGV[0]){
$newsites{$src}=$newsites{$src}+($sites{$dst}*(0.6/$wd));
}

Pour terminer, les occurrences entre les sites en relations sont étudiés. Notamment, si nous trouvons de nombreux liens vers notre cible ET vice-versa, ces deux sites sont certainement étroitement liés.
Enfin, un ratio est appliqué en faveur des liens vers la cible (6:10) que nous avons pu noter plus haut déjà. Ces deux lignes de code nous le montrent entre deux sites relevés :

$newsites{$dst}=$newsites{$dst}+($sites{$src}*(1/$ws));
$newsites{$src}=$newsites{$src}+($sites{$dst}*(0.6/$wd));

Voilà qui devrait nous faire gagner du temps pendant nos recherches. Cela tombe bien, le temps vous est compté cher agent !

Pour aller plus loin [PDF].

Aucun commentaire:

Locations of visitors to this page