Annonce

Réduire
Aucune annonce.

Fork() Bomb

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

  • Tutoriel Fork() Bomb

    Salut ! Je vais succinctement vous montrer ce qu'est une fork() bomb.
    Code:
    :(){ :|:& };:
    parfois écrit
    Code:
    :(){
    :|:&
    }
    :
    En commentant, ça donne ça :
    Code:
    :(){ #on définit la fonction ":"
    :|:& #la fonction s'appelle elle-même, se pipe à elle-même et se met en background.
    }
    :#on appelle la fonction une première fois...
    Pour plus de lisibilité, on pourrait très bien l'écrire comme ceci :

    Code:
    comaX(){
    comaX | comaX&
    }
    comaX
    Quel est l'intérêt de ce bout de code ?

    Ce code s'appelant lui-même sans cesse il se met très vite à utiliser tout les capacités CPU et RAM, provoquant un DOS du système sur lequel il est lancé.
    Cela peut être utilisé pour tester la résistance d'un serveur web, ou d'une machine linux. Par exemple, ma BT n'a pas tenu deux secondes comme le montre le screen suivant :


    Ca n'a pas pris plus d'une seconde. Comme vous le voyez, j'utilise une VM, donc pas de soucis pour moi, mais elle est devenue complètement inutilisable.
    Il faut faire attention à ce genre de chose, car quelqu'un pourrait très bien mettre ce bout de code discrètement dans un script et le moment venu, bim, tout freeze. Imaginez maintenant quelqu'un accédant à un serveur web tiers non protégé qui exécuterait ce code (je ne ferais pas de démo sur mon serveur, ne sachant pas s'il est protégé ou non, et ne voulant pas d'ennui avec l'hébergeur en cas de pépin ^^ ).

    Vous pouvez vous prémunir de ce genre de problème en définissant des limites dans le fichier /etc/security/limits.conf.
    Fichiers attachés
    Dernière modification par comaX, 25 janvier 2013, 17h49.

  • #2
    Fork() Bomb

    Merci pour ce bout de code, mais la pleine utilisation des ressources ne risque-t-elle pas d'empêcher le processus de s'exécuter et donc de faire crasher l'application?
    Are hackers a threat? The degree of threat presented by any conduct, whether legal or illegal, depends on the actions and intent of the individual and the harm they cause.
    Kevin Mitnick

    Commentaire


    • #3
      Bah c'est-à-dire que c'est un peu le but. Sauf que tout crash. Pas seulement le processus (et non application). D'autant plus que le processus étant envoyé en background, il se multiplie très vite sans qu'on ne puisse l'arrêter.

      Commentaire


      • #4
        Fork() Bomb

        Processus, autant pour moi ^^
        Ok je vois ce que tu veux dire, merci
        Are hackers a threat? The degree of threat presented by any conduct, whether legal or illegal, depends on the actions and intent of the individual and the harm they cause.
        Kevin Mitnick

        Commentaire


        • #5
          [ Solution auxiliaire ]

          - utiliser la commande slay qui tue tous les processus de l'user désigné :
          Code:
          $sudo slay user
          A coupler automatiquement au fichier "limits.conf" pour plus d'efficacité.
          Dernière modification par MadHatter, 25 janvier 2013, 18h40.
          Ex-membre Hackademiciens.

          Commentaire


          • #6
            Dans les conséquences, faut aussi se dire que l'utilisateur attaqué va certainement faire un shutdown forcé de sa machine (en maintenant le bouton power quelques temps), ce qui pourra engendrer des pertes/corruptions de données dans certains cas.

            En tout cas, merci du post. Je connaissais la Fork Bomb mais je ne savais pas quelles étaient les différentes étapes.

            Commentaire


            • #7
              Très interessant On peut aussi faire cela en python :
              import os
              while 1:
              os.fork()

              Commentaire


              • #8
                Ou en javascript (ça fait moins mal sur Windows) :

                Code:
                function crash() { window.setInterval("crash()",0);crash(); } crash();
                ~ Yarflam ~

                ❉ L'Univers se dirige vers son ultime perfection ❉

                Commentaire


                • #9
                  ça fait moins mal, c'est à dire ? On ressens les effets tardivement?

                  Commentaire


                  • #10
                    Non
                    Sous Ubuntu et quelques distributions de Linux qui gère mal les dépassements de mémoires, Firefox et Chrome freeze le PC. Alors que sous Windows (désolé pour cette soudaine publicité de ma part) ça fonctionne très bien - donc les effets sont réduits.
                    ~ Yarflam ~

                    ❉ L'Univers se dirige vers son ultime perfection ❉

                    Commentaire


                    • #11
                      Je comprends pas un certain point.
                      Dans certains langage, la fonction fork existe déjà, par exemple :
                      - C ou Python : fork()
                      - Perl le code complet est : fork while fork
                      - Ruby : loop { fork }
                      etc..

                      A part générer les processus et faire ce crash mémoire, quelle est l'utilité de cette fonction ?

                      Commentaire


                      • #12
                        La fonction fork() est initialement une fonction très utile (dans les architectures logicielles ramifiées) car c'est un duplicateur direct. Elle permet de générer des réplicats bidirectionnels du processus actif, c'est à dire que la synchronisation dans l'arbre de réplication est possible à n'importe quel moment.
                        C'est ce que l'on appelle un graphe de filiation ; le processus père génère des processus fils via fork() et peuvent ensuite communiquer et s'échanger des données. Les processus fils restent néanmoins subordonnés au processus père.
                        Ex-membre Hackademiciens.

                        Commentaire


                        • #13
                          a noté que on peut utiliser la commande

                          Code:
                          ulimit -u 200
                          pour limiter le nombre de process à 200 , ce qui pour un utilisateur normal , ne serra jamais atteind mais permet d'éviter un possible crash , le 200 est adaptable évidémment
                          Mess with the bests
                          Die like the rest

                          Commentaire


                          • #14
                            sympa, peux t'on l'envoier comme piece attachée a un mail (en changeant le nom,etc") afin que la "victime" execute ce bout de code??
                            Mon but n'est certe pas de faire du mal mais de connaître.
                            Je pense que c'est certainement mieux avec linux mais ne demanderait 'il pas le mot de passe pour executer ce "processus"?
                            merci,
                            freekiss

                            Commentaire


                            • #15
                              Le premier post donne un script Shell Linux. L'envoyer par mail ne sert donc à rien dans la mesure ou la personne (qui doit être sous Linux) doit prendre le script et l'exécuter dans son terminal.
                              Par contre d'autres déclinaisons en C, Python ou encore Java peuvent faire le truc comme tu le penses si les personnes ciblées les exécutent.
                              Et il n'y aura normalement pas besoin de droits root non

                              Commentaire

                              Chargement...
                              X