Dans l’article d’aujourd’hui, je vais essayer d’expliquer en détail le fonctionnement d’un antivirus classique.

Je ne suis pas un programmeur d’antivirus, ni même chercheur en sécurité informatique mais juste un simple curieux qui veut obtenir plus de détails que :

“L’antivirus cherche une signature de virus dans un fichier”

Si comme moi, vous estimez qu’il serait intéressant d’en savoir plus, vous êtes au bon endroit, et vous pouvez même participer si vous en connaissez davantage.

On commence.

Comment fonctionne un antivirus ?

antivirus

L’antivirus lors du démarrage de l’ordinateur

Nous sommes bien d’accord que si l’antivirus se lance après les programmes malveillants, il devient totalement inutile.

Comment se fait il alors que l’antivirus se lance toujours avant les autres programmes ?

Et bien il y a tout simplement un ordre de lancement.

Voici l’ordre de lancement des composants logiciels lorsque vous démarrez votre système :

FSFilter Infrastructure
FSFilter System
FSFilter Bottom
FSFilter Copy Protection
FSFilter Security Enhancer
FSFilter Open File
FSFilter Physical Quota Management
FSFilter Virtualization
FSFilter Encryption
FSFilter Compression
FSFilter Imaging
FSFilter HSM
FSFilter Cluster File System
FSFilter System Recovery
FSFilter Quota Management
FSFilter Content Screener
FSFilter Continuous Backup
FSFilter Replication
FSFilter Anti-Virus
FSFilter Undelete
FSFilter Activity Monitor
FSFilter Top
Filter
Boot File System
Base
Pointer Port
Keyboard Port
Pointer Class
Keyboard Class
Video Init
Video
Video Save
File System
Event Log
Streams Drivers
NDIS Wrapper
COM Infrastructure
UIGroup
LocalValidation
PlugPlay
PNP_TDI
NDIS
TDI
NetBIOSGroup
ShellSvcGroup
SchedulerGroup
SpoolerGroup
AudioGroup
SmartCardGroup
NetworkProvider
RemoteValidation
NetDDEGroup
Parallel arbitrator
Extended Base
PCI Configuration
MS Transactions

Source en partie.

Bon, ça fait beaucoup de choses, et moi-même je ne sais pas ce que veulent dire la plupart.

Par contre, cela nous montre que l’antivirus (FSFilter Anti-Virus) démarre avant les clés USB et autres périphériques de ce type (PlugPlay), avant l’audio & vidéo et avant même que vous soyez connecté au réseau (NetworkProvider).

Notre antivirus est donc bien actif dès le démarrage du système, et même si on ajoute d’autres processus par la suite au démarrage, il ne pourront pas se lancer avant l’antivirus.

“Oui mais…si le programme malveillant se fait passer pour un antivirus et se place lui-aussi dans ce FsFilter Anti-Virus ?”

Windows Vista (et supérieur) demande à ce que les codes sources des pilotes (drivers) soient signés numériquement. Et pour cela il faut un certificat 😉

Notre pauvre programme malveillant n’obtiendra bien sûr pas ce certificat.

Interruptions des Entrées/Sorties

L’antivirus démarre donc avant les autres processus, pour cela c’est bon.

Mais l’antivirus arrête aussi un virus avant son exécution lorsque le système est déjà démarré. Alors comment fait il pour agir avant le lancement d’un programme quelconque ?

Si maintenant on voulait développer un programme qui vérifie les programmes lancés, on utiliserait naïvement un code semblable à l’exemple suivant :

Si NouveauProgrammeLancé Alors
Si VérifierLeProgramme() == Malveillant Alors
ArrêterLeProgramme()
Fin Si
Fin Si

Le problème est présent dès le début : Si le programme est lancé, c’est déjà trop tard !

Imaginez un ransomware qui crypte tous vos fichiers dès son lancement, l’antivirus pourra toujours nous dire qu’il a trouvé un programme malveillant, ça sera trop tard.

Il nous faut donc ce qu’on appelle un Filter Driver, “pilote filtre” en français. On en parlait avant avec FSFilter Anti-Virus.

Un pilote filtre est un pilote qui étend ou améliore la fonction d’un périphérique.

Ici le périphérique en question sera le disque dur (système de fichiers) sur lequel le programme prêt à être lancé est stocké.

On pourra donc filtrer les opérations d’entrée/sorties pour un ou plusieurs systèmes de fichiers. Filtrer signifie ici : observer, enregistrer, modifier, ou empêcher un évènement.

Ce filtre va nous permettre d’intervenir dès le moment où l’utilisateur effectue une action, typiquement lorsqu’il double clique sur le programme à exécuter.

Pour bien comprendre, prenons le schéma suivant :

comment fonctionne un antivirus

Tout en haut, nous sommes dans le mode utilisateur (user mode). En tant qu’utilisateur vous avez deux façons d’accéder à un fichier : Soit vous le lisez (vous le lancez) soit vous l’écrivez (vous le créez/copiez).

Ces deux façons sont appelées les Entrées/Sorties, ou Input/Output (I/O) en anglais.

Admettons que vous venez par exemple de double cliquer sur un programme. Vous faites donc une demande de lecture (entrée) du fichier.

À partir de là, le noyau prend la main (kernel mode), vous n’avez plus aucun pouvoir.

Le gestionnaire d’entrée/sortie (I/O Manager) prend en compte votre demande et l’envoie au gestionnaire de filtre (Filter Manager).

Le gestionnaire de filtre va filtrer la demande via les filtres installés, il tombera ici sur le filtre B qui est celui de l’antivirus.

À ce moment, un scan rapide est effectué, et si le fichier est détecté comme malveillant, le filtre indique de stopper la requête. Le fichier n’est pas exécuté, l’antivirus lance l’alerte et Windows indique qu’il n’a pas pu accéder au programme.

Dans le cas contraire, si l’antivirus ne détecte rien de suspect, la requête est validée, elle arrive dans le driver du système de fichier (File System Driver) qui lit (ou écrit) le fichier sur le disque.

Tout cela se passe en quelques millisecondes entre le moment ou vous cliquez sur un programme et le moment où il s’affiche à l’écran.

Comment se passent les scans ?

Maintenant qu’on sait que l’antivirus démarre en premier, et qu’il a le privilège de vérifier et éventuellement annuler des opérations sur les fichiers, intéressons nous aux scans.

Nous avons 3 types principaux de scans :

Scans par signatures

Il s’agit du scan le plus simple qui vient à l’esprit immédiatement : On calcule une signature unique à chaque programme, et on vérifie si il s’agit d’une signature d’un programme malveillant.

Cette signature est habituellement ce que l’on appelle un hash.

Un hash est une empreinte d’un fichier ou d’une donnée de manière générale. Cette empreinte est unique est peut être calculée facilement en implémentant une telle fonction de hachage.

Par exemple, je peux voir les hashs d’un fichier via VirusTotal (utilitaire en ligne pour scanner vos programmes avec plusieurs antivirus à la fois) :

hash

Il existe plusieurs fonctions de hachage, les plus connues sont MD5 et SHA256.

Nous avons donc calculé un hash de notre programme à scanner et nous avons déjà une base de données virales contenant des centaines de milliers de hashs de programmes malveillants.

Premier problème : Comment scanner un programme lorsque l’on a 300 000 signatures de programmes malveillants différents ? En effet cela devrait prendre 10 minutes par fichier !

Nous avons en fait deux algorithmes utilisés pour cela :

Boyer-Moore: Pour chercher une chaîne dans une autre.
Aho-Corasick: Pour chercher plusieurs modèles en même temps.

Exemple de l’utilisation de l’algorithme Aho-Corasick en anglais.

Il semble que le second soit donc couramment utilisé dans les logiciels antivirus commerciaux car il permet d’analyser très rapidement un fichier sans tester les centaines de milliers de signatures une par une.

Deuxième problème : Scanner c’est bien, scanner vite c’est parfait, mais…un seul petit changement dans le fichier change le hash, donc la signature.

Voir : Quel est Vraiment LE MEILLEUR antivirus ?

Effectivement c’est là que le scan par signatures pose problème, il est facile (certains programmes automatisent cela) de changer la signature d’un programme malveillant pour le rendre totalement sain.

Scans heuristiques

Les scans heuristiques servent à compenser le problème des scans par signatures : On essaie de deviner si un programme est malveillant en observant son comportement et non pas sa signature.

Ces scans se divisent eux encore en trois sous-types.

Émulation de programme

C’est ce qu’on appelle aussi “l’exécution dans un bac à sable” (sandbox). Il s’agit en fait d’exécuter directement le programme dans un environnement d’exécution sécurisé pour observer ce qu’il fait.

Analyse de programme

Dans ce cas, on va essayer de décompiler le programme, et d’observer son code source pour mieux comprendre son comportement. C’est donc un scan plus complet et détaillé qui part à la recherche d’actions potentiellement malveillantes.

Détection de signatures génériques

Cette technique sert elle aussi à combler le problème des signatures changeantes. Il s’agit d’une détection aussi appelée détection génétique dans laquelle on va classer les virus par familles.

Ils sont de la même famille si ils ont des empreintes (ADN) similaires. L’exemple des jumeaux est intéressant : On a deux jumeaux presque identiques, mais leur ADN est différent.

Scans proactifs

Les scans proactifs sont ceux qu’on pourrait appeler “en temps réel”.

Lorsqu’un programme est exécuté, et se trouve donc en mémoire vive (RAM), on observe si ses actions ne sont pas malveillantes. Si il se met tout-à-coup à agir de façon malveillante comme supprimer des fichiers massivement, on lance l’alerte et on l’empêche de continuer.

Tous les programmes lancés sont vérifiés dès leur exécutions et à intervalles réguliers. C’est également comme ça que l’on repère les programmes malveillants qui cachent leur activités malveillantes avant d’être exécutés.

La différence entre ce scan et les autres, c’est qu’il vérifie les programmes après leur lancement.

Fonctionnalités supplémentaires

Les antivirus de nos jours contiennent des fonctionnalités supplémentaires comme la vérification des liens visités dans le navigateur (on vérifie l’URL ou le contenu de la page).

Les antivirus pour mobiles existent également, ainsi que la protection des données personnelles (sauvegarde des données) , la protection des e-mails, etc…

Pour finir, je vous invite à lire le Quel est Vraiment LE MEILLEUR antivirus ? pour avoir un aperçu de celui qui est le meilleur (?) antivirus.

Image de IntellFreePress.

28 Commentaires
Cliquez ici pour ajouter un commentaire

  • Très bon article et toujours aussi intéressant. Merci à toi Michel !

    Répondre
  • Merci michel très bon article

    Répondre
  • En plus de mon anti-virus, pare feu et autres logiciels de désinfection, j’utilise sous windows la commande netstat -ano en vérifiant le pid des processus en cours ,qu’en pensez vous? Est ce efficace ou valable comme vérifications?

    Répondre
  • “Ce deux façons sont appelées les Entrées/Sorties, ou Input/Output (I/O) en anglais.”, “Ces” et pas “Ce” je suppose ^^
    Sinon, encore un très bon article ! 🙂

    Répondre
  • Salut, toujours bien vos articles, mais quelle est la meilleur façon pour bien se protéger ?

    Répondre
  • Ok merci

    Répondre
  • Déjà essayer de s’informer sur les différents type d’infection et leurs façon de fonctionner pou mieux appliquer ensuite une parade, sinon c’est comme si vous partez en guerre sans qui ou quoi vous allez combattre, c’est un peu la même chose

    Répondre
  • Un article du blog Kaspersky sur les cinq mythes les plus répandue sur les antivirus est disponible à l’adresse suivante : http://blog.kaspersky.fr/5-mythes-sur-les-antivirus/

    en complément de ton article Michel. 🙂

    Répondre
  • Bonjour, je suis nouveau et je suis passionné par l’informatique . J’aimerais que l’on me donne quelques tuyaux pour démarrer la programmation . ( quel langage commencé ? quelle utilité précise ? ) merci d’avance.
    ArrestedWard

    ps : très bon article 😛

    Répondre
  • salut prof moi c’est savero élève en classe de terminal C. au fait vu la passion que j’ai pour le domaine du hacking j’ai du quitter les bancs sans rien avoir comme diplôme scolaire. j’aime entendre dire je viens de pirater un compte. comment es ce que cela peut-il bien être possible? je comprend à présent que l’informatique c’est le cœur du monde.. j’ai jamais été au cours d’informatique , personne dans mon entourage ne veut réellement pas me comprendre et vous j’espère que vous serez la seule et unique personne à me tendre la main. je suis très déterminé et vu que le hacker est le plus grand information alors je m’engage à l’être… merci et voici ma boite e-mail n’hésitez pas à me laisser une réponse favorable ( [email protected] ) encore une fois merci à vous pour le regard que vous avez envers les amateurs en informatique. <3

    Répondre
  • très bon article Michel comme toujours ^^
    merci pour toutes ces info et oui tu as raison pour tes vacances bonne vacance a toi aussi 😉

    ps : pour tout les autres qui demande des info je vous invite fortement a rejoindre notre forum qui je suis sure vous aideras au delà de vos espérances comme il en as été pour moi ^^

    Répondre
  • Tout dépend de l’antivirus.Il y a des antivirus qui peuvent ne servir à rien.Il y en a d’autres qu’il vaut mieux avoir sous la main. Abpremiumpc fait parti de ceux la.Il est simple efficace et rapide.Les qualités que doivent selon moi avoir un antivirus.

    Répondre
  • votre_aide_svp
    4 mars 2015 20 h 59 min

    bonsoir tout le monde serait-il possible que vous m’aider j’ai un petit problème d’un antivirus qui bloque internet explorer au démarrage ce qui impacte énormément la production dans la société dans laquelle je travaille, si vous avez une méthode pour devancer le lancement de IE par rapport a l’AV.

    MERCI D’AVANCE

    Répondre
  • […] pas non plus une ceinture au dessus de l’autre en voiture. Dans le cas des antivirus, cela peut même s’avérer contre-productif, ce qu’on appelle des « conflits […]

    Répondre
  • Très bon article , est-il possible de m’aider a créer un simple antivirus
    pour voir les chose de plus près ? il y a t-il un autre article ou tutoriel qui pourra m’aider un peux plus ? et merciii 🙂

    Répondre
    • Salut et merci ! C’est une excellente question et à vrai dire je pense que cela demande plus qu’un article d’où le fait que peu d’informations tout-en-un se trouvent sur le net

      Répondre
  • bonne soirée michel bon sujet comme toujours une petit truc? vite faite pour comment réaliser son propre teste.
    antivirus a force d’utilisation le système de votre pc commence à ralentir et avoir quelques bugs.la première chose à
    laquelle on pense dans ce cas et t’il causé par un virus et pourquoi.l’antivirus ne réagit pas pour avoir la certitude que

    votre antivirus est fonctionnel vous devez réaliser votre propre test antivirus. étape1 créer un faux virus
    comme son nom l’indique c’est un faux virus qui n’a d’utilité que de réaliser un test antivirus.ce faut virus s’appelle
    eicar et il ne contient aucun code malveillant. c’est juste un fichier de test. pour le créer et réaliser votre propre

    test antivirus. voici comment faire appuyez simultanément sur les touche windows +r et saisissez la commande
    notepad. dans le bloc note copiez la ligne de commande suivante.
    x50!p%@ap(4\pzx54(p^)7cc)7}$Eicar-standard-antivirus-test-file !$H1H* enregistrez le fichier en cliquant

    sur le menu fichier.puis sur la commande enregistrait sous et donner le nom. eicar.com étape 2 effectuer
    le test antivirus dés que vous validez par le bouton enregistrer votre antivirus doit détecter le fichier.
    comme étant un virus et doit le supprimer. si votre antivirus n’a aucune réaction c’est qu’il y a un problème.

    l’antivirus doit supprimer le fichier eicar.com pour que le test antivirus soit positif.si le test de votre antivirus
    est négatif la solution serait de désinstaller et réinstaller votre logiciel de protection. je vous mais en garde
    j’ai du faire une erreur dans le code juste après ap et avant 4 dans le code

    Répondre
  • salut michel très bon et très intéressant article. j’ai fait un petit sujet dans un commentaire que j’ai fait
    dans les antivirus sont pas vos amis. que tu peu voir. de donne la suite ici

    car je voie encore trop de connerie dans certaine réponse de personne qui ne sont pas logique.
    type pas d’antivirus alors quand faite ils s’en utilise même deux ? ou certain qui te disse que l’internaute et bête

    car selon eux pas de danger il savent parfaitement se qu’il fond à bon !? cela ne fait bien rigolait quand je voie cela.
    michel quand et t’il quand c’est même personne se font infectée sans même le savoir ou sans rendre contre?

    je pense qui faut rester modeste et ne pas faire de jugement sur les gens moins technique que nous
    car même c’est gens peuvent nous apprendre des chose que nous même ne connaissons pas autre que l’informatique

    il faut toujours être simple. et pas avoir la grosse tête en pensant tu savoir dans le domaine loin de la
    les gens qui pense cela ont tout faut car même les professionnelle font de grosse bêtise.

    les inconvénients

    intéressons nous à l’étape 3 ce sont les techniques d’analyse statique qui sont utilisées pour identifier les codes viraux.
    ces techniques reposent sur ce qu’il est convenu d’appeler des signatures.

    une signatures peut être l’empreinte cryptographique hachage d’un fichier. ce type de signature a pour avantage
    de s’appuyer sur un calcul fiable ou réputé tel et d’être relativement facile et rapide à obtenir.

    par contre il ne permet pas de détecter des variantes et il suffit à l’attaquant de ne modifier. ne serait -ce qu’un seul
    bit du fichier qui a servi à calculer l’empreinte pour rendre celle-ci inexploitable. cela n’est pas compliqué à

    obtenir. il suffit d’inclure des données aléatoires dans les parties du code non utiles pour fausser le calcul de l’empreinte.
    une suite d’éléments caractéristiques du contenu du fichier. suite hexadécimale texte etc. dans cette forme

    une signature peut être simple. constituée d’une chaîne unique ou complexe type recherche la chaîne hexadécimale x à
    tel adresse du fichier et la chaîne y n octets plus loin etc.

    la signature que le virus insère dans les fichiers infectés pour éviter la surinfection. des caractéristiques externes
    d’un fichier nom taille encodage etc. un mix de tout cela. idéalement une signature virale doit permettre d’identifier

    à coup sûr un code malveillant et ne doit pas générer de faux positifs surtout lorsque l’option de détruire un fichier
    suspect a été retenue.

    techniques de base de contournement

    compte tenu de ce qui a été exposé précédemment il devrait apparaître clairement à tout un chacun que
    les techniques de contournements sont multiples pour ne pas dire légion. on peut donc en tirer les angles d’attaques

    suivants.

    1 incapacité à traiter un protocole
    2 incapacité à identifier et extraire un fichier d’une session reconstituée.
    3 incapacité à décoder le fichier compressé / archivé

    4 absence de signature nous considérerons dans la suite de se sujet que ce cas de figure est exceptionnel
    même si c’est un risque bien réel auquel sont exposés les administrateurs systèmes de manière quotidienne !

    il est entendu que le terme incapacité doit être compris dans un sens très large. nous ne nous intéresserons cependant
    qu’aux cas dans lesquels cette incapacité résulte d’une attaque et non d’un bogue du logiciel. par contre nous

    retenons le cas d’une attaque contre la configuration des logiciels utilisés. pour contourner la passerelle l’attaquant
    peut donc agir sur.

    1le protocole 2 le format du vecteur de transport du code viral. par exemple le message électronique. la page web
    etc. le format du fichier contenant le code viral.

    4 la configuration de la passerelle par exemple en faisant l’hypothèse que l’analyse ne se fait pas sur tous les flux
    mais seulement sur les flux entrants.

    5 le comportement de l’utilisateur ce dernier est en effet l’élément déclencheur de l’infection bien entendu à l’insu
    de son plein gré.

    vif du sujet

    nous allons dans cette section passer en revue les angles cités précédemment en les abordant d’un point de vue
    pratique. technique de contournement simples. attaques fondées sur le protocole l’objectif de cette classe d’attaques

    est simple interdire la reconstruction de la session. la difficulté de la chose réside dans le fait que si la passerelle ne doit
    pas pouvoir reconstruire cette session. le logiciel client destinataire finale doit pouvoir le faire sans problème.

    a moins de tomber sur des logiciels qui croyant bien faire ne se formalisent pas trop des violations de certaines
    RFCs et passent outre certains types d’anomalies protocolaires. cette catégorie d’attaques présente peu d’intérêt.

    pour cette raison nous nous intéresserons aux attaques fondées sur un protocole plutôt qu’aux attaques contre un
    protocole. en effet la façon la plus simple d’interdire la reconstruction de la session est d’utiliser les protocoles chiffrés.

    cela ne constitue pas à proprement parler une attaque mais c’est un moyen très efficace

    ainsi un mandataire squid se contentera de faire transiter les flux via une directive connect. au nez et à la barbe de
    l’antivirus. il faut pour cela que le code viral sache utiliser ces protocoles. il est possible que le code comporte

    les fonctionnalités nécessaires à la mise en oeuvre. des protocoles chiffrés. c’est le cas le plus favorable car le code
    serait autonome. mais c’est aussi le moins réaliste compte tenu de la complexité et du coût de développement

    de ces fonctions et du caractère aléatoire de réussite. une attaque couramment utilisée et qui s’appuie sur le protocole
    consiste à empêcher non pas la reconstruction de la session mais sa transmission à l’antivirus.

    Répondre
  • salut michel très bien ton sujet sur les antivirus. mais encore trop de gens se font de fausse idée
    ou son mal au courant de la chose. donc ici je fait une petite analyse. la manipulation des formats de fichiers est

    peut -être encore la méthode la plus souvent employée pour tromper un antivirus. l’attaquant peut agir principalement
    sur deux manettes le format d’archivage et la compression. il peut aussi insérer du code viral dans des formats de fichiers

    considérés à tort comme sûr auparavant. comme ce fut récemment le cas avec les fichiers jpeg.
    sans oublier qu’il peut également chercher à insérer son code dans des formats de fichiers non encore utilisés

    et bénéficier ainsi d’un effet de surprise. archivage agir sur le format d’archivage. d’un fichier consiste à exploiter le
    facteur temps qui joue contre l’antivirus. bien souvent cela conduit les développeurs ou les administrateurs des passerelles.

    à faire des choix pour réduire les temps d’analyse. par exemple il peut être décidé de ne pas extraire les archives
    au delà d’un certain seuil de récursion la récursion dans ce contexte étant de fait pour une archive d’en contenir

    elle même une autre. cette dernière en contenant elle même une autre et ainsi de suite effet vache qui rit.
    d’une part l’extraction consécutive de plusieurs archives est un processus.

    consommateur en temps. d’autre part cela présente un danger celui d’épuiser les ressources mémoire ou disque.
    de la passerelle dans le cas où l’archive est volontairement piégée.

    la solution consiste à déclarer infectée toute archive qui dépasse un certain seuil de récursion.
    avec le risque de générer de nombreux faux positifs. et de devoir céder face au mécontentement des utilisateurs.

    en sens inverse accepter de laisser passer un fichier au delà de ce seuil sans analyser son contenu constitue une voie
    de pénétration royale pour les virus. le pire des cas de figure reste celui où l’antivirus possède des limites internes.

    ou utilise des paramètres de configuration non documentés. qui aboutissent à un laisser passer inconscient.
    ce cas de figure s’est déjà vu. certains produits toujours dans l’optique de réduire les temps.

    de traitement se contentaient par défaut de ne rechercher les codes viraux que dans les premiers kilo-octets
    des fichiers analysés. la multiplicité des formats joue aussi en faveur de l’attaquant parfois dans des cas

    que l’on attendrait pas. des versions encore récentes de l’antivirus clamav ne reconnaissaient pas le format
    tar utilisé pour diffuser le code même de ce logiciel.

    le code étant accompagné de fichiers de test. il était possible d’analyser l’archive avec le moteur clamav sans que
    celui-ci n’y détecte les fichiers de test qu’il reconnaissait par contre fort bien une fois l’archive extraite.

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.

Vous devez remplir ce champ
Vous devez remplir ce champ
Veuillez saisir une adresse e-mail valide.

Menu