SharpShooter es un marco de creación de carga útil para la recuperación y ejecución de código fuente CSharp arbitrario. SharpShooter es capaz de crear cargas útiles en una variedad de formatos, incluidos HTA, JS, VBS y WSF. Aprovecha la herramienta DotNetToJavaScript de James Forshaw para invocar métodos del objeto serializado SharpShooter DotNet. Las cargas útiles se pueden recuperar usando la entrega Web o DNS o ambas; SharpShooter es compatible con el proyecto MDSec ActiveBreach PowerDNS. Alternativamente, también se pueden generar cargas útiles sin etapas con ejecución integrada de shellcode para los mismos formatos de scripting.

Las cargas útiles de SharpShooter están cifradas en RC4 con una clave aleatoria para proporcionar una modesta evasión de antivirus, y el proyecto incluye la capacidad de integrar la detección de espacio aislado y la codificación del entorno para ayudar a evitar la detección.

SharpShooter incluye una plantilla CSharp predefinida para ejecutar Shellcode con cargas útiles escalonadas y sin etapas, pero cualquier código CSharp puede compilarse e invocarse en la memoria mediante reflexión, cortesía del proveedor CodeDom de CSharp.

Finalmente, SharpShooter proporciona la capacidad de agrupar la carga dentro de un archivo HTML utilizando la técnica de contrabando Demiguise HTML .

SharpShooter se dirige a v2, v3 y v4 del .NET framework que se encontrará en la mayoría de las estaciones de trabajo de usuario de Windows.

La versión 1.0 de SharpShooter introdujo varios conceptos nuevos, que incluyen la creación de escenarios COM, la ejecución de Squiblydoo y Squiblytwo, así como la ejecución de XSL. Para cumplir con esta nueva funcionalidad, se agregaron varias banderas nuevas; -com, -awl y -awlurl.

Uso - Modo línea de comando:
SharpShooter es altamente configurable, admite una variedad de diferentes tipos de carga útil, evasiones de espacio aislado, métodos de entrega y tipos de salida.

Ejecutar SharpShooter con el argumento -help producirá el siguiente resultado:

uso: SharpShooter.py [-h] [--interactive] [--stageless] [--dotnetver <ver>]
                       [--com <com>] [--awl <awl>] [--awlurl <awlurl>]
                       [--payload <formato>] [--sandbox <tipos>]
                       [--delivery <tipo>] [--rawscfile <ruta de acceso>] [--shellcode]
                       [--scfile <ruta de acceso]] [--refs <refs>] [--namespace <ns>]
                       [--entrypoint <ep>] [--web <web>] [--dns <dns>]
                       [--output <output>] [--smuggle] [--template <tpl>]

argumentos opcionales:
  -h, --help muestra este mensaje de ayuda y sale
  --interactivo Utiliza el menú interactivo
  --stageless Crea una carga útil sin etapas
  --dotnetver <ver> Target .NET Version: 2 o 4
  --com <com> Técnica de estadificación COM: outlook, shellbrowserwin, wmi, wscript, xslremote
  --awl <awl> Técnica de anulación de la lista blanca de aplicaciones: wmic, regsvr32
  --awlurl <awlurl> URL para recuperar la carga útil XSL / SCT
  --payload <formato> Tipo de carga útil: hta, js, jse, vba, vbe, vbs, wsf
  --sandbox <tipos> Técnicas anti-sandbox: 
                      [1] Clave del dominio (p. Ej., 1 = CONTOSO)
                      [2] Asegurar el dominio unido
                      [3] Comprobar si hay artefactos de la caja de arena
                      [4] Comprobar si hay MAC incorrectos
                      [5] Verificar la depuración
  --delivery <tipo> Método de entrega: web, dns, ambos
  --rawscfile <ruta> Ruta al archivo de shellcode sin formato para cargas útiles sin etapas
  --shellcode Uso incorporado en la ejecución de shellcode
  --scfile <ruta> Ruta al archivo shellcode como matriz de bytes CSharp
  --refs <refs> Referencias requeridas para compilar CSharp personalizado
                      por ejemplo mscorlib.dll, System.Windows.Forms.dll
  - namespace <ns> Namespace para CSharp personalizado,
                      por ejemplo, Foo.bar
  --entrypoint <ep> Método para ejecutar,
                      Ej. Principal
  - URI de web <web> para la entrega web
  --dns <dns> Dominio para la entrega de DNS
  --output <output> Nombre del archivo de salida (p. ej., maldoc)
  --smuggle Archivo de contrabando dentro de HTML
  --template <tpl> Nombre del archivo de la plantilla (p. ej. mcafee)
Documentación: https://www.mdsec.co.uk/2018/03/payload-generation-using-sharpshooter/