Accueil » Sécurité Informatique » Comment fonctionne un antivirus ?

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.

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 : Crypter fichier pour contourner l’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 appellé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 Top 10 Antivirus pour avoir un aperçu des meilleurs antivirus du marché.

Je profite également de cet article pour vous dire que la fréquence ou la longueur des prochains articles sera réduite, avec la publication en moyenne de 1,5 articles par semaine depuis plus d’un an j’ai bien le droit de prendre des petites vacances moi aussi 😛

Image de IntellFreePress.

25 Commentaires

  1. Schwarzer a écrit:

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

  2. Merci michel très bon article

  3. 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?

  4. Falling Star a écrit:

    « 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 ! 🙂

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

  6. Ok merci

  7. 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

  8. Schwarzer a écrit:

    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. 🙂

  9. 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 😛

  10. koffi savero a écrit:

    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 ( saverovarol@gmail.com ) encore une fois merci à vous pour le regard que vous avez envers les amateurs en informatique. <3

  11. LeHackerDesBois a écrit:

    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 ^^

  12. 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.

  13. votre_aide_svp a écrit:

    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

  14. Pingback: Comment protéger son pc – Le Blog du Hacker

  15. 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 🙂

    • 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

Laisser un commentaire

Lire plus :
Trucs et Astuces pour Facebook

Que vous aimez ou non Facebook, vous avez probablement un compte avec au moins 100 amis. D'ailleurs saviez-vous que les...

Fermer