• STATISTIQUES
  • Il y a eu un total de 1 membres et 4435 visiteurs sur le site dans les dernières 24h pour un total de 4 436 personnes!


    Membres: 2 604
    Discussions: 3 579
    Messages: 32 816
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [EN] Bright Shadows
    JavaScript: 13, Exploit: 27, Crypto: 69, CrackIt: 52, Stegano: 67, Flash: 3, Programming: 16, Java-Applet: 10, Logic: 20...
    Challenges
    [EN] wechall
    Pour les gens n'étant pas familiers avec les sites de challenges, un site de challenges est un site propos...
    Hacking
    [EN] social-engineer
    Site dédié au Social Engineering en général.
    Hacking
    [EN] hax.tor
    50 level de challenges mélangés
    Challenges
    [EN] Astalavista
    JavaScript: 1, Exploit: 2, Crypto: 34, CrackIt: 15, Stegano: 8, Programming: 12, Logic: 36, Special: 6, Science: 4, Info...
    Challenges
    [FR] Microcontest
    Cryptographie: 7, Mathématiques: 8, Image Son Vidéo: 5, Intelligence artificielle: 3, Réseau: 2, Divers: 7, Phy...
    Challenges
    [EN] Net Force
    Javascript: 9, Java Applets: 6, Cryptography: 16, Exploits: 7, Cracking: 14, Programming: 13, Internet: 15, Steganograph...
    Challenges

  • DONATION
  • Si vous avez trouvé ce site internet utile, nous vous invitons à nous faire un don du montant de votre choix via Paypal. Ce don servira à financer notre hébergement.

    MERCI!




Note de ce sujet :
  • Moyenne : 5 (3 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Les phases de vie d'un virus
12-08-2013, 21h26 (Modification du message : 13-08-2013, 21h10 par Stoned.)
Message : #1
Stoned Hors ligne
Newbie
*



Messages : 9
Sujets : 2
Points: 18
Inscription : Aug 2013
Les phases 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 ASM :

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.
Code ASM :

mov dword ptr [esi], 550000Fh
mov dword ptr [esi+0004], 5151BCBBh // 1ère version

mov edi, 550000Fh
mov [esi], edi
pop edi
push edx
mov dh, 40
mov edx, 5151EC8Bh
push ebx
mov ebx, ebx
mov [esi+0004], ebx //2ème version métamorphé
 


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 C :

int main ()
{
    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 .
+1 (18) -1 (0) Répondre
13-08-2013, 20h06
Message : #2
gruik Hors ligne
gouteur de savon
*



Messages : 757
Sujets : 44
Points: 482
Inscription : Oct 2012
RE: Les phases de vie d'un virus
* gruik soumet l'idée d'illustrer par un bout de code pour ceux qui veulent, le choix du langage est ouvert, le programme doit juste implémenter une ou plusieurs des features évoquées dans le post précédent
+1 (0) -1 (0) Répondre
13-08-2013, 21h10
Message : #3
Stoned Hors ligne
Newbie
*



Messages : 9
Sujets : 2
Points: 18
Inscription : Aug 2013
RE: Les phases de vie d'un virus
J'ai rajouté un exemple de métamorphisme.
+1 (0) -1 (0) Répondre
13-08-2013, 21h52
Message : #4
oosfalte Hors ligne
Flying Cloud
*



Messages : 47
Sujets : 3
Points: 8
Inscription : Jan 2013
RE: Les phases de vie d'un virus
Déjà avant de commencer je précise juste que je suis une buse en virus (et pas seulement).

Polymorphisme/métamorphisme, le virus change ses instructions, ça ok.
Mais ces nouvelles instructions pour réécrire le code, il ne les sort pas de sa poche.
Donc j'imagine qu'il suit un schéma inscrit lui-même en dur dans le code ?

S'il change ses opcodes à chaque réplication, il va vite se trouver à cours d'idées au bout de la 100ème, non?.
A moins de suivre un cycle dans le changement des opcodes ... ???

Enfin modifie-t-il seulement certaines routines ou l'ensemble du code ?

Ca fait pas mal de questions je sais.Smile
Merci pour tes précisions.
+1 (0) -1 (0) Répondre
14-08-2013, 09h31
Message : #5
qtkt Hors ligne
Newbie
*



Messages : 13
Sujets : 1
Points: 3
Inscription : May 2013
RE: Les phases de vie d'un virus
(13-08-2013, 21h52)oosfalte a écrit : Déjà avant de commencer je précise juste que je suis une buse en virus (et pas seulement).

Polymorphisme/métamorphisme, le virus change ses instructions, ça ok.
Mais ces nouvelles instructions pour réécrire le code, il ne les sort pas de sa poche.
Donc j'imagine qu'il suit un schéma inscrit lui-même en dur dans le code ?

S'il change ses opcodes à chaque réplication, il va vite se trouver à cours d'idées au bout de la 100ème, non?.
A moins de suivre un cycle dans le changement des opcodes ... ???

Enfin modifie-t-il seulement certaines routines ou l'ensemble du code ?

Ca fait pas mal de questions je sais.Smile
Merci pour tes précisions.

Il me semble que c'est plus ou moins la différence entre un virus polymorphe et du métamorphisme.

Dans le cas du polymorphisme on aura généralement un petit bout de code qui va par exemple chiffrer le reste avec une clé aléatoire, le code chiffré + la clé aléatoire + le moteur sera le corps de la nouvelle génération, tout auras changé à l'exception du moteur.

Alors que dans le cas du métamorphisme le virus va régénérer l'ensemble de son code, par exemple en le transformant d'abord dans un modèle abstrait puis en régénérant du bytecode à partir de là, mais en introduisant une composante aléatoire sur la facon de faire. Ce qui peut donner un code totalement différent, mais c'est bien plus compliquer à réaliser.

Ce n'est pas du tout mon domaine d'expertise, mais j'espère avoir plus ou moins pu répondre à tes questions. J'espère aussi ne pas avoir dit trop de bêtises...
+1 (0) -1 (0) Répondre
14-08-2013, 13h44 (Modification du message : 14-08-2013, 13h53 par gruik.)
Message : #6
gruik Hors ligne
gouteur de savon
*



Messages : 757
Sujets : 44
Points: 482
Inscription : Oct 2012
RE: Les phases de vie d'un virus
allez voila je me lance avec un ptit exemple de code polymorphe en bash [pastebin] :
Code BASH :
#!/bin/bash
#echo -ne "#!/bin/bash\nprg=\$(base64 -d <<<\"$(tail -n+3 $0 | base64 -w0)\")\neval \"\$prg\"\n" > virii && chmod +x virii && exit 0

function replication() {
   case $1 in
      0)
         echo -ne "#!/bin/bash\nprg=\$(base64 -d <<<\"$(base64 -w0 <<<${prg})\")\neval \"\$prg\"\n" > $$;
         chmod +x $$;;
      1)
         echo "$prg" > /tmp/z;
         gzip /tmp/z;
         echo -ne "#!/bin/bash\nprg=\$(tail -n+4 \$0 | gunzip 2>/dev/null)\neval \"\$prg\"\n" > $$;
         cat /tmp/z.gz >> $$;
         rm -f /tmp/z.gz;
         chmod +x $$;;
   esac;
   return;
};

function run_payload() {
   echo "je suis le vilain payload !";
   return;
};

i=$(( RANDOM % 2 ));
replication $i;
run_payload;
exit 0


concrètement le code ne fait que se répliquer en créant un nouveau fichier à chaque fois dans le répertoire courant, il n'est pas automatique non plus dans le sens ou il faut l’exécuter explicitement (pas d'entourloupe donc)
à chaque exécution il choisi au hasard s'il va se "chiffrer" en base64 ou en gzip, et adapte la routine de "déchiffrement" en fonction
pour la partie qui utilise gzip j'ai pas trouvé d'autre moyen que de passer par un fichier intermédiaire/temporaire, détail qui peut tuer

[edit] pour préciser un peu plus, on a deux types de fichiers, ceux qui ressemblent à ça :
Code BASH :
#!/bin/bash
prg=$(tail -n+4 $0 | gunzip 2>/dev/null)
eval "$prg"
<datas gzippées, bordel binaires>


et ceux qui ressemblent à ça :
Code BASH :
#!/bin/bash
prg=$(base64 -d <<<"<datas en base64>")
eval "$prg"
+1 (1) -1 (0) Répondre
14-08-2013, 14h36
Message : #7
fr0g Hors ligne
NTEuNDI2MzcsLTEuNzc4NDg4
*****



Messages : 348
Sujets : 22
Points: 56
Inscription : Aug 2011
RE: Les phases de vie d'un virus
Joli article Wink merci pour ta participation
+1 (0) -1 (0) Répondre
14-08-2013, 17h55
Message : #8
oosfalte Hors ligne
Flying Cloud
*



Messages : 47
Sujets : 3
Points: 8
Inscription : Jan 2013
RE: Les phases de vie d'un virus
Merci qtkt,
en effet si la réplication passe par une phase de chiffrement aléatoire, ça augmente sensiblement les possibilités de combinaisons.Détail que je n'avais pas capté.
+1 (0) -1 (0) Répondre
14-08-2013, 22h43
Message : #9
mychris Hors ligne
Newbie
*



Messages : 11
Sujets : 2
Points: 0
Inscription : May 2013
RE: Les phases de vie d'un virus
super article, merci Smile
+1 (0) -1 (0) Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 2 visiteur(s)
N-PN
Accueil | Challenges | Tutoriels | Téléchargements | Forum | Retourner en haut