
Расширяет BloodHound для сбора и обработки отношений Active Directory с хостов macOS, включая вошедших пользователей, группы администраторов, границы доступа SSH/VNC/AppleEvent для построения карты атак.
MacHound — это расширение для инструмента аудита Bloodhound, позволяющее собирать и загружать отношения Active Directory на хостах MacOS. MacHound собирает информацию о вошедших в систему пользователях и членах административных групп на Mac-машинах и загружает её в базу данных Bloodhound. В дополнение к использованию рёбер HasSession и AdminTo, MacHound добавляет три новых ребра в базу данных Bloodhound:
Чтобы узнать больше о MacHound, обратитесь к вступительной статье
MacHound использует API utmpx для запроса текущих активных пользователей и OpenDirectory и API членства для проверки пользователей Active Directory.
MacHound собирает членов Active Directory из следующих локальных административных групп:
Локальная административная группа, предоставляющая возможность выполнения операций от root.
Члены этой локальной группы имеют доступ к службе удаленного входа (SSH).
Члены этой локальной группы могут удаленно выполнять скрипты AppleEvent.
Члены этой локальной группы имеют доступ к службе общего доступа к экрану (VNC)
MacHound состоит из двух основных компонентов: сборщика (collector) и загрузчика (ingestor).
Сборщик MacHound — это скрипт на Python3.7, который запускается локально на хостах MacOS, присоединённых к Active Directory. Сборщик запрашивает локальный OpenDirectory и Active Directory для получения информации о привилегированных пользователях и группах. Результатом выполнения является JSON-файл, содержащий всю собранную информацию.
Загрузчик MacHound — это скрипт на Python3.7, который разбирает выходные JSON-файлы (по одному на хост), подключается к базе данных neo4j и вставляет рёбра в базу данных. Загрузчик использует библиотеку neo4j для Python для запроса информации из базы данных neo4j и записи в неё. Загрузчик должен выполняться на хосте, имеющем TCP-доступ к базе данных neo4j.
MacHound требует Python3.7. Загрузчику требуется библиотека neo4j для Python3.7.
Сборщик должен быть развёрнут и запущен локально на Mac. Результат сохраняется локально и должен быть передан на хост с загрузчиком. Сборщик использует встроенные библиотеки Python3.7 и не требует дополнительных установок. MacHound может быть скомпилирован как приложение с помощью библиотеки py2app для упрощения развёртывания.
По умолчанию сборщик не принимает аргументов, запрашивает всю информацию и записывает выходной файл в ./output.json. Сборщик должен выполняться от пользователя root.
collector.py -o <output_file> -c <Admin,CanSSH,CanVNC,CanAE,HasSession> [-v] [-l log_file_path]
Загрузчик должен быть развёрнут на хосте, имеющем прямой TCP-доступ к базе данных neo4j Bloodhound, желательно локально на сервере базы данных neo4j, чтобы избежать рисков безопасности. Загрузчику требуется установка драйвера neo4j для Python (см. файл requirements).
ingestor.py <url_to_neo4j> -u <username> -p <password> -i <json_folder>
MacHound распространяется под лицензией GPL-3.0. Подробнее см. LICENSE.md.
По любым вопросам, предложениям, сообщениям об ошибках, пожалуйста, свяжитесь по адресу [email protected]