自动化、可扩展工具集,对 Bloodhound 的 Neo4j 后端运行 Cypher 查询,并将输出保存为电子表格。
这是一个 bash 脚本,可自动化对存储在 Neo4j 数据库中的 Bloodhound 数据运行 Cypher 查询。
我发现自己多次重新运行相同的查询(通过 Neo4j Web 界面)进行多个评估,心想一定有更简单的方法。😅
要运行的 Cypher 查询列表是完全可扩展的。下面的格式示例展示了如何添加你自己的查询。
请分享任何其他有用的查询,以便我将它们添加到这个项目中!
已全面测试,可在 Linux、macOS 和 Windows 的 Bash 中正常工作
(使用 termtosvg 渲染,供您欣赏)
cypher-shell 命令随 Neo4j 捆绑提供,此脚本需要此命令才能运行
cypher-shell,则可能是 Neo4j 版本过旧ssconvert 命令,脚本会将所有 .csv 输出合并到 .xls 文件的工作表中
在 Windows 上,我们建议使用 WSL 运行此脚本,而 Neo4j 数据库则在 Windows 上运行。您只需在 WSL(Linux)中安装 cypher-shell 软件包即可。
标志:
-u Neo4J 用户名(必需)
-p Neo4J 密码(必需)
-d 完全限定域名(必需)(区分大小写)
-a Bolt 地址(可选)(默认值:localhost:7687)
-t 查询超时(可选)(默认值:30s)
-v 详细模式(可选)(默认值:FALSE)
-h 帮助文本和用法示例(可选)
使用默认值的示例:
./cypheroth.sh -u neo4j -p BloodHound -d TESTLAB.LOCAL
使用所有选项的示例:
./cypheroth.sh -u neo4j -p hunter2 -d BigTech.corp -a 10.0.0.1:7687 -t 5m -v true
文件添加到以 FQDN 命名的子目录中。
脚本中目前有将近 60 个查询。以下是您将获得的信息示例:
要添加其他查询,请编辑 cypheroth.sh 中的 queries 数组,并使用以下格式添加一行:
描述;Cypher 查询;输出文件
如果添加需要设置域值的查询,请将其保存为 $DOMAIN。
示例 1:
所有用户名;MATCH (u:User) RETURN u.name;usernames.csv
示例 2:
所有域管理员;MATCH (u:User) MATCH (g:Group {name:'DOMAIN ADMINS@$DOMAIN'}) RETURN u.displayname;domainAdmins.csv
如果需要分析多个域,可以并行运行多个 Cypheroth 实例,每个实例处理其自己的域。 例如,您可以使用以下脚本(并行运行 10 个)。
#!/usr/bin/env bash
DOMAINS=(domA.example.net domB.example.net [...])
parallel -j10 --lb ./cypheroth.sh <args> -d {} ::: "${DOMAINS[@]}"
如果您运行的是过时版本的 cypher-shell,可能会收到以下错误:
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.
要修复,请将 Neo4j 更新到最新版本。
Chris Farrell (@seajay)
#cypher_queries 频道提供的帮助