2010-07-07 1 views
0

Ce que j'ai lu jusqu'à présent, WinPCAP vous permet de contourner l'application du système d'exploitation et by-pass et le traitement de la couche de transport TCP et offre un accès direct à la couche de liaison.risque lié à l'utilisation WinPCAP en place de la prise

Je prévois d'utiliser winpcap pour faire des trucs application utilisateur et non pas seulement renifler. Je vais recevoir et envoyer des informations critiques en utilisant pcap que je fais actuellement via des sockets.

Est-OS sans passer, et selon ma demande de compréhension et de couches de transport de mon côté, impliquent des risques? Comme une question secondaire, la documentation de winpcap que j'ai trouvé jusqu'à maintenant parle de la façon de l'implémenter par programmation mais ne dit pas en détail ce qu'il contournement et comment il le fait. Tout lien vers cela sera utile.

Aussi, je voudrais savoir si quelqu'un utilise winpcap à des fins autres que le réseau renifler pour des raisons de surveillance et msn.

Répondre

1

Bien sûr, il y a beaucoup de risques:

  • Le système d'exploitation ne connaîtra pas vos connexions TCP privées gérées, il ne sait que le port (s) que vous avez choisi est/sont en cours d'utilisation. Cela signifie qu'il pourrait essayer d'utiliser le même port pour la connexion d'une autre application, conduisant au chaos.
  • Le système d'exploitation ne saura pas sur vos connexions TCP privées gérées, donc à moins que vous l'empêcher de voir ces paquets, il envoie des paquets RST pour réinitialiser la connexion apparemment faux.
  • Votre application ne sera pas automatiquement avertie des modifications apportées aux données gérées par le système d'exploitation, aux adresses IP configurées et aux tables de routage. Vous devrez probablement rechercher des mises à jour.
  • La mise en œuvre correcte du protocole TCP est non triviale. La plupart des implémentations, même très bien utilisées, avaient des bogues dormants qui n'ont pas été trouvés pour années. Toutes les informations nécessaires ne sont pas non plus dans les RFC; il existe des endroits où la pratique établie diffère du comportement documenté, habituellement pour de bonnes raisons. Il y a aussi beaucoup de code dans les piles TCP modernes spécifiquement pour gérer le comportement buggé historique dans d'autres piles, et la réplication de tout ce travail n'est pas simple.
  • Il y a un risque important de mauvaises interactions avec les logiciels de sécurité réseau tiers installé sur l'hôte, qui attendront toutes les connexions TCP à effectuer via le système d'exploitation.

Cela me semble être un cauchemar de soutien.

+0

Merci pour votre réponse très détaillée. A propos du point 3, les adresses IP et les tables de routage dans l'environnement de production ne changent pas normalement de manière dynamique pendant l'exécution de la machine. ou ils peuvent? En ce qui concerne l'application, elle ne connaît que l'adresse IP et le port de destination qu'elle inclut dans le tableau d'octets qu'elle envoie. Sur le point 4, je ne prévois pas de faire moi-même l'implémentation de tcp. Je vais utiliser winCap apis pour définir les champs et envoyer le tableau d'octets et de même utiliser wincap pour le flux d'octets entrants et le décoder. Vous pensez que wincap apis peut avoir des risques sérieux? – bsobaid

+0

@bsobaid: Les adresses IP locales disponibles peuvent changer pendant l'exécution de la machine, car les interfaces montent et descendent et les baux DHCP sont libérés et renouvelés. Les tables de routage peuvent être très fluides si un protocole de routage dynamique, par ex. RIP, est en cours d'utilisation. Je ne crois pas que WinPCAP implémente complètement TCP - vous devrez gérer des choses comme la sélection initiale du numéro de séquence, les retransmissions, le démarrage lent, le contrôle de congestion, les mises à jour de fenêtres, la mise à l'échelle de la PMTU et plus encore. – caf

+0

donc l'utilisation la plus appropriée est le reniflage de paquets.WinPcap n'est pas bien adapté pour le transfert de données d'application. Je me demande pourquoi il y a des wrappers c-sharp autour de lui permettant l'envoi de données en plus de renifler des données. – bsobaid

Questions connexes