
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$
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 Remarque : Cela peut prendre des heures dans les grands environnements. --------------------------------------------------------------- ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| --------------------------------------------------------------- DÉCOUVERTE DES PARTAGES --------------------------------------------------------------- [*][03/01/2021 09:35] Début de l'analyse [*][03/01/2021 09:35] Répertoire de sortie : c:\temp\smbshares\SmbShareHunt-03012021093504 [*][03/01/2021 09:35] Connexion réussie au contrôleur de domaine : dc1.demo.local [*][03/01/2021 09:35] Exécution d'une requête LDAP pour les ordinateurs associés au domaine demo.local [*][03/01/2021 09:35] - 245 ordinateurs trouvés [*][03/01/2021 09:35] Ping de 245 ordinateurs [*][03/01/2021 09:35] - 55 ordinateurs ont répondu aux requêtes ping. [*][03/01/2021 09:35] Vérification si le port TCP 445 est ouvert sur 55 ordinateurs [*][03/01/2021 09:36] - 49 ordinateurs ont le port TCP 445 ouvert. [*][03/01/2021 09:36] Obtention de la liste des partages SMB à partir de 49 ordinateurs [*][03/01/2021 09:36] - 217 partages SMB ont été trouvés. [*][03/01/2021 09:36] Obtention des permissions de partage à partir de 217 partages SMB [*][03/01/2021 09:37] - 374 permissions de partage ont été énumérées. [*][03/01/2021 09:37] Obtention des listes de répertoires à partir de 33 partages SMB [*][03/01/2021 09:37] - Ciblage jusqu'à 3 niveaux de répertoire imbriqués [*][03/01/2021 09:37] - 563 fichiers et dossiers ont été énumérés. [*][03/01/2021 09:37] Identification des permissions de partage potentiellement excessives [*][03/01/2021 09:37] - 33 privilèges potentiellement excessifs ont été trouvés sur 12 systèmes.. [*][03/01/2021 09:37] Analyse terminée --------------------------------------------------------------- ANALYSE DES PARTAGES --------------------------------------------------------------- [*][03/01/2021 09:37] Début de l'analyse [*][03/01/2021 09:37] - 14 partages peuvent être lus sur 12 systèmes. [*][03/01/2021 09:37] - 1 partage peut être écrit sur 1 système. [*][03/01/2021 09:37] - 46 partages sont considérés comme non par défaut sur 32 systèmes. [*][03/01/2021 09:37] - 0 partage est considéré à haut risque sur 0 système [*][03/01/2021 09:37] - Identification des 5 principaux propriétaires de partages excessifs. [*][03/01/2021 09:37] - Identification des 5 principaux groupes de partages. [*][03/01/2021 09:37] - Identification des 5 principaux noms de partages. [*][03/01/2021 09:37] - Identification des partages créés au cours des 90 derniers jours. [*][03/01/2021 09:37] - Identification des partages accédés au cours des 90 derniers jours. [*][03/01/2021 09:37] - Identification des partages modifiés au cours des 90 derniers jours. [*][03/01/2021 09:37] Analyse terminée --------------------------------------------------------------- RÉSUMÉ DU RAPPORT SUR LES PARTAGES --------------------------------------------------------------- [*][03/01/2021 09:37] Domaine : demo.local [*][03/01/2021 09:37] Heure de début : 03/01/2021 09:35:04 [*][03/01/2021 09:37] Heure de fin : 03/01/2021 09:37:27 [*][03/01/2021 09:37] Durée d'exécution : 00:02:23.2759086 [*][03/01/2021 09:37] [*][03/01/2021 09:37] RÉSUMÉ DES ORDINATEURS [*][03/01/2021 09:37] - 245 ordinateurs du domaine trouvés. [*][03/01/2021 09:37] - 55 (22.45%) ordinateurs du domaine ont répondu au ping. [*][03/01/2021 09:37] - 49 (20.00%) ordinateurs du domaine avaient le port TCP 445 accessible. [*][03/01/2021 09:37] - 32 (13.06%) ordinateurs du domaine avaient des partages non par défaut. [*][03/01/2021 09:37] - 12 (4.90%) ordinateurs du domaine avaient des partages avec des privilèges potentiellement excessifs. [*][03/01/2021 09:37] - 12 (4.90%) ordinateurs du domaine avaient des partages permettant un accès EN LECTURE. [*][03/01/2021 09:37] - 1 (0.41%) ordinateur du domaine avait des partages permettant un accès EN ÉCRITURE. [*][03/01/2021 09:37] - 0 (0.00%) ordinateur du domaine avait des partages considérés COMME À HAUT RISQUE. [*][03/01/2021 09:37] [*][03/01/2021 09:37] RÉSUMÉ DES PARTAGES [*][03/01/2021 09:37] - 217 partages trouvés. Nous attendons un minimum de 98 partages [*][03/01/2021 09:37] car 49 systèmes avaient des ports ouverts et il y a généralement deux partages par défaut. [*][03/01/2021 09:37] - 46 (21.20%) partages sur 32 systèmes étaient non par défaut. [*][03/01/2021 09:37] - 14 (6.45%) partages sur 12 systèmes sont configurés avec 33 ACL potentiellement excessives. [*][03/01/2021 09:37] - 14 (6.45%) partages sur 12 systèmes permettaient un accès EN LECTURE. [*][03/01/2021 09:37] - 1 (0.46%) partage sur 1 système permettait un accès EN ÉCRITURE. [*][03/01/2021 09:37] - 0 (0.00%) partage sur 0 système est considéré COMME À HAUT RISQUE. [*][03/01/2021 09:37] [*][03/01/2021 09:37] RÉSUMÉ DES ACL DE PARTAGE [*][03/01/2021 09:37] - 374 ACL trouvées. [*][03/01/2021 09:37] - 374 (100.00%) ACL étaient associées à des partages non par défaut. [*][03/01/2021 09:37] - 33 (8.82%) ACL se sont avérées potentiellement excessives. [*][03/01/2021 09:37] - 32 (8.56%) ACL se sont avérées permettant un accès EN LECTURE. [*][03/01/2021 09:37] - 1 (0.27%) ACL s'est avérée permettre un accès EN ÉCRITURE. [*][03/01/2021 09:37] - 0 (0.00%) ACL se sont avérées associées à des noms de partage À HAUT RISQUE. [*][03/01/2021 09:37] [*][03/01/2021 09:37] - Les 5 noms de partage les plus courants sont : [*][03/01/2021 09:37] - 9 des 14 (64.29%) partages découverts sont associés aux 5 premiers noms de partage. [*][03/01/2021 09:37] - 4 backup [*][03/01/2021 09:37] - 2 ssms [*][03/01/2021 09:37] - 1 test2 [*][03/01/2021 09:37] - 1 test1 [*][03/01/2021 09:37] - 1 users [*] -----------------------------------------------




Auteur
Scott Sutherland (@_nullbind)
Code open source utilisé
Ces personnes ont écrit du code open source qui a été utilisé dans le cadre de ce projet. Un grand merci à elles et à leur travail !
| Nom | Site |
|---|---|
| Will Schroeder (@harmj0y) | https://github.com/PowerShellMafia/PowerSploit/blob/master/Recon/PowerView.ps1 |
Licence
BSD 3-Clause
Correctifs/bogues en attente
Fonctionnalités en attente
Voici une présentation visuelle du fonctionnement de PowerHuntShares, des données qu'il extrait et de la manière dont il présente des résultats exploitables.
Fournit une vue d'ensemble des partages découverts et des risques associés.

Rapports générés automatiquement pour une analyse facile et une révision hors ligne.

Cartographie détaillée des noms de partages et de leurs propriétés.

Étapes de correction suggérées pour remédier aux risques identifiés.

Visualisation des problèmes découverts dans le temps.

Compare les partages et permissions découverts entre différents systèmes.

Regroupe les dossiers et partages connexes pour un meilleur contexte.

Montre l'exposition des actifs en fonction des empreintes découvertes.

Représentation visuelle des partages découverts et de leurs relations.

Met en évidence les informations sensibles et les secrets découverts lors de l'analyse.

Liste les fichiers potentiellement intéressants ou de grande valeur trouvés dans les partages.

Met en évidence les zones où des données sensibles peuvent être exposées.

Vues complètes de l'exposition aux risques avec une analyse détaillée.

| Warren F (@pscookiemonster) | https://github.com/RamblingCookieMonster/Invoke-Parallel |
| Luben Kirov | http://www.gi-architects.co.uk/2016/02/powershell-check-if-ip-or-subnet-matchesfits/ |