
coletar coletar coletar
reúna, reúna, reúna

Jackdaw está aqui para coletar todas as informações do seu domínio, armazená-las em um banco de dados SQL e mostrar-lhe belos gráficos de como os objetos do seu domínio interagem entre si e como um potencial invasor pode explorar essas interações. Ele também vem com um recurso útil para ajudá-lo em um projeto de cracking de senhas, armazenando/consultando/relatando hashes/senhas/usuários.
dbinitenum. Isso pode ser feito automaticamente no Windows clicando duas vezes no executável, ou digitando jackdaw.exe auto.nest para obter a interface web. Por padrão, é servida em http://127.0.0.1:5000/nest; há uma API documentada com SWAGGER em http://127.0.0.1:5000/ui.Generate graph cache apenas uma vez para obter as informações das arestas em um arquivo de cache. Pode demorar um pouco, mas na linha de comando você verá uma barra de progresso.graph view, mas não se esqueça de selecionar o número de cache correto no canto superior esquerdo.Esta seção será atualizada regularmente com base no feedback dos usuários.
Nenhum conselho aqui; embora algumas melhorias possam ser feitas no código, não há nada que um genérico possa fazer.
A geração do arquivo de cache de dados do gráfico deve ser feita uma vez para cada gráfico (e apenas uma vez), o que pode demorar um pouco usando a ferramenta sqlalchemy padrão.
O desempenho e a velocidade podem ser significativamente melhorados (mais de 50x mais rápido e 20x menos memória) se você usar o backend sqlite E colocar o utilitário de linha de comando "sqlite3" em algum lugar do PATH. Eu recomendo isso para todos os usuários.
Agora vem a grande parte de compensação. A implementação inicial do Jackdaw usava o módulo networkx como backend do gráfico, pois é completamente escrito em Python. Mas isso tinha um custo realmente significativo de memória e velocidade. Para manter o Jackdaw puramente Python, esta opção ainda existe; no entanto, usar o backend igraph é agora o padrão.
Nota: igraph é uma biblioteca C++ com bindings Python. Ela tem wheels pré-compilados para Windows e principais distribuições Linux, mas se você usar o Jackdaw em outra coisa (sistemas embarcados/celulares/navegadores web), você precisará voltar para o networkx ou sofrer com o tempo de compilação de horas.
Não há necessidade de pré-inicializar o banco de dados, será feito automaticamente.
Usando o binário distribuído, você pode apenas clicar duas vezes em jackdaw.exe
Usando como script Python: jackdaw auto
jackdaw --sql sqlite:///<caminho completo aqui>/test.db dbinit
EM SISTEMAS LINUX, <caminho completo aqui> inclui a primeira /, então você terá //// quatro (4) traços antes do nome do arquivo. Não se assuste.
jackdaw --sql sqlite:///test.db enum 'ldap+sspi-ntlm://<dominio>\<placeholder>@10.10.10.2' 'smb+sspi-ntlm://<dominio>\<placeholder>@10.10.10.2'
A senha é Passw0rd!
jackdaw --sql sqlite:///test.db enum 'ldap+ntlm-password://TEST\victim:[email protected]' 'smb+ntlm-password://TEST\victim:[email protected]'
A senha é Passw0rd!
jackdaw --sql sqlite:///test.db ldap 'ldap+ntlm-password://TEST\victim:[email protected]'
jackdaw --sql sqlite:///<CAMINHO COMPLETO PARA O DB> nest
Abra http://127.0.0.1:5000/ui para a API
Por favor, veja a seção Construindo a UI mais abaixo para aprender como construir a UI. Depois de construída:
Abra http://127.0.0.1:5000/nest para a interface de gráfico (mostra o gráfico, mas longe de estar funcional)
A fase de enumeração LDAP adquire dados sobre informações de AD, objetos de Usuário, Máquina, OU, Grupo, que serão representados como um nó no gráfico e como uma tabela separada no BD. Além disso, o Descritor de Segurança de todos os objetos mencionados será analisado e as ACLs para o DACL serão adicionadas ao BD. Isso, juntamente com as informações de associação, será representado como arestas no gráfico. Além disso, consultas SQL personalizadas podem ser realizadas em qualquer um dos tipos de dados mencionados quando necessário.
A fase de enumeração SMB adquire dados sobre compartilhamentos, grupos locais, sessões, dados NTLM conectando-se a cada máquina no domínio (que é adquirido via LDAP)
O módulo Kerberos faz kerberoasting e aspreproasting automáticos
O framework permite que os usuários enviem dumps de memória do LSASS para armazenar credenciais e estender a tabela de informações de sessão. Ambos serão usados como arestas adicionais no gráfico (senha compartilhada e sessão, respectivamente). O framework também usa essas informações para criar um relatório de senhas sobre credenciais fracas/compartilhadas/quebradas.
O framework permite que os usuários enviem arquivos DCSYNC do impacket para armazenar credenciais. Isso será usado como arestas adicionais no gráfico (senha compartilhada). O framework também usa essas informações para criar um relatório de senhas sobre credenciais fracas/compartilhadas/quebradas.
O framework permite estender manualmente o BD disponível em todos os aspectos. Exemplo: quando informações de sessão de usuário em um determinado computador são descobertas (fora da enumeração automática), há a possibilidade de enviar manualmente essas sessões, o que preencherá o BD e também o gráfico de resultado.
O framework pode gerar um gráfico usando as informações disponíveis no banco de dados e plotá-lo através da interface web (nest). Além disso, a geração do gráfico e os cálculos de caminho podem ser invocados programaticamente, seja usando a API web (endpoint /ui) ou as funções do objeto gráfico.
O framework pode identificar configurações incorretas comuns de AD sem geração de gráfico. Atualmente apenas através da API web.
A detecção de anomalias de usuário envolve a detecção de permissões UAC inseguras e valores extensivos de descrição do usuário. Espera-se que este conjunto de funcionalidades cresça no futuro, à medida que novos recursos forem implementados.
A detecção de anomalias de máquina envolve a detecção de permissões UAC inseguras, assinatura SMB não obrigatória, versão de SO desatualizada, máquinas fora do domínio. Espera-se que este conjunto de funcionalidades cresça no futuro, à medida que novos recursos forem implementados.
O framework não realiza nenhum cracking, apenas organiza os hashes e os resultados do cracking
atualmente o foco principal está nos resultados do dcsync do impacket e do aiosmb, apenas hashes !NT e LM!
O processo de exemplo é o seguinte:
nota do autor: Esta funcionalidade foi implementada tanto para atacantes quanto para defensores. Pessoalmente, não vejo muito valor agregado de nenhum dos lados, pois no momento em que se obtém o hash NT de um usuário, é tão bom quanto a senha... No entanto, cada vez mais empresas estão realizando exercícios de força de senha, e esta funcionalidade as ajudaria. Quanto aos atacantes: é apenas ostentação neste ponto, mas fiquem à vontade. Talvez assustar a gerência por pontos extras.
Este projeto está em fase experimental! Isso significa várias coisas:
Jackdaw usa o módulo ORM SQLAlchemy, que lhe dá a opção de usar qualquer backend de BD SQL que você desejar. Os testes são feitos principalmente no SQLite por razões óbvias. Não haverá comandos específicos de backend usados neste projeto que o limitem.
ISTO SÓ É NECESSÁRIO SE VOCÊ INSTALAR VIA GIT E/OU ALTERAR ALGO NO CÓDIGO DA UI
A UI foi escrita em React. Antes da primeira utilização/instalação, você deve construí-la. Para isso, você precisará ter nodejs e npm instalados. Então:
jackdaw/nest/site/nuinpm installnpm run buildDepois de concluído o acima, a UI está pronta para ser usada.
"Se vi mais longe, foi por estar de pé sobre ombros de gigantes."
Equipe do BloodHound
@dirkjanm (https://github.com/dirkjanm/)
Zsolt Imre (https://github.com/keymandll)
por favor, veja a seção de créditos nos módulos aiosmb e msldap