Visualizzazione post con etichetta processi. Mostra tutti i post
Visualizzazione post con etichetta processi. Mostra tutti i post

sabato 30 ottobre 2021

Windows 10: Visualizzare i processi eseguiti da un utente sul PC

Tramite il registro eventi di sistema è possibile monitorare i programmi eseguiti da un utente sulla macchina. Per permettere a Windows di tenere traccia di tali eventi nei log è necessario procedere all'attivazione dell'audit (si veda l'articolo Windows 10: Attivazione audit). 
Dato che verranno tracciati un numero elevato di eventi è consigliabile incrementare le dimensioni del registro eventi come indicato nell'articolo Windows 10: Aumentare la dimensione dei registri eventi.

Visualizzare i processi mandati in esecuzione

Per analizzare i log ed individuare i programmi eseguiti è possibile procedere come indicato di seguito:
  • Avviare il Visualizzatore eventi (WIN+R e digitare eventvwr.msc seguito da invio).
  • Nel riquadro sinistro espandere Registri di Windows e selezionare il registro Sicurezza. Cliccare su Filtro registro corrente.
    Visualizzatore eventi
    FIG 1 - Visualizzatore eventi

  • Nella casella contrassegnata dall'etichetta <Tutti gli ID evento> digitare l'ID 4688 (l'ID corrisponde all'evento: È stato creato un nuovo processo) e cliccare su OK.
    Filtro registro corrente
    FIG 2 - Filtro registro corrente

  • Verranno visualizzati tutti gli eventi relativi all'esecuzione di un processo.
    Eventi ID 4688
    FIG 3 - Eventi ID 4688


Ricerca per programma tramite PowerShell

Se si intende filtrare i risultati in base al programma avviato è possibile utilizzare PowerShell. Supponiamo di voler visualizzare tutti gli avvii del Prompt dei comandi (cmd.exe):
  • Una volta avviato PowerShell come amministratore digitare il seguente comando
    Get-WinEvent -FilterHashtable @{LogName='Security'; id=4688;data='C:\windows\system32\cmd.exe'} 
    verranno visualizzati tutti gli eventi relativi all'avvio del prompt dei comandi. Per maggiori dettagli possiamo aggiungere Format-List come indicato di seguito
    Get-WinEvent -FilterHashtable @{LogName='Security'; id=4688;data='C:\windows\system32\cmd.exe'} |Format-List
    Sostituendo la stringa in data= possiamo personalizzare la ricerca indicando altri processi di nostro interesse.
    PowerShell, ricerca eventi avvio Prompt dei comandi
    FIG 4 - PowerShell, ricerca eventi avvio Prompt dei comandi

    PowerShell, dettagli eventi avvio Prompt dei comandi
    FIG 5 - PowerShell, dettagli eventi avvio Prompt dei comandi

  • Per visualizzare quante volte un processo è stato eseguito, digitare il seguente comando nella finestra PowerShell 
    Get-WinEvent -FilterHashtable @{LogName='Security'; id=4688;data='C:\windows\system32\cmd.exe'} | Measure-Object 
    PowerShell, numero di avvii del Prompt dei comandi
    FIG 6 - PowerShell, numero di avvii del Prompt dei comandi


Ricercare gli eventi tramite XPath

XPath è un linguaggio che permette di individuare i nodi all'interno di un documento XML. Un sottoinsieme della versione 1.0 è supportato dal sistema di log di Windows.
Gli eventi di Windows vengono conservati in formato XML. Per verificarlo, aprire un qualsiasi evento all'interno del registro tramite doppio click, selezionare la scheda Dettagli e quindi selezionare l'opzione XML. Viene riportata la rappresentazione XML nativa dell'evento, meno leggibile rispetto a quella a cui siamo abituati.
Proprietà evento in formato XML
FIG 7 - Proprietà evento in formato XML


Per ricercare gli eventi tramite XPath:
  • Da Visualizzatore eventi cliccare su Filtro registro corrente e nella casella <Tutti gli ID evento> digitare nuovamente l'ID 4688
  • Spostarsi sulla scheda XML. Verrà visualizzata la query XPath con i criteri di filtro inseriti. Per modificare la query manualmente selezionare la casella Modifica query manualmente e rispondere affermativamente alla successiva finestra di dialogo.
    Filtro registro corrente, Query in XML
    FIG 8 - Filtro registro corrente, Query in XML

    Visualizzatore eventi, modifica manuale query
    FIG 9 - Visualizzatore eventi, modifica manuale query

  • Per ricercare solo le occorrenze relative ad un determinato utente, modificare la query come indicato di seguito in modo
    <QueryList>
      <Query Id="0" Path="Security">
        <Select Path="Security">*[System[(EventID=4688)]]and
        *[EventData[Data[@Name='SubjectUserName']='utente']]
        </Select>
      </Query>
    </QueryList>
    Dove al posto di utente va specificato l'account utente per il quale si intende effettuare la ricerca. Cliccando su OK verrà eseguita la query con le condizioni specificate.
  • È possibile aggiungere ulteriori condizioni alla ricerca. Ad esempio, per ricercare tutti i processi cmd.exe eseguiti dall'utente Virtual la query sarà analoga a
    <QueryList>
      <Query Id="0" Path="Security">
        <Select Path="Security">*[System[(EventID=4688)]]and
         *[EventData[Data[@Name='SubjectUserName']='Virtual'
    	 and Data[@Name='NewProcessName']='C:\Windows\System32\cmd.exe']]
    	</Select>
      </Query>
    </QueryList>

    Visualizzatore eventi, query XPath
    FIG 10 - Visualizzatore eventi, query XPath






venerdì 20 settembre 2019

Linux: Monitorare i processi in real time utilizzando l'utility Watch

Lavorando in ambiente Linux da terminale qualche volta può essere necessario eseguire un comando ripetutamente. In Linux tale operazione è resa possibile dall'utility watch.

Possiamo utilizzare tale utility per eseguire ripetutamente il comando ps e visualizzare, in tempo reale, informazioni relative ai processi in esecuzione. Per raggiungere tale scopo basta digitare il seguente comando da terminale

watch -n 1 'ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head'


Linux, Monitoring in tempo reale dei processi in esecuzione
FIG 1 - Linux, Monitoring in tempo reale dei processi in esecuzione


giovedì 22 dicembre 2016

Windows 10: Verificare quali processi vengono eseguiti con privilegi elevati

Alcuni processi in ambiente Windows hanno la necessità di essere eseguiti con privilegi elevati per poter operare.
Un processo può essere avviato manualmente con privilegi elevati o come amministratore oppure autorizzato dal UAC (Controllo Account Utente). Uno sviluppatore può fare in modo, tramite una tecnica di sviluppo nota come embedded manifest, che la sua applicazione richieda il token di accesso come amministratore. In queste situazioni interviene il UAC.

Per visualizzare velocemente quali processi sono in esecuzione con privilegi elevati o autorizzati dal UAC è possibile procedere nel seguente modo:
  • Premere la combinazione di tasti CTRL+ALT+CANC e selezionare Gestione Attività;
  • Posizionarsi sulla scheda Dettagli;
  • Cliccare, con il tasto destro del mouse, sull'intestazione di una colonna e selezionare, dal menu contestuale, l'opzione Seleziona colonne;
    Gestione attività, Seleziona colonne
    FIG 1 - Gestione attività, Seleziona colonne
  • Nell'elenco selezionare Con privilegi elevati e Virtualizzazione controllo dell'account utente quindi confermare cliccando su OK;

    Seleziona colonne, Con privilegi elevati e Virtualizzazione controllo dell'account utente
    FIG 2 - Seleziona colonne, Con privilegi elevati e Virtualizzazione controllo dell'account utente

In Gestione attività, all'interno della colonna Con privilegi elevati troviamo valori Si e No che indicano se il processo è stato eseguito con privilegi elevati o meno.
Nella colonna Virtualizzazione controllo dell'account utente possiamo trovare uno dei seguenti valori:
Non consentito - Processo in esecuzione come amministratore (privilegi elevati);
Abilitato - Processo soggetto alla virtualizzazione UAC;
Disabilitato - Processo non soggetto alla virtualizzazione UAC.
Gestione attività, Con privilegi elevati e Virtualizzazione controllo dell'account utente
FIG 3 - Gestione attività, Con privilegi elevati e Virtualizzazione controllo dell'account utente



giovedì 23 luglio 2015

Windows Quick Tip: Verificare le connessioni di rete in corso tramite prompt dei comandi

Diversi programmi installati sui PC, oltre ai browser, stabiliscono o accettano connessioni remote. I motivi possono essere più o meno leciti come ad esempio per verificare la presenza di aggiornamenti, per salvare le impostazioni su un server remoto, per raccogliere informazioni sulle preferenze dell'utente in modo da migliorare le versioni future del prodotto o, nel caso di spyware, per inviare informazioni rubate relative all'utente.
Esistono vari modi e vari tool per verificare quali siano i programmi che attivano una connessione verso l'esterno, uno di questi è fornito insieme al sistema operativo: netstat.

Eseguire il prompt dei comandi come amministratore e digitare il comando netstat -bona per avere l'elenco dei processi che hanno attivato una connessione remota (o sono in ascolto) e relativo indirizzo esterno a cui sono connessi.
Netstat -bona
FIG 1 - Netstat -bona
Eseguendo il comando netstat /? vengono visualizzati tutti i parametri utilizzabili:
-a             Visualizza tutte le connessioni e le porte di ascolto
-b Visualizza il file eseguibile utilizzato per la creazione di ogni connessione o porta di ascolto. Alcuni file eseguibili conosciuti includono più componenti indipendenti. In tali casi viene visualizzata la sequenza dei componenti utilizzati per la creazione della connessione o porta di ascolto e il nome del file eseguibile viene visualizzato in fondo, tra parentesi quadre ([]). Nella parte superiore è indicato il componente chiamato e così via, fino al raggiungimento di TCP/IP. Se si utilizza questa opzione, l'esecuzione del comando può richiedere molto tempo e riuscirà solo se si dispone di autorizzazioni sufficienti.
-e Visualizza le statistiche Ethernet. Può essere utilizzata insieme all'opzione -s.
-fVisualizza i nomi di dominio completi (FQDN, Fully Qualified Domain Name) per gli indirizzi esterni.
-nVisualizza indirizzi e numeri di porta in forma numerica.
-oVisualizza l'ID del processo proprietario associato a ogni connessione.
-p protoVisualizza le connessioni relative al protocollo specificato da "proto", che può essere TCP, UDP, TCPv6 o UDPv6. Se utilizzato insieme all'opzione -s per le statistiche per protocollo, "proto" può essere: IP, IPv6, ICMP, ICMPv6, TCP, TCPv6, UDP o UDPv6.
-r Visualizza la tabella di routing.
-s Visualizza le statistiche per protocollo. Per impostazione predefinita, vengono visualizzate le statistiche per IP, IPv6, ICMP, ICMPv6, TCP, TCPv6, UDP e UDPv6. Per specificare un sottoinsieme dei valori predefiniti, è possibile utilizzare l'opzione -p.
-t Visualizza lo stato di offload della connessione corrente.
-x Visualizza le connessioni, i listener e gli endpoint condivisi.
-y Visualizza il modello di connessione TCP per tutte le connessioni. Non può essere utilizzata in combinazione con le altre opzioni.
interval Ripete la visualizzazione delle statistiche selezionate, con una pausa di un numero di secondi pari a "interval" dopo ogni visualizzazione. Per interrompere la ripetizione della visualizzazione delle statistiche, premere CTRL+C. Se questa opzione viene omessa, le informazioni di configurazione correnti verranno visualizzate una volta sola.


Le stesse informazioni visualizzate tramite netstat possono essere ottenute in un formato grafico più amichevole tramite l'utilizzo di tool di terze parti come CurrPorts di NirSoft (www.nirsoft.net).
CurrPorts di NirSoft
FIG 2 - CurrPorts di NirSoft
Analizzando i processi e gli indirizzi esterni a cui si collegano possiamo individuare eventuali applicazioni sospette e procedere alla loro eliminazione o a bloccarle tramite il firewall.