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 auditdestrutura em sua plataforma e garanta que auditctl -lretorne algo, mesmo que diga que nenhuma regra foi definida.
Em seguida, adicione uma regra para assistir à chamada do sistema socket()e marque-a para facilitar a localização mais tarde ( -k). Eu preciso assumir que você está em uma arquitetura de 64 bits, mas você pode substituir b32no lugar do b64se você não é.
auditctl -a exit,always -F arch=b64 -F a0=2 -F a1\&=2 -S socket -k SOCKET
Você precisa escolher entre as páginas de manual e os arquivos de cabeçalho para criar isso, mas o que ele captura é essencialmente essa chamada de sistema:, socket(PF_INET, SOCK_DGRAM|X, Y)onde o terceiro parâmetro não é especificado, mas frequentemente zero. PF_INETé 2 e SOCK_DGRAMé 2. As conexões TCP usariam o SOCK_STREAMque definiria a1=1. ( SOCK_DGRAMno segundo parâmetro pode ser ORed com SOCK_NONBLOCKou SOCK_CLOEXEC, portanto, a &=comparação.) Essa -k SOCKETé a nossa palavra-chave que queremos usar ao pesquisar trilhas de auditoria posteriormente. Pode ser qualquer coisa, mas eu gosto de simplificar.
Deixe alguns momentos para revisar as trilhas de auditoria. Opcionalmente, você pode forçar alguns pacotes executando o ping de um host na rede, o que causará uma pesquisa de DNS, que usa o UDP, que deve disparar nosso alerta de auditoria.
ausearch -i -ts today -k SOCKET
E uma 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 pingcomando fez com que o soquete fosse aberto. Eu poderia então executar strace -p 14510o processo, se ainda estivesse em execução. O ppid(ID do processo pai) também é listado, caso seja um script que gera muito o filho problemático.
Agora, se você tiver muito tráfego UDP, isso não será bom o suficiente e você precisará recorrer ao OProfile ou SystemTap , ambos atualmente além dos meus conhecimentos.
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, substitua apenas -apor -d.
auditctl -d exit,always -F arch=b64 -F a0=2 -F a1\&=2 -S socket -k SOCKET