Dump del traffico di rete di una singola applicazione (simile a strace)


11

Sto cercando un modo per scaricare pcap di dati di rete generati da un'applicazione, in modo simile stracescaricando syscalls, ecc. Ad esempio:

net-strace somecommand -args

somecommandfarebbe qualcosa sulla rete e net-stracesalverebbe un dump pcap di tutto il traffico generato da quell'app (+ risposte e traffico correlato).

Questo può essere raggiunto?


Il problema è che le applicazioni non inviano pacchetti (tranne quelli che usano socket non elaborati come il ping) ma usano un'API di rete che fa sì che il kernel invii pacchetti (e ne riceva uno correlato) per loro conto.
Stéphane Chazelas,

Sì, ma ci sono applicazioni (ad es. Proxychains - proxychains.sourceforge.net ) che eseguono tutti i dati dell'applicazione attraverso un proxy. Non so come lo fanno, ma possono catturarlo e inviarlo tramite un proxy. Forse se esiste un proxy semplice (eseguito localmente), che può scaricare pcap, è possibile utilizzare proxychains + proxy combo per ottenere il dump.
gesti,

Probabilmente stanno dirottando l'API (con LD_PRELOAD) rispetto ai pacchetti. Detto questo, si potrebbe essere in grado di iniettare un setockopt (SO_MARK) nelle applicazioni e utilizzare netfilter per registrare i pacchetti su ulog.
Stéphane Chazelas,

3
Creare un nuovo spazio dei nomi di rete per l'applicazione e acquisire tutto il traffico in esso presente potrebbe essere un approccio accettabile anche per alcuni casi d'uso.
Stéphane Chazelas,

Risposte:


3

Che ne dici di usare lo stesso strace?

strace -f -e trace=network -o output_file -s 10000 somecommand -args

La riga di comando che hai dato sembra mostrare solo le richieste DNS. L' -eopzione di strace spesso non seleziona ciò che realmente desideri.
Robin Green,

2

È possibile scaricare il traffico generato dall'applicazione con diversi metodi:

Se si conoscono le porte utilizzate dall'applicazione, è possibile eseguire tcpdump o WireShark con regole di filtro specifiche per queste porte.

Se questa non è un'opzione, è possibile contrassegnare i pacchetti dell'applicazione utilizzando una regola iptables , corrispondente al proprietario del processo. Potrebbe essere necessario creare un nuovo account utente per isolare completamente il processo. Quindi è possibile acquisire il traffico che corrisponde solo alla regola.

È possibile trovare informazioni più complete su questo argomento correlato: /ubuntu/11709/how-can-i-capture-network-traffic-of-a-single-process

Potresti anche trovare interessante questo programma tracciato come affermato nell'argomento precedente. http://mutrics.iitis.pl/tracedump

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.