Je suis sur le point d'utiliser Wireshark pour la surveillance du trafic sur mon ordinateur Windows . Pendant que j'y travaillais, je me demandais comment Wireshark parvient à intercepter les paquets réseau de bas niveau avant que Windows ne le fasse.
Tout d'abord, une interface réseau sur ma carte réseau reçoit un paquet. Le NIC effectue ensuite quelques vérifications initiales (CRC, bonne adresse MAC, ... etc.). En supposant que la vérification a réussi, la carte réseau transfère le paquet. Mais comment et où?
Je comprends que les pilotes sont la colle entre la carte réseau et le système d'exploitation ou toute autre application. Je suppose en outre qu'il existe un pilote distinct pour Windows et Wireshark ( WinPcap ?). Sinon, Wireshark ne pourrait pas recevoir de trames Ethernet . Y a-t-il deux pilotes NIC ou plus coexistant en même temps? Comment la carte réseau sait-elle laquelle utiliser?
la source
Réponses:
Le modèle d'E / S dans Windows est basé sur une pile de composants. Les données doivent circuler à travers les différents composants de cette pile qui existe entre la carte réseau physique et l'application qui consommera les données. Parfois, ces divers composants inspectent les données (un paquet TCP par exemple) au fur et à mesure qu'elles traversent la pile, et en fonction du contenu de ce paquet, les données peuvent être modifiées ou le paquet peut être entièrement rejeté.
Il s'agit d'un modèle simplifié de la "pile réseau" que traversent les paquets pour passer de l'application au fil et vice versa.
L'un des composants les plus intéressants présentés dans la capture d'écran ci-dessus est l'API d'appel de WFP (Windows Filtering Platform). Si nous zoomions dessus, cela pourrait ressembler à ceci:
Les développeurs sont libres de brancher leurs propres modules aux endroits appropriés de cette pile. Par exemple, les produits antivirus utilisent généralement un «pilote de filtre» qui se connecte à ce modèle et inspecte le trafic réseau ou fournit des fonctionnalités de pare-feu. Le service Pare-feu Windows s'intègre bien entendu également à ce modèle.
Si vous vouliez écrire une application qui enregistre le trafic réseau, comme Wireshark, alors la façon appropriée de le faire serait d'utiliser votre propre pilote et de l'insérer dans la pile aussi bas que possible afin qu'il puisse détecter les paquets réseau avant que votre module de pare-feu ait une chance de les supprimer.
Il y a donc de nombreux «pilotes» impliqués dans ce processus. De nombreux types de pilotes également. En outre, d'autres formes d'entrée / sortie sur le système, telles que les lectures et les écritures sur le disque dur, suivent des modèles très similaires.
Autre remarque: les légendes du PAM ne sont pas le seul moyen de vous insinuer dans la pile réseau. WinPCap, par exemple, s'interface avec NDIS directement avec un pilote, ce qui signifie qu'il a la possibilité d'intercepter le trafic avant que le filtrage n'ait eu lieu.
Pilotes NDIS
WinPCap
Les références:
Pile TCP / IP nouvelle génération dans Vista +
Architecture de la plateforme de filtrage Windows
la source
Comme le dit la réponse de Ryan Ries:
et ceci est une description, dans la documentation WinPcap, de la façon dont cela fonctionne .
la source