Annonce

Réduire
Aucune annonce.

[Article] Phase de vie d'un virus

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

  • Tutoriel [Article] Phase de vie d'un virus

    Bonjour à toutes et à tous,

    Introduction:

    Aujourd'hui je vais m'efforcer de vous expliquer les phases de "vie" d'un virus le plus simplement possible, bien sûr ceci est une généralisation, tout les virii n'ont pas le même schéma d'attaque.

    Chaque virus a ses propres caractéristiques en plus de la caractéristique qui définit un virus même:

    -L'auto-réplication ;
    Une construction qui est théoriquement capable de fabriquer autonomement une copie d'elle-même en utilisant des matières premières prises de son environnement (il recopie son propre code ailleurs).

    Après un virus possède d'autres caractéristiques souvent ajoutées à celui d'en haut, mais qui ont été rajoutées bien après la création du mot "virus".

    On pourrait dire donc qu'ajouter d'autres caractéristiques autre que l'auto-réplication serait une vulgarisation simple (mais bien sûr tout le monde s'en fiche) .
    Autre caractéristiques souvent associées à celui d'un virus:

    -Le chiffrement: Le virus se chiffre tout simplement via des algo connus/inconnus de chiffrements; j'ai pu remarquer au cours de mon expérience professionnel que les programmeurs de virii reprennaient beaucoup le fonctionnement d'algo existant.

    -Le polymorphisme: A chaque réplication le virus va changer ses instructions machines/opcodes(ASM), ce sera le même code mais transcrit différemment; petit exemple .

    Code:
    LEA EAX,ECX
    CMP EAX,Var1
    JNE un_endroit // code original
    
    MOV EAX,OFFSET ECX
    TEST EAX,Var1
    JNE un_endroit // code polymorphé
    -Le méthamorphisme: C'est une sorte de polymorphisme mais dans ce cas, il change même son code/structure interne.

    Voici une brêve introduction, commençons maintenant le réel sujet de l'article.


    A)La phase d'infection/diffusion

    C'est durant cette phase que le virus pourra se diffuser dans le système cible, pour celà, il y a deux façons de le faire:

    -Infection active : L'utilisateur va directement exécuter le programme hôte qui contient le virus (dropper) ou un programme déjà infecté par le virus (ce qui sous-entends que l'utilisateur a déjà été infecté par le virus).

    -Infection passive : Le programme hôte est transféré sur un support informatique quelconque (Clé usb,CDROM,Carte SD etc...) puis transposé sur la machine cible (cette technique doit obligatoirement se coupler avec de l'ingiénerie sociale sinon le fichier n'aura pas le temps d'être transmis et sera détecté automatiquement comme suspect par l'utilisateur).

    B)La phase d'infection interne/incubation

    Cette phase, est la phase la plus importante pour l'avenir su virus, si elle n'est pas bien programmée, celà peut condamner le virus à se faire supprimer par les antivirus, vous l'auriez surement compris cette phase sert à maintenir le virus en "vie" en évitant sa détection auprès:

    -des antivirus
    En utilisant des techniques comme : le tunneling,time/logic bombs,dynamic code length etc...

    -des utilisateurs
    En évitant tout simplement les erreurs d'exécution-une bonne programmation peut déjà vous faire sauter cette étape-.

    C) La phase d'infection longue durée/maladie

    C'est la dernière phase de la virus, elle exécute tout simplement le payload contenu dans le virus /!\ un virus n'est pas obligé d'avoir un payload dans son programme /!\.

    Cette phase elle-même dépend de la location du payload dans le code, le payload est la charge finale du virus qui contient le code malveillant destiné généralement à voler/détruire des données.
    Un petit exemple:

    Code:
     main ()
    {
    	openFile();
        if(openFile!=NULL)
        {
    
        destroyFile();
        }
    }
    Le payload dedans est bien sûr le destroyFile.
    Suivant le placement du payload les phases peuvent être inversées entre-elles, mais globalement un virus respecte ce schéma présenté.

    Durant cette article j'ai mis en gras les mots important à connaître pour bien comprendre ce cours, alors si vous ne comprenez pas, googlez-les.

    J'ai volontairement sauté quelques infos, comme les techniques virales utilisées, j'en ferait surement l'objet d'un autre article, ce sera plus facile à assimiler.

    Je suis ouvert à toutes les questions concernant cette article, donc n'hésitez pas .
    Dernière modification par Stoned, 24 juillet 2013, 23h35.

  • #2
    2 questions :

    à quoi sert un virus sans payload ?


    "le tunneling,time/logic bombs,dynamic code length etc..." : plus d'info ? time/logic bombs, je ne vois pas du tout.
    sigpic

    Cyprium Download Link

    Plus j'étudie plus j'me rends compte que je n'sais rien.

    †|

    Commentaire


    • #3
      Envoyé par SAKAROV Voir le message
      2 questions :

      à quoi sert un virus sans payload ?


      "le tunneling,time/logic bombs,dynamic code length etc..." : plus d'info ? time/logic bombs, je ne vois pas du tout.
      A la base les virus n'étaient que de simple automates auto-réplicatifs sans fonctions malveillantes, mais c'est à partir des années 80 (si je ne me trompe pas)que les virus à payload ont commencés à faire leur entrées, donc dire qu'un virus c'est malveillant, c'est complètement faux.

      Ensuite pour les techniques virales:

      Le tunneling: Le virus va stopper les interruptions de l'anti-virus, et donc stopper les fonctions qui vont nuire au virus.

      Time/logic bomb: La bombe logique/payload va s'exécuter à un moment précis, ni avant ni après, seulement si un utilisateur fait x chose(s) au temps t.

      Dynamic code length: Le virus change sa propre taille à chaque réplication (cette technique se doit de coupler avec le polymorphisme pour être vraiment efficace)
      Dernière modification par Stoned, 25 juillet 2013, 00h10.

      Commentaire


      • #4
        d'accord, j'étais pas sûr que le tunnelling dans ce cadre était identique à l'habituel (réseau), mais si. pour ce qui est du polymorphisme, as-tu un exemple de fonction du genre ? (en C ou autre, qu'importe). l'allègement/alourdissement d'un malware est une fonction prévue lors du polymorphisme, en dehors de ce cadre, je n'en vois pas bien l'utilité, en effet

        nb: quand je parle de fonction de polymorphisme, je ne parle pas de fonction allégeant ou alourdissant un programme (rempli de code inutile etc) mais d'un groupe de fonctions typique à cette métamorphose. par exemple, il migre ailleurs dans le système mais du coup le code doit se changer en fonction pour pouvoir fonctionner, mais aussi qu'il change de nom voire d'extension, etc. enfin, tout ça en fait (et si possible tes découvertes récentes créées par des attaquants afin d'être up to date).
        sigpic

        Cyprium Download Link

        Plus j'étudie plus j'me rends compte que je n'sais rien.

        †|

        Commentaire


        • #5
          Faire du polymorphisme en C c'est inutile, ton programme finit sera transcrit en assembleur, et l'assembleur c'est le compilo qui va le gérer, mise à part faire asm inline c'est inutile.
          C'est effectivement possible d'en faire mais je trouve pour ma part inutile.

          Commentaire


          • #6
            Merci pour cet article

            Commentaire

            Chargement...
            X