SharpSploitConsole, usando nuestra DLL favorita a lo ninja

Hace unos días @anthemtotheego publicaba una nueva herramienta hecha en C# para interactuar directamente con la DLL generada por Sharpsploit, la cual nos permite crear un pequeño .EXE que contiene la librería SharpSploit.dll y System.Management.Automation.dll.
La sencillez de esta herramienta hace posible su modificación a nuestra conveniencia, pudiendo utilizarla con nuestras propias técnicas y herramientas ninjas, cosa que el autor menciona y hace hincapié.


Tras el parche de Microsoft, los equipos actualizados ya detectaban SharpSploit.dll pero utilizando esta herramienta parece que solo algunos antivirus son capaces de hacerlo y solo mediante heurística. En las pruebas que he hecho el Security Essentials se lo traga.

A continuación veamos como compilar correctamente el SharpSploit:

  • Si intentamos compilar directamente nos va aparecerá un warning advirtiendo que una "Biblioteca de clases" no puede compilarse como aplicación, para lo cual es necesario agregar a la solución un nuevo proyecto de tipo "Aplicación de consola".


  • Tras esto ya podemos compilar ConsoleAPP1, SharpSploit y SharpSploitTests y depurar la solución.

Con nuestras dos librerías generadas es hora de cocinar el SharpSploit Console. Para ello tras abrir la solución hay que copiar SharpSploit.dll y System.Management.Automation.dll dentro de la SharpSploitConsole/bin/x64/Debug. A continuación, si no lo tenemos, es necesario agregar el paquete Costura.Fody, que nos servirá para agrupar todas las referencias del proyecto en un sólo binario final.

  • Menú Herramientas > Administrador de Paquetes NuGet > Consola del Administrador de Paquetes
  • En la consola ejecutamos Install-Package Costura.Fody

Por si no se ha generado correctamente el fichero FodyWeavers.xml revisamos dentro del directorio SharpSploitConsole el contenido de éste:

<?xml version="1.0" encoding="utf-8"?>
<Weavers>
    <Costura />
</Weavers>

De regreso al Visual Studio, dentro del proyecto agregamos una nueva Referencia, en la ventana emergente buscamos nuestras dos librerías (SharpSploit.dll y System.Management.Automation.dll) que previamente copiamos en SharpSploitConsole/bin/x64/Debug, elegimos la arquitectura que queramos...



that's all!!



En este punto es importante elegir la arquitectura correcta a la hora de generar el binario, ya que por defecto esta viene como "Any CPU" y si tiramos el Mimikatz lo haría en x86.

BONUS!

A la par que SharpSploitConsole y nuevamente de la mano de @anthemtotheego sacó otro dulcín en C#: SharpCradle.


Esta herramienta nos permite "descargar" y ejecutar binarios .NET en memoria en el equipo destino. Pudiendo hacerlo desde un servidor web que tengamos, un servidor de ficheros, pudiendo aquí pasarle credenciales para el servidor (FTP, SMB...), e inclusive con un fichero de proyecto .csjproj.

Teniendo recién horneado el SharpConsole decidí probarlos conjuntamente.



Al igual que con SharpSploitConsole, el autor da libertad para modificar su código e implementarle lo que queramos. Hay que tener en cuenta que, por defecto, al intentar volcar las credenciales con Mimikatz junto con SharpCradle, la clase que utiliza este último no para leer en memoria el resultado no funciona correctamente.

@OxVIC
C# is the new sexy

Comentarios

  1. Interesante... probandooo

    ResponderEliminar
  2. Mui bien! Gracias! Pero compile con 2 erros, CS0117 'Host does not contain a definition for 'RegistryRead' y CS0117 'Host does not contain a definition for 'RegistryWrite'. Estoy usando Visual Studio 2017 comunity. Gracias!

    ResponderEliminar

Publicar un comentario