Estou prestes a usar o Wireshark para monitorar o tráfego no meu computador com Windows . Enquanto trabalhava nisso, fiquei pensando como o Wireshark consegue capturar pacotes de rede de baixo nível antes do Windows .
Primeiro de tudo, uma interface de rede na minha NIC recebe um pacote. A NIC faz 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?
Entendo que os drivers são a cola entre a NIC e o SO ou qualquer outro aplicativo. Suponho ainda que exista um driver separado para Windows e Wireshark ( WinPcap ?). Caso contrário, o Wireshark não seria capaz de receber quadros Ethernet . Existem dois ou mais drivers de NIC coexistindo ao mesmo tempo? Como a NIC sabe qual usar?
fonte
Respostas:
O modelo de E / S no Windows é baseado em uma pilha de componentes. Os dados devem fluir através dos vários componentes dessa pilha existentes 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 fluem pela pilha e, com base no conteúdo desse pacote, os dados podem ser alterados ou o pacote pode ser descartado completamente.
Este é um modelo simplificado da "pilha de rede" pela qual os pacotes fluem, a fim de passar do aplicativo ao fio e vice-versa.
Um dos componentes mais interessantes mostrados na captura de tela acima é a API de texto explicativo do WFP (Windows Filtering Platform). Se aproximarmos isso, pode ser algo como isto:
Os desenvolvedores são livres para conectar seus próprios módulos nos locais apropriados nesta pilha. Por exemplo, produtos antivírus geralmente usam um "driver de filtro" que se conecta a esse modelo e inspeciona o tráfego de rede ou fornece recursos de firewall. O serviço Firewall do Windows também obviamente se encaixa nesse modelo.
Se você quiser escrever um aplicativo que registre o tráfego de 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 possa detectar pacotes de rede antes que seu módulo de firewall tenha a chance de eliminá-los.
Portanto, existem 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.
Outra observação: as frases de destaque do WFP não são a única maneira de se insinuar na pilha de rede. O WinPCap, por exemplo, faz interface com o NDIS diretamente com um driver, o que significa que ele tem a chance de interceptar o tráfego antes que qualquer filtragem ocorra.
Drivers NDIS
WinPCap
Referências:
Pilha TCP / IP de próxima geração no Vista +
Arquitetura da plataforma de filtragem do Windows
fonte
Como a resposta de Ryan Ries diz:
e esta é uma descrição, na documentação do WinPcap, de como isso funciona .
fonte