dimanche 9 mars 2008

[PENTESTING] [DNS] Look for subdomains

Lors de notre dernière mission, nous avons étudié un outil permettant de trouver les domaines pertinents comme les entreprises en relation avec notre cibles. Une fois cette liste en notre possession, nous allons essayer pour chaque élément d'aller aussi loin que possible. Pour cela, le DNS sera notre arme pivot. pour l'exploiter, nous utiliserons le couteau suisse pour ce genre d'attaque, dnsenum.


I - Installation de l'outil

Tout d'abord, téléchargez l'utilitaire ici. Il s'agit donc d'un script PERL. Avant de pouvoir l'installer, il nous faut installer un certain nombre de modules comme indiqué dans le fichier README.txt :
  • Net::IP
  • Net::DNS
  • Net::Netmask
  • Net::Whois::IP
  • HTML::Parser
  • WWW::Mechanize
  • threads
  • threads::shared
  • Thread::Queue
Les modules peuvent être installés de deux manières (exemple avec Net::IP) :

1ère méthode : manuellement

A noter que les modules perl se trouvent sur le site http://www.cpan.org/modules.
  1. Télécharger le tarball ici ;
  2. Le décompresser :
    1. $ tar -zxvf Net-IP-1.25.tar.gz
  3. Installer le module :
$ cd Net-IP-1.25/
$ perl Makefile.PL
$ make
$ make install

A noter si vous rencontrez des problèmes pour installer le module HTML::Parser (comme moi ;)), vérifier que le gcc est à jour et/ou que libc-dev est installé et à jour (sur Debian) :

$ dpkg -l | grep gcc
$ dpkg -l | grep libc-dev

Et éventuellement :

$ apt-get install gcc libc-dev


2e méthode, l'installation automatique :

$ perl -MCPAN -e 'install "Net::IP"'


II - Utilisation de l'outil

Nous sommes prêts ! L'outil va étudier la cible en plusieurs étapes. Ce que nous allons voir tout de suite.


Lancement de l'attaque :

Pour utiliser toutes les possibilités, nous utiliserons la commande suivante :

$ perl dnsenum.pl -v -f dns.txt domaine_cible

avec :

  • -v : verbose ;
  • -f : bruteforce. Le fichier peut être dns.txt - fourni avec l'outil mais qui devrait être personnalisé - contient un dictionnaire de noms DNS probables comme dns1. Le but est de trouver de nouveau sous-domaines ;
  • domaine_cible : par exemple, google.com

Déroulement de l'attaque :

Comme nous allons le voir, la plupart des étapes pourraient être effectuées manuellement. Nous en verrons donc les commandes (certainement déjà connues) ainsi que le résultat pour chacune. Pour exemple, notre "cible" sera lemonde.fr.

1 - Obtention de l'adresse IP

Commande manuelle équivalente ?

$ dig lemonde.fr

Résultat ?

lemonde.fr. 550 IN A 195.154.120.129

2 - Trouver les serveurs DNS primaires (champs NS)

Commande manuelle équivalente ?

$ dig NS lemonde.fr

Résultat ?

$ ns2.te-dns.net. 304 IN A 62.210.64.52
$ ns1.te-dns.net. 304 IN A 212.83.156.82

3 - Trouver les serveurs de messagerie (champs MX)

Commande manuelle équivalente ?

$ dig MX lemonde.fr

Résultat ?

smtp0.lemonde.fr. 600 IN A 194.3.81.5
smtp1.lemonde.fr. 600 IN A 194.3.81.6

4 - Trouver les transferts de zones (champs AXFR)

Commande manuelle équivalente ?

$ host -l lemonde.fr ns1.te-dns.net
$ host -l lemonde.fr ns2.te-dns.net

Résultat ?

Transfer failed


Les transferts de zone ne sont donc pas autorisés pour ce domaine...

5 - Google-scrapping

Commande manuelle équivalente ?

N/A

Résultat ?

N/A


6 - Trouver des sous-domaines supplémentaires par Brute Force (option -f )


Commande manuelle équivalente ?

$ dig .lemonde.fr

Avec , un des mots de la liste contenue dans dns.txt (par exemple).

Résultat ?

blog.lemonde.fr. 241 IN A 195.15.120.132
forum.lemonde.fr. 600 IN CNAME forums.lemonde.fr.
forums.lemonde.fr. 600 IN A 195.154.120.161
...
ftp.lemonde.fr 257 IN A 194.3.81.226
...

Nous pouvons voir certain service dès cette étape très intéressant dans le cadre d'un pentest comme FTP en plus d'un serveur mail (étape 3).

7 - Enumérer les plages d'adresses de classe C et lancer des requêtes WHOIS


Commande manuelle équivalente ?

$ whois lemonde.fr

Résultat ?

194.3.81.0/24
195.154.120.0/24

8 - Lancer des requêtes reverse lookups sur les plages d'adresses récupérées en 8 -, ainsi que les adresses récupérées via WHOIS (toujours en 8 -)

Commande manuelle équivalente (en testant toutes les adresses IP obtenues en 8 -) ?

$ nslookup

Résultat ?

135.120.154.195.in-addr.arpa. 600 IN PTR cacheman.lemonde.fr.
140.120.154.195.in-addr.arpa. 600 IN PTR pan.lemonde.fr.
...

9 - Ecrit l'ensembles des adresses dans un fichiers de type domaineclible_ips.txt

Commande manuelle équivalente ?

N/A

Résultat ?

$ cat lemonde.fr_ips.txt
195.154.120.135/32
...
195.154.120.168/30

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].

samedi 16 février 2008

[PENTESTING] Be careful about clear text protocol...

Un serveur sécurisé, c'est bien mais l'utilisation d'un protocole en clair peut anéantir les efforts de sécurisation. En effet, les protocoles comme FTP, Telnet, Rlogin et bien d'autres fonctionnent avec une méthode d'authentification faible, c'est-à-dire un couple mot de passe / login mais pire, le mot de passe est transmis en clair, ainsi que les communications. Une solution qui vous vient certainement est de sortir votre sniffer préféré (ex : wireshark). Bonne idée ! Surtout si la machine cible est sur le même réseau que le votre. Sinon, nous allons voir une autre méthode qui pourra s'avérer plus simple dans le cas d'une machine cible distante.


Contexte de l'attaque

Nous effectuons un test d'intrusion sur un serveur qui utilise un protocole en clair. Nous utiliserons pour exemple Telnet qui est - malheureusement - bien trop utilisé ... Le but de la mission est de localiser l'Agent J et de prendre possession de son compte ... Prêt à relever le défi ?

Première chose, la machine est-elle vulnérable ?

$ nmap -sS -sV -p 23,79 192.168.0.102

Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2008-02-16 16:03 EST Interesting ports on 192.168.0.102:
PORT STATE SERVICE VERSION

23/tcp open telnet Linux telnetd

79/tcp open finger Debian fingerd
Service
Info: OS: Linux

Nmap finished: 1 IP address (1 host up) scanned in 6.250 seconds

Les deux démons dont nous avons besoin sont présents et actifs sur le serveurs cible : telnet et finger. Ce dernier n'est pas obligatoire mais nous facilitera la tâche comme nous le verrons dans le paragraphe qui suit.


Déroulement de l'attaque

Pour obtenir l'accès sur la machine, nous avons besoin dans un premier temps du login. Il peut être obtenu de plusieurs manières. Si par social engineering ou en sniffant cela n'a pas été possible, un autre possibilité est le démon finger s'il tourne sur la machine distante. C'est notre cas !

$ finger @192.168.0.102
[192.168.0.102]
Login Name Tty Idle Login Time Office Office Phone

agentJ secret *:0 Feb 16 15:47
root root pts/1 Feb 16 15:48 (:0.0)

Nous avons franchi la première étape en découvrant le login de l'utilisateur cible ! Il s'agit d'agentJ.

Maintenant, il nous reste à trouver le mot de passe. Pour cela, nous allons sur le site de packetstormsecurity pour y trouver :

  • Un fichier contenant des mots de passe (prenez le fichier qui vous semble le plus pertinent);
  • Un script perl pour casser le mot de passe de la session telnet.

Un peu de préparation ...

Pour que tout puisse fonctionner correctement, il faut décompresser le fichier contenant les mots de passe :

uncompress <fichier>


Dans le même répertoire, décompresser le fichier contenant le script perl (Telnet_crack.pl).

tar -xzvf Telnet_crack.tar.gz
cd Telnet_crack
tar -xvzf Net-Telnet-X.XX.tar.gz (avec X.XX, le numéro de la version)
cd Net-Telnet-X.XX
perl Makefile.PL
make
make install


Voilà, vous êtes prêt !


Crackage du mot de passe

Il nous suffit de lancer la commande suivante :

perl Telnet_Crack.pl -h 192.168.0.102 -u agentJ -P <fichier_mdp>

Pour obtenir :


Trouvé ! Le mot de passe est donc Missi0n_/\ccomplished.

Vérifions tout de suite notre résultat :



Nous nous sommes bien connecté avec le compte de la victime ...


Conclusion

Nous venons de voir un exemple de prise de contrôle d'un serveur via un service utilisant les texte en clair. A noter que d'autres outils existent pour cracker Telnet et les protocoles non chiffrés en général comme Brutus par exemple. Heureusement, des méthodes de sécurisation existent ! Par exemple, le service Telnet, quitte à être utilisé, aurait dû être "wrappé" pour en limiter l'accès. Mieux mais peu connu, il existe l'outil telnet-ssl où les communication sont chiffrées avec SSL comme son nom l'indique. Encore, mieux, utiliser des protocoles plus sûr comme SSH qui ont aussi l'avantage de permettre l'utilisation d'un authentification plus forte via des clés asymétriques. Cependant, pour des raisons "historiques" ou pour ne pas empêcher le fonctionnement de script sur des serveurs en production, le service Telnet est toujours utilisé...

mardi 5 février 2008

[INFORMATION GATHERING] Are you a fashion victim?

Aujourd'hui, une idée m'est venue (hé oui !?). Toute bête en soi mais tout de même, elle amène la réflexion. Pour aller droit au but, je ne sais pas si vous avez remarqué, mais vous êtes pistés ! Attention cher agent, notre agence déniera tout lien avec les services secrets en cas de problème !

Au départ, un effet de mode ...

Vous avez certainement fait l'objet d'une invitation de site de "rassemblement". Pis, vous vous y êtes incrits vous-mêmes ! ;) Que ce soit professionnel avec des sites comme linkedin ou personnel comme facebook, l'homme aime faire partie d'un groupe et se fait entourer de ses collègues ou ses amis. Que ce soit pour des opportunités de travail ou tout simplement pour ne pas perdre contact avec des collègues ou amis, le profil de chacun est inscrit quelque part sur le net. Bref, un simple effet de mode !


... Sauf que ...

Sauf qu'à force d'être inscrit partout, il devient de plus en plus facile de recouper les informations ! et là, "c'est le drame !" En effet, maintenant, si vous avez le "malheur" de poser un question sur un forum, de poster un article dans un blog ou dans un newsgroup, nous remarquons une chose : le WEB évolue, prend de l'ampleur - avec des moyens d'expression comme le blog - et nous y la faisons de moins en moins attention à ce que nous laissons comme traces et informations. A la base, les informations ne sont pas forcément pertinentes. Sauf que, à force de multiplier les sources, le recoupement se fait de plus en plus facilement. En effet, cette méthode de recherche d'information est connue de tout pentester et de tout curieux, mais ce que nous notons, c'est que c'est de plus en plus valable avec le temps ...
Si certaines personnes vont penser à faire attention à ne pas divulguer de renseignements sensibles dans un post, vont-elles penser dans le même temps qu'elles ont dit il y a quelques mois avoir qu'elle travaille pour telle ou telle société ? Déjà, vous commencez à comprendre ...


L'illustration par l'exemple


EXEMPLE 1:

Par exemple, imaginez une personne qui écrit dans un forum pour signaler, en tant qu'administrateur système, qu'il ne connaît pas les moyens pour sécuriser son serveur DNS (problème de transfert de zone). Si la personne n'a pas déjà donné son nom, il pourra certainement être retrouvé dans son profil (quitte à s'incrire avec un compte bidon sur ce même site). Au pire, quelques recherches Google feront le lien entre le pseudo et le nom. Ensuite, le nom en poche, il suffit de se rendre sur un site comme linkedin et là, vous retrouverez le profil professionnel de la personne cette fois. Bingo, vous savez où elle travaille, dans la société CompagnieSecrete.

(Par exemple, allez faire un tour dans la partie "Experience" de linkedin d'une personne).

Quoi, l'administateur a dit avoir rencontré des problèmes de transfert de zones sur son serveur DNS ? Mais mes mains s'agitent déjà, elles tapent des DIG NS CompagnieSecrete.com ?!? Oh non, maintenant, elles se mettent à écrire des host -l !!!
Oups, je crois que l'on ne retrouvera jamais le corps de cette personne.

Et vous, cher agent lecteur, on ne peut rien apprendre de vous ? Rien de compromettant ? Sûr ???

EXEMPLE 2:

Même pas peur ? Alors je vois que vous avez de l'entraînement mais là, nous allons voir vos limites. Par exemple, a tout hasard, prenons le profil de ... Jérôme KERVIEL (non non, nous n'en avons pas assez parlé ;). Savez-vous que son profil est disponible sur le site linkedin ? Maintenant, savez-vous que nous pouvons y retrouver ses contacts ??? Hé bien j'espère ne pas vous y retrouver ! Vous pourriez être dans de sals draps ! Mais ??? c'est qu'il EST dans mes contacts !


Finalement, le recoupement d'information n'est même pas obligatoire. Ces sites "à la mode" nous donnent déjà du fil à retordre à eux seuls.

lundi 28 janvier 2008

[PENTEST] [MAIL] Can we rely on hidden password?

Alors qu'il y a quelques jours seulement je vous racontais comment récupérer simplement des mots de passe pour des comptes mails, un collègue de l'ESEC - que l'on nommera Agent HR - me montre un outil qui ne paye pas de mine mais qui entre dans la continuité du dernier post. Alors la mission du jour : combien de temps vous faut-il pour casser un mot de passe constitué de dizaines de caractères ? Bien sûr, par "caractères", j'entends symboles, lettres, chiffres et tout ce qui va bien. Allez, UNE seconde ! Mission impossible ? A nous de jouer !


Contexte :

Ce post sera intéressant dans le cadre d'un pentest interne ou externe si vous êtes entré sur le PC d'un utilisateur. Comme la plupart des postes de ce type, nous rencontrons une machine sous windows professionnel et avec Internet Explorer et Outlook installés. Vous n'avez pas réussi à trouver les mots de passe par les moyens fournis précédemment (via un webmail par exemple) et les attaques par brute force pataugent. Alors une fois sur l'ordinateur de la personne, vous pensez à regarder si celle-ci les enregistre automatiquement via son navigateur. Bien joué mais non, elle entre à chaque fois son mot de passe ou alors, elle n'utilise jamais le webmail.

L'acharnement est de mise car nous savons que les mots de passe sont la clé de voute d'un tel test d'intrusion. Alors rien dans les cookies, il vous vient une dernière idée simple : le client de messagerie ...

En effet, vous vous rendez compte que le mot de passe est bien enregistré dans le client de messagerie mais bien sûr, caché par des étoiles :

Nous ne sommes pas très avancés à part savoir que cela va nous prendre du temps de casser un mot de passe si long (34 caractères !) ... à moins que !


Notre arme du jour s'appelle, spy, winspy !

Alors pour réussir à trouver le mot de passe en une seconde, commençons par télécharger winspy++ [download].

(NB : Cet outil n'est pas à confondre avec winspy qui lui est un utilitaire contre les spywares).

Aucune installation n'est nécessaire, il suffit de décompresser le package téléchargé.

Vous trouvez alors un executable nommé WinSpy.exe (logique ;) que vous lancez.
Une petite fenêtre apparaît avec à sa gauche, une cible. Il suffit alors de faire du drag&drop sur cette cible et visez la champ avec le mot de passe (formé d'étoiles).


Et, dès que vous relachez la souris ...

... la magie opère !

Comme quoi, nous nous rendons compte encore une fois qu'un mot de passe, aussi fort soit-il, n'est pas forcément une garantie de sécurité.

Ce qu'il est important de retenir surtout, c'est qu'il ne faut laisser aucune trace ! Que ce soit dans les cookies, à travers une question secrète, sur un post-it, en clair dans un document TXT, dans le cache, etc ... un mot de passe est tant prisé qu'il faut vraiment y faire attention !
Malheureusement, les utilisateurs ne pensent souvent qu'au contenu (le mot de passe) mais bien trop rarement au contenant (la manière dont est chiffré, géré ou sauvegardé un mot de passe) ...

Pour terminer, si nous avons réussi notre défi, cela nous permettra certainement d'aller bien plus loin dans notre test. En effet, avoir un tel mot de passe, c'est bien mais en avoir deux, nous n'y croyons plus. Cela signifie que les autres mots de passe de l'utilisateur seront très certainement le même mot de passe ou un extrait de celui-ci ... l'aventure continue :)

dimanche 20 janvier 2008

[SOCIAL ENGINEERING] Found the open door inside the forteress...

Avant de commencer une attaque, nous avons tout intérêt à nous poser en premier lieu et à chercher le maillon faible. En effet, un principe de la sécurité des systèmes d'information est que le niveau de sécurité d'un système est équivalent au niveau de sécurité de son maillon le plus faible. Alors avant de vous attaquer à l'entrée principale ultra fortifiée d'une forteresse, chercher la petite porte ;)

Premier exemple : récupérer un compte Hotmail


Non sensibilisés à la nécessité d'avoir un mot de passe fort (comprendre lettres minuscules et majuscules, chiffres et symboles, le tout dans un mot de passe de 8 caractères minimum), les utilisateurs choisiront souvent un mot de passe que l'on pourra deviner par une attaque par dictionnaire ou un mot de passe simple (ex : martin76). Dans ce cas, une attaque par brute force peut suffire.

Maintenant, imaginons que notre utilisateur ait un bon mot de passe. Nous perdrions des années à essayer de le casser ! Alors trouvons le maillon faible !

  • 1/ Pour commencer, il suffit de nous rendre dans la rubrique "Mot de passe oublié". Nous trouverons un lien dans la page d'authentification. Là, remplissons comme demander l'adresse mail (ex : victime@hotmail.com) et les caractères de l'image.
  • 2/ Ensuite, choisir "utiliser ma question secrète ...". Si cette option n'est pas disponible, tant pis, il nous faudra trouver un autre moyen ...
  • 3/ Ici, on nous demande des informations comme le pays puis le code postale. Il suffit de connaître juste un peu la victime (société ou personne) pour savoir cela. Au pire, google est votre ami ;) Après, il vous faut donc répondre à la question secrète et c'est là que le bât blesse ! En effet, si certaines personnes penseront à mettre un mot de passe assez complexe lors de leur inscription, ils ne penseront que très rarement à le faire pour répondre à la question secrète ! Pis, ils oublieront très certainement ce champs et ne le modifieront jamais. Vous avez alors tout le temps souhaité pour trouver la bonne réponse qui devrait faire partie d'un ensemble de quelques dizaines de réponses possibles (ex : nom d'une équipe de foot, marque de voiture, ville de naissance, ...).

Dans notre exemple, il s'agit d'une émission TV. Comme il est écrit, on n'accepte que minuscule et majuscule à partir de 5 caractères :

Quelques essais seulement devraient vous suffire (ici, 2 ;) et hop :

Voilà, vous n'avez plus qu'à définir votre propre mot de passe pour le compte de la victime. Vous avez donc un total accès à sa messagerie ... et son compte MSN, et tout le reste. Merci l'unification des services avec Windows Hotmail Live ;)

Vous remarquerez que l'on a le culot d'écrire qu'un mot de passe fort empêche un accès non autorisé ... ha bon ? :)


Deuxième exemple : récupérer la connexion Wi-Fi d'un compte Free

Dans ce deuxième exemple, le principe est exactement le même. Imaginez que vous cherchiez à utiliser la bande Wi-Fi de votre voisin. Malheureusement, celui-ci chiffre sa communication avec un clé WAP2 et une passphrase de 64 caractères (ex : un poème entier avec des symboles et chiffres). Inutile d'espérer de casser une telle clé. Sûr ? Encore une fois, un maillon faible existe !

En effet, il est beaucoup plus simple de récupérer le compte free d'une personne. Pourquoi ? parce que celui-ci n'est constitué que d' :

  • un numéro de téléphone. Pour le connaître, il suffira de trouver son nom sur la boîte au lettre et utiliser le site des pagesjaunes ! Au pire, connaissant le coin, les 4 ou 6 premiers chiffres devraient être les mêmes que les vôtres ... (attention, il s'agit du numéro en 01/02/03/04/05 et non 08 ou09)

  • un mot de passe faible. il faut savoir que les comptes free d'une part n'accepte des mots de passe qui ne dépassent pas 6 caractères ! De plus, ils n'autorisent pas les symboles ! Autant dire qu'une attaque de type brute-force aura vite fait de casser ce type de mot de passe ... Plan B, si cela ne marchait pas, il faut savoir que les communications ne sont pas chiffrées mais passent toutes en HTTP, en clair ! Vous trouverez diverses attaques faciles pour récupérer le mot de passe grâce notamment à un sniffer tel que Wireshark (anciennement ethereal).

Vous avez alors accès à l'interface Free de la victime et vous pouvez de cette manière, entre autres, voir sa clé WPA2 ...

Comme quoi, la sécurité ne tient parfois qu'à un fil ...

samedi 19 janvier 2008

[WEB PENTESTING] A secret agent should be... invisible!

Lors d'un pentest, l'auditeur simulera le comportement de l'attaquant dans sa façon d'agir. Aussi, celui-ci, conscient que son activité est illégale fera en sorte de ne pas être pris. Voyons aujourd'hui un moyen de ne pas être lors d'attaques grâce au proxy P2P : TOR.

Avant-propos :

Pour ne pas être vu via le réseau Internet, plusieurs possibilités s'offrent à vous. En général, elles tournent autour du proxy. En changeant de cette manière votre adresse IP, votre propre adresse ne circulera pas. Sûr ? pas forcément ! D'une part, dans le cadre d'un proxy d'entreprise, c'est l'adresse de ce dernier que nous chercherons à localiser car ses logs et son caches nous seront très intéressant... De plus, en examinant les paquets, il contiennent l'adresse de retour ou du moins le port de destination qui trahira la personne pensant être "anonyme".
Dans le cadre d'un proxy classique que nous trouvons sur Internet, il sera la plupart du temps surchargé car gratuit ou payant mais quoiqu'il en soit, il sera toujours possible de localiser la personne. Sachant que si cela ne peut pas se faire à travers les paquets, ils restera toujours des traces dans les logs du proxy et/ou au sein de l'entité hébergeant celui-ci.
Pour remédier à cela, il fallait imaginer un concept nouveau : un réseau proxy peer-to-peer. Nous parlons de TOR !

Installation de TOR :

Pour utiliser cet utilitaire, nous aurons besoin dans un premier temps de télécharger vidalia ici.
Choisissez la dernière version selon votre OS et lancer l'installation. Vous obtiendrez ainsi tous les modules nécessaires au fonctionnement de TOR :

  • Privoxy
  • TOR lui-même
Démarrer ce composants et firefox car c'est à travers ce navigateur que nous allons uti. Sous Windows, vous devriez voir apparaître une icône dans la barre des tâches. Vous pourrez alors voir le panneau de configuration. Ainsi, vous pouvez vérifier que TOR est bien actif (mais pas en action !).
En effet, nous remarquons un nouvel élément dans la barre d'état de firefox avec le texte "You are now Unmasked".


Pour le vérifier, voyons l'adresse que nous transmettons simplement sur le site de la CNIL par exemple :

Nous voyons donc ici notre adresse IP publique qui n'a pas été modifiée.

Utilisation de TOR

Alors activons TOR en double-cliquant simplement sur l'icone de la barre d'état de firefox :

En fait, nous nous connectons alors à un "relais" TOR qui sert de serveur proxy. Vous passez par le port 8118 par défaut avec l'adresse localhost (127.0.0.1). Vous pouvez vous même utiliser votre machine en tant que serveur dans le menu de configuration de TOR et cliquez sur "installer un relais" (cf. première image). Activer l'option et voilà ! Plus il y aura de personne participant de cette manière, plus les pistes seront nombreuses et donc il sera plus difficile de vous retrouver. Maintenant que nous sommes maqués, voyons le résultat avec un autre site cette fois [ici].

Nous avons bien une nouvelle adresse ! En fait, plusieurs changements se sont opérés auparavant :

  • Nous nous sommes connectés à un des serveurs relais TOR ;
  • Firefox est configuré pour utiliser un proxy (avec privoxy), port 8118 - localhost (cf. configuration avancé > réseau de Firefox)
  • Firefox est configuré pour ne plus accepter les cookies pour plus de discrétion encore ;) (cf. "vie privée" dans les options de Firefox de nouveau)

Ensuite, vous pouvez surfer de manière anonyme. Evidemment, vous noterez un ralentissement... Mais aussi, chose intéressante, vous remarquerez que votre adresse changera très régulièrement. Avec tout cela, comment faire mieux pour brouiller les pistes ? Vous avez la possibilité de forcer le changement d'adresse dans le menu de configuration de TOR en cliquant sur "nouvelle identité" (cf. première image). Tout simplement !

Conclusion :

Si nous venons de montrer le moyen de ne pas être reconnu, c'est aussi une façon de ne pas être localisé. En effet, pour un investigateur, il devient difficile de remonter jusqu'à la personne qui utilise TOR. Cela est malheureusement valable aussi pour l'attaquant que l'on aura plus de mal à trouver ... Cependant, nous pouvons toujours compter sur une erreur de sa part. En effet, un attaquant non expérimenté, se croyant ainsi "invisible", pourra lancer une attaque où là, des traces subsisteront.
Pour l'utilisateur, TOR peut aussi être une source de danger. En effet, il y a deux ans et demi, une version de TOR vulnérable permettait à un attaquant de simuler un serveur privilégié (afin que l'utilisateur s'y connecte en priorité) et sniffer ainsi ses flux, voire les modifier. [Pour en savoir plus ...]
Alors comme toujours, faîte attention de disposer d'une version à jour :)

Locations of visitors to this page