Identifique aplicativos de acesso à Internet "desonestos"

14

No momento, tenho um aplicativo / serviço / widget / plugin / cronjob, acessando a Internet regularmente. Eu poderia entrar nos detalhes do meu problema específico, mas eu preferiria ter uma resposta que me permitisse errar e, no processo, aprender mais sobre o Ubuntu.

Estou usando dnstop no momento para exibir todas as solicitações de DNS que estão sendo feitas na minha rede. Atualmente, por causa de argumentos, há uma solicitação que vai para weather.noaa.gov em um ciclo de 15 minutos. Provavelmente é um widgit do clima, embora tenha verificado meus processos e não tenha encontrado nada, e a solicitação está vindo do meu computador.

Então, a questão, como eu determino qual processo está acessando weather.noaa.gov ?

Eu não quero passar por um processo de eliminação fechando cada serviço / plugin / aplicativo para descobrir isso. Gostaria de encontrar uma maneira de determinar qual processo está realizando essa solicitação de DNS.

Se eu tivesse um "Firewall de Aplicativo" decente, a solicitação nunca teria sido feita. Mas este é um cenário de "cavalo já ferrou" e gostaria de encontrar o processo "desonesto" que está fazendo essa solicitação de DNS.

    
por Meer Borg 27.03.2013 / 01:51

2 respostas

7

Se você não se importar em ter um loop infinito em execução por algum tempo, poderá executar o netstat continuamente e filtrar a saída para o endereço IP do computador ao qual seu programa está se conectando. Eu sugiro usar endereços IP em vez de nomes de domínio, porque é muito mais rápido, reduzindo o tempo que cada chamada netstat leva e, portanto, aumentando as chances de realmente pegar o seu processo. Você deve executar o comando netstat como root, se achar que o processo não pertence ao usuário atualmente conectado. Então, primeiro use o nslookup para descobrir o IP do domínio:

nslookup weather.noaa.gov

Para mim, isso dá no momento: 193.170.140.70 e 193.170.140.80. Agora você pode colocar um loop infinito de netstats. A saída que você pode filtrar usando grep (e descartar STDERR).

while [ true ] ;  do netstat -tunp 2>/dev/null | grep -e 193.170.140.70 -e 193.170.140.80  ; done

Claro, edite os endereços IP no exemplo acima. Este exemplo está testando conexões TCP e UDP (-tu), não faz resolução de DNS (-n) e lista os processos (-p). Se você acha que há tempo suficiente para fazer a resolução de DNS, simplesmente omita a opção -n para netstat e coloque o domínio para o grep em vez do IP. Você pode parar o loop infinito simplesmente pressionando CTRL + c

Espero que isso ajude, Andreas

PS: Eu sei, esta não é a maneira ideal, eficiente ou limpa de fazê-lo, mas para uma pesquisa única, isso deve ser suficiente.

    
por soulsource 27.03.2013 / 11:04
3

Você também pode "quebrar" o aplicativo por meio da adição de / etc / hosts do FQDN que é sendo conectado a. Dê a ele algum IP não roteável como 10.1.2.3 (ou 127.0.0.1) e veja o que quebra.

    
por Allan Bailey 03.04.2013 / 01:01