SharpHound - Reescrita em C# do Ingestor do BloodHound
Obter SharpHound
A versão mais recente do SharpHound estará sempre no repositório do BloodHound aqui
Instruções de Compilação
SharpHound é escrito usando funcionalidades do C# 9.0. Para compilar este projeto facilmente, use o Visual Studio 2019.
Se quiser compilar em versões anteriores do Visual Studio, pode instalar o pacote nuget Microsoft.Net.Compilers.
Ao compilar o projeto, será gerado um executável bem como um script PowerShell que encapsula o executável. Todas as dependências são incorporadas no binário.
Requisitos
SharpHound é direcionado ao .Net 4.5. O SharpHound deve ser executado no contexto de um utilizador de domínio, seja diretamente através de um logon ou por outro método como o RUNAS.
Uso
Opções de Enumeração
- CollectionMethod - O método de coleta a usar. Este parâmetro aceita uma lista separada por vírgulas de valores. Tem os seguintes valores potenciais (Padrão: Default):
- Default - Realiza coleta de associação a grupos, coleta de confiança de domínio, coleta de grupos locais, coleta de sessões, coleta de ACLs, coleta de propriedades de objetos e coleta de alvos SPN
- Group - Realiza coleta de associação a grupos
- LocalAdmin - Realiza coleta de administradores locais
- RDP - Realiza coleta de Utilizadores de Ambiente de Trabalho Remoto
- DCOM - Realiza coleta de Utilizadores COM Distribuídos
- PSRemote - Realiza coleta de Utilizadores de Gestão Remota
- GPOLocalGroup - Realiza coleta de administradores locais usando Objetos de Política de Grupo
- Session - Realiza coleta de sessões
- ComputerOnly - Realiza coleta de administradores locais, RDP, DCOM e sessões
- LoggedOn - Realiza coleta privilegiada de sessões (requer direitos de administrador nos sistemas alvo)
- Trusts - Realiza enumeração de confianças de domínio
- ACL - Realiza coleta de ACLs
- Container - Realiza coleta de Contentores
- DcOnly - Realiza coleta usando apenas LDAP. Inclui Group, Trusts, ACL, ObjectProps, Container e GPOLocalGroup.
- ObjectProps - Realiza coleta de Propriedades de Objetos para propriedades como LastLogon ou PwdLastSet
- All - Realiza todos os Métodos de Coleta exceto GPOLocalGroup
- Domain - Pesquisa um domínio específico. Usa o seu domínio atual se for nulo (Padrão: null)
- Stealth - Realiza métodos de coleta furtiva. Todas as opções furtivas são single-threaded.
- ExcludeDomainControllers - Exclui controladores de domínio da enumeração (evita flags do Microsoft ATA :) )
- ComputerFile - Especifica um ficheiro para carregar nomes/IPs de computadores
- LdapFilter - Filtro LDAP a anexar à pesquisa
- OverrideUserName - Substitui o nome de utilizador para enumeração de sessões (avançado)
- RealDNSName - Substitui o nome DNS para chamadas de API
- CollectAllProperties - Coleta todas as propriedades LDAP de string em vez de um subconjunto
Opções de Ciclo
- Loop - Ciclar coletas de computadores
- LoopDuration - Duração do ciclo
- LoopInterval - Intervalo de espera entre ciclos
Opções de Conexão
- DomainController - Especifica qual Controlador de Domínio conectar (Padrão: null)
- LdapPort - Especifica em que porta o LDAP opera (Padrão: 0)
- SecureLdap - Conecta ao AD usando LDAP Seguro em vez de LDAP normal. Irá conectar à porta 636 por padrão.
- LdapUsername - Nome de utilizador para conectar ao LDAP. Requer também o parâmetro LDAPPassword (Padrão: null)
- LdapPassword - Senha para o utilizador conectar ao LDAP. Requer também o parâmetro LDAPUser (Padrão: null)
- DisableKerberosSigning - Desativa a encriptação LDAP. Não recomendado.
Opções de Desempenho
- PortScanTimeout - Especifica o tempo limite para pedidos ping em milissegundos (Padrão: 2000)
- SkipPortScan - Instrui Sharphound a ignorar pedidos ping para verificar se os sistemas estão ativos
- Throttle - Adiciona um atraso após cada pedido a um computador. Valor em milissegundos (Padrão: 0)
- Jitter - Adiciona uma percentagem de jitter ao throttle. (Padrão: 0)
Opções de Saída
- OutputDirectory - Pasta onde armazenar ficheiros JSON (Padrão: .)
- OutputPrefix - Prefixo a adicionar aos seus ficheiros JSON (Padrão: "")
- NoZip - Não comprime ficheiros JSON para o ficheiro zip. Deixa ficheiros JSON no disco. (Padrão: false)
- EncryptZip - Adiciona uma senha gerada aleatoriamente ao ficheiro zip.
- ZipFileName - Especifica o nome do ficheiro zip
- RandomizeFilenames - Randomiza nomes de ficheiros de saída
- PrettyJson - Produz JSON com indentação em várias linhas para melhor legibilidade. Contrapartida é o aumento do tamanho do ficheiro.
- DumpComputerStatus - Despeja códigos de erro da conexão a computadores
Opções de Cache
- CacheFileName - Nome do ficheiro para a cache do Sharphound. (Padrão: .bin)
- NoSaveCache - Não guarda o ficheiro de cache no disco. Sem esta flag, .bin será descarregado para o disco
- InvalidateCache - Invalida o ficheiro de cache e constrói uma nova cache
Opções Diversas
- StatusInterval - Intervalo para mostrar progresso durante a enumeração em milissegundos (Padrão: 30000)