Thursday 9 September 2010

carwhisperer pour écouter des oreillettes bluetooth

L'autre jour je testais mon oreillette bluetooth et je suis tombé sur une vidéo (http://www.youtube.com/watch?v=1c-jzYAH2gw) nous expliquant la facilité avec laquelle nous pouvons écouter des oreillettes bluetooth.

C'est parti, j'allume mon oreillette bluetooth, je compile carwhisperer (http://trifinite.org/trifinite_stuff_carwhisperer.html) et j'ai quelques soucis avec les fichiers audio raw.

Après quelques minutes de recherche voici la marche à suivre exact:

- Créer un fichier silence raw 16 bits  (avec audacity par exemple), appelons le "input-signed16bit-pcm-120sec.raw"
- utiliser ./cw_scanner pour trouver l'adresse de l'oreillette
- ./carwhisperer hci0 input-signed16bit-pcm-120sec.raw output_test.raw 00:0D:FD:0F:A3:96
- Ceci active l'oreillette et envoie un silence de 120 sec, pendant ces 120 secondes on peut enregistrer les sons à travers le micro de l'oreillette (dans output_test.raw).
- Pour transformer le raw en wav:  sox -V -r 44100 -2 -c 2 -s output_test.raw output_test.wav

Attention, ça ne fonctionne pas si l'oreillette est déjà "pairée" avec un appareil. Si quelqu'un sait pourquoi n'hésitez pas à commenter. Ceci permettrai également d'écouter une conversation en cours.

Ce petit test nous montre la simplicité avec laquelle on peut activer le micro à distance et certainement écouter des communications (?). N'oubliez pas d'éteindre vos oreillettes lorsque vous les utilisez pas ! :)

Wednesday 11 August 2010

Risques et dérives des systèmes de votation électronique

mise à jour 09.09.2010: émission à la radio sur http://www.rsr.ch/#/la-1ere/programmes/medialogues/ ou http://medias.rsr.ch/la-1ere/programmes/medialogues/2010/medialogues_20100909_full_medialogues_20100909-0930_ea9b2ec6-9690-447d-b558-6a43c461e04a-128k.mp3

(english version is following)


Introduction

Un parti politique de suisse propose depuis quelques jours de "voter", en fait de donner son avis sur un sujet politique (http://www.consultation-populaire.ch).

Dans l'ère des futures solutions de votes électroniques et de leurs multiples problèmes de sécurité (par ex. http://www.schneier.com/blog/archives/2010/05/security_analys_2.html), j'ai décidé de jeter un rapide coup d’œil au système de vote proposé par ce site.

Ce type de problème de sécurité n'est pas nouveau mais nous permet avec des outils publiques de voter à une allure "non-humaine" c'est à dire à plus de 250 votes valides en moins d'une heure. Bien sûr cette vitesse pourrait être augmentée assez aisément dans le but de nuire réellement aux résultats du vote.

Comme mentionné plus haut, nous entendons de plus en plus parler de votation en ligne ou systèmes de votation électronique, ce que cet exemple nous montre de manière flagrante c'est qu'il ne suffit pas de mettre en formulaire en ligne et mettre quelques soit-disant systèmes de sécurité pour proposer un système dont les chiffres pourront donner des statistiques fiables.

Bien sûr, ce que nous propose "consultation-populaire.ch" n'est pas un système de votation mais simplement un sondage, mais comment faire confiance à un sondage qui peut très facilement être mis en péril par des outils automatisés. Cela nous fait seulement tirer la sonnette d'alarme quant aux risques liés aux présents et futurs systèmes de votation électronique.

Veuillez prendre note que le site en question a été contacté deux fois concernant ce problème de sécurité. N'ayant pas reçu de réponse, je publie cet article afin d'informer l'opinion publique des risques liés à ce genre de système de votation, le code fourni est à utiliser en vue de recherche uniquement.



Analyse technique

L'analyse est assez rapide, puisque le système du questionnaire est tout simple. Quelques "cases à cocher" plus tard, on se retrouve devant un captcha (http://fr.wikipedia.org/wiki/Captcha).

La première chose qui saute aux yeux (en tout cas si vous faites un peu de sécurité) c'est l'apparente simplicité de ce captcha.

Pourquoi ne pas le tester ? En voila une bonne idée, voyons voir ce qui se fait en ce moment sur les "anti-captcha".

Pas d'outil miracle (quelques "proof of concept"), je décide donc de me tourner vers un logiciel de reconnaissance de texte (OCR - http://fr.wikipedia.org/wiki/OCR) et de le modifier si besoin est. Je tombe sur "tesseract" un OCR développé par HP et maintenant dans les mains de google (http://code.google.com/p/tesseract-ocr/).

Encore plus de chance, quelqu'un propose déjà un script python pour intéragir avec tesseract (http://code.google.com/p/pytesser/), malheureusement seulement sur windows.

Avec tous ces outils en main, je teste le captcha de consultation-populaire.ch en me demandant déjà comment je vais modifier tesseract pour avoir un bon taux de réussite (10% serait déjà pas mal). Et là oh surprise ! il semble dépasser les 15% de réussite mais sur un petit échantillon (moins de 50). Pas de temps à perdre, scriptons tout ça afin d'avoir des vraies statistiques sur plusieurs centaines de captcha.

Quelques heures plus tard, j'écris un script "quick & dirty" qui me permet de tester plus de 800 captcha, voici les résultats:

Captcha testés TOTAL: 837

Captcha corrects: 209

Taux de réussite: env. 25% !

Je vous rappelle que j'ai utilisé un OCR "de base" sans aucune modification, et je pense qu'avec quelques heures de travail supplémentaires on pourrait dépasser ce taux.
Qu'est ce que cela veut dire ? Et bien simplement que nous pouvons modifier les statistiques de manière automatisée avec un taux de réussite de environ 25% ("proof of concept" plus bas).



#########################################################################


Context

A swiss political party, propose since some days to give your opinion in a form that clearly makes thinking of electronic voting systems (http://www.consultation-populaire.ch).

In the future era of electronic voting solutions and their multiple security problems (eg. http://www.schneier.com/blog/archives/2010/05/security_analys_2.html), I decided to throw a quick glance at the voting system proposed by this site.

This type of security problem is not new, but it permits to vote on a very fast "non-human" way with a rate of around 250 votes an hour. This rate could, of course, be easily improved with a more agressive approach.

As mentioned earlier, we hear more and more about on-line voting or electronic voting systems, this example shows that it is blatantly not enough to provide on-line form with some sort of so-called security systems to provide a system that could give reliable statistics.

Of course, what "consulting-populaire.ch" offers is not a voting system but simply a survey, but how to trust a survey that can easily be jeopardized by automated tools. This only makes us thinking about the risks for present and future electronic voting.

Please be informed also that the vendor has been informed about the security problem two times. As I don't received a response, I published this article as a proof of concept, use the code provided for research only.



Analysis

The analysis is quite fast, since the system of the questionnaire is simple. Some check-boxes later, we are faced with a captcha (http://fr.wikipedia.org/wiki/Captcha).

The first thing that is clear (at least if you do a bit of security) is the apparent simplicity of this captcha. It could be interesting to try, let's see what is new on the anti-captcha side.

I didn't find a miracle tool (a few "proof of concept"), so I decided to turn myself to some recognition software (OCR - http://fr.wikipedia.org/wiki/OCR) and modify it if necessary is. I came across "tesseract" OCR developed by HP and now in the hands of google (http://code.google.com/p/tesseract-ocr/).

More likely, someone already has a python script to interact with tesseract (http://code.google.com/p/pytesser/), but unfortunately only on windows.
With all these tools in hand, I tested the captcha of "consultation-populaire.ch" and was already wondering how I will change tesseract to have a good success rate (10% would not be bad).

And then surprise! the success rate seems higher than the 15% success but only on a small sample (less than 50). No time to loose, let's make a script to have accurate statistics on hundreds of captcha.

A few hours later, I wrote a script "quick & dirty" which allows me to test more than 800 captcha, here are the results:

Captcha tested TOTAL: 837
Captcha correct: 209
Success rate: approx. 25%!


Don't forget that I used an OCR "basic" without modification, and I think with a few extra hours of work we could easily exceed this rate.
What does it mean? Well, just that we can change the statistics in an automated manner with a success rate of about 25% ("proof of concept" below).




#########################################################################

Download the proof of concept: anticaptcha.py