Titre de l'article : La mort des CAPTCHA : Comment les pirates arrivent-ils à les casser ?
Auteur : Nicolas Kerschenbaum, consultant sécurité XMCO
Couriel : Nicolas.Kerschenbaum@xmco.fr
Date : 20/06/2008
Version complète en PDF : Actusécu n°19


Les attaques contre le CAPTCHA

Le CAPTCHA, mis en place dans les années 2000, a été jusqu'à aujourd'hui une protection incontournable pour différencier l'homme d'un robot.
Les pirates ont compris l'intérêt de casser cette méthode afin de pouvoir polluer les forums ou de créer automatiquement des comptes mail.

Depuis quelques mois, les techniques d'attaques contre les CAPTCHA se développent.
Présentation et explications des différentes techniques utilisées par les pirates...

Introduction

Présentation des CAPTCHA

Le SPAM est devenu, année après année, un fléau qui ne cesse de progresser. Les pourriels représentent une part de marché de plus en plus importante chaque jour.
On estime à près de 90% le pourcentage des emails publicitaires et frauduleux sur l'ensemble des emails envoyés à travers le monde…autant dire que la guerre est perdue...
Le SPAM peut également revêtir une autre forme, les spammeurs tentent de s'attaquer au contenu de forums afin d'y insérer leurs publicités ou redirection vers d'autres sites malveillants.

Auparavant, aucun mécanisme ne pouvait empêcher des outils et des virus de créer des comptes sur les webmails ou d'insérer des commentaires au sein de forums de manière automatisée.

Afin d'y remédier, les développeurs ont mis en place à partir de 2000, le CAPTCHA (Completely AutomatedPublic Turing test to tell Computers and Humans Apart), méthode destinée à différencier les humains des machines. Cette méthode repose sur le principe qu'en fournissant une image contenant des caractères déformés, seul un humain était capable d'en extraire lecontenu et de saisir les lettres sur son clavier.

Le CAPTCHA est particulièrement utilisé sur les forums ou sur les webmails lors de la création de comptes ce qui empêche les spammeurs de mener leurs campagnes publicitaires de manière automatisée.

Les pirates face aux CAPTCHA

Face à ces protections, les pirates ont dû trouver des moyens de continuer à polluer la toile.

En effet, l'utilisation de serveurs piratés ou loués pose toujours le même problème (voir ActuSécu n°18). Ces derniers sont rapidement identifiés en tant que serveurs de SPAM par les organismes dédiés (Spamhause...).
Les logiciels anti-spam qui se basent également sur des listes noires peuvent alors contrer les tentatives des spammeurs.

Les pirates se sont donc concentrés sur des méthodes de contournement de ces CAPTCHA. Les enjeux sont de taille, en réussissant à contourner cette protection, les spammeurs peuvent automatiser des requêtes afin d'utiliser les serveurs de messagerie de sociétés réputées (Gmail, Microsoft, Yahoo, ...) afin que les emails ne soient pas bloqués auprès des filtres anti-spam. En utilisant les adresses IP de serveurs de confiance, les pirates passent ainsi à travers ces filtres (si aucune autre règle n'a été mise en place pour refuser les emails provenant des MX de ces sociétés).

Voilà pourquoi les spammeurs s'attaquent aux méthodes de contournement des CAPTCHA des webmails et les forums les plus implantés. Dans la suite de cet article, nous vous présenterons les techniques utilisées par les attaquants.

Les CAPTCHA actuels

Onze années après son invention, les algorithmes de génération se sont améliorés et diversifiés (avec l'apparition de captcha audio) afin de contrer les attaques des pirates.
Le CAPTCHA visuel reste le plus utilisé, mais son efficacité varie d'un algorithme à un autre.

Certains CAPTCHA sont donc plus simples à casser que d'autres.

Les CAPTCHA actuellement utilisés ont tous été cassés avec des taux de réussite variés. Cependant, un algorithme de décodage ne doit pas être jugé qu'en fonction de son pourcentage de réussite.


En effet, le temps nécessaire pour décoder est un paramètre également primordial. Un algorithme nécessitant 5 secondes avec un taux de réussite de 10% sera, suivant la situation, préférable à un algorithme permettant de décoder un Captcha en 1 minute avec un pourcentage de réussite de 90%.

"Les attaques des CAPTCHA se développent de plus en plus et leur efficacité ne cesse de progresser notamment grâce au partage et à la mise à disposition de code sources"

Le CAPTCHA de Microsoft Live Hotmail, réputé comme l'un des plus robustes, a été récemment exploité par un malware (voir la partie dans la suite de l'article). Deux mois auparavant, c'était GMail qui était la cible d'attaques.

Les attaques se développent de plus en plus et leur efficacité ne cesse d'augmenter notamment grâce au partage et à la mise à disposition de code source. Ces attaques ne nécessitent plus d'ordinateurs puissants. Les algorithmes développés peuvent à présent casser n'importe quel CAPTCHA en quelques secondes.

Cependant, certains CAPTCHA ne sont pas forcément évidents, même pour l'être humain (ci-dessous 2rV2prn ou 2rV2pm).



Voici les principaux CAPTCHA utilisés actuellement :


Les différentes techniques utilisées par les pirates

Plusieurs techniques d'attaques ont été élaborées pour parvenir à contourner cette protection.

La méthode manuelle

Afin d'obtenir la chaîne de caractères correspondant au CAPTCHA, certains groupes de pirates industrialisent le procédé. Ils emploient des personnes décodant des CAPTCHA tout au long de la journée. L'attaque est complètement manuelle.

De nombreuses annonces sur Internet rémunèrent ce type de travail.



Cette annonce rémunère 1$ les 1000 CAPTCHA. Les employés travaillent environ 50 heures par semaine en fournissant une moyenne de 500 CAPTCHA toutes les heures.
Une solution moins « onéreuse » consiste à utiliser les particuliers pour réaliser cette tâche. Part le biais de logiciels ou de sites internet, les utilisateurs doivent décoder un CAPTCHA afin d'accéder à un contenu privé (photos pornographiques, inscription à des forums, téléchargement de fichiers...).

Le CAPTCHA suivant n'est en aucun cas utilisé à des fins de sécurité, mais uniquement pour créer des comptes email à l'insu de l'internaute.


Logiciel utilisant l"utilisateur pour décoder le CAPTCHA de Yahoo Mail



Forum utilisant les nouveaux utilisateurs pour décoder le CAPTCHA de Yahoo


Le schéma ci-dessus présente cette technique.



1) L'utilisateur souhaite accéder à un contenu pornographique ou privé ou poster un commentaire sur un forum contrôlé par un spammeur.

2) Le site pirate envoie une requête à un serveur de messagerie afin de créer un nouveau compte.

3) Une fois la réponse du serveur de messagerie, le site pirate analyse la page reçue pour en extraire le CAPTCHA.

4) Celui-ci est envoyé au particulier. L'internaute est alors invité à décoder le CAPTCHA.

5) Ce dernier décode le CAPTCHA et envoie au site pirate la chaîne de caractères.

6) Celle-ci est transmise au serveur de messagerie.

7) Si la chaîne de caractère correspond au CAPTCHA fourni, un compte Yahoo est créé avec succès et l'utilisateur reçoit la ressource convoitée, sinon le processus recommence.


Cette attaque s'apparente aux attaques de type MITM (Man In The Middle).

La récupération de CAPTCHA en masse

D'autres spammeurs tentent d'autres techniques d'attaques afin de constituer une base de connaissance de toutes les combinaisons possibles. Ces rainbowtables (bases exhaustives contenant un CAPTCHA et sa chaîne de caractère associée) permettent ainsi de réduire considérablement le temps de traitement d'un CAPTCHA puisque le calcul a été réalisé auparavant.

En comparant l'empreinte du CAPTCHA à décoder avec celles détenues en base, le temps de réponse est de l'ordre de la milliseconde.

Récupération automatique des CAPTCHA de Yahoo :





Et les CAPTCHA audio?

Les Captcha audio, moins répandus, sont également la cible d'attaques. La chaîne de caractères à saisir est alors épelé accompagné d'un bruit de fond. L'utilisateur doit donc comprendre les lettres dictées et soumettre la chaîne de caractères correspondante.

Dernièrement, un code PHP à été mis en circulation, décodant les captcha audio anglais des forums SMF (Simple Machine Forum).

http://securitydot.net/vuln/exploits/vulnerabilities/articles/24699/vuln.html




Des scripts sont disponibles dans l'objectif de récupérer un grand nombre de CAPTCHA afin de les traiter par la suite.

Extrait des CAPTCHA récupérés grâce au script php.



Des scripts récupérant les CAPTCHA des serveurs de messagerie les plus importants sont disponibles depuis les liens suivants :

Yahoo : http://maluc.pastebin.ca/939379
Hotmail : http://maluc.pastebin.ca/939368
Hotmail (Audio) :http://maluc.pastebin.ca/939373
Google : http://maluc.pastebin.ca/939381
Google (Audio) : http://maluc.pastebin.ca/939622

L'utilisation de la reconnaissance de caractères

La reconnaissance de caractère (OCR), inventée en 1953, permet de déterminer le texte contenu dans un document sous forme d'image. Cette technologie a fait d'énormes progrès ces dernières années.



Voici les différentes étapes nécessaires au décodage d'un CAPTCHA:

- Suppression du bruit et mise en noir et blanc. Les pixels parasites sont supprimés. Le fond est blanc tandis que la chaîne est en noir.



- Segmentation. L'image est découpée en plusieurs segments contenant chacun un seul caractère.



- Identification de la lettre contenue dans chaque segment.



Des algorithmes permettent ainsi d'automatiser cette tâche fastidieuse.
La plupart sont payants et se vendent entre 3000$ et 5000$.

Le site CAPTCHA Killer propose ce service gratuitement.





Ce site met à disposition une API permettant d'automatiser les actions sans passer par le site ainsi qu'un plugin firefox (voir info).


CAPTCHA KILLER et l'extension Firefox...

Le site CAPTCHA killer propose même un plugin Firefox. Ce dernier permet en un clic droit d'envoyer le CAPTCHA vers le serveur qui se chargera via la méthode de reconnaissance de caractère de renvoyer à l'utilisateur la correspondance. Lors de nos tests, le taux de réussite s'est élevé à 80% pour le captcha de Yahoo mais le temps de traitement était assez long (de 25 secondes à 4 minutes).







Des malwares ont également été développés afin d'automatiser la création de comptes depuis les postes infectés.



1) Un malware, installé sur un poste infecté, envoie une requête à un serveur de messagerie afin de créer un nouveau compte.

2) Le malware analyse la page reçue par le serveur et en extrait le CAPTCHA.

3) Le CAPTCHA est envoyé au serveur pirate.

4) Le serveur résout le CAPTCHA (à l'aide d'un outil de reconnaissance de caractère ou d'une personne traitant chaque requête) et envoie le code au malware.

5) Le malware peut alors valider l'inscription d'un compte dédié au spam enregistré avec l'IP d'un particulier.

6) Le serveur indique si le code transmis est valide.

7) En cas de succès, le malware envoie au serveur pirate les identifiants générés (adresse email, mot de passe), sinon un nouveau processus d'enregistrement est lancé.


De manière générale, un poste infecté crée une vingtaine de comptes, afin d'éviter de blacklister l'IP du poste compromis.

Les CAPTCHA du futur

Les modèles 3D

Comme nous l'avons vu, les CAPTCHA basés sur la reconnaissance de caractères sont de plus en plus contournables. Les CAPTCHA audio, jugés plus faciles à contourner et plus difficiles à implémenter (la prononciation des lettres est différente dans chaque langue), ne peuvent pas remplacer les systèmes actuels.

Les algorithmes se complexifient de plus en plus , jusqu'à rendre l'image ininterprétable pour un humain.
Des algorithmes ont alors développé surdes modèles en 3D.



Ceux-ci, plus efficaces que les CAPTCHA en 2D ne seront sûrement pas implémentés. En effet, il a été démontré qu'ils étaient cassables (rotation de l'image), mais en un temps nettement plus important avec des ressources plus performantes.





Reconnaissance d'images

Microsoft a rendu disponible, en version béta, le projet Asirra (Animal Species Image Recognition for Restricting Access).



Ce système, jugé plus simple et plus ludique, demande à l'utilisateur de sélectionner toutes les photos contenant un chat parmi des photos de chats et de chiens. Ce nouveau système laisse à penser qu'un ordinateur ne pourra pas différencier un chat d'un chien.
http://research.microsoft.com/asirra/

Le projet, largement inspiré de HotCAPTCHA, a été jugé plus éthique. En effet, HotCAPTCHA propose à l'internaute de choisir 3 photos parmi 9, celles représentant les femmes ou les hommes les plus attrayants.




Cependant, des chercheurs développent dès à présent des algorithmes afin de casser ces systèmes, basés sur la reconnaissance de forme et de textures.




Textures disponibles


Forme déterminée
http://www.cs.berkeley.edu/~fowlkes/project/boundary/pb/index.html
http://www.cs.berkeley.edu/~fowlkes/project/boundary/index.html

Conclusion

Les algorithmes et les techniques de CAPTCHA actuellement utilisées sont tous faillibles. Le CAPTCHA n'a jamais été une protection, mais seulement un moyen censé empêcher les spammeurs de polluer les forums et nos boites emails.
Que peut-on faire aujourd'hui pour contrer ces pirates ?
À l'heure actuelle, la réponse n'a toujours pas été trouvée. Les futures implémentations des CAPTCHA devront utiliser des algorithmes complexes pour que le décodage et l'interprétation automatique soient plus coûteux qu'un traitement humain.
Mais peut-on réellement imaginer un algorithme que seul un humain puisse résoudre ?

Webographie

- Analyse Captcha :
http://www.w3.org/2004/Talks/0319-csun-m3m/
http://sam.zoy.org/pwntcha/
http://homepages.cs.ncl.ac.uk/jeff.yan/msn_draft.pdf
http://ocr-research.org.ua/index.html

- Reconnaissance de formes et de textures :
http://www.cs.berkeley.edu/~fowlkes/project/boundary/index.html

- Reconnaissance de caractères :
http://www.lafdc.com/soft/ocr163.rar
http://www.brains-n-brawn.com/default.aspx?vDir=aicaptcha

- Analyse de malwares :
http://securitylabs.websense.com/content/Blogs/2919.aspx
http://securitylabs.websense.com/content/Blogs/3063.aspx
http://blog.wintercore.com/?p=11#more-11






















Actualite Securite

Notre newsletter "L'ActuSécu"


> Qui sommes-nous ?

+ La société

+ XMCO dans la presse