
Überprüft Active Directory SMB-Freigaben, um übermäßige Berechtigungen zu inventarisieren, zu analysieren und zu melden. Entdeckt zugängliche Systeme, listet Freigabe-ACLs auf, identifiziert risikoreiche Konfigurationen und erstellt HTML/CSV-Berichte zur Priorisierung von Abhilfemaßnahmen.
PowerHuntShares ist ein PowerShell-Tool, das entwickelt wurde, um Cybersicherheitsteams und Penetrationstestern dabei zu helfen, SMB-Freigaben in den Active Directory-Umgebungen, die sie schützen, besser zu identifizieren, zu verstehen, anzugreifen und zu beheben. Jeder Hacker hat eine Geschichte über den Missbrauch von SMB-Freigaben, aber es ist eine Angriffsfläche, die Cybersicherheitsteams immer noch nur schwer verteidigen können. Dieses Projekt zielt darauf ab, ein offenes Proof-of-Concept-Tool zur Erstellung eines umfassenden Freigabeinventars bereitzustellen, das Statistiken, Diagramme, Grafiken und Sprachmodelle nutzt, um Freigaben zu kontextualisieren, Beziehungen zusammenzufassen, Risiken zu bewerten und die Behebung zu priorisieren.
Es unterstützt Funktionen zur:
Bonusfunktionen:
PowerHuntShares v2 Ressourcen:
PowerHuntShares v1 Ressourcen:
PowerHuntShares inventarisiert SMB-Freigabe-ACLs, die mit „übermäßigen Berechtigungen“ konfiguriert sind, und hebt „hochriskante“ ACLs hervor. Im Folgenden ist definiert, was in diesem Zusammenhang darunter verstanden wird.
Übermäßige Berechtigungen
Übermäßige Lese- und Schreibfreigabeberechtigungen wurden als jede Netzwerkfreigabe-ACL definiert, die einen expliziten ACE (Access Control Entry) für die Gruppen „Everyone“, „Authenticated Users“, „BUILTIN\Users“, „Domain Users“ oder „Domain Computers“ enthält. Alle ermöglichen Domänenbenutzern aufgrund von Vererbungsproblemen Zugriff auf die betroffenen Freigaben. Beachten Sie, dass es einen Parameter gibt, der es Operatoren erlaubt, eigene Zielgruppen hinzuzufügen.
Im Folgenden finden Sie einige zusätzliche Hintergrundinformationen:
Bitte beachten Sie: Freigabeberechtigungen können durch NTFS-Berechtigungen außer Kraft gesetzt werden. Beachten Sie auch, dass beim Testen Freigabenamen ausgeschlossen wurden, die die folgenden Schlüsselwörter enthalten:
print$, prnproc$, printer, netlogon,and sysvol
Hochriskante Freigaben
Im Kontext dieses Berichts wurden hochriskante Freigaben als Freigaben definiert, die unbefugten Remote-Zugriff auf ein System oder eine Anwendung ermöglichen.
Standardmäßig umfasst dies die Freigaben
wwwroot, inetpub, c$, und admin$Es können jedoch weitere Gefährdungen bestehen, die darüber hinaus nicht erwähnt werden.
Nachfolgend finden Sie eine Liste von Befehlen, die verwendet werden können, um PowerHuntShares in Ihre aktuelle PowerShell-Sitzung zu laden. Bitte beachten Sie, dass einer dieser Befehle jedes Mal ausgeführt werden muss, wenn PowerShell gestartet wird. Es ist nicht dauerhaft.
# Bypass execution policy restrictions
Set-ExecutionPolicy -Scope Process Bypass
# Import module that exists in the current directory
Import-Module .\PowerHuntShares.psm1
or
# Reduce SSL operating level to support connection to github
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}
[Net.ServicePointManager]::SecurityProtocol =[Net.SecurityProtocolType]::Tls12
# Download and load PowerHuntShares.psm1 into memory
IEX(New-Object System.Net.WebClient).DownloadString("https://raw.githubusercontent.com/NetSPI/PowerHuntShares/main/PowerHuntShares.psm1")
Wichtiger Hinweis: Alle Befehle sollten als unprivilegierter Domänenbenutzer ausgeführt werden.
.EXAMPLE 1: Run from a domain computer. Performs Active Directory computer discovery by default.
PS C:\temp\test> Invoke-HuntSMBShares -Threads 100 -OutputDirectory c:\temp\test
.EXAMPLE 2: Run from a domain computer with alternative domain credentials. Performs Active Directory computer discovery by default.
PS C:\temp\test> Invoke-HuntSMBShares -Threads 100 -OutputDirectory c:\temp\test -Credential domain\user
.EXAMPLE 3: Run from a domain computer as current user. Target hosts in a file. One per line.
PS C:\temp\test> Invoke-HuntSMBShares -Threads 100 -OutputDirectory c:\temp\test -HostFile c:\temp\hosts.txt
.EXAMPLE 4: Run from a non-domain computer with credential. Performs Active Directory computer discovery by default.
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 =============================================================== This function automates the following tasks: o Determine current computer's domain o Enumerate domain computers o Filter for computers that respond to ping requests o Filter for computers that have TCP 445 open and accessible o Enumerate SMB shares o Enumerate SMB share permissions o Identify shares with potentially excessive privileges o Identify shares that provide read & write access o Identify shares that are high risk o Identify common share owners, names, & directory listings o Generate creation, last written, & last accessed timelines o Generate html summary report and detailed csv files