vendredi 7 octobre 2011

Amusons nous cinq minutes avec les certificats frauduleux.

On m'a fait suivre il y a quelques temps un post de blog expliquant le "Man in the Middle" sur le blog orange sécurité. Le tout en vidéo s'il vous plaît!
Et là, c'est tout simplement énorme la sécurité expliquée aux newbies. Le man in the middle, c'est tout simple, la vidéo peut se résumer à:
J'envoie un certificat frauduleux, le navigateur n'y voit que du feu.
Certes, certes, certes. C'est effectivement tout simple, il suffit tout simplement d'un certificat frauduleux, et hop.

Je propose d'autres sujets de sécurité pour le prof:
"Lire des documents chiffrés via AES". Alors on a un document chiffré via AES, on fait un bruteforce frauduleusement et on a la clé, alors on peut lire les informations dans le document chiffré!

"Voler une session Facebook". Alors on a un utilisateur qui se connecte sur facebook, on lui vole frauduleusement son cookie de session, et alors on peut se connecter avec ses droits!

"Exploiter une application" Alors on a une application, on lui envoie frauduleusement un buffer overflow, et alors on peut lui faire exécuter du code!

Je m'arrête là, mais on pourrait continuer longtemps :-)
La sécurité informatique ça a l'air tellement simple qu'on se demande pourquoi on en parle encore, ça devrait être réglé depuis le temps.

jeudi 6 octobre 2011

Différencier ses sessions de surf internet

Le surf sur internet est loin d'être une activité anodine. A l'aide du même outil, un navigateur internet, on surf aussi bien sur le site de sa banque, que l'on consulte ses mails personnels et professionnels, on joue à des jeux flashs, on twitte on blog, on lit des flux RSS, etc...
Tout le monde connaît les dangers du XSS, CSRF etc, je ne reviens donc pas dessus. J'ai choisi depuis quelque temps de différencier mes navigateurs webs selon les usages. Cette idée m'est venue sur le site d'invisible thing labs lors de la présentation de Qubes OS qui pousse le concept de séparation inter applications à l'extrême. N'ayant pas de machine compatible Qubes, j'utilise un linux standard avec firefox et chrome majoritairement, chacun ayant leur rôle particulier. Pour les sessions risquées et pour être sûr des flux sortant de ma machine, j'ai déjà lancé un navigateur dans une machine virtuelle (lguest) accédée via vnc et détruite après usage, mais la lenteur de la mise en route de ce genre de solution ne le rend pas viable au quotidien, partie essentielle du concept. S'il faut 5mn pour lancer un navigateur "sûr" alors à terme, on ne le lancera plus. S'il faut 3s, alors on copie-colle l'URL "louche" et le risque est réduit.

Sous Chrome, je vais sur des sites "personnifiés", banque, mails, impôts.
Sous firefox je fais du "random browsing" ou des consultations de sites impersonnels (webmails où j'utilise différents pseudos ou identités poubelles). Ainsi, je m'évite des problèmes de sécurité liés à l'utilisation d'un navigateur unique, un onglet firefox me demandant mon adresse gmail me mettrai par exemple immédiatement la puce à l'oreille! De plus, le visuel largement différent entre les deux navigateurs me permet d'un coup d'oeil de ne pas me tromper.

Les réglages proxy de l'un n'influent pas l'autre. Je peux donc vérifier le cas échéant les certificats des sites https depuis deux sources distinctes: chrome en direct, firefox via tor, un petit peu à l'image de ce que proposait Moxie Marlinspike (vérifier depuis plusieurs sources les certificats pour en attester la validité).
Plus intéressant les cookies sont différents, dont les cookies de sessions. Ainsi, je peux être loggé sur le site A sur Chrome et surfer sur A depuis firefox sans être loggé, ce qui peut être utile.
J'ai lu un message de l'équipe de Chrome qui expliquait commet twitter "LIKE A BOSS" (cf l'user agent). Ce sont un peu les mêmes raisons encore une fois. Un navigateur par type d'utilisation. Et le navigateur reste cloisonné dans la session qu'on lui alloue.

Je cherche désormais à pouvoir utiliser différents DNS par navigateur afin de pouvoir circonvenir les sorties possibles. Pour reprendre l'idée précédente, si je veux "touiter comme un boss", j'aimerai que les seuls IP résolvables par mon navigateur soient celles de *twitter.com. Il faut que je creuse un peu la doc.

mercredi 5 octobre 2011

Mois du microblogging

J'ai accumulé ces derniers temps un certain nombre d'articles trop courts pour en faire un post de blog. Le mois d'octobre sera un mois du microblogging pendant lequel je vais les diffuser un par un jusqu'à épuisement des stocks. Il s'agit souvent d'idées non forcément vérifiées ou validées, exposées dans des messages relativement courts et ouverts à polémique.

Le premier micro article date du mois dernier, et de l'attaque de Diginotar par un soi-disant étudiant iranien. Est il possible de remonter à l'attaquant? Une partie de son premier message sur pastebin avait retenu mon attention:
Have you ever heard of XUDA programming language which RSA Certificate manager uses it? NO! I heard of it in RSA Certificate Manager and I learned programming in it in same night, it is so unusual like greater than sign in all programming languages is "<" but in XUDA it is "{"
ainsi que le troisième:
all files was coded in XUDA (there is no reference to XUDA programming language, even a single line),
On peut vraisemblablement penser qu'il a dû faire quelques recherches sur le langage Xuda, on peut également raisonnablement espérer qu'il ne surfe pas en permanence via tor (ou système équivalent). Le moteur de recherche sur internet le plus couramment utilisé est google. La seule info que l'on peut piocher chez google est google trends:
http://www.google.fr/trends?q=XUDA&ctab=0&geo=all&date=2011&sort=0
qui fait plutôt référence à la turquie, mais les résultats de google trends sont très variables aussi je n'y accorderai qu'une confiance modérée.

Ce qui signifie que si on pouvait avoir accès aux logs complets chez google (et où d'autres moteurs de recherches) il serait facile de vérifier si des recherches sur le langage XUDA ont été faites depuis une cité universitaire iranienne (ou pas) :-)