isolare l'applicazione e verificare quali pacchetti sta inviando su Internet


18

Non sono sicuro che questo tipo di domande sia appropriato qui, quindi perdonami se sbaglio.

Ecco un problema: voglio vedere quale programma specifico sta inviando a Internet, ma il fatto è che sul computer ci sono molte applicazioni e servizi che usano Internet. Quindi è impossibile capire quali pacchetti sono stati inviati da un'app a cui sono interessato.

Un modo è provare a chiudere tutte le altre applicazioni, ma questo è impossibile.

Quindi c'è un modo per isolare un'applicazione specifica? Sto lavorando su Windows 7 e catturare pacchetti con WireShark

Risposte:


13

Dato che stai usando Wireshark, i tuoi numeri di porta non vengono automaticamente risolti in un nome di applicazione, quindi dovrai fare un po 'di più per affinare le informazioni che stai cercando. Ogni applicazione che utilizza TCP / IP per comunicare attraverso una rete utilizzerà le porte, in modo che lo stack di rete sappia dove recapitare i segmenti (mi piace chiamarlo un indirizzo di applicazione).

Ai client che si connettono a un'applicazione server su una porta specifica verrà assegnato dinamicamente un numero di porta da un intervallo dinamico. Quindi devi prima scoprire quali connessioni TCP / UDP sono aperte dalla tua applicazione:

netstat -b

dalla riga di comando ti fornirà un elenco di connessioni con il nome dell'eseguibile che ha creato la connessione. Ogni eseguibile ha una o più connessioni elencate come 127.0.0.1:xxxxx, dove X è il numero di porta locale per la connessione.

Ora in WireShark, devi dirlo per visualizzare i pacchetti che hanno avuto origine o sono destinati a quella porta usando uno o più di questi filtri:

tcp.port == xxxxx o udp.port == xxxxx

Aggiungi un ulteriore or tcp.port == xxxxxper ogni connessione che vuoi mostrare.

Questo ti permetterà di vedere tutto il traffico per le connessioni aperte dalla tua applicazione e Wireshark non includerà solo segmenti TCP / UDP non elaborati ma includerà i vari protocolli del livello dell'applicazione (ad es. HTTP) che utilizzavano anche quei numeri di porta.

Se la tua applicazione sembra comunicare con un solo server, puoi semplicemente utilizzare l'indirizzo IP di quel server per filtrare in base a:

ip.addr == x.x.x.x

Il problema più grande con i socket (utilizzando porte senza prenotazione) è che un socket aperto e chiuso da un'applicazione ha una natura molto dinamica. Quando esegui il comando netstat -b ti darà risultati diversi per ogni applicazione elencata anche se lo esegui in un intervallo di 5 secondi. Quindi è molto difficile notare tutti i numeri di porta che vengono assegnati alla mia applicazione. Osservavo lo stesso per la mia applicazione nello strumento "TCPView" (suite sysInternals). Ho visto che in un arco di 10 secondi circa 15 connessioni socket TCP sono state aperte dalla mia applicazione e molti di loro sono stati uccisi
RBT

1
È qui che Microsoft Network Monitor è utile, perché può tracciare il processo da cui proviene la comunicazione di rete e raggrupparla in quel processo. Tuttavia, da quando è stato scritto, è stata rilasciata una nuova versione principale di Wireshark. Può accadere che un tale raggruppamento sia possibile anche usando Wireshark, ma non lo uso da un po '.
Giovanni

7

Se si utilizza Process Monitor di Microsoft , è possibile modificare i filtri per mostrare solo le comunicazioni di rete da processi specifici. Non ti dà il contenuto dei pacchetti, ma mostra a quali host sta parlando l'app.


1
? Voleva vedere i pacchetti.
Pacerier,

1

Microsoft Network Monitor ti mostrerà il processo responsabile del flusso di traffico.



0

Utilizzare System Internals Process Monitor per ottenere il numero di processo dell'applicazione e consultare gli altri strumenti di System Internal su:

https://docs.microsoft.com/en-us/sysinternals/

Apri cmd.exe ed esegui, mostra le opzioni della riga di comando di netstat, netstat /? .

Ora prova netstat -bo 1 >> c: /test.log. Ciò ti consentirà di trovare i dati di connessione alla rete delle tue applicazioni specifiche in un file costantemente aggiornato.

Ricorda, devi interrompere netstat -bo >> c: /test.log dalla scrittura nel registro inserendo un ctl-C nella finestra cmd.


-2

Sostituisci semplicemente My_Applicationcon l'applicazione PNAMEoPID

netstat --programmi | grep "My_Application"

Non lo collaudo su Windows 7. Ma funziona su Linux.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.