
Lo strumento di acquisizione della memoria multipiattaforma.

WinPmem è stato il driver di acquisizione della memoria open source predefinito per Windows per molto tempo. In precedenza risiedeva nel progetto Rekall, ma è stato recentemente separato nel proprio repository.
Questa è la versione Windows. La versione Linux, Linpmem, si trova su: https://github.com/Velocidex/Linpmem
Questo codice è stato originariamente sviluppato all'interno di Google ma è stato rilasciato sotto la licenza Apache.
WinPmem è uno strumento di acquisizione della memoria fisica con le seguenti caratteristiche:
Open source
Supporto per Win7 - Win10, x86 + x64. Il WDK7600 potrebbe essere utilizzato per includere il supporto per WinXP. Come impostazione predefinita, gli eseguibili WinPmem forniti verranno compilati con WDK10, supportando Win7 - Win10 e offrendo un codice più moderno.
Tre metodi di lettura indipendenti, con due metodi per creare un dump completo della memoria. Un metodo dovrebbe funzionare sempre anche in presenza di rootkit in modalità kernel.
Supporto per immagini dump di memoria raw.
Viene utilizzata un'interfaccia di lettura del dispositivo invece di scrivere l'immagine dal kernel come fanno altri imager. Questo ci permette di avere un imager complesso in spazio utente (ad esempio, copia attraverso la rete, hash, ecc.), nonché di eseguire analisi sul sistema live (ad esempio, può essere eseguito direttamente sul dispositivo).
I file in questa directory (inclusi i sorgenti di WinPmem e i binari firmati) sono disponibili sotto la seguente licenza: Apache License, Version 2.0
Ci sono due eseguibili WinPmem: winpmem_mini_x86.exe e winpmem_mini_x64.exe. Entrambe le versioni contengono entrambi i driver (versioni a 32 e 64 bit).
Il "mini" nel nome del binario indica che questo imager è un imager semplice e diretto - può produrre solo immagini in formato RAW. In passato abbiamo rilasciato un imager WinPmem basato su AFF4, ma non è ancora stato aggiornato al nuovo driver. Fateci sapere se avete bisogno dell'imager basato su AFF4.
Il programma Python è attualmente in fase di costruzione ma funziona come dimostrazione di come si può utilizzare l'imager da Python.
Questo programma è il più semplice da usare per la risposta agli incidenti poiché non richiede altre dipendenze oltre all'eseguibile stesso. Il programma caricherà automaticamente il driver corretto (32 bit o 64 bit) ed è autonomo.
winpmem_mini_x64.exe physmem.raw
Scrive un'immagine raw in physmem.raw utilizzando il metodo di acquisizione predefinito.
winpmem_mini_x64.exe
Richiama la stampa dell'utilizzo / manuale breve.
Per acquisire un'immagine raw utilizzando specificamente il metodo MmMapIoSpace:
winpmem.exe -1 myimage.raw
Il driver verrà scaricato automaticamente dopo l'acquisizione dell'immagine!
A causa di come Microsoft ha progettato la funzione MJ READ, la lettura dalla memoria fisica fallirà in Winpmem con STATUS_INVALID_PARAMETER se viene specificato un indirizzo fisico maggiore della metà del valore massimo di un UINT64. Ad esempio, questo è vero se qualcuno vuole leggere in parti più alte della memoria fisica e ha una memoria fisica enorme (più di 9,223,372,036,854,775,807). Sembra altamente improbabile, ma le dimensioni della RAM odierne continuano ad aumentare.
Il codice sorgente di WinPmem supporta la scrittura in memoria oltre alla lettura. Questa capacità è un ottimo strumento di apprendimento poiché molte tecniche di occultamento dei rootkit possono essere emulate scrivendo direttamente in memoria.
Questa funzionalità dovrebbe essere usata con estrema cautela!
NOTA: Poiché questa è una capacità piuttosto pericolosa, i driver binari firmati hanno il supporto per la scrittura disabilitato. È possibile ricostruire i driver per produrre binari firmati con test se si desidera utilizzare questa funzionalità. I binari non firmati (in realtà auto-firmati con un certificato di test) non possono essere caricati su un sistema normale poiché sono auto-firmati per test, ma è possibile consentire il caricamento dei driver non firmati su un sistema di test emettendo (vedi https://docs.microsoft.com/en-us/windows-hardware/drivers/install/the-testsigning-boot-configuration-option:
Bcdedit.exe -set TESTSIGNING ON
e riavviare. Vedrai un piccolo testo "Test Mode" sul desktop per ricordarti che questa macchina è configurata per driver firmati per test.
Inoltre, il supporto alla scrittura deve essere abilitato al momento del caricamento:
winpmem.exe -w -l
Questo caricherà i driver e attiverà il supporto alla scrittura.
Winpmem, così come Linpmem, non esisterebbero senza il lavoro dei nostri predecessori del progetto REKALL (ora ritirato): https://github.com/google/rekall.
Questo progetto non sarebbe possibile senza il supporto della più ampia comunità DFIR:
I nostri contributori open source: