Il controllo di Linux può aiutare. Individuerà almeno utenti e processi che effettuano connessioni di rete di datagrammi. I pacchetti UDP sono datagrammi.
Innanzitutto, installa il auditd
framework sulla tua piattaforma e assicurati che auditctl -l
restituisca qualcosa, anche se dice che non sono definite regole.
Quindi, aggiungi una regola per guardare la chiamata di sistema socket()
e taggala per una facile ricerca in seguito ( -k
). Devo presumere che tu abbia un'architettura a 64 bit, ma puoi sostituirlo b32
al posto del b64
se non lo sei.
auditctl -a exit,always -F arch=b64 -F a0=2 -F a1\&=2 -S socket -k SOCKET
Devi compilare pagine man e file header per creare questo, ma ciò che cattura è essenzialmente questa chiamata di sistema:, socket(PF_INET, SOCK_DGRAM|X, Y)
dove il terzo parametro non è specificato ma spesso zero. PF_INET
è 2 ed SOCK_DGRAM
è 2. Verranno utilizzate le connessioni TCP SOCK_STREAM
che verrebbero impostate a1=1
. ( SOCK_DGRAM
nel secondo parametro può essere ORed con SOCK_NONBLOCK
o SOCK_CLOEXEC
, quindi il &=
confronto.) -k SOCKET
È la nostra parola chiave che vogliamo usare quando cerchiamo audit trail in un secondo momento. Può essere qualsiasi cosa, ma mi piace mantenerlo semplice.
Lascia passare qualche momento e rivedi le piste di controllo. Facoltativamente, è possibile forzare un paio di pacchetti eseguendo il ping di un host in rete, il che provocherà una ricerca DNS, che utilizza UDP, che dovrebbe far scattare il nostro avviso di controllo.
ausearch -i -ts today -k SOCKET
Verrà visualizzato un output simile alla sezione seguente. Lo sto abbreviando per evidenziare le parti importanti
type=SYSCALL ... arch=x86_64 syscall=socket success=yes exit=1 a0=2 a1=2 ... pid=14510 ... auid=zlagtime uid=zlagtime ... euid=zlagtime ... comm=ping exe=/usr/bin/ping key=SOCKET
Nell'output sopra, possiamo vedere che il ping
comando ha causato l'apertura del socket. Potrei quindi eseguire strace -p 14510
il processo, se fosse ancora in esecuzione. L' ppid
ID processo principale è anche elencato nel caso in cui sia uno script che genera molto il problema figlio.
Ora, se hai molto traffico UDP, questo non sarà abbastanza buono e dovrai ricorrere a OProfile o SystemTap , entrambi attualmente al di fuori della mia esperienza.
Ciò dovrebbe aiutare a restringere le cose nel caso generale.
Al termine, rimuovere la regola di controllo utilizzando la stessa riga utilizzata per crearla, sostituirla solo -a
con -d
.
auditctl -d exit,always -F arch=b64 -F a0=2 -F a1\&=2 -S socket -k SOCKET