
Untitled Goose Tool — это надежный и гибкий инструмент для охоты и реагирования на инциденты, который добавляет новые методы аутентификации и сбора данных для проведения полного расследования в средах Azure Active Directory (AzureAD), Azure и M365 заказчика.
Гусь на свободе.
Untitled Goose Tool — это надёжный и гибкий инструмент для охоты и реагирования на инциденты, который добавляет новые методы аутентификации и сбора данных, чтобы провести полное расследование в средах Microsoft Entra ID, Azure и M365 заказчика. Untitled Goose Tool собирает дополнительную телеметрию из Microsoft Defender for Endpoint (MDE) и Defender for Internet of Things (IoT) (D4IoT).
Этот инструмент был разработан для помощи командам реагирования на инциденты путём экспорта облачных артефактов после инцидента для сред, которые не собирают журналы в Security Information and Events Management (SIEM) или другое долгосрочное решение для хранения журналов.
Дополнительные указания по использованию Untitled Goose Tool см. в: Untitled Goose Tool Fact Sheet
Для запуска Untitled Goose Tool с Python требуется Python >= 3.9. Настоятельно рекомендуется Python 3.12, так как он обеспечивает лучшее логирование.
На машине с Windows вам необходимо убедиться, что перед запуском инструмента установлен распространяемый пакет Microsoft Visual C++ (14.x).
Также рекомендуется запускать Untitled Goose Tool в виртуальной среде.
pip3 install virtualenv
virtualenv -p python3 .venv
source .venv/bin/activate
# You may need to run sudo apt-get install python3-venv first
python3 -m venv .venv
source .venv/bin/activate
# You can also use py -3 -m venv .venv
python -m venv .venv
.venv\Scripts\activate
Для запуска Untitled Goose Tool и предоставления ему доступа к тенанту только для чтения требуются следующие разрешения EntraID/M365.
Обратите внимание: учётная запись пользователя должна быть облачной (не синхронизированной с локальной средой), это гарантирует, что процесс входа останется одинаковым для инструмента в разных средах.
Облачная учётная запись пользователя и связанный с ней субъект-служба EXO со следующими разрешениями:
Центр администрирования Exchange Online
- View-Only Audit Logs
- View-Only Configuration
- View-Only Recipients
- User Options
Субъект-служба со следующими разрешениями:
Разрешения API
Log Analytics API
- Data.Read (Application)
Microsoft Threat Protection:
- AdvancedHunting.Read.All (Application)
WindowsDefenderATP:
- AdvancedQuery.Read.All (Application)
- Alert.Read.All (Application)
- Library.Manage (Application)
- Machine.Read.All (Application)
- SecurityRecommendation.Read.All (Application)
- Software.Read.All (Application)
- Ti.ReadWrite (Application)
- Vulnerability.Read.All (Application)
Microsoft Graph:
- APIConnectors.Read.All (Application)
- AuditLog.Read.All (Application)
- ConsentRequest.Read.All (Application)
- Directory.Read.All (Application)
- Domain.Read.All (Application)
- IdentityProvider.Read.All (Application)
- IdentityRiskEvent.Read.All (Application)
- IdentityRiskyServicePrincipal.Read.All (Application)
- IdentityRiskyUser.Read.All (Application)
- MailboxSettings.Read (Application)
- Policy.Read.All (Application)
- Policy.Read.PermissionGrant (Application)
- Reports.Read.All (Application)
- RoleManagement.Read.All (Application)
- SecurityActions.Read.All (Application)
- SecurityAlert.Read.All (Application)
- SecurityEvents.Read.All (Application)
- UserAuthenticationMethod.Read.All (Application)
Office 365 Exchange Online
- Exchange.ManageAsApp (Application)
Роли IAM подписки Azure
- Reader
- Storage Blob Data Reader
- Storage Queue Data Reader
Убедитесь, что для service principal включена опция "Allow public client flows".
У нас есть скрипт PowerShell для настройки, который настраивает service principal с необходимыми разрешениями. Кроме того, привязка Azure Service Principal к m365 в настоящее время может быть выполнена только через PowerShell и необходима для сбора некоторых журналов m365.
Ниже приведён пример запуска скрипта, который выведет команду goosey conf, необходимую для запуска, чтобы создать файлы конфигурации с нужной информацией
PS > Write-Host "Creating a new Goose Application and Users"
PS > ./Create_SP.ps1 -AppName GooseApp -Create
Кроме того, скрипт может удалить приложение, когда вы закончите его использовать
PS > Write-Host "Creating a new Goose Application and Users"
PS > ./Create_SP.ps1 -AppName GooseApp -Delete
Чтобы установить, клонируйте репозиторий и затем выполните pip install:
git clone https://github.com/cisagov/untitledgoosetool.git
cd untitledgoosetool
python3 -m pip install .
docker build . -t goosey
docker run -it -v $PWD:/workdir goosey goosey honk --debug
Untitled Goose Tool требует параметров аутентификации и конфигурации. Чтобы автоматически создать файл конфигурации, выполните следующую команду после установки.
$ goosey conf
Версия этой команды будет сгенерирована при запуске скрипта установки PowerShell для создания/настройки субъекта-службы. Ниже приведён пример с фиктивными значениями параметров
$ goosey conf --config_tenant=5fd146ad-8b31-4afa-a72f-6f71df5c7173 --config_subscriptionid=all --auth_appid=24fd6377-79e0-445d-838b-3eaa60d3ca21
После этого файлы .auth, .conf, .auth_d4iot и .d4iot_conf должны быть помещены в ваш текущий каталог. Эти файлы используются Untitled Goose Tool. Если они не были созданы с указанными выше параметрами, вам следует заполнить верхний раздел [auth], чтобы Untitled Goose Tool мог корректно аутентифицироваться в соответствующих ресурсах. Однако, если вы не хотите вводить свои учётные данные в файл, вы можете удалить .auth и/или .auth_d4iot, и тогда инструмент запросит учётные данные через консоль.
Минимальная конфигурация аутентификации выглядит так:
[auth]
# The username of your account. ex: [email protected]
username=
# The password of your account. ex: AAD_password
password=
# The application ID of your service principal
appid=
# The client secret value of your service principal (not the secret ID)
clientsecret=
Базовый конфиг выглядит так:
[config]
# The tenant ID of your AAD tenant
tenant=
# If you have a GCC High tenant
us_government=False
# If you have a GCC tenant with MDE
mde_gcc=False
# If you have a GCC High tenant with MDE
mde_gcc_high=False
# If your M365 tenant is a government tenant
exo_us_government=False
# If you want to check all of your Azure subscriptions, set this to All, otherwise enter your Azure subscription ID. For multiple IDs, separate it with commas, no spaces
subscriptionid=All
[filters]
# Format should be YYYY-MM-DD. If not set will default to the earliest date for log retention
date_start=
# Format should be YYYY-MM-DD. Will default to the present day
date_end=