MacHound 是 Bloodhound 审计工具的扩展,允许收集和摄取 MacOS 主机上的 Active Directory 关系。
MacHound 收集 Mac 机器上已登录用户和管理组成员的信息,并将这些信息摄取到 Bloodhound 数据库中。
除了使用 HasSession 和 AdminTo 边之外,MacHound 还向 Bloodhound 数据库添加了三条新边:
要了解更多关于 MacHound 的信息,请参考介绍文章
MacHound 使用 utmpx API 查询当前活跃用户,并使用 OpenDirectory 和成员资格 API 验证 Active Directory 用户。
MacHound 收集以下本地管理组的 Active Directory 成员:
本地管理组,允许执行 root 操作。
此本地组的成员允许访问远程登录服务 (SSH)。
此本地组的成员允许远程执行 AppleEvent 脚本。
此本地组的成员允许访问屏幕共享服务 (VNC)
MacHound 分为两个主要组件:收集器和摄取器。
MacHound 收集器是一个 Python3.7 脚本,在加入 Active Directory 的 MacOS 主机上本地运行。
收集器查询本地 OpenDirectory 和 Active Directory,获取有关特权用户和组的信息。
执行输出是一个 JSON 文件,包含所有收集到的信息。
MacHound 摄取器是一个 Python3.7 脚本,解析输出 JSON 文件(每个主机一个),连接到 neo4j 数据库并将边插入到数据库中。
摄取器使用 Python 的 neo4j 库来查询 neo4j 数据库中的信息。
摄取器必须在具有 TCP 访问 neo4j 数据库的主机上执行。
MacHound 需要 Python3.7。
摄取器需要 Python3.7 的 neo4j 库。
收集器应部署并在 Mac 上本地执行。输出存储在本地,需要传输到运行摄取器的主机。收集器依赖于 Python3.7 的内置库,无需额外安装。
可以使用 py2app 库将 MacHound 编译为应用程序,以简化部署。
收集器默认不带参数时查询所有信息,并将输出文件写入 ./output.json。
收集器必须以 root 用户身份执行。
collector.py -o <输出文件> -c <Admin,CanSSH,CanVNC,CanAE,HasSession> [-v] [-l 日志文件路径]
摄取器应部署在能够直接 TCP 连接 Bloodhound 的 neo4j 数据库的主机上,最好在 neo4j 数据库服务器本地执行,以避免安全风险。
摄取器需要安装 Python 的 neo4j 驱动程序(参见 requirements 文件)。
ingestor.py <neo4j_url> -u <用户名> -p <密码> -i <json文件夹>
MacHound 在 GPL-3.0 许可下发布。更多详情请参见 LICENSE.md。
如有任何疑问、建议或报告 bug,请随时联系 [email protected]