Descubriendo SharpSploit: Mimikatz, Enumeración, Mov lateral, Bypasses... ¡En C#!

Como diría @Superfume¡tenemos dulcines!

Hace escasas horas salió SharpSploit, una nueva herramienta escrita en C# que nos trae Ryan Cobb (@cobbr_io).  El mismo Ryan ha escrito un post sobre su herramienta explicando un poco de qué se compone y el por qué de su existencia:



https://posts.specterops.io/introducing-sharpsploit-a-c-post-exploitation-library-5c7be5f16c51

Así mismo, el repositorio de la tool es el siguiente:

https://github.com/cobbr/SharpSploit

Evidentemente, si se sabe inglés y se tiene tiempo, lo mejor es leerse el post original. Por mi parte destacaré ciertos puntos interesantes de la herramienta y veremos algunos ejemplos de ejecución de la misma.
 
SharpSploit

Para empezar, el nombre de la herramienta hace honor al proyecto PowerSploit, de lo cual nos daremos cuenta rápido. A pesar de sus similitudes, Ryan ha enfatizado en que no pretende ser la versión C# de éste.

En SharpSploit nos encontramos con dulcines como:

    • Mimikatz
    • Gestión de Tokens (impersonar, bypass UAC, …)
    • Enumeración local y de dominio.
    • Ejecución de código evitando protecciones actuales (AMSI, ScriptBlock logging, …)
    • Movimiento lateral
    • …

A causa de las recientes medidas que se están tomando frente al uso malicioso/ofensivo de Powershell, la comunidad está acercándose poco a poco al empleo de C# como alternativa para evadir dichas protecciones.

Sin embargo, el autor destaca algunos “peros” en el uso de herramientas de este tipo:

    • Nos movemos de un lenguaje de scripting (Powershell) a un lenguaje compilado (C#).
    • Debemos tener en cuenta las versiones de .NET
        ◦ Normalmente encontraremos .NET v3.5 en la mayor parte de Windows por defecto.
        ◦ Los Windows 10 y Server 2016 más nuevos tendrán únicamente instalados .NET v4.0 por defecto.
        ◦ En algunos casos ni si quiera está activado.
Para este último problema, SharpSploit dispone de funcionalidad tanto para .NET v3.5 como para .NET v4.0.

¿Y el .exe?

Lo primero en lo que me he fijado (que también es explicado en el post de la tool) es que al conseguir compilar el proyecto (tras unos cuantos errores por mi inutilidad en estos temas) nos encontramos con una librería .dll en vez de un ejecutable .exe. Ryan comenta que su objetivo es ofrecer SharpSploit como librería para las herramientas de cada uno, no obstante, no descarta el .exe en un futuro.
 
Como no soy ningún gurú de la compilación, y menos de lenguajes de los que no tengo ni idea, no voy a indicar los pasos que he seguido para compilar la librería con Visual Studio.

Una vez compilado el proyecto, disponemos de SharpSploit.dll.


Ejemplos de uso

Para poder utilizar las funciones de la herramienta, PowerShell dispone de una cmdlet denominada Add-Type, a través de la cual podemos definir una clase .NET Core para nuestra sesión de PowerShell actual. Mediante el parámetro -Path, indicaremos dónde se encuentra la .dll de SharpSploit:


Una vez hecho esto, podemos hacer uso de las clases y funciones de la librería a través de la siguiente sintaxis:

    • [Your.NameSpace.And.TypeName]::YourMethod()

Por ejemplo, si queremos obtener hashes y passwords en texto plano con Mimikatz PE:

    • [SharpSploit.Credentials.Mimikatz]::LogonPasswords()


Podemos hacer llamadas a PowerShell saltándonos medidas de protección como AMSI, ScriptBlock Logging y Module Logging a través de la función PowerShellExecute()

    • [SharpSploit.Execution.Shell]::PowerShellExecute("POWERSHELL AQUÍ")


También os dejo un pequeño ejemplo de movimiento lateral mediante la función WMIExecute (aunque en este caso es movimiento vertical, ya que dlopez es admin del dominio bancotec :P).

PD: Laboratorio de pruebas cortesía de mi amigo Rober (@leurian).

    • [SharpSploit.LateralMovement.WMI]::WMIExecute('PC-Victima', 'Comando', 'Usuario', 'Contraseña')


Conclusión

En definitiva, el nuevo proyecto de Ryan Cobb promete ser de mucha utilidad. En el post hemos visto unas pequeñas pinceladas de lo que se puede hacer con él, pero la herramienta dispone de muuuuchas más funciones (y las que todavía quedan por ser implementadas…)

En el repositorio viene incluida una guía de comandos con el nombre de SharpSploit - Quick Command Reference donde podremos encontrar todas las opciones disponibles y juguetear con ellas.

@attl4s

Comentarios