
Conjunto de ferramentas automatizado e extensível que executa consultas cypher contra o backend Neo4j do Bloodhound e salva a saída em planilhas.
Conjunto de ferramentas automatizado e extensível que executa consultas cypher no backend Neo4j do Bloodhound e salva a saída em planilhas.
Este é um script bash que automatiza a execução de consultas cypher em dados do Bloodhound armazenados em um banco de dados Neo4j.
Percebi que estava reexecutando as mesmas consultas através da interface web do Neo4j em várias avaliações e pensei que deveria haver uma maneira mais fácil. 😅
A lista de consultas cypher a serem executadas é totalmente extensível. O exemplo de formatação abaixo mostra como adicionar as suas.
Por favor, compartilhe quaisquer consultas úteis adicionais para que eu possa adicioná-las a este projeto!
Totalmente testado para funcionar no Bash no Linux, macOS e Windows
(Renderizado com termtosvg para seu prazer visual)
cypher-shell vem junto com o Neo4j e é necessário para o funcionamento deste script
cypher-shell não for encontrado, você pode ter uma versão desatualizada do Neo4jssconvert estiver presente, o script combinará toda a saída .csv em planilhas dentro de um arquivo .xls
No Windows, recomendamos usar o WSL para executar este script, enquanto o banco de dados neo4j é executado no Windows. Você só precisará instalar o pacote cypher-shell no WSL (Linux).
Flags:
-u Nome de usuário Neo4J (Obrigatório)
-p Senha Neo4J (Obrigatório)
-d Nome de domínio totalmente qualificado (Obrigatório) (Diferença entre maiúsculas e minúsculas)
-a Endereço Bolt (Opcional) (Padrão: localhost:7687)
-t Tempo limite da consulta (Opcional) (Padrão: 30s)
-v Modo detalhado (Opcional) (Padrão: FALSO)
-h Texto de ajuda e exemplo de uso (Opcional)
Exemplo com Padrões:
./cypheroth.sh -u neo4j -p BloodHound -d TESTLAB.LOCAL
Exemplo com Todas as Opções:
./cypheroth.sh -u neo4j -p hunter2 -d BigTech.corp -a 10.0.0.1:7687 -t 5m -v true
Os arquivos são adicionados a um subdiretório nomeado após o FQDN.
Atualmente, há quase 60 consultas no script. Esta é uma amostra das informações que você receberá:
Para adicionar consultas adicionais, edite o array queries dentro do cypheroth.sh e adicione uma linha usando o seguinte formato:
Descrição;Consulta Cypher;Arquivo de Saída
Se adicionar uma consulta que exija que o valor do Domínio seja definido, salve-o como $DOMAIN.
Exemplo 1:
Todos os Nomes de Usuário;MATCH (u:User) RETURN u.name;usernames.csv
Exemplo 2:
Todos os Administradores de Domínio;MATCH (u:User) MATCH (g:Group {name:'DOMAIN ADMINS@$DOMAIN'}) RETURN u.displayname;domainAdmins.csv
Se você precisar analisar vários domínios, pode executar várias instâncias do Cypheroth em paralelo, cada uma trabalhando em seu domínio. Você pode usar o seguinte script, por exemplo (10 em paralelo).
#!/usr/bin/env bash
DOMAINS=(domA.example.net domB.example.net [...])
parallel -j10 --lb ./cypheroth.sh <args> -d {} ::: "${DOMAINS[@]}"
Se você estiver executando uma versão desatualizada do cypher-shell, poderá receber o seguinte erro:
DateTime is not supported as a return type in Bolt protocol version 1.
Please make sure driver supports at least protocol version 2.
Driver upgrade is most likely required.
Para corrigir, atualize o Neo4j para a versão mais recente.
Chris Farrell (@seajay)
#cypher_queries do Slack Bloodhound pela ajuda