mercredi 26 décembre 2007

Manipulate lsass.exe for fun and profit.

Bonjour à tous,
Alors déjà tout d'abord, un joyeux noël s'impose!
En espérant que le barbu vous a comblé :].
Revenons aux choses sérieuses.

C'est le fichier SAM qui va nous intérésser aujourd'hui.
Tout d'abord qui ne connais pas le fichier SAM?
C'est enfaite le fichier qui va contenir, les informations de sessions : les mots de pass y compris.
Il faut savoir que ce fichier est biensure, illisible, et inaccessible lorsque nous sommes sur notre session.
Il est en quelque sorte 'verrouillé' par le systeme.
Il existe donc deux alternatives pour nous :

- L'on boot sur une distribution linux par exemple, où l'on va copier le sam sur un périphérique de stockage.
- On utilise un outil comme pwdump.

Le fichier SAM contient les mots de pass encodé dans deux algorithme différent à savoir : LM hash et le NTLM hash.
Parlons à présent de lsass.exe.
C'est un processus natif de windows depuis Windows 2000 me semble t-il, lsass tout d'abord signifie "Local Security Authority Subsystem Service".
Autrement dit ce processus va permettre de gerer la connection aux sessions localement.
C'est en quelque sorte le serveur local d'authentification de windows.
Bon certains d'entres vous, pourraient se demander pourquoi on injecte dans lsass.exe et non dans un autre processus system?Comme svchost.exe.
J'ai moi même tenter d'injecter dans svchost.exe, mais sans réussite, je serais donc tenter de dire que les fonctions utilisées sont résérvées à lsass.exe ?
Je vous tiens au courant, lorsque j'en serais plus -> c'est qu'enfaite le service manipulant les users locaux est 'dirigé' par lsass.exe voir lien en bas de page.
Le mode opératoire est donc simple :

- Nous allons tout d'abord donner les droits de debugs à notre executable.
- Notre executable ira injecter une dll dans lsass.exe, c'est pour cela qui nous faut le debug privilege, afin d'injecter lsass.exe
- A présent à la dll de jouer !
- Elle va appeler successivement des apis exportés par samsrv.dll, qui seront ni plus ni moins des fonctions utilisés afin de 'rentrer' en contact avec le SAM.

Au final nous aurons 'manipuler' lsass.exe afin de pouvoir récupérer la liste des users, ainsi que leurs mot de pass hashés dans les deux algorythme cités plus haut.
Pour mener à bien ce projet, je me suis permis d'analyser les sources de pwdump un petit peu : ça permet de savoir un peu où l'on va.
Ce que je vous recommande aussi, c'est d'éviter de faire des tests sur votre propre système, car lsass.exe en cas de problème va vous faire redemarer.
Je vous conseille alors l'utilisation de machine virtuel, souvent abrégée 'vm' afin de pouvoir mener à bien vos tests !
Les quelques nostalgiques d'entre nous, se rappelleront du célèbre ver Sasser qui utilisait une faille présente dans le processus lsass.exe justement.
Enfin bref, je vous présente une petite vidéo réalisé par mes soins afin d'illustrer un peu cette article.
Elle montre que mon petit outil fonctionne à merveille :).
Voici le lien : s4mmy.wmv.

Je vous présente aussi un petit screenshot :



Et un autre :



Et enfin mon petit code :
- L'injecteur : s4mmy.c.
- La dll : sc0ubi.c.

Liens et outils utiles :

-Les sources du projet pwdump -> http://www.google.com/codesearch?hl=fr&q=show:XLfFm6CSy7k:uYtRtXzYO5g&sa=N&ct=rdp&cs_p=http://www.openwall.com/passwords/dl/pwdump/pwdump2.zip&cs_f=pwdump2
- Et notre fidèle LordPe, pour aller voir l'Export Address Section de samsrv.dll par exemple.
- Et biensure une machine virtuelle.
- LM Hash -> http://en.wikipedia.org/wiki/LM_hash.
- NTLM Hash -> http://en.wikipedia.org/wiki/NTLM.

Voilà pour cette article, en espérant que ça servira a certains cya.
scoubidoubidou !

PS : merci santa -> http://assiste.com.free.fr/p/services_windows/gestionnaire_de_comptes_de_securite.html

Aucun commentaire: