A auditoria do Linux pode ajudar. Pelo menos, localizará usuários e processos que fazem conexões de rede de datagrama. Pacotes UDP são datagramas.
Primeiro, instale a estrutura auditd em sua plataforma e assegure-se de que auditctl -l retorne alguma coisa, mesmo que diga que nenhuma regra foi definida.
Em seguida, adicione uma regra para assistir à chamada do sistema socket() e marque-a para encontrar mais tarde ( -k ). Eu preciso assumir que você está em uma arquitetura de 64 bits, mas você pode substituir b32 no lugar do b64 se você não estiver.
auditctl -a exit,always -F arch=b64 -F a0=2 -F a1\&=2 -S socket -k SOCKET
Você tem que escolher através de páginas man e arquivos de cabeçalho para construir isto, mas o que captura é essencialmente esta chamada de sistema: socket(PF_INET, SOCK_DGRAM|X, Y) , onde o terceiro parâmetro não é especificado, mas freqüentemente zero. PF_INET é 2 e SOCK_DGRAM é 2. As conexões TCP usariam SOCK_STREAM , o que definiria a1=1 . ( SOCK_DGRAM no segundo parâmetro pode ser ORed com SOCK_NONBLOCK ou SOCK_CLOEXEC , daí a comparação &= .) O -k SOCKET é nossa palavra-chave que queremos usar ao pesquisar as trilhas de auditoria posteriormente. Pode ser qualquer coisa, mas eu gosto de simplificar.
Aguarde alguns instantes e analise as trilhas de auditoria. Opcionalmente, você pode forçar alguns pacotes fazendo ping em um host na rede, o que fará com que ocorra uma pesquisa de DNS, que usa UDP, o que deve atrapalhar nosso alerta de auditoria.
ausearch -i -ts today -k SOCKET
A saída semelhante à seção abaixo será exibida. Estou abreviando para destacar as partes importantes
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
Na saída acima, podemos ver que o comando ping fez com que o soquete fosse aberto. Eu poderia então executar strace -p 14510 no processo, se ainda estivesse em execução. O ppid (ID do processo pai) também é listado, caso seja um script que gera muito a criança problemática.
Agora, se você tem muito tráfego UDP, isso não será bom o suficiente e você terá que recorrer ao OProfile ou SystemTap , ambas atualmente além do meu especialização.
Isso deve ajudar a restringir as coisas no caso geral.
Quando terminar, remova a regra de auditoria usando a mesma linha usada para criá-la, apenas substitua -a por -d .
auditctl -d exit,always -F arch=b64 -F a0=2 -F a1\&=2 -S socket -k SOCKET