Process Monitor è uno strumento utile per trovare malfunzionamenti di un sistema di eleborazione. Gli esercizi proposti hanno lo scopo di familiarizzare con gli strumenti di analisi dei moduli del sistema operativo e sviluppare tecniche per risolvere problemi generati dalle applicazioni.
Process Monitor mostra l'evoluzione del del file system, del registro e l'attività dei processi o dei thread.
Process monitor può essere scaricato al seguente indirizzo: http://www.microsoft.com/technet/sysinternals/processesandthreads/processmonitor.mspx.
Appena viene lanciato, Process Monitor inizia a catturare informazioni sui file, sul registro e sui processi/Thread. Per fermare la cattura o per riprendere a catturare informazioni premere il pulsante "Capture" sulla barra degli strumenti, come indicato nella figura:
Ci sono casi in cui si desidera individuare la chiave del registro che memorizza le impostazioni associate ad una applicazione. Conoscere questa informazione del regiastro, potrebbe servire a verificare che questa sia presente anche in altre installazioni.
Per semplicità, in questo esempio, si sfrutta la caratteristica di "Blocco Note" di memorizzare il tipo del carattere impostato e riutilizzarlo in ogni successivo uso dell'applicazione.
Lanciare Process monitor
Per default Process Monitor inizia a catturare informazioni. Per verificare che Process Monitor stia catturando dati ci sono due modi:
osservare l'icona "Capture" (una lente di ingrandimento). Se questa è coperta da una "X" premere il pulsante per toglierla. Questo è un pulsante a commutazione: ad ogni pressione cambia lo stato tra "avvia cattura" e "ferma cattura"
Nella barra di stato si deve leggere "Showing 'X' of 'Y' events", con X e Y che crescono continuamente.
Lanciare "Blocco Note",
Scrivere un qualsiasi testo nel documento di "Blocco Note".
Nel menu Formato scegliere la voce "Carattere"
Cambiare il font in "Batang" (o un qualsiasi altro)
Modificare la dimensione in 28
premere il pulsante Ok, per chiudere il riquadro di dialogo.
Salvare il file con il nome "Esempio1.txt"
Chiudere "Blocco Note"
Fermare l'attività di cattura delle informazioni di Process Monitor. (La lente di ingrandimento sul pulsante adesso deve essere coperta dalla X)
A questo punto si possiede la registrazione delle informazioni relative ai File, al Registro, e all'attività dei processi e dei Thread durante la modifica degli attributi del carattere in "Blocco Note", in aggiunta a tutte le altre informazioni catturate nel frattempo. Per questo motivo non si ha più bisogno di "Blocco Note" e della cattura di altre informazioni da parte di Process Monitor.
Lo scopo di questo esercizio è di trovare dove, all'interno del registro di sistema, sono state memorizzate le impostazioni del carattere di "Blocco Note". Process Monitor ha catturato una quantità enorme di informazioni, nel breve tempo impiegato a modificare il carattere. Process Monitor ha la possibilità di applicare criteri per filtrare le informazioni, in modo da semplificare la ricerca di ciò che interessa.
In questo caso si è interessati a filtrare solo le attività che hanno riguardato il registro di sistema, quindi si desidera nascondere le informazioni relative ai file e ai processi. Deselezionare i pulsanti "Show File System Activity" e "Show Process and Thread Activity". Sono due pulsanti a commutazione: ad ogni pressione l'operazione viene abilitata o disabilitata.
Notare che, dopo aver deselezionato, le informazioni relative a File e Processi, nella colonna Operations della finestra di Process Monitor restano solo le operazioni che hanno coinvolto il registro. Le informazioni relative a File e Processi non sono andate perdute. I filtri non sono distruttivi.
Il primo modo per filtrare le informazioni catturate consiste nel portarsi su una linea nell'area dei dati catturati e fare clic destro. Si apre un menu contestuale che permette di "Includere" o "Escludere" i dati visualizzati.
In questo caso, si cerca un processo di nome "Notepad.exe". Quindi cliccare con il tasto destro su una linea che ha qualcosa di diverso da "Notepad.exe" nella colonna "Process Name" e selezionare "Exclude" dal menu contestuale. Appare una finestra che mostra un elenco di nomi di colonne; selezionare "Process Name" da questa lista. Come risultato, tutte le linee aventi quel nome di processo vengono nascoste e non compaiono nella finestra. Ripetere questa operazione per tutte le righe che riportano un nome di processo diverso da "Notepad.exe".
Il secondo modo per filtrare le informazioni catturate consiste nell'usare il riquadro di dialogo "Process Monitor Filter". Questo permette di rivedere i filtri esistenti, rimuovere ed aggiungere filtri. Aprire il menu "Filter" sulla barra degli strumenti e scegliere la voce di menu "Filter ..." per aprire la finestra "Process Monitor Filter".
Selezionare "Process Name" dalla lista Column.
Selezionare is nella casella Relation
Scrivere "Notepad.exe" nella casella Value.
Selezionare Include nella casella Action
Cliccare il pulsante Add.
Cliccare il pulsante Apply e poi il pulsante Ok.
La finestra mostra le informazioni che hanno riguardato il registro, ma c'è ancora qualcosa da nascondere.
Bisogna cercare il tipo di operazione sul registro, in particolare quella che ha scritto un valore, (il tipo di carattere e la sua dimensione). Seguendo le istruzioni fornite al passo 2 precedente, filtrare, per escludere, le operazioni che nella figura seguente sono cerchiate:
In breve, clic destro su "RegOpenKey", clic su "Exclude", e poi clic "Operation". Ripetere per le altre tre operazioni mostrate sopra (RegQueryValue, RegCloseKey, e RegEnumValue).
Questi filtri dovrebbero aver ristretto le righe dei dati catturati. Scorrendo le righe mostrate nella finestra e osservando i nomi presenti nella colonna Operation si incontra il nome "RegSetValue"; che fa pensare che si tratti di un'operazione di impostazione di un valore nel registro eseguita da "Blocco Note". Si esegua, quindi, il filtraggio facendo clic destro su una linea "RegSetValue", ma anzichè scegliere "Exclude" cliccare su "Include", e poi su "Operation".
Adesso la ricerca è stata sufficientemente ristretta: nella finestra di Process Monitor sono presenti solo righe relative alle informazioni "RegSetValue" eseguite da Notepad.exe. Scorrere le righe e prestare attenzione alla colonna "Detail" e alla colonna "Path". Si dovrebbe notare la presenza di un percorso nel registro che sembra riguardare l'impostazione cercata (HKCU\Software\Microsoft\Notepad) e si vede anche la parola Batang associata alla chiave del registro IfFaceName.
Raggiungere la posizione nel registro indicata nella colonna "Path", evidenziata sopra, clic destro sul percorso e clic sulla voce di menu "Jump To ...". Si apre l'editor del registro posizionato sulla riga di impostazione del formato che include IfFaceName (Font) e iPointSize (Font Size).
Prima di chiudere Process Monitor azzerare i filtri cliccando sul menu Filter e scegliendo la voce di menu "Reset Filter".
Ripetere la stessa operazione con word: utilizzare un font e osservare che questo compare nella lista dei font recenti. Eliminare questo font dalla lista dei font recentemente usati di word.
Questo esempio si riferisce a Windows Vista
Se le chiavi del registro riportano permessi sbagliati, gli utenti non possono eseguire applicazioni. Se i permessi indicati dalle chiavi del registro sono la causa dell'impossibilità di eseguire applicazioni, il problema non si risolve disinstallando e reinstallando l'applicazione. Process Monitor consente di correggere il problema.
Per dimostrare il modo in cui Process Monitor può essere usato per individuare la causa che impedisce di lanciare un'applicazione occorre usare anche il programma PsList.exe. PsList è uno strumento che fa vedere informazioni dettagliate relative ai processi. Per svolgere questo esercizio scaricare PsList al seguente indirizzo: http://www.microsoft.com/technet/sysinternals/ProcessesAndThreads/PsList.mspx
Scaricare PsList e salvarlo in "C:\temp"; si è scaricato un file compresso.
Estrarre i file nella cartella "C:\temp\PsTools"
Per questo esempio occorre assicurarsi che gruppo "Authenticated Users" non abbia i permessi sulla seguente chiave del registro: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib.
Aprire l'editor del registro (regedit.exe)
raggiungere HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib
clic destro sulla chiave Perflib e clic sulla voce di menu "Permissions ..."
aprire la lista di "Groups or user names" per vedere se "Authenticated Users" è presente nell'elenco
Se "Authenticated Users" è presente nella lista, evidenziarlo e cliccare sul pulsante Remove.
Se "Authenticated Users" non è presente nella lista, non fare nessuna operazione.
Chiudere l'editor di registro
Lanciare Process Monitor (procmon.exe)
Assicurarsi che Process Monitor stia catturando dati
Aprire una finestra "prompt dei comandi"
Nel prompt dei comandi scrivere la linea: C:\temp\PsTools\PsList, e premere Invio
Notare che si è avuto il messaggio: "Failed to take process snapshot on <computername>.
Ridurre ad icona la finestra Prompt dei comandi e fermare la cattura dei dati di Process Monitor
Si vuole capire qual è la causa della mancata esecuzione
Grazie ai filtri di Process Monitor si riesce a restringere la zona, dei dati catturati, in cui trovare le informazioni cercate.
In questo caso non si conosce esattamente la causa del problema. Nell'esempio precedente, dove si è usato "Blocco Note", adesso non si può scartare nessuno dei gruppi di informazioni (File system, Registro, Processi).
Siccome si conosce il nome del processo (PsList.exe), si applichi il filtro per mostrare solo PsList.exe.
Selezionare "Process Name" dalla casella di selezione delle colonne.
Selezionare "is" dalla casella di selezione della relazione.
Scrivere "PsList.exe" nella casella "Value".
Selezionare "Include" nella casella "Action".
Clic sul pulsante "Add".
clic sul pulsante "Apply" e poi su "Ok".
Osservando i dati visualizzati si trovano ancora troppe linee di eventi catturati. Nella colonna "Results" si notano numerosi tipi di dati con "Success". Dato che l'applicazione che si intendeva eseguire ha dato esito negativo, si può sicuramente assumere che in tale righe non si trova ciò che riguarda il problema in esame. Quindi si filtrino gli eventi che, oltra al cvalore "Success", hanno anche l'indicazione Success nella colonna Result. Clic destro su una riga che ha il valore Success nella colonna Result, clic su Exclude e poi su Result.
Scorrere la lista delle righe visualizzate e cercare qualcosa di sospetto. Nella colonna Result si dovrebbero trovare almeno cinque linee caratterizzate dal valore: "Access Denied". Tra tutte le righe, queste dovrebbero essere relative al caso in esame. Clic destro su una linea che ha il valore "Access Denied" nella colonna Result, clic su "Include" e poi su Result.
Esaminare le righe visualizzate. L'operazione che si è tentata è del tipo "RegOpenKey". La chiave in questione si trova nella colonna "Path": HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib
Clic destro sul Path: HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib e poi clic su "Jump To ...". Si apre l'editor del registro posizionato sulla chiave Perflib.
Clic destro sulla chiave Perflib, clic su "Permissions..." e aggiungere "Authenticated Users", con il permesso di lettura. Chiudere l'editor del registro.
Tornare al prompt dei comandi e lanciare l'esecuzione di PsList. Adesso non ci dovrebbero essere errori.
Azzerare i filtri: nel menu "Filter" scegliere "Reset Filter".
Questo esempio si riferisce a Windows Vista
I permessi non corretti sui file potrebbero impedire agli utenti di eseguire una applicazione, anche se si reinstalla l'applicazione. Anche i messaggi di errore segnalati dall'applicazione potrebbero essere poco significativi. Per mostrare come Process Monitor può servire a identificare un tale problema, in questo esempio si userà PurblePlace.exe, un gioco disponibile sotto Windows Vista e classificato "E" per "everyone".
Assicurarsi che il gruppo "Users" non abbia i permessi sul file PurblePlace.dll.
Aprire risorse del computer e raggiungere "C:\Program Files\Microsoft Games\Purble Place"
Clic destro su PurblePlace.dll e clic su "Proprietà". Clic sulla linguetta "Sicurezza" e clic sul pulsante "Modifica".
Controllare la lista "Groups or user names" per vedere se è elencato "Users"
Se "Users" è presente nella lista, selezionarlo e poi clic sul pulsante "Rimuovi". Clic sul pulsante "Apply" e poi su "Ok". Chiudere la finestra delle Proprietà.
Se "Users" non è presente nella lista premere il pulsante "Annulla". Chiudere la finestra delle Proprietà.
Chiudere "Risorse del Computer".
Lanciare Process Monitor
Assicurarsi che Process Monitor stia catturando informazioni sugli eventi.
Lanciare Purble Place (Avvio→Giochi→Purble Place. Dovrebbe essere segnalato il seguente messaggio di errore:
Questo messaggio di errore specifica che il file non esiste. Come si vede l'indicazione fornita da questo messaggio non è esatta.
Fermare la cattura dei dati di Process Monitor.
Il messaggio di errore ottenuto fa ritenere che manchi il file PurblePlace.dll. Verranno esaminati i dati catturati per scoprire la vera causa di errore.
Il messaggio di errore si riferisce al file PurblePlace.dll", quindi si filtrino gli eventi associatti a questo file.
Selezionare "Path" nella casella "Column"
Selezionare "contains" nella casella "Relation".
Scrivere "PurblePlace" nella casella "Value".
Selezionare "Include" nella casella "Action".
Premere il pulsante "Add".
Premere il pulsante "Apply" e poi il pulsante "Ok".
Si nota che, nella colonna Path non compare PurblePlace. Però si vede anche l'applicazione ha ottenuto un risultato di Accesso Negato quando ha provato una generica operazione di lettura. Da questo si inizia a sospettare che non si tratti quindi della mancanza del file.
Si ripristinino i permessi di PurblePlace.dll. A questo scopo fare clic destro su una linea che, nella colonna Path, mostra PurblePlace.dll e clic su "Jump Too ...".
Clci destro su PurblePlace.dll e clic su "Proprietà". Clic sulla linguetta "Sicurezza" e poi sul pusante "Continue" (ancora una volta dipende dalle impostazioni dei diritti dell'account dell'utente)
Nella finestra dei permessi clic sul pulsante "Add", Scrivere "Users" e clic su "Ok". Clic Su "Apply" e poi su "Ok".
Lanciare il gioco. Questa volta funziona senza il messaggio di errore.
Prima di chiudere Process Monitor azzerare le impostazioni dei filtri.
Staccare il cavo di rete dal computer.
Questa è una precauzione. Se il computer è infetto, in questo modo si evita che possa propagare il virus, oppure che possa nuovamente venire infettato dopo l'eventuale rimozione del virus.
La disconnessione dalla rete, comunque, introduce una limitazione all'indagine che si condurrà per identificare i file da rimuovere, perchè non si può osservare completamente l'attività del virus.
Individuare i processi o i driver sospetti.
I processi sospetti sono quelli privi di icone, oppure non hanno un nome autore o, ancora,non sono firmati Microsoft. Bisogna anche indagare sui processi che risiedono nella directory "Windows", che posseggono stringhe con URL sconosciuto, che aprono connessioni oppure ospitano servizi o DLL.
Terminare i processi individuati
Eliminare i comandi che lanciano il processo presenti nelle impostazioni di avvio automatico.
Cancellare i file del programma Malware.
Riavviare il computer e ripetere l'indagine.
La questione fondamentale riguarda l'analisi dei processi. Il sistema operativo fornisce "Gestione attività" (Task Manager) per mostrare le informazioni sui processi.
Gestione attività si presenta con un riquadro di dialogo dotato di molte schede. La scheda "Processi" riepiloga i processi in esecuzione. La colonna "Descrizione" (in Windows 7) indica l'applicazione associata al processo. Possono essere mostrate altre colonne: nel menu "Visualizza" scegliere "Seleziona Colonne" e spuntare le caselle accanto alle colonne che si vogliono vedere, oppure togliere la marca di spunta accanto alle colonne che si vogliono nascondere.
Ad esempio, è possibile mostrare la colonna che specifica il percorso del file associato all'applicazione, oppure il comando, con i parametri, che viene usato per lanciare il processo.
Si possono ottenere ulteriori informazioni su un processo facendo clic destro sul processo e scegliendo la voce di menu "Proprietà". Dalla finestra delle proprietà si può conoscere il tipo del file, la dimensione, la firma digitale, il copyright, la versione (i malware potrebbero essere privi di versione), permessi ed altro.