Évasion d'AV
Dernière mise à jour
Cet article vous a-t-il été utile ?
Dernière mise à jour
Cet article vous a-t-il été utile ?
Pour comprendre comment contourner un anti-virus, il faut d'abord comprendre comment ces derniers fonctionnent. Il existe plusieurs méthodes, plus ou moins récentes, voici les principales méthodes de détection utilisée par les anti-virus.
La plupart des anti-virus scannent le code des programmes présents sur les disques (mémoire permanente), mais plus rarement et généralement moins efficacement, dans la (mémoire vive, éphémère). Ils sont à la recherche de bouts de codes connus pour être malveillants. Cette méthode est longue mais efficace contre les malwares répandus et connus. Algorithmiquement parlant, cette détection est effectuée par comparaison de (par le moyen de hash) par exemple.
Par un principe similaire de signatures, certains anti-virus sont amenés à créer une signature pour chaque programme présent sur vos disques. Cette signature est effectuée à partir du contenu de l'exécutable. Ainsi, le logiciel anti-virus pourra rapidement savoir si un exécutable a été modifié et prendre des décisions en fonction de plusieurs critères.
Il est possible de afin de garantir leur authenticité et apporter un engagement personnel sur le contenu et la sécurité du programme. Le fonctionnement est simple et s'opère en plusieurs étapes :
L'autorité garantissant l'authenticité du programme utilise le contenu du programme pour générer un hash signature de celui-ci.
L'autorité chiffre la signature par le moyen d'un . Elle utilise la clé privée pour chiffrer la signature.
L'utilisateur utilise la clé publique pour déchiffrer le contenu de la signature. S'assurant ainsi par ce chiffrement que l'autorité ayant signée est bien authentique.
L'utilisateur calcule la signature de l'exécutable et la compare à la signature fournie par l'autorité. Si les signatures correspondent, l'intégrité du programme est garantie.
Chaque sommet représente un état de fait observé par l'anti-virus, comme par exemple, la présence d'un comportement chez le programme analysé.
Chaque arête représente une connexion à un autre sommet, mais possède également un poids.
Le poids de chaque arête va être additionné ou multiplié selon des règles s'appliquant à tout le graphe afin de déterminer un poids total à l'issu de l'analyse comportementale. Plus le poids d'une arrête va être important, plus la liaison liant 2 sommets actifs (états de fait détectés par l'anti-virus concernant le programme analysé), plus cette liaison va être un indicateur fort de comportement malveillant.
Attendre une interaction avec l'utilisateur avant de déployer le comportement malicieux. Cela permet également de bypass beaucoup d'analyses heuristiques.
Faire de l'obfuscation de code pour rendre le code très difficilement visible pour l'humain et pour certains scans d'anti-virus.
Chiffrer le code et effectuer un déchiffrement du contenu malveillant au runtime pour bypass certains scan sur disques. Cela s'apparente à l'obfuscation mais selon les techniques utilisées pour déchiffrer, ces méthodes ne rentrent pas dans la définition de l'obfuscation.
Parvenir à faire signer l'exécutable par une autorité, comme vu précédemment ou voler une signature déjà existante.
Modifier la signature malveillante du programme par altération du contenu de la portion de code concernée. Cela permet d'éviter quelques scans par signatures connues si le bout de code utilisé est populaire.
Scanner les AV de la machine et prendre des décisions en fonction, afin de favoris le caractère FUD (Fully Undetectable) de notre programme plutôt que son efficacité. On pourrait alors par exemple avorter l'attaque si le programme se sent en danger. On peut également tenter de neutraliser les différents anti-virus présents.
est une méthode d'analyse et de détection d'activité malveillante lorsque le programme est en cours d'exécution. L'analyse heuristique est alors une analyse comportementale d'un programme. Elle est effectuée en environnement réel, ou bien encapsulée dans une sandbox
virtualisée par l'anti-virus pour pouvoir analyser un comportement sans pour autant risquer que le programme observé fasse des dégâts avant sa détection.
Le terme heuristique fait référence aux fonctions heuristiques dans le contexte de la . Pour expliquer cela simplement, considérons qu'un graphe est un ensemble de nœuds/sommets reliés par des arêtes/arcs. Dans notre contexte :
Ajouter un dans notre code avant la portion malveillante car l'AV (anti-virus) n'observe le comportement post exécution qu'un certain temps limité pour ne pas ralentir les performances de la machine.
Vérifier si le programme tourne dans une avant de déployer le comportement malveillant.
Pour vérifier que le programme est dans une , il existe plusieurs techniques et beaucoup sont propres à l'anti-virus que l'on désire bypass. Quelques unes des plus généralistes et populaires :
Vérifier l'accès à certains fichiers et leurs existences, qui peuvent être différentes dans une et en production.
Rendre la en jouant avec au maximum dans nos choix de variables.
Rendre le malware fileless
, c'est à dire que (RAM).
dans un processus important de Windows par exemple, ou un programme tier de confiance, le plus rapidement possible. Cela est possible car certains logiciels comme les logiciels de débogue ou bien les anti-virus ont besoin d'effectuer de telles opérations.
Vous pouvez voir quelques commandes PowerShell qui peuvent être utilisées pour bypass Windows Defender sur dédiée à PowerShell.