lundi 20 avril 2009

[Pentesting] [Messaging] Lotus hacking

Nous continuons sur les posts techniques en nous attaquant cette fois à un autre type de serveur : le serveur de messagerie. Et plus exactement, l'attaque portera sur un serveur LOTUS. Nous verrons que l'attaquant peut encore une fois frapper très fort par cette voie.


1 - Briefing: Lotus

Le post est à but purement éducatif et ne devra en aucun cas être testé sur un réseau qui ne vous appartient pas, en tout cas, sans autorisation.
Il s'agit ici de donner une démonstration tiré d'un article paru dans le HS n°1 de MISC. Se référer à celui-ci pour plus d'information.
Nous agissons ici de l'extérieur puisque nous nous focalisons sur la partie webmail de la messagerie.


2 - Repérage de la cible

Trouver la messagerie de la compagnie auditée n'est pas difficile. Il y a la méthode que j'appelerai "intuitive" qui consiste à deviner le nom. Par exemple : mail.compagny.com, webmail.compagny.com, mx.compagny.com, etc...
Et il y a la méthode plus intelligente ;) Il suffit d'exécuter une requête DNS sur le champ MX :

dig MX compagny.com

Notre cible utilise du Lotus ? Alors à l'attaque !


3 - Des informations bien utiles ...

3.1/ Récupération d'informations intéressantes

Nous allons regarder dans une premier temps si nous avons accès aux fiches des utilisateurs. Pour cela, essayer d'ouvrir le fichier names.nsf. Par exemple, à l'adresse : http://mail.compagny.com/names.nsf. Vous devriez avoir les listes des utilisateurs ! Cliquer sur ceux qui ont un icône "terre" et qui ont donc un accès webmail. Vous devriez trouver facilement ... le login ! ça commence plutôt pas mal, non ?

3.2/ Récupération des comptes adminitrateur

Obtenir le compte d'un adminitrateur nous permettrait une compromission encore plus importante dans le sens où cela nous permettrait d'obtenir des accès sur le système hôte. Comment connaître l'identité de l'administrateur de la messagerie ? Deux manière au moins :
  • Regarder les mailing-lists. L'une d'elles pourraient s'appeler mail_adminitrator ou quelque chose du genre. Sinon, toutes les listes d'administration pourrait être intéressante pour connaître les utilisateurs-clé ;)
  • Regarder la configuration du serveur Lotus si celle-ci est accessible en lecture au moins. Le ou les nom(s) des adminitrateurs de la messagerie devraient vous être fournis sur un plateau ...

3.3/ Récupération des hashes

Et c'est à partir de maintenant que ça fait peur ! Mal configuré - comme souvent - il est possible de connaitre le hash du mot de passe des utilisateurs depuis Internet. ça ne peut pas être si simple me direz-vous ? En effet, c'est encore plus simple que ce que vous pouvez penser !

  • Sélectionner la fiche de votre utilisateur cible ;
  • Faire un clic droit sur sa fiche et choisir "Ce cadre" puis "Code source de ce cadre" (éventuellement en anglais) ;
  • Dans le code source, faire une recherche sur la chaîne HTTPPassword ;
  • Récupérer la valeur dans le champ "value" sans les guillemets mais avec les parenthèses ;
  • C'est tout !
Il existe deux formats de hash que nous pouvons récupérer (éventuellement sur le même serveur) :
  • le format plus ancien :
  • le format plus récent basé sur du MD5 + sel :


4 - Juste une histoire de mot de passe

Nous avons donc obtenu un hash et en bon agent que vous êtes, ce n'est certainement pas la première fois que vous avez un hash à déchiffrer. Ici, notre arme de choix est le célèbre casseur de mot de passe, nommé John ! John the Ripper [1] !
Néanmoins, nous aurons besoin d'utiliser une version avec les patches qui vont bien. Perso, j'utilise john-banquise [2] qui contient les patches pour Domino dont nous avons besoin.
Ensuite, nous avons besoin de lancer John avec le format approprié :

  • pour les hashes de format ancien :
john --wordlist=dictionary.txt --rules --format=lotus5 liste_hashes.txt
  • pour les hashes de format récent :
john --wordlist=dictionary.txt --rules --format=DOMINOSEC liste_hashes.txt

Le fichier liste_hashes.txt doit être de la forme suivante :
prenom1Nom1:(hash1)
prenom2Nom2:(hash2)
prenom3Nom3:(hash3)
...

5 - Conclusion

Nous avons vu comment avoir accès à la messagerie d'un utilisateur sans difficulté particulière (sauf si le mot de passe était complexe). Cependant, nous n'avons pas tout vu.
En externe, il faut savoir qu'une fois le compte adminitrateur de la messagerie en notre possession, il est possible d'exécuter des commandes arbitraires sur le système hôte !
En interne, d'autres attaques, différentes, peuvent être jouées. Notamment, elles tournent autour du fichier id.


Et n'oubliez pas, have fun! :)

3 commentaires:

Benjamin a dit…

Post sympa :)

web a dit…

This is the most successfull attack against lotus domunos ; And work great .

Great for penetest .

Dnucna a dit…

Il faut que je trouve le moyen d'essayer ça :)

Sinon nikto et webshag ont des listes de pages nsf qui peuvent avoir des problèmes de sécurité ou de droits.

Ça vaut toujours le coup de passer un petit scanner :)

Locations of visitors to this page