SILENTTRINITY - Post Explotación con el “Empire” basado en C# y Python

La semana pasada fue la DerbyCon y nos ha traído muuuuchas cosas nuevas, tantas que estoy sufriendo para poder verlas todas. No obstante, de toda esa montaña de información, una de las charlas ha llamado especialmente mi atención:

  • IronPython… OMFG - Marcello Salvati (byt3bl33d3r)
    • https://github.com/byt3bl33d3r/Slides/blob/master/IronPython_OMFG_Derbycon_2018.pptx
    • https://www.youtube.com/watch?v=NaFiAx737qg

IronPython… OMFG

1- Introducción
byt3bl33d3r, creador del conocido proyecto CrackMapExec, nos presenta SILENTTRINITY, su nuevo agente de post explotación basado en C#/.NET, Python e IronPython.

Para aquellas personas que hayan ido leyendo mis posts anteriores aquí en HackPlayers, ya sabrán por qué razón se está transitando poco a poco a estas herramientas basadas en C#. Para el resto, mencionar que actualmente existen numerosas protecciones contra el uso de PowerShell ofensivo que, poco a poco, están limitando su potencial, como son:
  • AMSI
  • Module Logging 
  • ScriptBlock Logging
  • Transcription Logging
  • Constrained Language Mode
Existen diferentes formas de saltarse las protecciones anteriores, sin embargo, la utilización de .NET a través de C# evita todos estos líos... y de ahí su atractivo.

El caso es que byt3bl33der se ha montado un agente de explotación sublime, ya que aprovecha todas las virtudes de .NET a través de C#, uniéndolo a una ejecución en memoria y una usabilidad al más puro estilo de Empire.
El funcionamiento de la tool se puede visualizar en el gráfico (explicación peste a continuación):
  1. Ejecutamos el servidor de SILENTRINITY en nuestra Kali y configuramos un listener
    • Funcionamiento muy similar a Empire o MSFConsole.
  2. Creamos un stager con el objetivo de obtener un agente/sesión de la máquina víctima.
    • Proceso similar a la creación de un .exe de meterpreter para obtener una sesión o utilización del launcher de Empire para obtener un agente.
  3. Una vez ejecutado el stager, este solicitará un .zip a nuestro servidor con los recursos necesarios para trabajar.
    • Entre ellos, las .dll de IronPython, que serán las que hagan la magia junto a .NET.
  4. Una vez montado el chiringo, la sesión estará a la espera de Jobs, o dicho de otro modo, a la espera de los módulos de post exploitación que ejecutemos.
  5. Cuando ejecutemos un módulo (por ejemplo, Mimikatz), se enviará a través de un fichero .py que será ejecutado sin tocar disco y devolverá el resultado a nuestro servidor.
2- Instalación
La herramienta se encuentra en el siguiente repositorio:
  • git clone https://github.com/byt3bl33d3r/SILENTTRINITY
    • apt-get install python3.7
    • apt-get install python3.7-dev
    • python3.7 -m pip install -r requirements.txt
  • Para poner a funcionar el servidor:
    • python3.7 st.py

3- Funcionamiento
Vamos a encontrarnos, como ya adelanté antes, con una sintaxis similar a Empire y/o Metasploit. Lo primero que vamos a hacer es configurarnos un listener:


  • Escribimos listeners y nos llevará a la pestaña de los mismos
  • Al utilizar el comando list podremos ver los listeners disponibles y los que están actualmente funcionando.


  • Por ejemplo, seleccionamos un listener de tipo http --> use http
  • Dentro de la pestaña podremos desplegar las opciones --> options
  • Asignamos los valores correspondientes con el comando set


  • Por último, lanzamos start para iniciarlo.

A partir de este momento solo nos queda hacer uso de algún stager para poner en funcionamiento nuestro arsenal.


  • Siguiendo la misma sintaxis, utilizaremos un stager de tipo msbuild, el cual nos generará un archivo .xml y nos indicará el comando que tendremos que usar en la máquina víctima.
    • msbuild.xml
    • C:\Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe msbuild.xml 

 
Se pueden apreciar las fases anteriormente descritas en la imagen anterior.

¡Disponemos de una sesión!

Ya solo nos queda enviar Jobs y disfrutar de la magia de SILENTTRINITY.

  • Vamos a la pestaña modules y con el comando list podemos ver los diferentes módulos que dispone la herramienta.
    • Mimikatz, Shell, execute-assembly, safetykatz, msilshellexec, internalmonologue, powershell, msgbox, excelshellinject.
    • Destacar el módulo execute-assembly, que nos permite utilizar, a partir de sus .exe, herramientas escritas en C# como las incluidas en el paquete Ghostpack o el reciente Watson, de RastaMouse.





4- Últimas notas
SILENTRINITY tiene un potencial enorme y estoy convencido de que marcará un antes y un después. Antes de terminar el post, hacer mención a algunos puntos para acabar:
  • En el proyecto de github es posible compilar un .exe y una .dll de SILENTTRINITY, imagino que cumplen funciones similares a msbuild en caso de que este no se encuentre en el sistema.
  • La herramienta está aún en una fase temprana, por lo que nos esperan numerosos módulos y funcionalidades nuevas en el futuro.
  • Todas las pruebas realizadas en este post se han hecho con Windows Defender y Windows 10 completamente actualizados y activos.
@attl4s

2 comentarios :

  1. Hello,

    Great post!
    I would like to know if there is different way to load msbuild.xml file rather than SMB ? For example, http/s ?

    ResponderEliminar