
Untitled Goose Tool est un outil de chasse et de réponse aux incidents robuste et flexible qui ajoute des méthodes novatrices d'authentification et de collecte de données afin de mener une enquête complète sur les environnements Azure Active Directory (AzureAD), Azure et M365 d'un client.
L'oie est lâchée.
Untitled Goose Tool est un outil robuste et flexible de chasse et de réponse aux incidents qui ajoute de nouvelles méthodes d'authentification et de collecte de données afin de mener une enquête complète contre les environnements Microsoft Entra ID, Azure et M365 d'un client. Untitled Goose Tool collecte de la télémétrie supplémentaire auprès de Microsoft Defender for Endpoint (MDE) et Defender for Internet of Things (IoT) (D4IoT).
Cet outil a été conçu pour aider les équipes de réponse aux incidents en exportant les artefacts cloud après un incident pour les environnements qui n'ingèrent pas de journaux dans un Security Information and Events Management (SIEM) ou une autre solution de journalisation à long terme.
Pour plus d'informations sur l'utilisation d'Untitled Goose Tool, veuillez consulter : Untitled Goose Tool Fact Sheet
Python >= 3.9 est requis pour exécuter Untitled Goose Tool avec Python. Python 3.12 est fortement recommandé car il permet une meilleure journalisation.
Sur une machine Windows, vous devrez vous assurer que le package redistribuable Microsoft Visual C++ (14.x) est installé avant d'exécuter l'outil.
Il est également recommandé d'exécuter Untitled Goose Tool dans un environnement virtuel.
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
Les autorisations EntraID/M365 suivantes sont requises pour exécuter Untitled Goose Tool et lui fournir un accès en lecture seule au tenant.
Veuillez noter : le compte utilisateur doit être un compte cloud uniquement (non synchronisé avec l'environnement local), ce qui garantit que le processus de connexion reste identique quel que soit l'environnement pour l'outil.
Un compte utilisateur cloud uniquement et le principal de service EXO associé disposant des autorisations suivantes :
Centre d'administration Exchange Online
- View-Only Audit Logs
- View-Only Configuration
- View-Only Recipients
- User Options
Un principal de service avec les autorisations suivantes :
Autorisations d'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)
Rôles IAM d'abonnement Azure
- Reader
- Storage Blob Data Reader
- Storage Queue Data Reader
Assurez-vous d'activer « Allow public client flows » pour le principal de service.
Nous disposons d'un script PowerShell de configuration pour configurer un principal de service avec les autorisations nécessaires. De plus, l'association du principal de service Azure avec m365 ne peut actuellement être effectuée que via PowerShell et est nécessaire pour certaines des collectes de journaux m365.
Voici un exemple d'exécution du script qui affichera la commande goosey conf que vous devez exécuter pour générer les fichiers de configuration avec les informations appropriées
PS > Write-Host "Creating a new Goose Application and Users"
PS > ./Create_SP.ps1 -AppName GooseApp -Create
De plus, le script peut supprimer l'Application lorsque vous avez terminé de l'utiliser
PS > Write-Host "Creating a new Goose Application and Users"
PS > ./Create_SP.ps1 -AppName GooseApp -Delete
Pour installer, clonez le dépôt puis effectuez un 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 nécessite des paramètres d'authentification et une configuration. Pour générer automatiquement le fichier de configuration, exécutez la commande suivante après l'installation.
$ goosey conf
Une version de cette commande sera générée lors de l'exécution du script d'installation PowerShell pour créer/configurer le principal de service. Voici un exemple avec des valeurs de paramètres fictives
$ goosey conf --config_tenant=5fd146ad-8b31-4afa-a72f-6f71df5c7173 --config_subscriptionid=all --auth_appid=24fd6377-79e0-445d-838b-3eaa60d3ca21
Ensuite, les fichiers .auth, .conf, .auth_d4iot et .d4iot_conf doivent être placés dans votre répertoire courant. Ces fichiers sont utilisés par Untitled Goose Tool. À moins que cela n'ait été généré avec les paramètres ci-dessus, vous devez remplir la section supérieure [auth] afin qu'Untitled Goose Tool puisse s'authentifier correctement auprès des ressources appropriées. Toutefois, si vous n'êtes pas à l'aise à l'idée de saisir vos identifiants dans un fichier, vous pouvez choisir de supprimer .auth et/ou .auth_d4iot et d'être invité par l'outil à saisir vos identifiants via la console à la place.
L'authentification minimale ressemble à ceci :
[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=
La configuration minimale ressemble à ceci :