30 mai 2007

Timing attacks

Je suis tombé il y a peu face à une description des "Timing Attack".
Ce type d'attaque s'en prend à la manière dont un algorithme est implémenté plutôt qu'à l'algorithme lui même. Elle consiste à analyser le temps pris par une implémentation de l'algorithme à éxecuter un jeu d'instruction dans différents cas de figure. Ainsi, on pourra détecter des noms d'utilisateurs valides ou l'état activation d'options de sécurité sur un système.
SSH était vulnérable jusqu'en 2003. Mais aujourd'hui bien des services restent vulnérables à de telles attaques.
Voici un Proof of Concept écrit en bash
Bien que les timing attacks ne représentent pas un danger bien grand, coder et menerl'exploit reste très intéressant et instructif!

Enjoy

29 mai 2007

Aping

Aping (advanced ping programm) est un logiciel écrit intégralement en python dans le but d'effectuer des sondes ICMP (ICMP probes). Il permet à l'utilisateur de choisir entre 4 types de sondes (là où le classique utilitaire ping n'en propose qu'une). Bien que Aping soit en cours d'écriture (V 0.4alpha) il fonctionne déjà bien, offrant d'intéressantes possibilités.
J'ai rejoint le projet il y a un mois afin de progresser en python et d'accroitre mes (maigres) connaissances à propos des réseaux.

Aping permet d'envoyer des echo request ICMP probes (tel le légendaire ping), address mask requests, timestamp requests et information requests. Le fait qu'il fonctionne à 100% en ligne de commande en fait un outil aisément scriptable. Nous avons essayé d'implémenter autant d'options que possible nécessaire (cf. la page de man du projet,écrite en parallèle par Kantor, l'administrateur et moi, contributeur)
La homepage du projet : http://directory.fsf.org/All_Packages_in_Directory/aping.html Le code source de Aping constitue un exemple (j'espère) assez bon de l'utilisation de la syntaxe objet de python ainsi que de l'usage dans ce même langage des RAW sockets..

RSA vs. factorisation

En voilà un combat sans merci, d'immenses clefs publiques contre de très efficaces algorithmes de factorisation!
Cet article à pour objectif de fournir un exemple d'utilisation de la lib msieve pour factoriser de gros entiers, permettant alors de mener des attaques contre RSA.

Tout d'abord la clef publique n et l'exposant de cryptage e:
openssl rsa -in rsa_pubkey -pubin -text -modulus
Attention, pour le transmettre à msieve, vous devez le convertir de l'hexadecimal vers la base décimale.
La factorisation m'a pris moins de 6 minutes sur un ordinateur récent:

./msieve -v 88260953927468241474867846663425636168437996919670523974529485668694484885501

prp39 factor: 292785807180363836183730601206614239829
prp39 factor: 301452296398701966007535887834606933769
elapsed time 00:05:55


L'algorithme utilisé ici est le "QS" il en existe d'autres extrêmement efficaces. Il pourrait être intéressant de distribuer la factorisation. Ici se trouve une source permettant de convertir une clef publique factorisée en une clef privée.
Msieve, lui, est disponible ici: http://www.boo.net/~jasonp/qs.html

28 mai 2007

Cryptage RSA pour systèmes *nix

RSA est l'un des plus solides algorithmes actuels. Implémenté dans OpenSSH pour sécuriser l'envoi de données sur les réseaux, il peut aisément être utilisé pour crypter des fichiers.
Quatres commandes suffisent pour celà:

Une clef privée se génère via la commande suivante (pour une clefs de 256 bits):

openssl genrsa -out rsa_privkey 2048



De la même manière, on génèrera la clef publique associée:

openssl rsa -in rsa_privkey -pubout -out rsa_pubkey



Cryptage / décryptage d'un fichier:

openssl rsautl -encrypt -pubin -inkey rsa_pubkey -in plain.txt -out
cipher.txt
openssl rsault -decrypt -inkey rsa_privkey -in cipher.txt


Maintenant si vous vous ennuyez en ce moment ou si votre ordinateur s'encroute voici pour vous occuper: J'ai entendu parler du challenge de factorisation de clefs RSA il y a quelques mois. Le challenge est ouvert ici Le plus petit modulo à n'avoir jamais été factorisé est long de 704 bits. Mais une clef inférieure à 640 bits ne peut être considérée comme sûre. Lors de mes tests, (voir dans un prochain article) il ne m'a fallu qu'une dizaine de minutes pour décrypter un fichier crypté par une clef de 256 bits!