SharpHound - Reescrita em C# do Ingestor do BloodHound
Obter o SharpHound
A versão mais recente do SharpHound estará sempre no repositório do BloodHound aqui
Instruções de Compilação
O Sharphound é escrito usando recursos do C# 7.0. Para compilar este projeto facilmente, use o Visual Studio 2017.
Se você quiser compilar em versões anteriores do Visual Studio, você pode instalar o pacote nuget Microsoft.Net.Compilers.
A compilação do projeto gerará um executável, bem como um script PowerShell que encapsula o executável. Todas as dependências são incorporadas ao binário.
Requisitos
O Sharphound é projetado para o .Net 3.5. O Sharphound deve ser executado no contexto de um usuário de domínio, diretamente por meio de um logon ou por outro método, como RUNAS.
Uso
Opções de Enumeração
- CollectionMethod - O método de coleta a ser usado. Este parâmetro aceita uma lista de valores separados por vírgula. Tem os seguintes valores possíveis (Padrão: Default):
- Default - Executa a coleta de associação a grupos, coleta de confianças de domínio, coleta de administradores locais e coleta de sessões
- Group - Executa a coleta de associação a grupos
- LocalAdmin - Executa a coleta de administradores locais
- RDP - Executa a coleta de Usuários da Área de Trabalho Remota
- DCOM - Executa a coleta de Usuários de COM Distribuído
- GPOLocalGroup - Executa a coleta de administradores locais usando Objetos de Política de Grupo
- Session - Executa a coleta de sessões
- ComputerOnly - Executa a coleta de administradores locais, RDP, DCOM e sessões
- LoggedOn - Executa a coleta de sessões privilegiadas (requer direitos de administrador nos sistemas de destino)
- Trusts - Executa a enumeração de confianças de domínio
- ACL - Executa a coleta de ACLs
- Container - Executa a coleta de Contêineres
- DcOnly - Executa a coleta usando apenas LDAP. Inclui Group, Trusts, ACL, ObjectProps, Container e GPOLocalGroup.
- All - Executa todos os Métodos de Coleta, exceto GPOLocalGroup e LoggedOn
- SearchForest - Pesquisar todos os domínios na floresta em vez de apenas o seu domínio atual
- Domain - Pesquisar um domínio específico. Usa seu domínio atual se for nulo (Padrão: null)
- Stealth - Executa métodos de coleta stealth. Todas as opções stealth são de thread única.
- SkipGCDeconfliction - Ignorar a resolução de conflitos do Catálogo Global durante a enumeração de sessões. Isso pode acelerar a enumeração, mas resultará em possíveis imprecisões nos dados.
- ExcludeDc - Exclui controladores de domínio da enumeração (evita os alertas do Microsoft ATA :) )
- ComputerFile - Especificar um arquivo de onde carregar nomes/IPs de computadores
- OU - Especificar qual OU enumerar
Opções de Conexão
- DomainController - Especificar a qual Controlador de Domínio conectar (Padrão: null)
- LdapPort - Especificar em qual porta o LDAP opera (Padrão: 0)
- SecureLdap - Conectar ao AD usando LDAP Seguro em vez de LDAP comum. Conectará à porta 636 por padrão.
- IgnoreLdapCert - Ignora o certificado SSL do LDAP. Use se houver, por exemplo, um certificado autoassinado
- LDAPUser - Nome de usuário para se conectar ao LDAP. Também requer o parâmetro LDAPPassword (Padrão: null)
- LDAPPass - Senha do usuário para se conectar ao LDAP. Também requer o parâmetro LDAPUser (Padrão: null)
- DisableKerbSigning - Desabilita a criptografia LDAP. Não recomendado.
Opções de Desempenho
- Threads - Especificar o número de threads a usar (Padrão: 10)
- PingTimeout - Especifica o tempo limite (timeout) para requisições de ping em milissegundos (Padrão: 250)
- SkipPing - Instrui o SharpHound a ignorar requisições de ping para verificar se os sistemas estão ativos
- LoopDelay - O número de segundos entre os loops de sessão (Padrão: 300)
- MaxLoopTime - A quantidade de tempo para continuar o loop de sessões. O formato é 0d0h0m0s. Null fará um loop por duas horas. (Padrão: 2h)
- Throttle - Adiciona um atraso após cada requisição a um computador. O valor é em milissegundos (Padrão: 0)
- Jitter - Adiciona uma variação percentual (jitter) ao throttle. (Padrão: 0)
Opções de Saída
- JSONFolder - Pasta onde armazenar os arquivos JSON (Padrão: .)
- JSONPrefix - Prefixo a ser adicionado aos seus arquivos JSON (Padrão: "")
- NoZip - Não comprimir os arquivos JSON em arquivo zip. Deixa os arquivos JSON no disco. (Padrão: false)
- EncryptZip - Adicionar uma senha gerada aleatoriamente ao arquivo zip.
- ZipFileName - Especificar o nome do arquivo zip
- RandomFilenames - Randomizar os nomes dos arquivos de saída
- PrettyJson - Gera JSON com indentação em várias linhas para melhorar a legibilidade. A desvantagem é o aumento do tamanho do arquivo.
Opções de Cache
- CacheFile - Nome do arquivo do cache do SharpHound. (Padrão: .bin)
- NoSaveCache - Não salvar o arquivo de cache no disco. Sem esta flag, .bin será gravado no disco
- Invalidate - Invalidar o arquivo de cache e criar um novo cache
Opções Diversas
- StatusInterval - Intervalo para exibir o progresso durante a enumeração em milissegundos (Padrão: 30000)
- Verbose - Ativa a saída detalhada (verbose)