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

Protocoles Discussion :

Spoofing protocol TCP, es-ce possible ?


Sujet :

Protocoles

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Décembre 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Décembre 2019
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Spoofing protocol TCP, es-ce possible ?
    Bonjour,

    J'ai un logiciel de chat qui se connecte à un serveur, j'aimerais qu'à chaque fois que je reçois un message "Salut" ça envoie un 2éme message "Helmo" (je code en c++)
    Pour ça j'utilise libtins, qui va me permettre de faire du sniffing sur le protocol TCP (jusque là, tout se passe bien)

    Mais l'injection de paquet tcp m'a l'air un peu compliqué, du coup j'aimerais savoir si c'est possible ? (par ce que j'ai pas réussi)



    J'ai fait des printf du paquêt, (désolé si c'est dégueu)
    (en haut un packet envoyé depuis la messagerie, en bas depuis mon code c++, en gros on voit que mon packet s'est bien envoyé mais les entêtes des protocols ip et tcp ont l'air bien différent d'un original)

    Dû coup mes questions sont:

    1 - Es-ce que je dois re utiliser les mêmes flags ? Ou ce n'est pas obligatoire ?

    2 - Pourquoi le packet original ne calcul pas le checksum dans le protocol IP ? Ce n'est pas sensé être obligatoire ?

    3 - Es-ce que si mon packet ne fonctionne pas, es-ce par ce que je ne continue pas l'incrémentation sur son identification (ip) et la séquence (tcp) ?

    4 - Si reprend son id/seq et que j'incrémente, vais-je faire bugué le client, je sus pose que je vais utiliser les futures numéro que le client va utiliser... ?

    Bref, si quelqu'un peut m'aider ça serait cool, par ce que j'ai un peu du mal à comprendre le protocol

    Mon objectif, est juste de pouvoir envoyer automatiquement des messages lorsque j'en reçoit

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,

    Il y a des chances que le 2ème segment TCP avec le champ data "Helmo" soit ignoré/droppé par la destination 18.202.59.11...

    Avant de se lancer dans le codage, il faudrait faire un peu de reverse...

    Prends une trace Wireshark complète qui inclut :
    - l'établissement de la connexion TCP,
    - l'émission du message Hello,
    - et les quelques paquets qui suivent...

    Parce qu'il y a de fortes chances que parmi ces quelques paquets, il y ait au moins un segment émis par le serveur avec un TCP flag RST ou FIN... Je vois mal le serveur laisser sa connexion en listening mode en attendant son TCP timeout, ce serait un sérieux gaspillage de ressources...

    C'est pour ça que je pense que ça ne fonctionnera pas...
    Parce qu'après initialisation de la connexion, le serveur n'attend ***qu'une*** seule réponse Hello...


    Ce que tu essaies de faire, c'est ni plus ni moins qu'une technique d'injection TCP d'un Man-in-the-Middle et fort heureusement, ça n'est pas si simple à faire, et surtout ça nécessite d'avoir les specs complètes du protocole qui est hacké et l'outillage qui va bien.

    Dans le principe, ce genre "d'exercice" nécessite de:
    - forger le nouveau segment TCP à injecter (header+data),
    - puis l'encapsuler dans un paquet IP,
    - puis encapsuler le paquet IP obtenu dans une trame Ethernet...


    Pour répondre à tes questions, en supposant qu'il suffirait de "simplement" dupliquer le 1er message...

    Citation Envoyé par dbafrpg Voir le message
    1 - Es-ce que je dois re utiliser les mêmes flags ? Ou ce n'est pas obligatoire ?
    Oui, tu dois utiliser les mêmes flags.
    Mais il y a d'autres champs à compléter dans l'en-tête TCP (sequence/acknowledgement, window size, checksum, options éventuellement)...

    Citation Envoyé par dbafrpg Voir le message
    2 - Pourquoi le packet original ne calcul pas le checksum dans le protocol IP ? Ce n'est pas sensé être obligatoire ?
    Comme expliqué plus haut, le nouveau segment TCP doit être forgé pour encapsulation dans un paquet IP. C'est lors de l'encapsulation que le checksum sera calculé. Mais comme TCP, il va falloir aussi compléter l'en-tête IP, cf ta question ci-dessous...

    Citation Envoyé par dbafrpg Voir le message
    3 - Es-ce que si mon packet ne fonctionne pas, es-ce par ce que je ne continue pas l'incrémentation sur son identification (ip) et la séquence (tcp) ?
    Oui, entre autres...
    Le champ Identification doit être incrémenté de 1 par exemple.
    Le checksum IP doit être calculé (le calcul ne porte que sur l'en-tête).
    Il faut aussi regarder les autres champs de l'en-tête IP...

    Il existe des softs customisables qui font ça à la volée, il faut chercher un peu...

    Citation Envoyé par dbafrpg Voir le message
    Mon objectif, est juste de pouvoir envoyer automatiquement des messages lorsque j'en reçoit
    Là, conclusion un peu hâtive sur la faisabilité de ton projet...

    Encore une fois sans avoir les specs du protocole implémenté, ne t'imagines pas que tu vas pouvoir envoyer des messages comme ça quand tu veux...
    La seule chose que tu pourrais faire sans trop de problème je pense, c'est "intercepter" le message "Hello" émis par ton client (avant qu'il ne soit injecté sur le media) pour le substituer par un segment forgé avec le message "Helmo" (perso j'ai déjà fait de genre de choses dans ma jeunesse avec des flux Telnet pour faire tourner un codeur en bourrique ).

    -VX

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Décembre 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Décembre 2019
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    J'ai bien étudié le protocole, j'ai tout respecté ! Mais le serveur n'a pas l'air de recevoir mon packet...

    Exactement le même packet, quand je l'envoie depuis mon soft (qui a sniffer la connexion), le serveur ne le reçoit pas
    Mais si je l'envoie depuis le client normal avec une socket tcp classique tout se passe bien



    Wireshark me confirme que les deux packets sont totalement identique...
    On voit même que quand je le re-envoie la 2éme fois (via le client classique, il est pris en charge et j'ai une réponse du serveur)

    Là je bloque...

    Je vois pas comment retirer la sécurité windows... j'ai désactivé l'uac, firewall, ... lancé mon soft en mode admin et ... Mais rien à faire ><

    J'ai juste pas le droit d'envoyer ce que je veux avec mon propre PC

Discussions similaires

  1. Réponses: 1
    Dernier message: 09/10/2013, 21h41
  2. Réponses: 1
    Dernier message: 18/12/2005, 19h19
  3. [Protocole TCP] Utilitaire pour Tracer une session
    Par =JBO= dans le forum Développement
    Réponses: 3
    Dernier message: 04/06/2005, 19h28
  4. raw socket et protocole TCP/IP
    Par robertmouac dans le forum Développement
    Réponses: 3
    Dernier message: 09/03/2005, 23h09
  5. Ping sous protocole TCP (et non UDP)
    Par ovdz dans le forum Développement
    Réponses: 2
    Dernier message: 19/06/2003, 14h10

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