SharpShooter is a payload creation framework for the retrieval and execution of arbitrary CSharp source code. SharpShooter is capable of creating payloads in a variety of formats, including HTA, JS, VBS and WSF.
SharpShooter payloads are RC4 encrypted with a random key to provide some modest anti-virus evasion, and the project includes the capability to integrate sandbox detection and environment keying to assist in evading detection.
SharpShooter includes a predefined CSharp template for executing shellcode with staged and stageless payloads, but any CSharp code can be compiled and invoked in memory using reflection, courtesy of CSharp’s CodeDom provider.
Finally, SharpShooter provides the ability to bundle the payload inside an HTML file using the Demiguise HTML smuggling technique.
SharpShooter targets v2, v3 and v4 of the .NET framework which will be found on most end-user Windows workstations.
Version 1.0 of SharpShooter introduced several new concepts, including COM staging, execution of Squiblydoo and Squiblytwo, as well as XSL execution. To acomplish this new functionality, several new flags were added; –com, –awl and –awlurl.
Usage – Command Line Mode:
SharpShooter is highly configurable, supporting a number of different payload types, sandbox evasions, delivery methods and output types.
Running SharpShooter with the –help argument will produce the following output:
usage: SharpShooter.py [-h] [--interactive] [--stageless] [--dotnetver <ver>] [--com <com>] [--awl <awl>] [--awlurl <awlurl>] [--payload <format>] [--sandbox <types>] [--delivery <type>] [--rawscfile <path>] [--shellcode] [--scfile <path>] [--refs <refs>] [--namespace <ns>] [--entrypoint <ep>] [--web <web>] [--dns <dns>] [--output <output>] [--smuggle] [--template <tpl>] optional arguments: -h, --help show this help message and exit --interactive Use the interactive menu --stageless Create a stageless payload --dotnetver <ver> Target .NET Version: 2 or 4 --com <com> COM Staging Technique: outlook, shellbrowserwin, wmi, wscript, xslremote --awl <awl> Application Whitelist Bypass Technique: wmic, regsvr32 --awlurl <awlurl> URL to retrieve XSL/SCT payload --payload <format> Payload type: hta, js, jse, vba, vbe, vbs, wsf --sandbox <types> Anti-sandbox techniques:  Key to Domain (e.g. 1=CONTOSO)  Ensure Domain Joined  Check for Sandbox Artifacts  Check for Bad MACs  Check for Debugging --delivery <type> Delivery method: web, dns, both --rawscfile <path> Path to raw shellcode file for stageless payloads --shellcode Use built in shellcode execution --scfile <path> Path to shellcode file as CSharp byte array --refs <refs> References required to compile custom CSharp, e.g. mscorlib.dll,System.Windows.Forms.dll --namespace <ns> Namespace for custom CSharp, e.g. Foo.bar --entrypoint <ep> Method to execute, e.g. Main --web <web> URI for web delivery --dns <dns> Domain for DNS delivery --output <output> Name of output file (e.g. maldoc) --smuggle Smuggle file inside HTML --template <tpl> Name of template file (e.g. mcafee)