Voltar às atualizações
New releaseAug 23, 2026

Kestrel v.1.1.0

Ferramenta de enumeração de segurança do Active Directory de baixa observabilidade que utiliza interfaces nativas ADSI/COM. Enumera ACLs, delegação, trusts, ADCS, alvos de Kerberoast e caminhos de ataque sem .NET ou PowerShell, produzindo saída compatível com BloodHound.

Compartilhar

Kestrel

build license language dependencies

O BloodHound mostra o caminho. O Kestrel mostra o que já está lá dentro.

Todos mapeiam a mesma coisa: o caminho de ataque - quem consegue chegar ao Domain Admin. É a pergunta certa, e as ferramentas que a respondem são excelentes. Mas um grafo de "quem alcança quem" é cego para uma classe inteira de problemas, porque algumas das piores coisas num Active Directory não são, de todo, um caminho.

São um backdoor soldado num atributo. Um certificado que continua a autenticar muito depois de a palavra-passe ser reposta. Uma permissão cunhada no próprio schema, para que todos os objetos criados daqui em diante a herdem silenciosamente. Uma conta eliminada cujo direito de a repor alguém guardou discretamente. Um objeto escondido da enumeração por um único deny-read ACE.

Nada disso é uma aresta num grafo. Tudo isso está agora mesmo no seu diretório. O Kestrel lê tudo isso - com chamadas nativas do Windows, direitos normais de utilizador de domínio, sem servidor, sem Python, sem agente, e com uma pegada no domain controller tão contida que está documentada evento a evento.

Um .exe. Um comando. Tudo abaixo.


Tem andado a olhar para o lado errado

O ecossistema ofensivo de AD - SharpHound, impacket, Certipy e o grafo por detrás deles - é soberbo, e tudo olha para a mesma superfície: a alcançabilidade. O Kestrel olha para as três dimensões que essa superfície não consegue expressar.

  • Tempo. Um grafo é um instantâneo. O Kestrel lê os metadados de replicação - quando um atributo Tier-0 mudou e qual DC o originou. Um direito DCSync concedido ontem à noite não é o mesmo achado que um que já lá está há anos, e só um deles significa que está a ser atacado agora mesmo.
  • Persistência num atributo, não numa aresta. Shadow credentials, SID history, reanimate-tombstones, backdoors de defaultSecurityDescriptor no schema, objetos ocultos, deny-ACEs de OWNER RIGHTS, chaves DKM do AD FS. As ferramentas de grafos não recolhem isto porque não há aresta para desenhar.
  • Postura defensiva, invertida. Não "quem pode atacar", mas "o que não está protegido" - a conta Tier-0 fora do seu silo, a conta de sincronização com um RID aleatório que ninguém etiquetou, a política de bloqueio que nunca limita um password spray.

Não é que o Kestrel seja mais rápido do que um grafo. Ele responde a perguntas que o grafo não consegue colocar.


Cada pecado de AD, num único exe nativo

PecadoO que o Kestrel encontraFlag(s)
Replicação e delegaçãoDireitos DCSync (quem pode replicar - sem nunca replicar), delegação não condicionada / condicionada / RBCD / S4U--acl · --delegation
Abuso de certificadosAD CS ESC1–5/9, CA rogue no store NTAuth, persistência de certificados de longa duração, ACL da chave DKM do AD FS - a pré-condição do Golden SAML--adcs · --adfs
Persistência em atributosShadow credentials, injeção de SID history, direitos de reanimação de tombstones, objetos ocultos, backdoors de defaultSecurityDescriptor no schema, adminCount órfãos--shadowcreds · --sidhistory · --acl · --schema · --adminsdholder
Credenciais em claro e crackáveiscpassword do GPP, segredos de unattend/sysprep e palavras-passe de scripts em SYSVOL, contas Kerberoastable e AS-REP-roastable, lacunas de cobertura do LAPS--gpp · --roast · --laps
Entre domínios e híbridoPrincipais de segurança estrangeiros em grupos privilegiados, contas de sincronização do Entra Connect etiquetadas como Tier-0, postura de trusts, contas de máquina criadas via MachineAccountQuota (mS-DS-CreatorSID)--groups · --trust · --machines
Postura e reconhecimentoPolítica de palavras-passe / PSO, idade do krbtgt, definições de GPO de LLMNR / NBT-NS / WDigest / NTLMv1, leitores de gMSA, computadores obsoletos, topologia de delegação--pwdpolicy · --policy · --gmsa · --stale

Mais de vinte verificações que normalmente estão espalhadas por uma dúzia de scripts e duas linguagens. Aqui são um único binário - e terminam num único veredito ordenado por gravidade.


Uma linha

Kestrel.exe --all --report audit.html

Execute tudo. Obtenha o relatório HTML completo. E, bem no fim da consola, a parte que importa:

═══ Kestrel - Prioritized Findings ═══

  CRITICAL  DCSync         CORP\svc_sql - non-default principal can replicate directory changes (DCSync)
                          → fix: remove GetChanges/GetChangesAll from the principal on the domain head (dsacls) unless it is a DC
  CRITICAL  AD FS          CN=... - read access to the DKM key (Golden SAML precondition)
                          → fix: remove non-default read ACEs on the DKM object (dsacls) and rotate the token-signing certificate
  HIGH      Persistence    CN=... - object hidden from enumeration via a broad deny-read ACE
                          → fix: inspect the hidden object and remove the broad deny-read ACE (dsacls)

  [=] 2 critical · 1 high · 0 medium · 0 low

Não é uma enxurrada de saída. Os achados que importam, ordenados, cada um com o comando para o fechar.


Um exe. Vermelho, azul, roxo.

  • Vermelho / cinzento - enumere a persistência e a delegação que o grafo não vê, exporte diretamente para BloodHound CE OpenGraph (--opengraph) para fundir com a sua coleção existente, ou faça pivot a partir de qualquer principal (--from).
  • Azul - uma lista de achados priorizada e com remediação; um --diff contra o instantâneo da semana passada para apanhar o que mudou; e uma ferramenta cuja pegada exata de deteção é publicada para que a possa colocar na whitelist e afinar os seus próprios alertas em torno dela.
  • Roxo - um único artefacto que ambos os lados leem da mesma forma. O vermelho encontra-o, o azul corrige-o, e todos apontam para o mesmo número de linha.

Detetável por conceção

O Kestrel é só de leitura. Nunca escreve no diretório, nunca replica, nunca precisa de SeSecurityPrivilege, nunca toca na cloud. Ler quem pode fazer DCSync não se parece nada, ao nível do tráfego, com fazer DCSync - sem DRSUAPI, sem assinatura de replicação 4662. Cada consulta que executa e cada evento que pode (e não pode) gerar está catalogado em FOOTPRINT.md. Um auditor que diz ao defensor exatamente como o apanhar não é uma contradição - é exatamente o objetivo.


Início rápido

Obtenha um build. Cada execução de CI verde publica um artefacto Kestrel.exe - transfira-o do separador Actions, sem necessidade de toolchain.

Ou compile-o você mesmo. Visual Studio (v143+) ou MSBuild:

git clone https://github.com/ssteelfactor-oss/Kestrel.git
cd Kestrel
msbuild Kestrel.vcxproj /p:Configuration=Release /p:Platform=x64

C puro, zero dependências de terceiros. Compile com /MT e é um único executável autocontido - coloque-o num host ligado ao domínio e execute-o como qualquer utilizador normal.

Execute-o.

Categorias