
Strumento Windows per scaricare file PE di malware dalla memoria su disco per l'analisi.
Process Dump è uno strumento da riga di comando per il reverse engineering su Windows che consente di scaricare su disco i componenti in memoria del malware per l'analisi. Spesso i file malware vengono impacchettati e offuscati prima dell'esecuzione per eludere gli scanner AV; tuttavia, quando questi file vengono eseguiti, tendono a decomprimere o a iniettare in memoria una versione pulita del codice malware. Un compito comune per i ricercatori di malware durante l'analisi è quello di scaricare questo codice decompresso dalla memoria al disco per la scansione con prodotti AV o per l'analisi con strumenti di analisi statica come IDA.
Process Dump funziona sui sistemi operativi Windows a 32 e 64 bit e può scaricare componenti in memoria da processi specifici o da tutti i processi attualmente in esecuzione. Process Dump supporta la creazione e l'utilizzo di un database di hash puliti, in modo da poter saltare il dump di file noti come kernel32.dll. Le sue funzionalità principali includono:
-closemon), in cui i processi agganciati vengono messi in pausa e scaricati appena prima della loro terminazione.Mantengo una release compilata ufficiale sul mio sito web qui: https://split-code.com/processdump.html
Puoi scaricare l'ultima release compilata di Process Dump qui:
Usa pd64.exe su Windows a 64 bit (consigliato), oppure pd32.exe su Windows a 32 bit. Entrambi i binari sono standalone; non è richiesto Microsoft Visual C++ Redistributable.
Process Dump può scaricare tutto il codice sconosciuto dalla memoria (-system), scaricare processi specifici, oppure monitorare i processi e scaricarli prima che terminino.
Su una workstation pulita, genera un database di base con uno dei seguenti comandi:
pd64.exe -db genquickpd64.exe -db genEsegui la generazione del database e il dump come comandi separati. Per il miglior accesso, esegui come Amministratore. Il numero predefinito di worker è 16.
Esempio di utilizzo:
pd64.exe -systempd64.exe -pid 419pd64.exe -pid 0x1a3pd64.exe -pid 0x1a3 -a 0x401000 -o C:\dumpspd64.exe -p "chrome[.]exe"pd64.exe -p ".*chrome.*"pd64.exe -closemonOpzioni generali di dump
| Opzione | Descrizione |
|---|---|
-system | Scarica moduli e codice sciolto che non corrispondono al database di hash puliti da tutti i processi accessibili. |
-pid <pid> | Scarica un processo specifico. Usa il formato decimale o un prefisso 0x per un PID esadecimale. |
-closemon | Aggancia la terminazione dei processi e scarica prima dell'uscita. Usa in un ambiente controllato; premi Ctrl+C per fermare. |
-p <regex> | Scarica i processi il cui nome completo corrisponde a un'espressione regolare case-sensitive. Più corrispondenze richiedono conferma. |
-a <address> | Scarica all'indirizzo di base specificato. Richiede -pid; accetta decimale o esadecimale con prefisso 0x. |
-o <path> | Imposta la cartella di output (predefinita: directory di lavoro corrente). Crea prima la cartella; i file esistenti non vengono mai sovrascritti. |
Opzioni del database di hash puliti
I file del database sono per impostazione predefinita nella directory dell'applicazione: clean.hashes, entrypoints.hashes e shortentrypoints.hashes.
| Opzione | Descrizione |
|---|---|
-db gen | Aggiunge hash dai processi in esecuzione e dai file PE ricorsivamente in %WINDIR%, %USERPROFILE%, C:\Program Files e C:\Program Files (x86). |
-db genquick | Aggiunge hash solo dai processi in esecuzione. Più veloce di gen, ma meno completo. |
-db add <dir> | Aggiunge gli hash dei file PE dalla directory specificata ricorsivamente, incluse le firme degli entrypoint. |
-db remove <dir>, -db rem <dir> | Rimuove gli hash dei moduli puliti corrispondenti dalla directory ricorsivamente. Le firme degli entrypoint vengono conservate. |
-nr | Disabilita la ricorsione per i comandi di aggiunta/rimozione del database. Non influisce su -db gen. |
-db clean | Cancella tutti e tre i database, incluse le firme degli entrypoint. |
-db ignore | Ignora tutti e tre i database caricati per questo dump senza modificare i file. I moduli ripetuti possono comunque essere saltati durante l'esecuzione. |
-cdb <filepath>, -c <filepath> | Imposta il percorso del database degli hash puliti. |
-edb <filepath> | Imposta il percorso del database degli hash degli entrypoint. |
-esdb <filepath> | Imposta il percorso del database degli hash brevi degli entrypoint. |
Opzioni di output
| Opzione | Descrizione |
|---|---|
-v | Stampa diagnostica dettagliata. |
-nh | Sopprime il banner di versione/copyright. |
--help, -help, -h, --h | Stampa la guida ed esce. Anche l'esecuzione senza argomenti stampa la guida. |
Opzioni avanzate
| Opzione | Descrizione |
|---|---|
-g | Forza la generazione di header PE sia a 32 bit che a 64 bit, ignorando gli header esistenti. |
-eprec | Forza il recupero dell'entrypoint anche se esiste un entrypoint valido. Il recupero è euristico; una ricerca senza successo lascia invariato il vecchio valore. |
-ni | Disabilita la ricostruzione aggressiva degli import (abilitata per impostazione predefinita). |
-nc | Disabilita il dump e l'hashing del loose code (abilitati per impostazione predefinita). |
-nep | Disabilita il recupero dell'entrypoint e l'hashing dell'entrypoint live, sovrascrivendo -eprec. La generazione del database dei file raccoglie comunque le firme degli entrypoint. |
-reexec | Preparazione sperimentale per rieseguire i dump. Scarta parte dello stato catturato e presuppone il layout originale delle sezioni; non esegue il dump né garantisce che funzioni. Disabilitata per impostazione predefinita. |
-nt | Utilizza un solo worker, equivalente a -t 1. Il monitoraggio della chiusura mantiene comunque un thread di monitoraggio separato. |
-t <count> | Imposta il numero di worker (predefinito 16, minimo 1) per il dump del sistema, la generazione del database e il monitoraggio della chiusura. I dump diretti per PID/nome restano sincroni. Vince l'ultima opzione tra -t/-nt. |
| Comando | Descrizione |
|---|---|
pd64.exe -db genquick | Crea rapidamente una baseline dai processi attualmente in esecuzione. |
pd64.exe -system -t 4 -o C:\dumps | Esegue il dump dei moduli sconosciuti e del loose code con quattro worker in una cartella di output esistente. |
pd64.exe -closemon | Viene eseguito in modalità monitor di terminazione. |
pd64.exe -pid 0x18A | Esegue il dump dei moduli e del loose code da un processo specifico. |
pd64.exe -p ".*chrome.*" | Esegue il dump dei processi con nomi contenenti chrome. |
pd64.exe -db gen | Crea una baseline più completa dai processi in esecuzione e dalle cartelle comuni. |
pd64.exe -db add C:\baseline -nr | Aggiunge i file PE da una directory senza cercare nelle sottodirectory. |
pd64.exe -pid 0x1a3 -a 0x401000 | Esegue il dump a un indirizzo specifico. Se non esiste un header PE, genera header sia a 32 bit che a 64 bit. |