
Strumento Windows per scaricare file PE di malware dalla memoria su disco per l'analisi.
Process Dump è uno strumento da riga di comando per reverse engineering su Windows che permette di scaricare su disco i componenti di memoria dei malware per analizzarli. Spesso i file malware sono impacchettati e offuscati prima di essere eseguiti per evitare i rilevatori antivirus; tuttavia, quando questi file vengono eseguiti, spesso si decomprimono o iniettano una versione pulita del codice malware in memoria. Un compito comune per i ricercatori di malware durante l'analisi è quello di scaricare questo codice decompresso dalla memoria su disco per la scansione con prodotti antivirus o per l'analisi con strumenti di analisi statica come IDA.
Process Dump funziona su sistemi operativi Windows a 32 e 64 bit e può scaricare componenti di memoria da processi specifici o da tutti i processi in esecuzione. Process Dump supporta la creazione e l'utilizzo di un database di hash puliti, in modo da poter saltare lo scaricamento di tutti i file puliti come kernel32.dll. Le sue caratteristiche principali includono:
Mantengo una release ufficiale compilata sul mio sito web qui: https://split-code.com/processdump.html
Puoi scaricare l'ultima release compilata di Process Dump qui:
Questo è progettato per Visual Studio 2019 e funziona con l'edizione Community gratuita. Basta aprire il file di progetto con VS2019 e compilare, dovrebbe essere facile!
Process Dump può essere utilizzato per scaricare tutto il codice sconosciuto dalla memoria (flag '-system'), scaricare processi specifici, o funzionare in modalità di monitoraggio che scarica tutti i processi appena prima che terminino.
Prima del primo utilizzo di questo strumento, su una workstation pulita, il database di hash puliti di esclusione può essere generato con:
Esempi di utilizzo:
Gli argomenti della riga di comando possono essere raggruppati come segue:
Opzioni generali di scaricamento
Opzioni del database di hash puliti
Opzioni di output
| Opzione | Descrizione |
|---|---|
| -v | Modalità verbose in cui vengono stampati più dettagli per il debugging. |
| -nh | Nessuna intestazione viene stampata nell'output. |
Opzioni avanzate
Quando si utilizza Process Dump in una sandbox automatizzata o per la ricerca manuale antimalware, possono essere utili i seguenti passaggi. Assicurati di eseguire tutti i comandi come Amministratore in un ambiente pulito.
Costruisci il database di hash puliti: Esegui pd64.exe -db gen o per un processo più veloce e meno completo, usa pd64.exe -db genquick. A seconda della situazione, potresti voler fare uno snapshot della tua VM dopo aver creato questo database di hash puliti in modo che non debba essere ripetuto ogni volta.
Avvia il monitoraggio di terminazione di Process Dump: Mantieni pd64.exe -closemon in esecuzione in background. Scaricherà tutti i processi intermedi utilizzati dal malware.
Esegui il file malware: Monitora l'installazione del malware. pd64.exe scaricherà automaticamente qualsiasi processo che cerca di chiudersi.
Scarica il malware in esecuzione dalla memoria: Quando sei pronto, usa pd64.exe -system per scaricare tutti i processi.
I componenti scaricati si troveranno nella directory di lavoro di pd64.exe. Per cambiare il percorso di output, usa il flag -o.
Esempi di nomi di file scaricati:
| Opzione | Descrizione |
|---|
| -system | Scarica tutti i moduli non corrispondenti al database di hash puliti da tutti i processi accessibili nella directory di lavoro. |
| -pid <pid> | Scarica tutti i moduli non corrispondenti al database di hash puliti dal PID specificato nella directory di lavoro corrente. Usa il prefisso '0x' per specificare un PID esadecimale. |
| -closemon | Esegue in modalità monitoraggio. Quando un processo sta terminando, Process Dump lo scarica prima. |
| -p <regex nome processo> | Scarica tutti i moduli non corrispondenti al database di hash puliti dal nome di processo che corrisponde al filtro nel PID specificato nella directory di lavoro corrente. |
| -a <indirizzo base modulo> | Scarica un modulo all'indirizzo base specificato dal processo. |
| -o <percorso> | Imposta la cartella di output predefinita per i componenti scaricati. |
| Opzione | Descrizione |
|---|
| -db gen | Elabora automaticamente alcune cartelle comuni e tutti i processi attualmente in esecuzione, aggiungendo gli hash dei moduli trovati al database di hash puliti. Aggiunge ricorsivamente tutti i file in: %WINDIR%, %HOMEPATH%, C:\Program Files\, C:\Program Files (x86)\, e tutti i moduli in tutti i processi in esecuzione. Questi hash puliti vengono aggiunti al file clean.hashes nella directory dell'applicazione. Durante i successivi comandi di scaricamento, questi moduli noti non verranno scaricati. Si consiglia di eseguire questo comando una volta su un sistema pulito prima di utilizzare lo strumento, in modo da non scaricare troppi moduli dalla memoria. |
| -db genquick | Come sopra, ma aggiunge solo gli hash di tutti i moduli in tutti i processi al database di hash puliti. Questo è un modo molto più veloce per costruire il database di hash puliti, ma sarà meno completo. |
| -db add <dir> | Aggiunge ricorsivamente tutti i file nella directory specificata al database di hash puliti. |
| -db rem <dir> | Rimuove ricorsivamente tutti i file nella directory specificata dal database di hash puliti. |
| -nr | Disabilita la ricorsione sui comandi di aggiunta o rimozione di directory nel database di hash. |
| -db clean | Cancella il database di hash puliti. |
| -db ignore | Ignora il database di hash puliti durante lo scaricamento di un processo questa volta. Tutti i moduli verranno scaricati anche se viene trovata una corrispondenza. |
| -cdb <percorso file> | Percorso completo del file del database di hash puliti da utilizzare per questa esecuzione, se si desidera sovrascrivere il valore predefinito clean.hashes. |
| -edb <percorso file> | Percorso completo del file del database di hash degli entrypoint da utilizzare per questa esecuzione. |
| -esdb <percorso file> | Percorso completo del file del database di hash corti degli entrypoint da utilizzare per questa esecuzione. |
| Opzione | Descrizione |
|---|
| -g | Forza la generazione di intestazioni PE da zero, ignorando le intestazioni esistenti. |
| -eprec | Forza la ricostruzione del punto di ingresso, anche se ne esiste uno valido. |
| -ni | Disabilita la ricostruzione delle importazioni. |
| -nc | Disabilita lo scaricamento delle regioni di codice libere. |
| -nt | Disabilita il multi-threading. |
| -nep | Disabilita l'hashing del punto di ingresso. |
| -t <numero thread> | Imposta il numero di thread da utilizzare (predefinito 16). |
| Comando | Descrizione |
|---|
pd64.exe -db genquick | Costruisci rapidamente il database dei moduli puliti basato sui processi attualmente in esecuzione. Process Dump nelle attività successive scaricherà solo i moduli non riconosciuti. |
pd64.exe -system | Scarica tutti i moduli e i blocchi nascosti da tutti i processi ignorando i moduli puliti. |
pd64.exe -closemon | Esegue in modalità monitoraggio di terminazione. Scarica tutti i processi quando tentano di terminare. |
pd64.exe -pid 0x18A | Scarica moduli e blocchi nascosti da un ID processo specifico. |
pd64.exe -p .\*chrome.\* | Scarica moduli e blocchi nascosti per nome del processo. |
pd64.exe -db gen | Costruisci un database di hash puliti dei moduli noti. Viene utilizzato per evitare di scaricare moduli buoni noti nelle attività successive. |
pd64.exe -pid 0x1a3 -a 0xffb4000 | Scarica il codice da un indirizzo specifico nel PID. Genererà due file per l'analisi, con intestazioni PE ricostruite a 32 e 64 bit: notepad_exe_x64_hidden_FFB40000.exe e notepad_exe_x86_hidden_FFB40000.exe. |