
Service Windows qui crée de fausses sessions SMB pour simuler des connexions d'utilisateurs à hauts privilèges, attirant les attaquants vers des machines leurres pour une détection précoce et une réponse aux incidents.
________ _________ _____ _ _____ __
/ ___| \/ || ___ \ / ___| (_) / ___| / _|
\ `--.| . . || |_/ / \ `--. ___ ___ ___ _ ___ _ __ \ `--. _ __ ___ ___ | |_ ___ _ __
`--. \ |\/| || ___ \ `--. \/ _ \/ __/ __| |/ _ \| '_ \ `--. \ '_ \ / _ \ / _ \| _/ _ \ '__|
/\__/ / | | || |_/ / /\__/ / __/\__ \__ \ | (_) | | | | /\__/ / |_) | (_) | (_) | || __/ |
\____/\_| |_/\____/ \____/ \___||___/___/_|\___/|_| |_| \____/| .__/ \___/ \___/|_| \___|_|
| |
|_|
Bienvenue ! Ceci est un utilitaire qui peut être compilé avec Visual Studio 2019 (ou plus récent). Le but de ce programme est de créer une fausse session SMB. L'objectif principal est de servir de méthode pour attirer les attaquants vers un dispositif leurre. Ce programme est fourni sans aucune garantie.
Ce programme vous demandera de modifier légèrement le code. À la ligne 144, l'API Windows CreateProcessWithLogonW est appelée ; deux paramètres ont été fournis par défaut : svc-admin (le nom d'utilisateur) et contoso.com (le domaine). Il est nécessaire de modifier ces valeurs pour qu'elles correspondent à votre réseau de production.
CreateProcessWithLogonW(L"DomainAdminUser", L"YourDomain.com", NULL, LOGON_NETCREDENTIALS_ONLY, <snip>);
Après avoir modifié le code et l'avoir compilé, vous devez ensuite installer le service. Vous pouvez le faire avec la commande suivante :
sc create servicename binpath="C:\ProgramData\Services\Inject\service.exe" start="auto"
Pour vérifier que le programme fonctionne correctement, vous devez vérifier quelles sessions existent sur le système. Cela peut être fait avec la commande suivante :
C:\ProgramData\Services\Inject> net sessions
Computer User name Client Type Opens Idle time
-------------------------------------------------------------------------------
\\[::1] svc-admin 0 00:00:04
The command completed successfully.
Vous devriez vérifier à nouveau après environ 13 minutes pour confirmer qu'une nouvelle session a été créée et que le programme fonctionne correctement.
La théorie derrière cela est que lorsqu'un adversaire exécute SharpHound, collecte les sessions et analyse les chemins d'attaque à partir des principaux compromis, il peut identifier qu'un utilisateur hautement privilégié est connecté sur une infrastructure de niveau 2 (postes de travail), ce qui (apparemment) lui permet d'y accéder et de vider les identifiants pour obtenir un accès administrateur de domaine.
Dans le scénario ci-dessus, un attaquant a compromis l'utilisateur « [email protected] » qui est administrateur local sur lab-wkst-2.contoso.com. L'utilisateur svc-admin est connecté sur lab-wkst-2.contoso.com, ce qui signifie que l'attaquant n'a qu'à se connecter au poste de travail, lancer Mimikatz et vider les identifiants. Alors, comment surveiller cela ?
L'implémentation de cet outil est importante, tout comme la surveillance. Si vous implémentez l'outil sans surveillance, il est effectivement inutile ; par conséquent, la surveillance est indispensable. La manière la plus efficace de surveiller cet hôte est d'alerter sur toute connexion. Ce programme est mieux utilisé sur un hôte sans activité utilisateur, joint au domaine avec des outils de surveillance d'entreprise standard (EDR, AV, transfert des journaux d'événements Windows, etc.). Il est fortement recommandé de disposer d'une alerte par e-mail, d'une alerte SMS, et de nombreux autres si possible, afin de garantir que les incidents impliquant cette machine soient triés le plus rapidement possible, car c'est la situation la plus susceptible qu'un véritable adversaire interagisse avec le poste de travail en question.
Merci à Microsoft pour avoir fourni le code modèle de service et pour l'excellente documentation de l'API Windows.