
Audita compartilhamentos SMB do Active Directory para inventariar, analisar e relatar privilégios excessivos. Descobre sistemas acessíveis, enumera ACLs de compartilhamentos, identifica configurações de alto risco e gera relatórios HTML/CSV para priorização de remediação.
PowerHuntShares é uma ferramenta PowerShell projetada para ajudar equipes de cibersegurança e testadores de penetração a melhor identificar, entender, atacar e remediar compartilhamentos SMB em ambientes Active Directory que protegem. Todo hacker tem uma história sobre abusar de compartilhamentos SMB, mas é uma superfície de ataque que as equipes de cibersegurança ainda lutam para defender. Este projeto visa fornecer uma ferramenta de prova de conceito aberta para criar um inventário abrangente de compartilhamentos, usando estatísticas, gráficos, diagramas e modelos de linguagem para contextualizar compartilhamentos, resumir relacionamentos, avaliar riscos e priorizar remediação.
Suporta funcionalidades para:
Recursos Bônus:
Recursos do PowerHuntShares v2:
Recursos do PowerHuntShares v1:
PowerHuntShares inventariará ACLs de compartilhamento SMB configuradas com "privilégios excessivos" e destacará ACLs de "alto risco". Abaixo está como elas são definidas neste contexto.
Privilégios Excessivos
Permissões de leitura e gravação excessivas em compartilhamentos foram definidas como qualquer ACL de compartilhamento de rede contendo uma ACE (Entrada de Controle de Acesso) explícita para os grupos "Everyone", "Authenticated Users", "BUILTIN\Users", "Domain Users" ou "Domain Computers". Todos fornecem acesso a usuários do domínio aos compartilhamentos afetados devido a problemas de herança de privilégios. Note que existe um parâmetro que permite aos operadores adicionar seus próprios grupos alvo.
Abaixo está algum contexto adicional:
Por favor, observe: As permissões de compartilhamento podem ser anuladas pelas permissões NTFS. Além disso, esteja ciente de que os testes excluíram nomes de compartilhamento contendo as seguintes palavras-chave:
print$, prnproc$, printer, netlogon, and sysvol
Compartilhamentos de Alto Risco
No contexto deste relatório, compartilhamentos de alto risco foram definidos como compartilhamentos que fornecem acesso remoto não autorizado a um sistema ou aplicativo.
Por padrão, isso inclui os compartilhamentos
wwwroot, inetpub, c$, e admin$No entanto, podem existir exposições adicionais que não são destacadas além disso.
Abaixo está uma lista de comandos que podem ser usados para carregar o PowerHuntShares na sua sessão atual do PowerShell. Observe que um deles terá que ser executado toda vez que o PowerShell for executado. Não é persistente.
# Bypass restrições de política de execução
Set-ExecutionPolicy -Scope Process Bypass
# Importar módulo que existe no diretório atual
Import-Module .\PowerHuntShares.psm1
ou
# Reduzir nível de operação SSL para suportar conexão com github
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}
[Net.ServicePointManager]::SecurityProtocol =[Net.SecurityProtocolType]::Tls12
# Baixar e carregar PowerHuntShares.psm1 na memória
IEX(New-Object System.Net.WebClient).DownloadString("https://raw.githubusercontent.com/NetSPI/PowerHuntShares/main/PowerHuntShares.psm1")
Nota Importante: Todos os comandos devem ser executados como um usuário de domínio não privilegiado.
.EXEMPLO 1: Executar a partir de um computador do domínio. Realiza descoberta de computadores Active Directory por padrão.
PS C:\temp\test> Invoke-HuntSMBShares -Threads 100 -OutputDirectory c:\temp\test
.EXEMPLO 2: Executar a partir de um computador do domínio com credenciais alternativas do domínio. Realiza descoberta de computadores Active Directory por padrão.
PS C:\temp\test> Invoke-HuntSMBShares -Threads 100 -OutputDirectory c:\temp\test -Credential dominio\usuario
.EXEMPLO 3: Executar a partir de um computador do domínio como usuário atual. Segmentar hosts em um arquivo. Um por linha.
PS C:\temp\test> Invoke-HuntSMBShares -Threads 100 -OutputDirectory c:\temp\test -HostFile c:\temp\hosts.txt
.EXEMPLO 4: Executar a partir de um computador não pertencente ao domínio com credencial. Realiza descoberta de computadores Active Directory por padrão.
C:\temp\test> runas /netonly /user:dominio\usuario PowerShell.exe
PS C:\temp\test> Import-Module PowerHuntShares.psm1
PS C:\temp\test> Invoke-HuntSMBShares -Threads 100 -RunSpaceTimeout 10 -OutputDirectory c:\pasta\ -DomainController 10.1.1.1 -Credential dominio\usuario
=============================================================== PowerHuntShares =============================================================== Esta função automatiza as seguintes tarefas: o Determinar o domínio do computador atual o Enumerar computadores do domínio o Filtrar computadores que respondem a requisições ping o Filtrar computadores que têm TCP 445 aberto e acessível o Enumerar compartilhamentos SMB o Enumerar permissões de compartilhamento SMB o Identificar compartilhamentos com potenciais privilégios excessivos o Identificar compartilhamentos que fornecem acesso de leitura e gravação o Identificar compartilhamentos que são de alto risco o Identificar proprietários comuns de compartilhamentos, nomes e listagens de diretórios o Gerar cronogramas de criação, última modificação e último acesso o Gerar relatório resumido em html e arquivos csv detalhados