IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau C Discussion :

Sockets raw - interception et modification des paquets


Sujet :

Réseau C

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Sockets raw - interception et modification des paquets
    Salut à tous !

    Je cherche à développer une appli sous Windows qui me permettrait de rediriger des paquets en provenance ou à destination d'un site distant vers une autre destination (disons vers un proxy).

    J'étudie la question depuis un petit moment et j'ai cru comprendre que j'avais plusieurs moyens de parvenir à mes fins, moyens plus ou moins compliqués et plus ou moins efficaces.

    Ce que j'aimerais utiliser, ce sont les sockets RAW. J'ai téléchargé des sources de sniffers, j'ai bien compris le fonctionnement. J'ai lu de la doc, j'ai aussi compris comment fabriquer mes propres paquets.

    Je sais donc intercepter des paquets et en envoyer. Mais je ne sais pas combiner les deux, c'est-à-dire faire fonctionner le modèle suivant :

    1/ j'intercepte un paquet (une socket par protocole, TCP, UDP, ICMP..) venant de A et destiné à B.

    2/ je redirige le paquet vers C.

    3/ C fait sa tambouille et redirige vers B une fois le contenu scanné (en gros).

    L'étape 1, j'ai ce qu'il faut, l'étape 3 aussi. Pour l'étape 2, mon idée d'origine était de router le paquet, mais je sais pas comment faire ; j'ai pensé l'encapsuler dans un nouveau paquet IP mais je ne sais pas comment gérer ça. Je me suis donc dit qu'il devait être possible de droper le paquet et d'en recréer un en ne modifiant que l'adresse de destination.

    Est-ce possible et si oui comment ? Question subsidiaire, si c'est possible, n'est-ce pas trop bourrin ?

    N'hésitez pas à donner vos conseils, idées, suggestions, critiques sur ma méthode, je patauge un peu.

    Merci à vous !

  2. #2
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Le souci, c'est l'isolation au niveau réseau. J'explique : si A et B sont sur le même réseau, tu l'as dans l'os ! En effet, tu pourras certes intercepter le paquet, mais il te sera impossible d'empêcher B de recevoir son paquet également.

    La seule solution, c'est de te mettre physiquement entre A et B (= les couper l'un de l'autre), et d'utiliser le PC faisant tourner ton application comme une passerelle... Ce qui présuppose, bien sûr, d'avoir deux connexions Ethernet : une vers A, une vers B, et ton entité C qui est soit un processus de la machine, soit sur un troisième brin réseau (= 3ème prise) OU sur le même sous-réseau que B.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Merci pour ta réponse !
    J'ai poursuivi mes recherches de mon côté et il semblerait que je ne puisse de toute façon pas utiliser les sockets RAW sous XP SP2 en particulier, car je ne pourrais pas générer de paquets UDP ou TCP mais seulement ICMP ou IGMP.

    Ce qui abonde dans le sens de ta réponse. N'y aurait-il alors pas un autre moyen, en utilisant des API Windows par exemple, de parvenir à mes fins ? Je pense que c'est possible de le faire, des outils de sécurité comme ceux de Checkpoint arrivent bien à rediriger des flux vers leur interface ?

  4. #4
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par Mythras Voir le message
    J'ai poursuivi mes recherches de mon côté et il semblerait que je ne puisse de toute façon pas utiliser les sockets RAW sous XP SP2 en particulier, car je ne pourrais pas générer de paquets UDP ou TCP mais seulement ICMP ou IGMP.
    Tu peux, pourtant, ne serait-ce que via WinPCAP... Que je ne saurais trop te conseiller d'utiliser afin d'éviter les mains dans le cambouis qui tache : l'ouverture de raw sockets demande d'être administrateur, alors que WinPCAP peut tourner (et effectuer le service) y compris pour les utilisateurs "normaux".

    Citation Envoyé par Mythras Voir le message
    Ce qui abonde dans le sens de ta réponse. N'y aurait-il alors pas un autre moyen, en utilisant des API Windows par exemple, de parvenir à mes fins ? Je pense que c'est possible de le faire, des outils de sécurité comme ceux de Checkpoint arrivent bien à rediriger des flux vers leur interface ?
    Non, ils ne peuvent pas. Ils capturent le flux entrant et peuvent permettre de stopper un flux plus ou moins longtemps, mais ils ne peuvent pas effectuer une interception avec réécriture des trames... Du moins en TCP/IP, car en général tu aboutis à une désynchronisation à très brève échéance.
    Dans tous les cas, cela reste à la limite anecdotique tant que tu n'as pas réglé le problème (réel) de l'isolation réseau.

    Je te rappelle également, à titre informatif, que le spoofing en dehors de TES machines est illégal dans l'immense majorité des cas.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Et pourtant j'aurai besoin de les mettre, les mains dans le cambouis. Je dois intégrer ce "module" à un programme déjà existant mais qui tourne en tant que service ; aucun problème donc en ce qui concerne les droits.

    Je ne peux pas croire qu'il ne soit pas possible de faire ce que je veux ; avec iptables par exemple je pourrais le faire, ce n'est pas possible que rien ne le permette sous Windows...

    Et je précise que la redirection que je voulais faire intervient uniquement localement, il ne s'agit en aucun cas de spoofing

  6. #6
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Si c'est juste l'examen et l'autorisation (ou non !) du passage d'une trame, oui, c'est possible. Tu peux configurer le firewall à la volée, faire un hook sur la pile TCP/IP (avec des surprises à l'arrivée de Vista), etc.

    Mais intercepter complètement une communication destinée à une autre application, la modifier et la rediriger ensuite vers l'application d'origine qui répondra d'elle-même à l'appelant initial, le tout sur la même machine (avec ton service qui va gentiment avoir un port en écoute déjà ouvert), et sur le même réseau, c'est vraiment pas gagné d'avance quand même. Y compris avec iptables...

    Sinon, tu peux toujours passer par une machine virtuelle pour effectuer l'isolation réseau, tout dépend de la charge de la machine...
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

Discussions similaires

  1. [Scapy]Modification des paquets
    Par albertopisto dans le forum Réseau/Web
    Réponses: 1
    Dernier message: 08/08/2011, 23h39
  2. Réponses: 2
    Dernier message: 10/05/2011, 17h32
  3. Transferer des paquets via Sockets
    Par horse dans le forum Réseau/Web
    Réponses: 6
    Dernier message: 04/05/2010, 21h34
  4. Réponses: 2
    Dernier message: 15/02/2010, 13h08
  5. Redimensionnement des Paquets IP sur un Réseau Local
    Par Bonoboo dans le forum Développement
    Réponses: 2
    Dernier message: 12/07/2002, 15h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo