Jeudi, 31. Mars 2005

PermaLinkLe password http et ses faiblesses

Voici un article traitant d’une des faiblesses de Domino en terme de sécurité : Le password http.

J’ai pas mal hésité avant d’écrire cet article. Pourquoi mettre à disposition des stagiaires malveillants (et ils sont souvent malveillants les stagiaires…) le moyen de trouver la quasi-totalité des mots de passe de nos boites aux lettres (entre autre) ? Ben tout simplement car il existe maintenant plusieurs outils (notamment un) qui deviennent de plus en plus connu pour leurs efficacités et dont la publicité grandissante finira tôt ou tard aux oreilles décollées de nos stagiaires. Nous verrons par la suite comment s’en prémunir.


«one-way hash function?!??!! »
Avant d’essayer de cracker les passwords http de Domino, on doit au préalable bien connaître la manière dont notre serveur Domino les utilise.

Domino stocke les mots de passe http dans le champ HTTPPassword des documents personnes de chaque utilisateur. HTTPPassword contient une valeur du type : (DE9CA9CD7BD212362B6D312A33E10FB2).



Cette chaîne de 32 caractères résulte du hachages « one way » de votre mot de passe. Le hachage « one way » est à sens unique c'est-à-dire que l’on ne peut pas a partir de la chaîne hachée revenir à la chaîne initiale. C’est un peu comme le steak haché, essayez de reconstituer le bout de viande initial…c’est pas gagné…En fait cela à rien a voir avec le chiffrement asymétrique à clef publique utilisé par Domino pour encrypter vos mails (entre autre).
Lorsque vous vous authentifiés par le web, pour savoir si votre mot de passe est correct, Domino encode ce que vous venez de saisir et le compare avec votre HTTPPassword. Si les chaînes sont les mêmes, vous êtes authentifiés.

Sachant qu’il est inutile d’essayer de trouver le mot de passe à partir de son encodage, les solutions qui s’offrent à nous sont :
  • L’attaque par dictionnaire

  • L’attaque « brutal force »


  • L’attaque par dictionnaire :
    Prenez un gros dictionnaire Larousse et courrez après l’utilisateur pour qu’il vous donne sont mot de passe. Ca peut marcher mais vous aurez sûrement des ennuis par la suite… Lorsque l’on parle de dictionnaire c’est en fait un fichier texte regroupant tout les mots que vous voulez tester. On va encoder tous les mots du dictionnaire pour voir si leur encryption correspond à la chaîne de l’HTTPPasword. On peut trouver ces dictionnaires un peu partout sur le web :
    http://www.openwall.com/passwords/wordlists/
    http://www.packetstormsecurity.org/Crackers/index3.html

    J’ai pris le parti de regrouper les meilleurs et de les concaténer dans un seul fichier. Vous pouvez le télécharger ici.
    Maintenant que nous avons notre dictionnaire, comment faire pour l’exploiter ?

    Je connais trois solutions (il y en a peut-être d’autre):

    1. Vous créez votre agent en LS ou Java qui utilise un evaluate de la fonction @Password. Le problème c’est que c’est très lent et qu’il va vous falloir des plombes pour parcourir tout votre dictionnaire.

    2. Utiliser DHD (Domino Hash Breaker)

    DHD utilise les API du client notes pour fonctionner. Le mieux c’est d’installer DHD dans le répertoire applicatif de lotus (c:\lotus\notes). Le fichier readme est relativement clair, je ne vais pas vous le recopier ici. Voici ce que l’on obtient après le traitement :



    Il reste cependant assez lent (2300 mots par seconde avec un Athlon XP 3Ghz). Ce qui nous interdit les dicos trop longs et encore plus l’attaque « brutal force ».
    La conception de DHD n’a rien de trés compliqué en soit car elle utilise les API C de Domino. En fait cela revient un peu à la solution 1.

    3. Utiliser les sources de Jeff Fay

    Monsieur Jeff Fay est un consultant indépendant, comme moi ! . Je sais pas ce qu’il a de plus que moi celui là mais il a réussit à reproduire l’algorithme de hachage Domino. Cet algorithme est propriétaire (maintenant un peu moins…) et ne ressemble à aucun autre (MD5, MD4…). J’ai regardé les sources en C et l’algorithme est bien là, noir sur blanc. Etrange tout ça…
    Plusieurs développeurs ont utilisés ses sources pour faire des applications de hack. John the ripper possède un plug-in Domino ainsi que Lepton crack. Je me suis intéressé à ce dernier.

    Bien qu’il existe une compilation de ses sources en Delphi pour pouvoir fonctionner sous Windows, il est préférable de les compiler et de les exécuter sous Linux ou encore Cygwin. Vous verrez par la suite pourquoi.
    Je ne vais pas trop rentrer dans les détails de l’installation, encore une fois les fichiers readme qui sont très clairs.
    Lepton crack possède plusieurs modes :
  • Le mode login où il va tester le mot de passe identique au nom de l’utilisateur ou ayant un mot de passe de type « password »
  • Le mode Fast Word List ou il teste notre dictionnaire
  • Le mode Smart Word List ou, à partir du dictionnaire, il insère dans chaque mot des caractères spéciaux ou des chiffres (ex : petit5, 9petit, etc…)
  • Le mode Brute force pour tester toutes les chaînes possibles à partir des caractères qu’on lui aura précisés. Il existe un mode random qui teste les chaînes aléatoirement.


  • Vous tapez votre ligne de commande en lui précisant toutes les options souhaitées et c’est parti. Voici le résultat de quelques tests :
    J’ai exploité un names de 1363 utilisateurs.
    Le mode Fast word list me permet de trouver 444 password soit 32 %.
    Le mode Smart Word list me permet de trouver 684 password.soit 50 %
    Le mode Smart Word List avec un brutal force de 6 caractères me permet de trouver 896 password soit 67 %

    Mode utilisé Password trouvés Ratio
    Fast word list 444 32 %
    Smart Word list 684 50 %
    Smart Word List avec un brutal force de 6 caractères 896 67 %


    La vitesse de calcul diffère beaucoup que vous soyez sous windows ou linux. Comme vous pouvez le constater, je tourne sous Windows à 59 016 mots seconde alors que sous Cygwin je tourne à 123 394. Avec un P4 je suis monté à plus de 250 000 m/s !

    Sous Windows compilation Delphi


    Sous Cygwin


    Après ce tour d’horizon il est temps d’aborder les parades éventuelles. Là aussi j’en connais trois :

    1. Activer le mode « http sécurisé » dans le carnet d’adresse est une bonne parade car le hachage est réalisé avec un autre algorythme à grain de sel. Par contre cette solution peut parfois poser des problèmes techniques lorsque des applications de SSO interviennent sur ce champs (DIR XML entre autre).

    2.Utiliser une application spécifique pour changer son mot de passe http. Cette application oblige un password de plus de X caractères avec au moins X chiffres, etc… J’aime bien cette solution car outre le fait quelle sécurise ce mdp, elle fait naître chez l’utilisateur une culture du mot de passe et de la sécurité qui doit l’entourer.

    3.Les solutions d’authentification lourde (ex : activecard) court-circuite le système d’authentification Domino pour le gérer eux même. C’est la solution par excélence, chère mais imparable.


    Si vous avez des commentaires ou des rectifications à apporter n’hésitez pas à intervenir.
     Commentairesv

    1. dbill  18/01/2006 14:05:52


    J'ai lu vos explications pour trouver le mot de passe HTTP des utilisateurs. J'avoue que c'est trés instructif. Il est vrai que l'on peut exécuter des programmes qui permettrons de découvrir des mots de passes, mais j'ai une autre solution que vous n'évoquez pas dans vos solutions : le sniffer.

    L'utilisation d'un sniffer réseau permet de récupérer les trames http qui sont échangées entre le serveur Domino et les postes utilisateurs. Les trames contiennent, encodé en base 64, le nom et le mot de passe de l'utilisateur.

    Il est donc simple de récupérer les informations et de les décoder. Attention tout de même, cela fonctionne qu'avec de l'http non sécurisé.

    Voilà  c'est tout.


    2. julien  01/02/2006 11:40:36


    Pour le sniffeur :http://www.domlike.net/domlike/dl2.nsf/d6plinks/JBOE-6BBESJ#comments


    3. Benoit  02/02/2006 20:34:32


    C'est très intéressant - et également encore inquétant. Il y a tellement d'informations dans les boites mails...
    La demande de sécurité dans ma boité est de plus en plus importante au fur et à mesure que son infrastructure s'ouvre sur l'internet, donc merci pour ces articles pointus


    4. YoGi  24/04/2006 22:57:06


    "Le hachage « one way » est à sens unique c'est-à-dire que l’on ne peut pas a partir de la chaîne hachée revenir à la chaîne initiale. C’est un peu comme le steak haché, essayez de reconstituer le bout de viande initial…"

    ahah.. l'éclat de rire de la soirée !!


    5. laurent  22/08/2006 08:31:44


    Super Article, Très clair, exhaustif , bien documenté et d'un très bon niveau technique


    6. Sylvain  21/09/2006 11:10:58


    Très bonne article.
    Est-ce possible de cacher le designe de la base pour solutionner ce problème?

    Merci


    7. koyott  03/10/2006 11:27:58


    bonjour

    j'ai besoin de faire le lien entre une appli lotus notes et un serveur web. Le prestataire ne m'autorise qu'a utiliser la fonction @hashPassword. Aurais tu un lien pour que je puisse reproduire l'algo utilisée afin que je puisse réaliser le lien entre ces 2 applications ?

    merci


    8. slimani  15/03/2007 19:53:40


    quand j ecris le mot il ne veut pas marcher


    9. mehdibh1  22/08/2007 01:32:54


    je veux ecraser mon site web facillement


    10. redasoft  17/09/2007 23:18:46


    hzhzhzhzh
    k'est-ce t'a dis mehdii , tu veux ecraser ton site webb!! et facilement!! t'inquiets , mon pote j'ai ta solution ,
    fil moi ton user et pass ftp est tu verras ca sera vrm facil et trop rapide , mister du con


    11. GoodCat  03/11/2008 12:01:57


    oui "man in the middle" marche assez bien aussi ^^


     Saisir un commentaire^















    Se souvenir de mes informations    

    A propos

    Ce site est destiné à faire connaître mon travail d'expert Domino indépendant et à vous faire partager mes analyses, découvertes et humeurs autour de Lotus Domino et bien d'autres sujets.

    Hébergé sur ma Dedibox

    Bonne visite.
    A propos de moi

    Prénom: Julien
    Nom: Bottemanne
    Adresse: Toulenne (33)

    Originaire du Lot et Garonne, j'habite depuis maintenant 2 4 ans en Gironde. J'aime énormément cette région et je savoure avec ma femme et mes deux filles sa qualité de vie.

    email - julien@domlike.net

     Monthly Archive
     Search
    Contrat

    Tous le contenu de ce site est mis à disposition sous un contrat Creative Commons.

    Contrat Creative Commons

    Paypal

    RSS et autres

    Lotus Domino ND6 RSS News Feed RSS Comments Feed Geo URL RSS Validator Blog Admin Lotus Geek Open Notes Picture Database OpenNTF BlogSphere