Qual é o procedimento de recebimento e processamento de pacotes Wireshark em uma máquina Windows?

20

Estou prestes a usar Wireshark para algum monitoramento de tráfego no meu computador Windows . Enquanto trabalhava nisso, fiquei imaginando como o Wireshark gerencia os pacotes de rede de baixo nível antes que o Windows faça.

Em primeiro lugar, uma interface de rede na minha placa de rede recebe um pacote. A NIC faz então algumas verificações iniciais (CRC, endereço MAC correto, etc.). Supondo que a verificação foi bem-sucedida, a NIC encaminha o pacote. Mas como e onde?

Eu entendo que os drivers são a cola entre o NIC e o SO ou qualquer outro aplicativo. Eu ainda acho que há um driver separado para Windows e Wireshark ( WinPcap ?). Caso contrário, Wireshark não seria capaz de receber quadros Ethernet . Existem dois ou mais drivers de NIC coexistindo ao mesmo tempo? Como o NIC sabe qual usar?

    
por Hansi 12.06.2016 / 19:13

2 respostas

38

O modelo de E / S no Windows é baseado em uma pilha de componentes. Os dados devem fluir pelos vários componentes dessa pilha que existe entre a placa de rede física e o aplicativo que consumirá os dados. Às vezes, esses vários componentes inspecionam os dados (um pacote TCP, por exemplo), à medida que passam pela pilha, e com base no conteúdo desse pacote, os dados podem ser alterados ou o pacote pode ser descartado inteiramente.

Esteéummodelosimplificadoda"pilha de rede" pela qual os pacotes fluem para passar do aplicativo para o fio e vice-versa.

Um dos componentes mais interessantes mostrado na captura de tela acima é a API de chamada do WFP (Windows Filtering Platform). Se aumentarmos o zoom, pode parecer algo assim:

Osdesenvolvedoressãolivresparaconectarseusprópriosmódulosnoslocaisapropriadosdessapilha.Porexemplo,osprodutosantivírusnormalmenteusamum"driver de filtro" que se conecta a esse modelo e inspeciona o tráfego de rede ou fornece recursos de firewall. O serviço do Firewall do Windows também se encaixa obviamente nesse modelo.

Se você quisesse escrever um aplicativo que registrasse o tráfego da rede, como o Wireshark, a maneira apropriada de fazer isso seria usar um driver próprio e inseri-lo na pilha o mais baixo possível para que ele pudesse detectar pacotes de rede antes que seu módulo de firewall tenha a chance de descartá-los.

Portanto, há muitos "drivers" envolvidos nesse processo. Muitos tipos diferentes de drivers também. Além disso, outras formas de entrada / saída no sistema, como leituras e gravações de unidades de disco rígido, seguem modelos muito semelhantes.

Uma outra nota - os textos explicativos do WFP não são a única maneira de se insinuar na pilha da rede. O WinPCap, por exemplo, interage com o NDIS diretamente com um driver, o que significa que ele tem a chance de interceptar o tráfego antes que qualquer filtragem tenha ocorrido.

Drivers NDIS

WinPCap

Referências:

Pilha TCP / IP de última geração no Vista +

Arquitetura da plataforma de filtragem do Windows

    
por 12.06.2016 / 19:30
3

Como a resposta de Ryan Ries diz:

WinPCap as an example, interfaces with NDIS directly with a driver, meaning it has a chance to intercept traffic before any filtering has taken place at all.

e esta é uma descrição, na documentação do WinPcap, de como isso funciona .

    
por 12.06.2016 / 21:53