On interagit souvent avec des clients qui se demandent ce qu’on fait exactement. Ils ont déjà des outils de sécurité sur leurs postes de travail (e.g. un AV et un pare-feu). Pourquoi auraient-ils besoin de quoi que ce soit d’autre? Pour comprendre la réponse, on doit connaître les diverses astuces utilisées dans les cybers attaques pour outrepasser la détection. C’est d’ailleurs ce que nous allons couvrir cette semaine. 

Mais d’abord, il faut comprendre quel genre de détection est-ce qu’on peut s’attendre d’un AV. 

Contrôles préventifs vs contrôles détectifs 

Bien qu’on mentionne souvent les capacités de détection de code malicieux des AV, en réalité on devrait voir l’AV comme un outil de prévention. En fait, la plupart des AV modernes vont exécuter du code inconnu dans un émulateur pour voir ce que le code fait avant de le laisser rouler sur le système. Si l’AV trouve un patron de code malicieux, l’AV va bloquer l’exécution. Aussi, les AVs sont bien meilleurs à trouver du code malveillant avant que celui-ci s’exécute sur le système. Il est souvent nécessaire de désactiver les mécanismes de persistance d’un maliciel en cours d’exécution pour que l’AV puisse l’inspecter et le détecter. 

Mais n’est-il pas meilleur de prévenir que de guérir? Bien sûr que oui. Par contre, cette capacité de prévention n’est pas gratuite. La limite majeure des outils préventifs est le coût des faux positifs. Aimeriez-vous qu’un correctif de Windows rende votre ordinateur inutilisable parce que votre AV pense qu’un composant de l’OS a été corrompu? Ou encore si vous ne pouviez pas mettre à jour un logiciel parce que votre AV pense que la mise à jour est malicieuse? Ceci explique pourquoi la plupart des mesures préventives vont faire des pieds et des mains pour éviter les faux positifs. De l’autre côté, tel que discuté dans la publication précédente sur la fatigue liée aux alertes, pour obtenir moins de faux positifs, vous allez laisser passer plus d’événements malicieux. En d’autres termes, pour éviter de bloquer que les utilisateurs légitimes posent des actions légitimes, les AVs sont conçus pour laisser passer des activités malicieuses. Il est donc nécessaire de rajouter une deuxième couche, une couche qui peut se permettre d’être plus libérale sur les faux positifs parce qu’elle n’est pas bloquante si on souhaite tout capter. 

L’ajout d’une couche de contrôles détectifs à une couche de contrôles préventifs est une technique très utilisée dans plusieurs domaines. D’ailleurs, dans les films de cambriolage, l’objet du vol n’est pas uniquement protégé par une porte verrouillée et un contrôle d’accès biométrique (mesures préventives), mais aussi par des caméras de sécurité et des systèmes d’alarmes (mesures détectives). Personne dans le monde physique pensent qu’ils ne devraient pas installer des caméras de sécurité parce que les caméras n’arrêtent pas les bandits; Ou pensent que les caméras de sécurité devraient avoir des fusils embarqués pour « remédier » aux incidents immédiatement (par contre, je suis certain qu’on pourrait trouver des enthousiastes pour cette proposition…). Dans ce sens, un système EDR devrait être vu comme une seconde couche de détection dans le même style qu’une caméra de sécurité.  

Détection par les AVs modernes 

Maintenant que nous avons établi pourquoi les AV laissent passer des éléments malicieux, nous pouvons creuser un peu plus les techniques utilisées par les AVs pour détecter les menaces informatiques. Le point commun de toutes ces techniques est qu’elles peuvent être calibrées pour produire un très faible taux de faux positifs. Il y a trois techniques principales pour la détection : 

  • Détection basée sur les signatures 
  • Détection basée sur les heuristiques 
  • Détection basée sur le renseignement/réputation 

Nous allons nous concentrer sur les deux premières techniques et les manières de les contourner. La troisième technique sera couverte dans une publication future dédiée à la sécurité opérationnelle pour les opérateurs de code malveillant (et comment les défenseurs peuvent l’utiliser à leur avantage). 

Détection basée sur les signatures

La détection basée sur les signatures est la manière dont les AVs fonctionnaient jadis. Donc, plusieurs personnes s’imaginent que c’est encore la manière dont ils fonctionnent. Dans ce paradigme, la détection est basée sur une propriété unique du code malveillant, son haché cryptographique qui est unique pour chaque programme par exemple, ou encore une chaîne de caractères particulière dans le code. Cette méthode de détection est très rapide et extrêmement fiable pour détecter des variants connus (à condition que suffisamment d’attention a été employé pour créer la signature). Le problème est que c’est aussi la détection qui est la plus facile à contourner en créer un variant unique. En fait, l’explosion des statistiques sur le nombre de maliciels est justement dû à cette création de variants uniques.  

Le polymorphisme, tel qu’appliqué aux logiciels, est la capacité de prendre plusieurs formes. En logiciel, il y a généralement plusieurs chemins pour se rendre à la même destination. Par exemple, disons que vous avez un inventaire de pommes et d’oranges et que vous voulez savoir la quantité totale de fruits en votre possession. Vous pourriez prendre une approche directe comme celle-ci : 

Fruits = pommes + oranges 

Par contre, vous pourriez arriver au même résultat en faisant ceci : 

Fruits = 2*pommes + oranges – pommes 

Bien que ces deux équations soient structurellement différentes, elles ont la même fonctionnalité. C’est pourquoi, en utilisant le polymorphisme, vous pouvez facilement créer deux programmes distincts qui font la même chose. Donc, vous avez maintenant besoin de deux signatures pour le même logiciel malveillant. 

L’obfuscation est un sous-ensemble du polymorphisme qui, en plus de garder la même fonctionnalité, rend le programme difficile à lire pour un humain. Pour un bon exemple d’obfuscation en action, voir l’exemple Powershell dans le blog sur Emotet 

Détection basée sur les heuristiques 

La détection basée sur les heuristiques est la réponse des compagnies d’AV au volume de maliciels qui explose dû au polymorphisme.  

Au sens général, une heuristique est une approximation qui ne donne pas nécessairement une réponse correcte, mais qui donne une réponse qui est assez près de la réponse exacte. Mais qu’est-ce que ça a à voir avec la détection de logiciels malveillants? Pour répondre à cette question, il faut malheureusement faire un détour par le domaine de complexité de calcul. 

Leçons de détection de science informatique

Disons que vous voulez acheter une voiture et vous voulez garantir que vous faites le meilleur achat. Vous devez prendre en compte le prix du véhicule, la consommation de carburant, la fiabilité, la sécurité, le confort, le nombre de sièges en relation avec le nombre moyen d’enfants que vous êtes statistiquement en mesure d’avoir, etc. Le nombre de combinaisons de tous ces critères peut rapidement devenir impossible à gérer, mais est la seule manière d’avoir une réponse objective sur le meilleur achat. En contrepartie, vous pourriez aussi prendre une feuille de calcul avec toutes les revues de véhicules ainsi que leur prix et choisir l’automobile qui a le meilleur rapport entre le nombre d’étoiles et le prix d’achat. Bien que ce choix ne soit pas garanti d’être le choix optimal, il sera d’une qualité suffisante (heuristique). 

En informatique, les problèmes sont évalués en se basant sur la complexité du programme pouvant trouver une solution exacte au problème, en relation avec l’espace de possibilité pour les réponses. Des problèmes sont classés comme « faciles » à résoudre alors que d’autres sont « difficiles ». Par exemple, quand vous entendez que le temps nécessaire pour casser une solution cryptographique est de l’ordre de grandeur de l’espérance de vie de l’univers, vous devinez que c’est un problème classé « difficile ». Or, déterminer si deux morceaux de code non identique ont la même fonctionnalité, notamment déterminer si un bout de code ressemble à une fonctionnalité malicieuse connue, est dans le cas général un de ces problèmes difficiles. Il n’est donc généralement pas possible de faire cette détermination de manière exacte, d’où le besoin de trouver des heuristiques qui donnent une assez bonne réponse dans un laps de temps plus court. 

Donc, la première stratégie pour battre une détection heuristique est souvent de juste patienter un peu. Imaginez que vous voulez lancer votre nouveau logiciel comptable. L’AV lance le logiciel dans un émulateur et vous devez attendre trois jours avant que l’AV puisse vous dire si vous pouvez lancer le logiciel ou non. Ceci est manifestement ridicule. C’est pourquoi une des techniques courantes est pour le maliciel d’avoir un temps d’attente avant de faire des actions malicieuses. Ainsi, quand le système d’émulation enregistre le comportement du logiciel sous inspection et qu’il se demande s’il a vu des comportements à risque, la réponse sera non. En fait, le logiciel semble ne rien faire du tout! Il n’y a clairement aucun danger. 

Le deuxième truc est similaire au premier dans le fait que le logiciel malicieux va utiliser des trucs pour détecter s’il est sous inspection, et va altérer son comportement pour uniquement faire des actions bénignes. L’inspection ne révèlera aucun comportement malveillant, mais lorsque le maliciel sera roulé sur le vrai système, il sera libre de prendre toutes les actions malicieuses. 

Finalement, une des meilleures méthodes pour échapper à la détection est d’abuser des logiciels qui sont connus pour être légitimes et qui sont déjà présents sur le système. Votre AV ne va jamais placer le programme Powershell en quarantaine, celui-ci est une composante critique du système d’exploitation Windows. Toutefois, il est possible d’abuser de Powershell pour faire des actions malicieuses tel que démontré dans la publication précédente sur Emotet. C’est ce qu’on appelle des attaques « vivre de la terre » (Living-off-the-land) et la raison pourquoi ces attaques sont de plus en plus populaires auprès des attaquants. 

Conclusion 

Les contrôles préventifs, tels que les logiciels AV, sont des moyens incroyables de protéger votre entreprise. Toutefois, similairement aux portes verrouillées, certains attaquants connaissent des trucs pour contourner les mesures et des contrôles additionnels doivent être mis en place pour réduire le risque résiduel. 

Si vous voulez en savoir plus sur comment CYDEF peut vous aider à affronter les menaces qui contournent les AV, contactez-nous7 ou renseignez-vous sur notre programme d’essai gratuit. 

Dr. Antoine Lemay

Chief Scientific Officer