Catturare il traffico di rete in Windows
Di cosa si tratta?
Mi capita così spesso… qualcosa è strano o non funziona come previsto, e sorge la domanda: “Cosa sta succedendo? Perché il client o il server si comportano in questo modo?” Spesso, si tratta di problemi legati alla rete.
Un ricercatore di sicurezza mi ha detto una volta: “Se vuoi capire come funziona un sistema, devi comprendere il traffico di rete. Quasi ogni problema può essere diagnosticato a livello di rete.” Nella mia esperienza: si è rivelato vero. 🥳
Sfortunatamente, la mia esperienza è anche che molte persone non sanno come catturare il traffico di rete in Windows, e l’unica soluzione è “installiamo Wireshark”.
Beh, anche se Wireshark è un ottimo strumento, non è l’unica soluzione e probabilmente non è la migliore per una cattura rapida e una tantum. Ci sono sicuramente soluzioni migliori e probabilmente più veloci, soprattutto quando si tratta dei tuoi server altamente sicuri e ben protetti.

Considerazioni sulla situazione
Ancora una volta, Wireshark è uno strumento potente e più o meno, lo standard de facto per l’analisi dei protocolli di rete. Lo userai sicuramente per analizzare ciò che è stato catturato. Ma il lato negativo di Wireshark è:
- Non è in grado di catturare senza installare un componente aggiuntivo accanto al prodotto stesso: un driver di rete (WinPcap o Npcap).
- È uno strumento complesso e in continua evoluzione con molti binari e potenziale per vulnerabilità.
- Ogni installazione su un server è un potenziale vettore di attacco e contribuisce a rendere i tuoi server unici.
Probabilmente non è uno strumento che vuoi avere su un server di produzione, soprattutto se desideri solo catturare un po’ di traffico per un’analisi rapida.
In ogni caso, mettilo sulla tua workstation per analizzare ciò che è stato catturato. Non hai nemmeno bisogno di avere diritti di amministratore per analizzare con Wireshark! Wireshark funziona perfettamente come installazione portatile senza alcuna installazione a livello di sistema.
Quindi, quali sono le alternative?
Ci sono diverse alternative per portare a termine il lavoro in Windows. E la parte migliore è che non devi installare nulla sulla macchina. Ci sono strumenti integrati in Windows per svolgere il lavoro… e sono piuttosto potenti. Combinati con un po’ di PowerShell e la capacità di PSRemoting, questo scala facilmente.
1. netsh trace - Il vecchio ma d’oro
Il comando netsh trace è uno strumento integrato in Windows che ti consente di catturare il traffico di rete senza la necessità di software aggiuntivo. Utilizza il Windows Event Tracing for Windows (ETW) per catturare e registrare eventi di rete.
Fondamentalmente, si tratta di netsh trace start e netsh trace stop per avviare e fermare la cattura, ma c’è netsh trace show per mostrare lo stato attuale e netsh trace convert per convertire i dati catturati in un formato più leggibile.
Ecco una rapida panoramica dei comandi disponibili in netsh trace:
I seguenti comandi sono disponibili:
Comandi in questo contesto:
? - Visualizza un elenco di comandi.
convert - Converte un file di traccia in un report HTML.
correlate - Normalizza o filtra un file di traccia in un nuovo file di output.
diagnose - Avvia una sessione di diagnosi.
dump - Visualizza uno script di configurazione.
export - Esporta uno scenario in un profilo WPR.
help - Visualizza un elenco di comandi.
merge - Unisce file di traccia e aggiunge metadati simbolici.
postreset -
show - Elenca interfacce, fornitori e stato della tracciatura.
start - Inizia la tracciatura.
stop - Ferma la tracciatura.
Per visualizzare aiuto per un comando, digita il comando, seguito da uno spazio, e poi
digita ?.
Ora, concentriamoci sui comandi start e stop, che sono quelli che utilizzerai per catturare il traffico di rete. I nomi sono piuttosto autoesplicativi, immagino. Per avviare una cattura di rete, devi specificare alcuni parametri in più. Fondamentalmente, devi solo specificare che vuoi catturare il traffico. Questo è semplicemente il parametro capture=yes.
Anche se questo è tutto ciò di cui hai bisogno come minimo assoluto, c’è un altro parametro raccomandato per l’efficienza. Se ti interessa solo catturare il traffico di rete, puoi disabilitare il comportamento di generazione del report di netsh con report=disabled. Questo accelererà il processo di cattura e ridurrà la dimensione del file catturato, poiché non includerà i dati aggiuntivi del report.
Il resto dei parametri può essere utilizzato per personalizzare il processo di cattura secondo le tue esigenze. Ovviamente, puoi specificare dove salvare la traccia e cosa catturare, ma non è obbligatorio.
Poiché catturare il traffico di rete è un’operazione a livello di sistema e influisce su tutti i processi (e tutti gli utenti) sul sistema, devi eseguire il/i comando/i netsh trace con privilegi amministrativi.
Ecco il comando di base per avviare la cattura del traffico di rete utilizzando netsh trace:
# Cattura il traffico di rete sull'interfaccia "Ethernet" e salvalo in un file
netsh trace start capture=yes report=disabled
non appena hai ciò di cui hai bisogno, puoi fermare la cattura con il seguente comando:
# Ferma la cattura del traffico di rete
netsh trace stop

Il traffico catturato viene salvato in un file .etl, che può essere analizzato in seguito. Se desideri avere un nome di file e una posizione personalizzati per i dati catturati, puoi specificarlo con il parametro tracefile.
# Cattura il traffico di rete e salvalo in un file specifico
netsh trace start capture=yes report=disabled tracefile=C:\Administration\Logs\MyTraceFile.etl
Ora che abbiamo catturato il traffico, dobbiamo analizzarlo...
Aprire il file etl in Wireshark richiede - sfortunatamente - un passaggio aggiuntivo. Ma, rimani con me, non è così difficile e non richiede comunque un’installazione:
Basta utilizzare etl2pcapng, un piccolo strumento fornito da Microsoft, e sei a posto. Converte il file etl in un file pcapng, che può essere facilmente aperto in Wireshark per l’analisi.
# Converti il file .etl in formato .pcapng
etl2pcapng nettrace.etl nettrace.pcapng
Sicuramente, il nome del file nel comando può essere un percorso completamente qualificato, inclusa la lettera dell’unità e le directory. Questo è solo un esempio rapido.

Il file etl creato può essere rimosso dopo la conversione, se non ne hai più bisogno. Il file pcapng è quello che utilizzerai per l’analisi in Wireshark.
Oltre a non dover installare nulla sul sistema utilizzando questo metodo, hai anche il vantaggio di avere una cattura più dettagliata, poiché netsh trace cattura più del semplice traffico di rete. Cattura anche informazioni aggiuntive sul sistema e sui processi, che possono essere molto utili per la risoluzione dei problemi e l’analisi:

Questo processo funziona piuttosto bene su ogni sistema Windows a partire da Windows 7 e Windows Server 2008 R2. Dato ciò, è piuttosto buono per una soluzione integrata per ottenere ciò che desideri.
Ancora una volta, tutto questo funziona senza installare nulla sul sistema, il che è un enorme vantaggio, soprattutto sui server di produzione. Puoi semplicemente eseguire i comandi, catturare il traffico e analizzarlo sulla tua workstation con Wireshark senza alcuna installazione sul server stesso.
Ci sono molti più parametri e opzioni disponibili per netsh trace, che ti consentono di personalizzare il processo di cattura secondo le tue esigenze. Ad esempio, puoi specificare
- filtri di protocollo
- filtri di tipi Ethernet
- filtri di indirizzi IP
- interfacce specifiche da catturare
- e molto altro
Puoi visualizzare tutte le opzioni disponibili eseguendo netsh trace show CaptureFilterHelp. Questo ti darà un elenco dettagliato di tutti i filtri e le opzioni disponibili che puoi utilizzare per personalizzare la tua cattura.
I miei preferiti personali sono:
# Per catturare solo il traffico IPv4:
Ethernet.Type=IPv4
# Per catturare solo TCP/UDP/o entrambi:
Protocol=TCP
Protocol=UDP
Protocol=(TCP,UDP)
# Riduci la cattura a indirizzi IP specifici:
IPv4.SourceAddress=<IPv4 address>
IPv4.DestinationAddress=<IPv4 address>
IPv4.Address=(<IPv4 Address>,<IPv4 Address>)
Con queste opzioni, dovresti essere attrezzato per catturare efficacemente il traffico più rilevante per la tua analisi e risoluzione dei problemi. Puoi combinare i filtri per catturare solo il traffico che è rilevante per il tuo caso d’uso specifico, il che può aiutarti a concentrarti sui dati importanti e ridurre il rumore nella tua cattura.
Puoi trovare alcuni esempi nella sezione esempi pratici qui sotto.
2. pktmon - Il nuovo arrivato
Pktmon è uno strumento più recente integrato in Windows 10 / Windows Server 2019 e versioni successive che fornisce capacità di monitoraggio dei pacchetti più convenienti.
È anche uno strumento da riga di comando che ti consente di catturare traffico, ma è più focalizzato sul monitoraggio dei pacchetti rispetto a netsh trace e fornisce un’interfaccia un po’ più user-friendly per gestire i filtri dei pacchetti e catturare il traffico. La sintassi è un po’ diversa, ma sostanzialmente la stessa. Se sei a conoscenza di netsh trace, dovresti sentirti a tuo agio nell’utilizzarlo. Ecco una rapida panoramica dei comandi disponibili in pktmon:
pktmon <command> [OPTIONS | help]
Cattura avanzata dei pacchetti e raccolta di eventi.
Comandi
filter Gestisci i filtri dei pacchetti.
list Elenca i componenti di elaborazione dei pacchetti.
start Inizia
```cattura pacchetti, contatori e raccolta eventi.
stop Ferma la raccolta dei dati.
status Interroga lo stato attuale.
unload Scarica il driver PktMon.
counters Mostra i contatori dei pacchetti attuali.
reset Reimposta i contatori dei pacchetti a zero.
etl2txt Converte il file di log in formato testo.
etl2pcap Converte il file di log in formato pcapng.
hex2pkt Decodifica il pacchetto in formato esadecimale.
help Mostra il testo di aiuto per un comando specifico.
Esempio: pktmon start help
Poiché utilizza anche il Windows Event Tracing for Windows (ETW) per catturare gli eventi di rete, produce anche file etl. Ecco un esempio rapido di come utilizzarlo:
# Inizia a catturare pacchetti e salva l'output in un file
pktmon start --capture pktmon.etl
# Ferma la cattura
pktmon stop
Come puoi vedere, anche se la sintassi è un po’ diversa da netsh trace, è abbastanza simile. Puoi saltare il parametro di reporting, che è necessario nella sua controparte più vecchia. Questo rende la chiamata un po’ più breve.

Qui c’è un vero vantaggio di pktmon: a differenza del classico netsh trace, i dati catturati possono essere convertiti direttamente in un file .pcapng utilizzando la capacità integrata di pktmon. Ciò significa che, all’interno di un sistema operativo attuale, non è nemmeno necessario utilizzare lo strumento aggiuntivo etl2pcapng per la conversione.
Puoi convertire direttamente i dati catturati in un file .pcapng per l’analisi con Wireshark:
# Converte il file .etl in formato .pcapng
pktmon etl2pcap pktmon.etl
Il file etl creato può essere rimosso dopo la conversione, se non ne hai più bisogno. Il file pcapng è quello che utilizzerai per l’analisi in Wireshark. Poiché il file pcapng contiene solo i dati di traffico e non molte informazioni aggiuntive sul sistema e sui processi, è più leggero rispetto al file etl. Ma in caso di una cattura prolungata o di un alto traffico, può comunque essere piuttosto grande.

Come accennato per netsh trace, anche pktmon offre molte opzioni di filtro. Puoi specificare filtri di protocollo, indirizzi IP e molto altro per ridurre la tua cattura.
Puoi visualizzare tutte le opzioni disponibili eseguendo pktmon filter add help. Questo ti darà un elenco dettagliato di tutti i filtri e le opzioni disponibili che puoi utilizzare per personalizzare la tua cattura. La principale differenza è che devi aggiungere i filtri prima di avviare la cattura, il che è una vera differenza rispetto a netsh trace, dove puoi specificare i filtri direttamente nel comando di avvio. Ma potrebbe non essere un grosso problema quando lo fai tramite script. A mio avviso, questo facilita la leggibilità del comando, poiché non hai molti parametri nel comando di avvio, ma è più separato e strutturato.
Ecco alcuni esempi di filtri che puoi utilizzare con pktmon:
# Per catturare solo il traffico IPv4:
pktmon filter add -p IPv4
# Per catturare solo TCP/UDP o entrambi:
pktmon filter add -p TCP
pktmon filter add -p UDP
# Riduci la cattura a indirizzi IP specifici:
pktmon filter add -a IPv4.SourceAddress <indirizzo IPv4>
pktmon filter add -a IPv4.DestinationAddress <indirizzo IPv4>
pktmon filter add -a IPv4.Address <indirizzo IPv4>
Il fatto che puoi eseguire i comandi di aggiunta dei filtri più volte per aggiungere più filtri può essere molto utile, poiché ti consente di costruire la tua configurazione di filtri passo dopo passo e mantenerla più organizzata. Puoi anche elencare i filtri attualmente configurati con pktmon filter list per vedere quali filtri sono attualmente attivi prima di avviare la cattura.
3. Get-NetEventSession - Il modo nativo di PowerShell
Nel caso tu sia un appassionato di PowerShell, ecco un altro modo per catturare il traffico di rete utilizzando il cmdlet Get-NetEventSession, che fa parte del modulo NetEventPacketCapture. Questo cmdlet ti consente di creare e gestire sessioni di eventi di rete, che possono essere utilizzate per catturare il traffico di rete. Anche se richiede un po’ più di testo, PowerShell offre capacità piuttosto interessanti:
- Completamento automatico integrato per i parametri
- Remoting di PowerShell tramite i parametri -CimSession integrati nei cmdlet
# Crea una nuova sessione di eventi di rete
$session = New-NetEventSession -Name "MySession" -LocalFilePath "C:\path\to\capture.etl"
# Aggiungi un provider per catturare il traffico di rete (ad es., Microsoft-Windows-Kernel-Network)
Add-NetEventProvider -SessionName $session.Name -Name "Microsoft-Windows-Kernel-Network"
# Controlla la sessione creata
$session
# Avvia la sessione per iniziare a catturare il traffico
$session | Start-NetEventSession
# Ferma la sessione per terminare la cattura
$session | Stop-NetEventSession
Allo stesso modo degli strumenti da riga di comando, il traffico catturato viene salvato in un file .etl, che può essere analizzato dopo la conversione in formato .pcapng utilizzando etl2pcapng o pktmon. Non lo ripeterò, poiché è lo stesso processo descritto sopra.

Devo ammettere onestamente che questo non è il mio modo preferito di catturare il traffico di rete, poiché è un po’ complesso gestire i vari comandi e i concetti sottostanti delle sessioni di eventi di rete e dei provider. Ma se vuoi rimanere completamente nel mondo di PowerShell, è comunque un modo integrato e potente per catturare il traffico.
Nella sezione degli esempi pratici qui sotto, troverai un esempio in cui ho utilizzato le capacità di remoting di PowerShell per catturare il traffico di rete su un sistema remoto combinato con gli strumenti da riga di comando di cui sopra. Questa è una combinazione piuttosto potente e, a mio avviso personale, non c’è nulla di sbagliato nell’usare strumenti da riga di comando in combinazione con PowerShell. Come spesso accade… usa ciò che si adatta meglio a te e al tuo caso d’uso. Non esiste una soluzione universale.
Anche se, naturalmente, ❤️ PowerShell ❤️ è piuttosto vicino a una soluzione universale. 😁
4. Il modo GUI: Performance Monitor
Se preferisci un’interfaccia grafica classica e basata su MMC all’interno di Windows, puoi utilizzare anche il Performance Monitor (PerfMon) integrato. PerfMon ti consente di creare set di raccolta dati che possono catturare vari metriche di prestazione, incluso il traffico di rete.

Effettivamente, tutti gli strumenti sopra menzionati si basano sulla stessa tecnologia sottostante, il Windows Event Tracing for Windows (ETW), e forniscono semplicemente interfacce diverse e con capacità diverse per catturare eventi. Il Performance Monitor è solo l’interfaccia basata su GUI per ETW.
Per catturare il traffico di rete utilizzando il Performance Monitor, puoi seguire questi passaggi:
- Apri il Performance Monitor digitando
perfmonnel menu Start e premendo Invio. - Nel pannello di sinistra, espandi “Data Collector Sets” e fai clic con il tasto destro su “User Defined”. Seleziona “New” > “Data Collector Set”.
- Dai un nome al tuo set di raccolta dati (ad es., “NetworkTrafficCapture”) e seleziona “Create manually (Advanced)”. Fai clic su “Next”.
- Nella fase “Create Data Collectors”, seleziona “Performance counter” e fai clic su “Next”.
- Fai clic su “Add” per aggiungere contatori di prestazione. Nella finestra di dialogo “Add Counters”, espandi “Network Interface” e seleziona i contatori che desideri catturare (ad es., “Bytes Total/sec”, “Packets/sec”). Fai clic su “Add” e poi su “OK”.
- Fai clic su “Next” e specifica la posizione in cui desideri salvare i dati catturati. Fai clic su “Next” e poi su “Finish” per creare il set di raccolta dati.
- Per iniziare a catturare il traffico di rete, fai clic con il tasto destro sul tuo nuovo set di raccolta dati (ad es., “NetworkTrafficCapture”) e seleziona “Start”. I contatori di prestazione inizieranno a catturare i dati.
- Per fermare la cattura, fai clic di nuovo con il tasto destro sul set di raccolta dati e seleziona “Stop”. I dati catturati verranno salvati nella posizione specificata.

Questo è un metodo particolarmente utile se desideri catturare metriche di prestazione relative al traffico di rete tramite diverse pianificazioni e per un periodo di tempo più lungo. Non è il miglior metodo per una cattura e analisi rapida, ma può essere molto utile per monitorare e analizzare le prestazioni della rete nel tempo.
In aggiunta alla pianificazione, tali set di raccolta dati definiti possono essere facilmente esportati e importati su altri sistemi, il che può essere molto utile per standardizzare il processo di cattura su più server o workstation. Questo è particolarmente utile se combini varie metriche insieme alla cattura del traffico di rete, come l’uso della CPU, l’uso della memoria, l’I/O del disco, ecc., per ottenere una visione più completa delle prestazioni e del comportamento del sistema in relazione al traffico di rete.
Non entrerò nei dettagli su questo, perché l’intento principale di questo post del blog è mostrare come catturare rapidamente e nella console.
Esempio pratico
Cattura solo traffico HTTP o HTTPS
Questo potrebbe essere un caso d’uso comune.
Sfortunatamente, per quanto ne so, non c’è nessuna capacità integrata in netsh trace start per catturare porte specifiche. 😣 I filtri non ti consentono di essere così specifico. Ma con pktmon puoi farlo facilmente. Bene, vale la pena menzionare che questo è possibile solo all’interno di Windows Server 2019 e versioni di Windows 10+ successive alla 1809.
Puoi utilizzare il seguente comando per catturare solo il traffico HTTP e HTTPS:
pktmon filter add "http + https" -d IPv4 -t TCP -p 80 443
pktmon start --capture --file-name https_traffic.etl
pktmon stop
pktmon filter remove
Cattura solo il traffico DNS
Se sei interessato a catturare solo il traffico DNS, puoi utilizzare il seguente comando per catturare solo il traffico DNS:
pktmon filter add "UDP DNS" -d IPv4 -t UDP -p 53
pktmon filter add "TCP DNS" -d IPv4 -t TCP -p 53
pktmon start --capture --file-name dns_traffic.etl
pktmon stop
pktmon filter remove
Cattura solo il traffico SMTP
Se desideri catturare solo il traffico SMTP, puoi utilizzare il seguente comando per catturare solo il traffico SMTP:
pktmon filter add "SMTP" -d IPv4 -t TCP -p 25
pktmon start --capture --file-name smtp_traffic.etl
pktmon stop
pktmon filter remove
Questo è solo un altro rapido esempio di come puoi utilizzare le capacità di filtraggio di `pktmon` per catturare solo tipi specifici di traffico.
Cattura tramite netsh trace con IP specifico
Se sei costretto a utilizzare netsh trace, a causa di sistemi operativi più vecchi o se preferisci usarlo, ti consiglio di specificare un filtro IP per l’IP del tuo sistema. In questo modo riduci il traffico di broadcast e altri traffico che probabilmente non è correlato al tuo sistema.
Prima prepara il tuo filtro IP e il percorso del file per la cattura:
$localIpList = (Get-NetIPAddress -AddressState Preferred -PrefixOrigin Dhcp, Manual -AddressFamily IPv4).ipaddress
$ipFilter = "($($localIpList -join ","))"
$filePath = "traffic.etl"
Poi inizia la cattura con il filtro IP:
netsh trace start capture=yes report=disabled overwrite=yes fileMode=circular Protocol="(UDP,TCP)" tracefile="$($filePath)" IPv4.Address=$ipFilter
Controlla lo stato della cattura:
netsh trace show status
Fai quello che devi fare e, quando hai finito, ferma la cattura:
netsh trace stop
Con questo approccio, puoi facilmente catturare solo il traffico che è rilevante per il tuo sistema, il che può aiutarti a concentrarti sui dati importanti e ridurre il rumore nella tua cattura. Questo è particolarmente utile in ambienti con molto traffico di rete, dove catturare tutto porterebbe a un file di cattura molto grande e ingombrante.
Cattura traffico tramite PowerShell remoting
Vorrei delineare un altro caso d’uso pratico che ho utilizzato nella vita reale più volte. Quando si tratta di ambienti più grandi con più server, non è davvero efficiente accedere a ciascun server ed eseguire i comandi di cattura uno per uno.
È esattamente qui che il PowerShell remoting brilla. 🎉
Puoi combinare le capacità di PowerShell remoting con gli strumenti da riga di comando sopra per catturare facilmente il traffico su un numero arbitrario di sistemi. Considererei questa una combinazione piuttosto potente!
Ecco un rapido esempio di come farlo:
(Per l’ovvio, puoi personalizzare i blocchi di script per includere filtri o parametri aggiuntivi secondo necessità per il tuo caso d’uso specifico)
# Definisci l'elenco dei server remoti su cui desideri catturare il traffico
$remoteServers = @("Server1", "Server2", "Server3")
# Definisci il percorso di base e il nome del file sui server remoti
$remoteBasePath = "C:\Administration\Logs"
$remoteCaptureFileName = "traffic_http"
# Crea sessione con i server remoti
$sessions = New-PSSession -ComputerName $remoteServers
# Definisci il blocco di script per avviare la cattura del traffico di rete utilizzando pktmon
$scriptStart = {
$filePath = "$($using:remoteBasePath)\$($using:remoteCaptureFileName)_$($env:COMPUTERNAME)_$(Get-Date -Format 'yyyy-MM-dd-HH-mm-ss').etl"
PktMon.exe filter add "HTTP" -d IPv4 -t TCP -p 80
PktMon.exe start --capture --file-name "$($filePath)"
}
# Esegui il blocco di script su ciascun server remoto utilizzando PowerShell remoting
Invoke-Command -Session $sessions -ScriptBlock $scriptStart
Ora, fai quello che devi fare per ottenere ciò che desideri…
Puoi controllare lo stato della cattura su ciascun server remoto con il seguente comando:
Invoke-Command -Session $sessions -ScriptBlock { PktMon.exe status }
Quando sei pronto, puoi fermare la cattura e convertire i dati catturati in formato .pcapng su ciascun server remoto con il seguente comando:
$scriptStop = {
# Ferma la cattura
PktMon.exe stop | Out-Null
# Rimuovi i filtri (per essere puliti per la prossima cattura)
PktMon.exe filter remove | Out-Null
# Converti il file .etl in formato .pcapng
PktMon.exe etl2pcap $filePath
# Elimina il file .etl originale dopo la conversione
Remove-Item -Path $filePath -Force
}
Invoke-Command -Session $sessions -ScriptBlock $scriptStop
Ora, hai catturato il traffico su ciascun server remoto, ma allo stesso modo, hai un file di cattura su ciascun server. Fortunatamente, PowerShell ti aiuta anche in questa situazione. Puoi utilizzare le stesse capacità di remoting per copiare i file catturati sul tuo workstation locale per l’analisi con Wireshark. Puoi utilizzare il cmdlet Copy-Item con il parametro -ToSession per copiare i file dai server remoti al tuo computer locale.
# Definisci il percorso locale dove desideri salvare i file catturati
$localPath = Join-Path -Path $home -ChildPath "LocalData"
# Copia i file catturati da ciascun server remoto alla macchina locale
foreach ($session in $sessions) {
$remoteFilePath = "$($remoteBasePath)\$($remoteCaptureFileName)_*.pcapng"
Copy-Item -Path $remoteFilePath -Destination $localPath -FromSession $session
}
# Elimina i file pcapng dai server remoti dopo la copia
Invoke-Command -Session $sessions -ScriptBlock {
Remove-Item -Path ($filePath -replace ".etl", ".pcapng") -Force
}
Quando hai finito, rimuovi le sessioni ai server:
# Rimuovi le sessioni ai server remoti
Remove-PSSession -Session $sessions
Come mostra questo esempio, puoi facilmente catturare il traffico di rete su più sistemi, **combinando `PowerShell` e `pktmon`**. Questo approccio ti consente di gestire e analizzare in modo efficiente il traffico di rete nel tuo ambiente senza la necessità di intervento manuale o di installare nulla sui server remoti. Questo esempio presuppone che tu abbia sistemi con versioni di Windows - più o meno - attuali. Nel caso in cui `pktmon` non sia disponibile sui tuoi sistemi, sostituisci semplicemente i comandi `pktmon` con i comandi `netsh trace` corrispondenti.
Guarda gli esempi di netsh sopra per avere idee su come usarlo. La struttura generale dei blocchi di script rimarrà la stessa.
Conclusione
Catturare il traffico di rete in Windows può ESSERE FACILMENTE fatto utilizzando vari strumenti integrati, ognuno con i propri vantaggi e casi d’uso. Che tu preferisca strumenti da riga di comando come netsh trace e pktmon, o un’interfaccia grafica come Performance Monitor, ci sono opzioni disponibili per soddisfare diverse esigenze e preferenze.
Per catture rapide e analisi, pktmon è una scelta eccellente grazie alla sua facilità d’uso e alle capacità di conversione diretta. (Se sei su Windows Server 2019 o Windows 10+ versione successiva alla 1809) Su sistemi più vecchi, netsh trace può essere uno strumento potente che -fa il lavoro- altrettanto bene.
E per coloro che preferiscono un’interfaccia grafica, Performance Monitor fornisce un modo completo per catturare e analizzare le metriche delle prestazioni di rete. In definitiva, il miglior strumento per catturare il traffico di rete in Windows dipende dai tuoi requisiti specifici e dal livello di dettaglio di cui hai bisogno per la tua analisi.
