
Audite les partages SMB d'Active Directory pour inventorier, analyser et signaler les privilèges excessifs. Découvre les systèmes accessibles, énumère les ACL des partages, identifie les configurations à risque élevé et génère des rapports HTML/CSV pour la priorisation des corrections.
PowerHuntShares est un outil PowerShell conçu pour aider les équipes de cybersécurité et les testeurs d'intrusion à mieux identifier, comprendre, attaquer et corriger les partages SMB dans les environnements Active Directory qu'ils protègent. Chaque hacker a une histoire d'abus de partages SMB, mais il s'agit d'une surface d'attaque que les équipes de cybersécurité ont encore du mal à défendre. Ce projet vise à fournir un outil de preuve de concept open source pour créer un inventaire complet des partages, en exploitant des statistiques, des graphiques, des diagrammes et des modèles de langage pour contextualiser les partages, résumer les relations, évaluer les risques et prioriser les corrections.
Il prend en charge les fonctionnalités suivantes :
Fonctionnalités bonus :
Ressources PowerHuntShares v2 :
Ressources PowerHuntShares v1 :
PowerHuntShares inventorie les ACL de partages SMB configurées avec des « privilèges excessifs » et met en évidence les ACL « à haut risque ». Voici comment ceux-ci sont définis dans ce contexte.
Privilèges excessifs
Les permissions de lecture et d'écriture excessives sur les partages ont été définies comme toute ACL de partage réseau contenant une ACE (Access Control Entry) explicite pour les groupes « Everyone », « Authenticated Users », « BUILTIN\Users », « Domain Users » ou « Domain Computers ». Tous ces groupes donnent accès aux partages concernés aux utilisateurs du domaine en raison de problèmes d'héritage de privilèges. Notez qu'il existe un paramètre permettant aux opérateurs d'ajouter leurs propres groupes cibles.
Voici quelques informations complémentaires :
Veuillez noter : Les permissions de partage peuvent être supplantées par les permissions NTFS. De plus, sachez que les noms de partage exclus lors des tests contiennent les mots-clés suivants :
print$, prnproc$, printer, netlogon, et sysvol
Partages à haut risque
Dans le contexte de ce rapport, les partages à haut risque ont été définis comme des partages qui fournissent un accès à distance non autorisé à un système ou une application.
Par défaut, cela inclut les partages
wwwroot, inetpub, c$, et admin$Cependant, d'autres expositions peuvent exister sans être spécifiquement signalées.
Voici une liste de commandes qui peuvent être utilisées pour charger PowerHuntShares dans votre session PowerShell actuelle. Veuillez noter que l'une d'elles devra être exécutée chaque fois que vous exécutez PowerShell. Elle n'est pas persistante.
# Contourner les restrictions de la stratégie d'exécution
Set-ExecutionPolicy -Scope Process Bypass
# Importer le module qui se trouve dans le répertoire courant
Import-Module .\PowerHuntShares.psm1
ou
# Réduire le niveau de fonctionnement SSL pour prendre en charge la connexion à github
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}
[Net.ServicePointManager]::SecurityProtocol =[Net.SecurityProtocolType]::Tls12
# Télécharger et charger PowerHuntShares.psm1 en mémoire
IEX(New-Object System.Net.WebClient).DownloadString("https://raw.githubusercontent.com/NetSPI/PowerHuntShares/main/PowerHuntShares.psm1")
Remarque importante : Toutes les commandes doivent être exécutées en tant qu'utilisateur de domaine non privilégié.
.EXEMPLE 1 : Exécution à partir d'un ordinateur du domaine. Effectue la découverte d'ordinateurs Active Directory par défaut.
PS C:\temp\test> Invoke-HuntSMBShares -Threads 100 -OutputDirectory c:\temp\test
.EXEMPLE 2 : Exécution à partir d'un ordinateur du domaine avec des identifiants de domaine alternatifs. Effectue la découverte d'ordinateurs Active Directory par défaut.
PS C:\temp\test> Invoke-HuntSMBShares -Threads 100 -OutputDirectory c:\temp\test -Credential domain\user
.EXEMPLE 3 : Exécution à partir d'un ordinateur du domaine en tant qu'utilisateur actuel. Cibler les hôtes dans un fichier. Un par ligne.
PS C:\temp\test> Invoke-HuntSMBShares -Threads 100 -OutputDirectory c:\temp\test -HostFile c:\temp\hosts.txt
.EXEMPLE 4 : Exécution à partir d'un ordinateur hors domaine avec identification. Effectue la découverte d'ordinateurs Active Directory par défaut.
C:\temp\test> runas /netonly /user:domain\user PowerShell.exe
PS C:\temp\test> Import-Module PowerHuntShares.psm1
PS C:\temp\test> Invoke-HuntSMBShares -Threads 100 -RunSpaceTimeout 10 -OutputDirectory c:\folder\ -DomainController 10.1.1.1 -Credential domain\user
=============================================================== PowerHuntShares =============================================================== Cette fonction automatise les tâches suivantes : o Déterminer le domaine de l'ordinateur actuel o Énumérer les ordinateurs du domaine o Filtrer les ordinateurs qui répondent aux requêtes ping o Filtrer les ordinateurs qui ont le port TCP 445 ouvert et accessible o Énumérer les partages SMB o Énumérer les permissions des partages SMB o Identifier les partages avec des privilèges potentiellement excessifs o Identifier les partages qui fournissent un accès en lecture et en écriture o Identifier les partages à haut risque o Identifier les propriétaires, noms et listes de répertoires courants des partages o Générer des chronologies de création, dernière écriture et dernier accès o Générer un rapport sommaire HTML et des fichiers CSV détaillés