In che modo lo spostamento di un socket di dominio unix consente a socat di monitorare il traffico?


12

socat può essere utilizzato per monitorare il traffico attraverso un socket di dominio Unix:

sudo mv /path/to/sock /path/to/sock.original
sudo socat -t100 -x -v UNIX-LISTEN:/path/to/sock,mode=777,reuseaddr,fork UNIX-CONNECT:/path/to/sock.original

Non capisco bene come funzioni questo meccanismo, sperando che qualcuno possa spiegarlo un po '. In particolare, come funziona lo spostamento del file socket se un processo lo sta già ascoltando? Inoltre, dopo lo spostamento: lsof /path/to/sock/path/to/sock.originalrestituisce alcun risultato.

Risposte:


11

Tali comandi devono essere eseguiti quando il server che si desidera monitorare è attualmente in ascolto /path/to/sock. Quindi, se si rinomina /path/to/sock, il server non sarà interessato.

Il socatcomando inserisce un man-in-the-middle. Ascolta /path/to/sockse inoltra tutto il traffico dai client /path/to/socks.original(e lo registra nel processo con -v).

Funziona solo con i tipi di socket di stream (usa UNIX-RECVFROM/ UNIX-RECVper socket di datagramma ) e solo se i client usano solo read/write/send/recvquei socket, non sendmsg()con dati accessori e altre cose fantasiose.

lsofsegnalerà solo i processi di ascolto ( socate il server per i socket di ascolto e accettati). In genere non è possibile collegare un socket collegato sul client al percorso del socket.

Se lo fai , prima di avviare il server, che poi non funzionerà come server tenterà di ascolto su /path/to/sockse fallire come socatgià in ascolto su quella. Oppure devi dire al server di ascoltare /path/to/sock.originalinvece.

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.