vendredi 25 avril 2008

[Social Engineering] Is your money safe?

Tout a commencé par un SMS ... Une nouvelle mission ? Non ! Mais finalement, ça aurait pu le devenir ... Un matin, je reçois un SMS d'une certaine banque que nous appellerons X autre que la mienne. Le texto m'indique que "je" suis à découvert de 51,29€ avec un découvert autorisé de 200€. De plus, il est écrit pour le compte "CC 12345678" (les chiffres et caractères ont volontairement été changés bien sûr). A votre avis, jusqu'où peut nous mener une simple erreur de numéro de téléphone ? Bien plus loin que l'on pourrait le penser ... L'aventure commence !


Avant-propos

Ce post a pour unique but de sensibiliser les personnes et en l'occurrence, beaucoup de gens puisque toute personne ayant un compte bancaire consultable en ligne est concernée... C'est pour cela que les informations sont transformées de sorte à ne pas enfreindre ni la loi, ni la vie privée de la personne incriminée à son insu.


Etape 1 : Récupération de l'identifiant

Je commence par me balader sur le site de la banque comme un simple utilisateur pour signaler l'incident. Dans la partie "contact", outre l'appel surtaxé, je peux remplir un formulaire pour envoyer un mail. Entre autres, je remplis le champs avec le numéro de compte. Aussi, on me propose trois types de compte : "compte chèque, compte titre ou compte épargne". Le CC dans le SMS me fait opter pour un compte chèque (ce dont nous aurions pu nous douter puisqu'il n'existe pas de découvert sur les compte titre et d'épargne). Suite à une erreur dans le formulaire, je suis renvoyé sur la même page et je remarque que le numéro de compte a été modifié : le vrai numéro de compte est en réalité précédé de trois "0". Ok, donc le vrai numéro de compte est 00012345678 (pour reprendre notre exemple factice). J'ai donc à ma disposition le premier élément pour m'authentifier, l'identifiant. La deuxième information à obtenir est le mot de passe...


Etape 2 : Récupération du mot de passe

Je découvre rapidement que le mot de passe est constitué d'un certain nombre de chiffres puisque l'on me propose un clavier numérique. Bon, ça se corse car difficile de contrer ce genre de clavier (quoiqu'il paraît que des programmes malicieux - ou malwares - font des captures d'écran ...). Il y a un bouton "valider" sous le clavier numérique mais je remarque qu'il devient "cliquable" qu'une fois avoir sélectionné 6 chiffres (au hasard, ne connaissant pas le mot de passe). Ok, il y a donc exactement 6 chiffres dans le mot de passe. Reste l'obstacle du clavier mais celui-ci sera très vite déjoué puisque un lien sur la même page du site permet une authentification "autre" en cas de problème. Je clique et hop, je me retrouve sur une page où l'on peut s'authentifier sans clavier numérique mais seulement à l'aide de deux champs de formulaire classique. Sinon, il était joli le clavier :). Pour la petite histoire, au début des claviers numériques, ils ne fonctionnaient que sous IE pour la caisse d'épargne pendant une certain temps. Il suffisait alors d'utiliser un navigateur alternatif comme Firefox.
Quoiqu'il en soit, voilà qui nous simplifie la tâche puisque nous sommes alors en face d'un mot de passe faible voire très faible puisque composé d'exactement (et seulement 6 chiffres). Je pense que vous avez déjà connu plus difficile ;) Nous avons à ce stade suffisamment d'information pour lancer une attaque :
  • L'identifiant ;
  • La forme et la longueur du mot de passe ;
  • Des champs HTML pour tenter une attaque de type brute force.

Etape 3 : Récupération du mot de passe

Malheureusement ici, nous allons tout de suite devoir calmer nos ardeurs car nous entrerions dans un cadre non légal. Cependant, la technique est très simple et expliquée ici car elle peut servir dans de nombreux cas. C'est aussi l'occasion de voir un outil comme Brutus qui nous permet d'appliquer toutes les données récupérées. Normalement, ce logiciel est téléchargeable ici. Il se peut que vous rencontriez des problèmes mais Google est votre ami ;)

Tout d'abord, le panneau principal. Vous devez y choisir :

  • target = la page du site contenant le formulaire ;
  • type = HTTP (form) ;
  • port = 443 ;
  • Authentification options = checker "single user" et entrer le numéro de compte dans le champs User ID ;
  • Pass mode = Brute Force.
Ensuite, cliquer sur le bouton "Range" et le configurer de telle sorte que seuls les mots de passe de 6 chiffres seront tentés comme le montre l'image suivante :

Dernière étape du paramétrage, définir les champs de la page HTML. Brutus peut vous aider. Pour cela, cliquer sur le bouton "Modify Sequence" du panneau général. Une nouvelle fenêtre s'ouvre. Entrez l'adresse de la cible est la page et l'identifiant dans les champs correspondants puis cliquez sur le bouton "Learn Form Settings" :

Une fois trouvé, Brutus montre le fruit de ses recherches . Sélectionner alors le champ correspondant à l'identifiant et cliquer sur "Username". De même avec "Password".

Cliquez sur "Accept" et "OK" des fenêtres ouvertes pour revenir au panneau principal. Il ne vous reste plus qu'à cliquer sur le bouton "start" et l'attaque commence. Pour le post, nous nous arrêterons ici mais je pense que vous avez l'essentiel appris l'essentiel ;)

2 commentaires:

Yoann a dit…

Interessant cette article , mais peut-on vraiment parler de S.E. ? De plus tu parles d' une attaque par bruteforce ,tu n' as pas pris en compte le fait qu' aujourd'hui la plupart des sites de banques sérieux sont équipés de retardateurs qui s'incrémentent à chaque saisie erronnée :/

Jérémy RENARD a dit…

Nous sommes d'accord, le scénario proposé ne repose pas uniquement sur du SE. Le but était d'évoquer un scénario sous un angle différent à partir d'un fait (réception d'un SMS contenant les premières informations).
Quant à la deuxième partie de ta remarque, honnêtement, je l'ignorais :/ Mais remarque pertinente en effet !

Locations of visitors to this page