
Das plattformübergreifende Tool zur Speichererfassung.

WinPmem war lange Zeit der standardmäßige Open-Source-Speichererfassungstreiber für Windows. Früher war es Teil des Rekall-Projekts, wurde aber kürzlich in ein eigenes Repository ausgelagert.
Dies ist die Windows-Version. Die Linux-Version, Linpmem, finden Sie unter: https://github.com/Velocidex/Linpmem
Dieser Code wurde ursprünglich bei Google entwickelt, aber unter der Apache-Lizenz veröffentlicht.
WinPmem ist ein Tool zur Erfassung des physischen Arbeitsspeichers mit den folgenden Funktionen:
Open Source
Unterstützung für Win7 - Win10, x86 + x64. Der WDK7600 kann verwendet werden, um WinXP-Unterstützung einzubinden. Standardmäßig werden die bereitgestellten WinPmem-Executables mit WDK10 kompiliert, was Win7 - Win10 unterstützt und moderneren Code bietet.
Drei unabhängige Lesemethoden, mit zwei Methoden zur Erstellung eines vollständigen Speicherabbilds. Eine Methode sollte immer funktionieren, selbst bei Kernel-Mode-Rootkits.
Unterstützung für rohe Speicherabbilder.
Es wird ein Lesegeräte-Interface anstelle der Bilderstellung aus dem Kernel heraus wie bei anderen Imgern verwendet. Dies ermöglicht komplexe Userspace-Imager (z.B. Kopieren über Netzwerk, Hashing usw.) sowie Analysen auf dem Live-System (z.B. kann direkt auf dem Gerät ausgeführt werden).
Die Dateien in diesem Verzeichnis (einschließlich der WinPmem-Quellen und signierten Binärdateien) sind unter der folgenden Lizenz verfügbar: Apache License, Version 2.0
Es gibt zwei WinPmem-Executables: winpmem_mini_x86.exe und winpmem_mini_x64.exe. Beide Versionen enthalten beide Treiber (32- und 64-Bit-Versionen).
Das 'mini' im Binärnamen bezieht sich darauf, dass dieser Imager ein einfacher Imager ist – er kann nur Bilder im RAW-Format erzeugen. In der Vergangenheit haben wir einen WinPmem-Imager auf Basis von AFF4 veröffentlicht, der jedoch noch nicht auf den neuen Treiber aktualisiert wurde. Bitte lassen Sie uns wissen, wenn Sie den AFF4-basierten Imager benötigen.
Das Python-Programm befindet sich derzeit im Aufbau, funktioniert aber als Demonstration, wie der Imager von Python aus verwendet werden kann.
Dieses Programm ist am einfachsten für die Incident Response zu verwenden, da es keine anderen Abhängigkeiten als die ausführbare Datei selbst benötigt. Das Programm lädt automatisch den richtigen Treiber (32 Bit oder 64 Bit) und ist in sich geschlossen.
winpmem_mini_x64.exe physmem.raw
Schreibt ein rohes Abbild in physmem.raw unter Verwendung der Standarderfassungsmethode.
winpmem_mini_x64.exe
Ruft die Nutzungsausgabe / das Kurzhandbuch auf.
Um ein rohes Abbild speziell mit der Methode MmMapIoSpace zu erfassen:
winpmem.exe -1 myimage.raw
Der Treiber wird nach der Erfassung des Abbilds automatisch entladen!
Aufgrund der Gestaltung der MJ-READ-Funktion durch Microsoft schlägt das Lesen aus dem physischen Speicher in Winpmem mit STATUS_INVALID_PARAMETER fehl, wenn eine physische Adresse größer als die Hälfte des Maximalwerts eines UINT64 angegeben wird. Dies ist z.B. der Fall, wenn jemand in höheren Bereichen des physischen Speichers lesen möchte und einen riesigen physischen Speicher hat (mehr als 9.223.372.036.854.775.807). Das klingt höchst unwahrscheinlich, aber die heutigen RAM-Größen nehmen weiter zu.
Der WinPmem-Quellcode unterstützt sowohl das Schreiben als auch das Lesen in den Speicher. Diese Fähigkeit ist ein großartiges Lernwerkzeug, da viele Rootkit-Verstecktechniken durch direktes Schreiben in den Speicher emuliert werden können.
Diese Funktion sollte mit äußerster Vorsicht verwendet werden!
HINWEIS: Da dies eine ziemlich gefährliche Fähigkeit ist, haben die signierten Binärtreiber die Schreibunterstützung deaktiviert. Sie können die Treiber neu erstellen, um testsignierte Binärdateien zu erzeugen, wenn Sie diese Funktion nutzen möchten. Die unsignierten Binärdateien (eigentlich selbstsigniert mit einem Testzertifikat) können auf einem normalen System nicht geladen werden, da sie testselbstsigniert sind. Sie können jedoch das Laden der unsignierten Treiber auf einem Testsystem erlauben, indem Sie folgenden Befehl ausführen (siehe https://docs.microsoft.com/en-us/windows-hardware/drivers/install/the-testsigning-boot-configuration-option:
Bcdedit.exe -set TESTSIGNING ON
und einen Neustart durchführen. Sie sehen dann einen kleinen „Testmodus“-Text auf dem Desktop, der Sie daran erinnert, dass dieser Rechner für testsignierte Treiber konfiguriert ist.
Zusätzlich muss die Schreibunterstützung auch beim Laden aktiviert werden:
winpmem.exe -w -l
Dadurch werden die Treiber geladen und die Schreibunterstützung aktiviert.
Winpmem sowie Linpmem gäbe es nicht ohne die Arbeit unserer Vorgänger des (inzwischen eingestellten) REKALL-Projekts: https://github.com/google/rekall.
Dieses Projekt wäre auch ohne die Unterstützung der breiteren DFIR-Community nicht möglich:
Unsere Open-Source-Mitwirkenden: