Comment vider l'image de la mémoire du système Linux?

18

Je sais pour vider des images de mémoire dans Windows. (eg-dumpit) Mais je ne sais pas comment vider les images mémoire sous Linux.

Je veux obtenir des images de mémoire sous Linux et de Linux à Linux avec une connexion ssh ou quelque chose.

Comment obtenir sous Linux?

Bakie
la source
5
Essayez-vous d'obtenir de la mémoire à partir d'un processus en cours, de la mémoire du noyau ou de la mémoire physique brute? Tous sont disponibles mais les méthodes d'accès diffèrent. Voir / dev / kmem, / dev / mem, / proc / kcore, / proc / $ pid / maps et / proc / $ pid / mem.
casey
Jetez un oeil à ce SU Q&A: superuser.com/questions/164960/…
slm

Réponses:

26

Du Forensic's Wiki: Tools: Memory Imaging

extrait

Linux

/ dev / mem

Sur les anciens systèmes Linux, le programme dd peut être utilisé pour lire le contenu de la mémoire physique à partir du fichier de périphérique / dev / mem. Sur les systèmes Linux récents, cependant, / dev / mem fournit uniquement l'accès à une plage d'adresses restreinte, plutôt qu'à la mémoire physique complète d'un système. Sur d'autres systèmes, il peut ne pas être disponible du tout. Tout au long de la série 2.6 du noyau Linux, la tendance a été de réduire l'accès direct à la mémoire via des fichiers pseudo-périphériques. Voir, par exemple, le message accompagnant ce patch: http://lwn.net/Articles/267427/ .

/ dev / crash

Sur les systèmes Red Hat (et ceux qui exécutent des distributions connexes telles que Fedora ou CentOS), le pilote de crash peut être chargé pour créer un pseudo-périphérique / dev / crash pour l'accès à la mémoire physique brute (via la commande "crash de modprobe"). Ce module peut également être compilé pour d'autres distributions Linux avec un effort mineur (voir, par exemple, http://gleeda.blogspot.com/2009/08/devcrash-driver.html ). Lorsque le pilote de plantage est modifié, compilé et chargé sur d'autres systèmes, le périphérique d'accès à la mémoire résultant n'est pas sûr à l'image dans son intégralité. Des précautions doivent être prises pour éviter les adresses qui ne sont pas sauvegardées en RAM. Sous Linux, / proc / iomem expose les plages d'adresses correctes à l'image, marquées avec "RAM système".

Second Look: Forensics de mémoire Linux

Ce produit d'analyse de la mémoire commerciale est livré avec une version modifiée du pilote de crash et un script pour vider la mémoire en toute sécurité en utilisant le pilote d'origine ou modifié sur n'importe quel système Linux donné.

fmem fmem - repo github

fmem est un module du noyau qui crée le périphérique / dev / fmem, similaire à / dev / mem mais sans limitations. Ce périphérique (RAM physique) peut être copié à l'aide de dd ou d'un autre outil. Fonctionne sur les noyaux Linux 2.6. Sous GNU GPL.

LiME - Extracteur de mémoire Linux

Linux Memory Extractor (LiME) est un module de noyau chargeable (LKM), qui permet l'acquisition de mémoire volatile à partir de périphériques Linux et Linux, tels que ceux alimentés par Android. L'outil prend en charge le vidage de la mémoire dans le système de fichiers de l'appareil ou sur le réseau.

J'ai trouvé cet exemple d' fmemutilisation, qui semble être le moyen le plus simple de vider la mémoire à des fins d'analyse, que vous ne pouvez plus utiliser /dev/memaprès les noyaux 2.6.x, si je comprends bien.

Exemple de fmem

$ ./run.sh
...
----Memory areas: -----
reg00: base=0x000000000 (    0MB), size= 1024MB, count=1: write-back
reg01: base=0x0c8800000 ( 3208MB), size=    2MB, count=1: write-combining
-----------------------
!!! Don't forget add "count=" to dd !!!


$ ls /dev/f*
/dev/fb0  /dev/fd0  /dev/fmem  /dev/full  /dev/fuse


$ sudo dd if=/dev/fmem of=/tmp/fmem_dump.dd bs=1MB count=10
10+0 records in
10+0 records out
10000000 bytes (10 MB) copied, 0.0331212 s, 302 MB/s

* Source: Comment puis-je vider toute la mémoire physique dans un fichier?

Exemple LiME

Pour analyser la mémoire volatile, il y a aussi cette page, intitulée: Analyse de la mémoire Linux . Il y a un exemple détaillé dans ce didacticiel vidéo qui montre l'utilisation de LiME et de la volatilité pour collecter un vidage de mémoire, puis l'analyser, en extrayant l'historique Bash de l'utilisateur du vidage de mémoire.

Quoi d'autre?

Il y a aussi cette Q&R U&L intitulée: Comment puis-je vider la mémoire système complète? qui contient des exemples et des informations supplémentaires.

slm
la source
-3
dc3dd if=/proc/kcore of=/mount/.
Larytet
la source
2
Une explication serait bien.
phk