Registra o tráfego de rede com o ID do processo no Mac OS X?

2

Eu quero registrar todo o tráfego de rede em um servidor Mac OS X (como o tcpdump faz), mas incluindo o ID do processo que é responsável. Usar lsof só me dá as conexões atuais, não as anteriores.

Existe uma maneira de fazer isso?

Atenciosamente, Jochen

    
por Jochen 29.11.2010 / 01:05

3 respostas

5

Enquanto o nettop é bom para visualizar o instantâneo das conexões atuais, você pode usar o tcpdump para coletar os dados e processar as informações também. Com tcpdump use a opção -k para exibir metadados para o tráfego capturado.

   -k     Control the display of packet metadata via an optional metadata_arg argument. This is useful when displaying packet saved
          in the pcap-ng file format or with interfaces that support the PKTAP data link type.

          By default, when the metadata_arg optional argument is not  specified,  any  available  packet  metadata  information  is
          printed out.

          The  metadata_arg  argument  controls  the  display of specific packet metadata information using a flag word, where each
          character corresponds to a type of packet metadata as follows:

                 I     interface name (or interface ID)
                 N     process name
                 P     process ID
                 S     service class
                 D     direction
                 C     comment

          This is an Apple modification.

Assim, por exemplo, exibindo o ID do processo e o nome do processo, você pode fazer isso:

tcpdump -k NP
    
por 04.07.2016 / 11:35
2

Eu recentemente tive esse problema também. Uma abordagem que você pode tomar é usar tanto o tcpdump quanto o nettop em paralelo (cada lado, lado a lado, em seus próprios terminais), e observe visualmente como o tráfego de rede se manifesta.

Por exemplo, meu firewall detectou recentemente um tráfego de rede suspeito saindo da Ethernet do meu Mac, em uma sub-rede privada que eu não reconheci e em uma porta (TCP 7000) que parecia incomum. Em um shell de terminal eu corri:

$ sudo tcpdump port 7000

e no outro shell do terminal eu corri:

$ sudo nettop -m tcp

Quando o tráfego de rede apareceu via tcpdump, quase instantaneamente também foi adicionado à saída nettop, o que indicava que era o daemon auxiliar do AirPlay da Apple rodando com ID de processo (PID) 87 neste exemplo:

AirPlayXPCHelpe.87

Isso pode não ser necessariamente prático para observar todas as situações em que você está tentando capturar algo em sua rede que parece anormal, mas como ponto de partida pode valer a pena tentar criar um script do DTrace provavelmente mais complexo.

    
por 04.05.2016 / 15:46
0

Infelizmente, a melhor maneira de fazer isso ( tcpsnoop , que usa o DTrace para fazer exatamente o que você descreve) não funciona na implementação do dtrace no Mac OS X. Você precisaria de algum tipo de firewall de aplicativo ( Little Snitch por exemplo), mas isso é mais um desktop / coisa de usuário único do que algo que você deseja executar no seu servidor.

Isso parece ser um requisito estranho, na verdade, você está tentando criar um sistema de detecção de invasões ou apenas descobrir o que está causando o acesso à rede?

    
por 30.01.2011 / 08:36