Dump mémoire sur Vista

Je rage… tout comme Zythom, j’ai une bonne trentaine de billets en mode « brouillon » sur mon blog, et je n’arrive pas à m’y remettre. Tant pis, passons à la suite !

Comment faire un dump de la mémoire d’un Vista ?

En vue du challenge Insomni’Hack09, et pour d’autres raisons, j’avais besoin d’un dump de la mémoire de mon Vista en cours de fonctionnement.

Méthode 1 : fichier d’hibernation ==> X-Ways / Sandman

Mon X-Ways Forensics permet de capturer la mémoire d’un ordinateur… mais pas sous Vista… Il permet de décompresser puis d’analyser un fichier d’hibernation hiberfile.sys (cf. note en bas du billet), mais ce n’est pas exactement ce que je voulais. A ce sujet, la librairie sandman, développée par Matthieu Suiche et Nicolas Ruff et qui sert justement à travailler sur ce fameux fichier, avait été honteusement repompée par l’auteur de X-Ways alors que la licence GPL l’en interdisait. Lors de l’évènement cela avait fait des vagues, d’ailleurs. Cela semble désormais résolu mais bon…

Méthode 2 : à chaud ==> les outils MDD de ManTech, et win32dd de Matthieu Suiche

Revenons à nos moutons mémoires. Comment effectuer un dump complet de la RAM sous Vista ? Laissez tomber X-Ways Capture, qui bien que très onéreux ne sait pas le faire.

Plutôt que de dépenser dans des outils qui ne marchent pas correctement, je vous conseille l’un des deux excellents outils open-source Win32dd de Matthieu Suiche,  ou bien encore MDD (MemoryDD) de ManTech. Ce dernier ne dumpe pas tout correctement car Vista est une sale bestiole qui ne se laisse pas faire, mais c’est déjà bien. Simple, rapide et efficace ! Je vous ai mis la capture d’écran de ce que ca donne chez moi en haut de ce billet, comme on voit c’est simple.

Une fois le dump mémoire fait, on peut s’amuser à l’ouvrir avec X-Ways Forensics ou de nombreux autres outils sympathiques.

Analyse live de la mémoire : quelques outils

Difficile sous Vista il semble. Pour ma part je n’ai pas encore eu besoin de le faire, mais OllyDbg, SysInternals Process Explorer, PEiD et ses plugins, ainsi que le débogueur de IDA Pro m’aident de temps à autre… mais pas pour analyser la mémoire totale, juste des process qui tournent. Je suis certain qu’il existe d’autres outils mais je ne m’en sers pas, ne les connais pas ou n’en ai pas le besoin !

L’outil Meminfo est intéressant également, il permet en complément de Sysinternal Process Explorer d’avoir certains détails utiles sur la manière dont Windows gère la mémoire… Le blog de son auteur présente un très bon article sur son utilisation.

Je conseille aussi l’excellent mais très technique blog de Matthieu Suiche qui regorge d’informations sur le débogage et les analyses forensics de Windows, notamment de la mémoire vive. Les outils et le forum Sysinternals (repris par Microsoft) de Mark Russinovich sont également incontournable.

Addendum : Comment lire un fichier Hiberfile.sys sous X-Ways Forensics
J’aime beaucoup X-Ways Forensics, c’est un outil très très puissant mais il a également un très très gros défaut : sa documentation, si j’ose dire. Stefan Fleishmanm est certainement un développeur excellent et passionné qui ne cesse d’ajouter des fonctions à ses produits, mais la documentation ne suit pas, on doit souvent se contenter des seules annonces de nouveautés d’une version à l’autre pour tenter de deviner comment ça marche, ou bien encore du forum utilisateur, lorsque ces derniers osent poser leurs questions. Ce qui suit paraît simple mais j’ai passé au moins 2 heures pour trouver. Hallucinant !

Les dernières versions du produit annoncent en effet que l’on peut faire de l’analyse de la RAM et des fichiers d’hibernation, certes, mais comment ? Alors plutôt que de galérer comme moi, voici la solution :

1. S’arranger pour obtenir une copie du fichier hiberfile.sys généralement situé à la racine de C:. Windows ne laissera pas faire, en prétextant que le fichier est en cours d’utilisation. En revanche si on attaque soit via un liveCD, soit bas-niveau donc au niveau du disque dur on peut sans souci faire une copie du fichier. Sous X-Ways, ouvrir le disque dur (F9), localiser le fichier et en faire une copie. Tout simplement.

2. Décompresser le fichier. Même si hiberfile.sys fait la taille totale de la RAM, soir 3.6Gb pour moi (saleté de Vista 32 bits, je ne profite même pas de mes 4Gb!), il est compressé et X-Ways ne peut pas l’interpréter correctement. Il faut donc quitter X-Ways Forensics, et le relancer en mode WinHex (qui contrairement à la version Forensics a le droit d’écrire, donc de décompresser). Ensuite, ouvrir un « New Case » et faire « Add Image » puis sélectionner hiberfile.sys. Aller dans le menu « Edit / Convert », choisir le type de conversion « Uncompress hibernation file » et le tour est joué.

3. Lancer X-Ways Forensics, charger le fichier décompressé via « New Case / Add Image », et lorsqu’il demande si on doit interpréter le fichier comme un disque, faire non. X-Ways détectera que c’est un dump mémoire et affichera les process en cours dans l’explorateur (si si !) Cette étape est d’ailleurs identique pour charger un dump mémoire… Faire « File / Open File » ne donnera rien, il faut faire « New Case / Add Image » si l’on veut que l’interprétation se fasse.

4. Analyser le tout. C’est là que la magie de X-Ways intervient : F9 puis une bonne analyse de la RAM et après quelques minutes de carving, on retrouve tous ses process, ses fichiers ouverts, ses images etc… Un vrai régal ! Ah, j’oubliais un truc sympa : Si vous avez acheté X-Ways Trace, un petit coup de « Tools /Invoque X-Ways Trace » va vous lancer l’outil directement sur votre dump mémoire… A vous la collecte d’URL et de cookies en RAM, avec un effet fort impressionnant. A ce sujet, je suis inquiet par Microsoft Live Messenger (entre autres) qui semble n’en faire qu’à sa tête et visite plein de choses obscures dont je ne soupçonnais pas l’existence. J’en reparlerai un autre jour.

J’espère que cela pourra servir.

8 Comments »

Bruno Kerouanton on février 4th 2009 in IT Security

8 Responses to “Dump mémoire sur Vista”

  1. Bruno Kerouanton responded on 24 fév 2009 at 1:04 #

    Tant que j’y suis… un autre outil que je viens de découvrir et qui est plutôt puissant dans la série « je te dumpe la RAM et je te l’analyse… »

    http://www.mandiant.com/software/memoryze.htm

    C’est gratuit (pas la peine de remplir le formulaire pour télécharger) et assez bien. En ligne de commande uniquement, âmes graphiques s’abstenir :)

  2. Matthieu responded on 16 mar 2009 at 21:14 #

    http://win32dd.msuiche.net y’a un mec qui a écrit ça aussi.

  3. Bruno Kerouanton responded on 17 mar 2009 at 20:30 #

    Ah, oui Matthieu, tu as raison… Pour être tout à fait franc je n’avais pas vu que tu avais développé cet outil. Mea culpa. Merci de l’avoir mentionné. J’ajoute cette info de ce pas sur le billet.

  4. Nicolas responded on 11 mar 2010 at 20:21 #

    Bonjour,

    Ces applications me semblent toutes assez interressantes mais cependant après les avoir testées je me demande si ça peut répondre à mon problème.

    J’ai une application qui au charge un fichier crypté, le décrypte et le charge en mémoire.

    Je voudrais retrouver ce fichier décrypté dans la mémoire.

    Pensez vous qu’une de ces applications pourrait répondre à mon besoin ?

    Merci pour votre aide

  5. Bruno Kerouanton responded on 11 mar 2010 at 20:31 #

    C’est un moyen, mais un peu lourd car cela récupère toute la mémoire…
    Avec un bon débogueur comme IDA Pro (payant) ou OllyDbg (gratuit), on peut aller récupérer en mémoire le processus et voir ce qu’il bricole. Il m’est arrivé encore très récemment d’avoir à lancer OllyDbg pour récupérer des bouts de texte que j’étais en train de taper lorsque mon éditeur texte a planté… satané programme ! Je ne dis pas que c’est trivial, mais c’est possible et efficace.
    Option 2 : Un éditeur hexadécimal capable d’aller en mémoire vive. Personnellement je suis fan de X-Ways WinHex et Forensics, mais c’est également payant.

    Donc pour votre problème, le mieux reste encore OllyDbg, gratuit et efficace. Mais il faut apprendre à s’en servir (l’éditeur mémoire suffira, je pense, pas la peine de fourrer le nez dans le très bon désassembleur).

  6. Nicolas responded on 11 mar 2010 at 20:53 #

    Merci pour la réponse rapide.

    J’ai déjà tenté avec ollydbg mais pas réussit, je n’ai pas de très bonne compétence en la matière.

    Vous pensez que vous pourriez regarder pour moi ?

  7. Nicolas responded on 12 mar 2010 at 13:54 #

    j’imagine que ça doit vouloir dire non :)

    Je viens de changer mon email de contact si vous avez quelque minute pour m’aider n’hésitez pas à m’envoyer un mail.

  8. jeandez responded on 29 fév 2012 at 2:00 #

    bonjour,
    j’aimerais savoir comment est-ce qu’on peut capturer (faire un dump) de la mémoire vive sur linux (ubuntu).
    merci..

Trackback URI | Comments RSS

Laisser un commentaire