
Untitled Goose Tool ist ein robustes und flexibles Tool für die Jagd und Incident Response, das neuartige Authentifizierungs- und Datenerfassungsmethoden hinzufügt, um eine vollständige Untersuchung der Azure Active Directory (AzureAD), Azure- und M365-Umgebungen eines Kunden durchzuführen.
The Goose is loose.
Untitled Goose Tool ist ein robustes und flexibles Tool für die Suche und Incident Response, das neuartige Authentifizierungs- und Datenerfassungsmethoden hinzufügt, um eine vollständige Untersuchung der Microsoft Entra ID-, Azure- und M365-Umgebungen eines Kunden durchzuführen. Untitled Goose Tool erfasst zusätzliche Telemetrie von Microsoft Defender for Endpoint (MDE) und Defender for Internet of Things (IoT) (D4IoT).
Dieses Tool wurde entwickelt, um Incident-Response-Teams zu unterstützen, indem es Cloud-Artefakte nach einem Vorfall für Umgebungen exportiert, die keine Protokolle in ein Security Information and Events Management (SIEM) oder eine andere langfristige Lösung für Protokolle einspeisen.
Weitere Anleitungen zur Verwendung von Untitled Goose Tool finden Sie hier: Untitled Goose Tool Fact Sheet
Python >= 3.9 ist erforderlich, um Untitled Goose Tool mit Python auszuführen. Python 3.12 wird dringend empfohlen, da es zu einer besseren Protokollierung führt.
Auf einem Windows-Rechner müssen Sie sicherstellen, dass das Microsoft Visual C++ Redistributable Package (14.x) installiert ist, bevor Sie das Tool ausführen.
Es wird außerdem empfohlen, Untitled Goose Tool in einer virtuellen Umgebung auszuführen.
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
Die folgenden EntraID/M365-Berechtigungen sind erforderlich, um das Untitled Goose Tool auszuführen und ihm Lesezugriff auf den Mandanten zu gewähren.
Bitte beachten: Das Benutzerkonto sollte ein reines Cloud-Konto sein (nicht mit der lokalen Umgebung synchronisiert), um sicherzustellen, dass der Anmeldeprozess für das Tool über alle Umgebungen hinweg gleich bleibt.
Ein reines Cloud-Benutzerkonto und der zugehörige EXO-Dienstprinzipal mit den folgenden Berechtigungen:
Exchange Online Admin Center
- View-Only Audit Logs
- View-Only Configuration
- View-Only Recipients
- User Options
Ein Dienstprinzipal mit den folgenden Berechtigungen:
API-Berechtigungen
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)
Azure-Abonnement-IAM-Rollen
- Reader
- Storage Blob Data Reader
- Storage Queue Data Reader
Stellen Sie sicher, dass "Allow public client flows" für den Service Principal aktiviert ist.
Wir haben ein Setup-PowerShell-Skript, um einen Service Principal mit den erforderlichen Berechtigungen einzurichten. Darüber hinaus kann die Verknüpfung des Azure Service Principal mit m365 derzeit nur über PowerShell erfolgen und ist für einige der m365-Protokollsammlungen erforderlich.
Nachfolgend finden Sie ein Beispiel für die Ausführung des Skripts, das den Befehl goosey conf ausgibt, den Sie ausführen müssen, um die Konfigurationsdateien mit den entsprechenden Informationen zu erstellen
PS > Write-Host "Creating a new Goose Application and Users"
PS > ./Create_SP.ps1 -AppName GooseApp -Create
Zusätzlich kann das Skript die Anwendung löschen, wenn Sie sie nicht mehr benötigen
PS > Write-Host "Creating a new Goose Application and Users"
PS > ./Create_SP.ps1 -AppName GooseApp -Delete
Zum Installieren klonen Sie das Repository und führen dann ein pip install durch:
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 erfordert Authentifizierungsparameter und eine Konfiguration. Um die Konfigurationsdatei automatisch zu erstellen, führen Sie nach der Installation Folgendes aus.
$ goosey conf
Eine Version dieses Befehls wird generiert, wenn das PowerShell-Installationsskript ausgeführt wird, um den Dienstprinzipal zu erstellen/einzurichten. Nachfolgend ein Beispiel mit fiktiven Parameterwerten
$ goosey conf --config_tenant=5fd146ad-8b31-4afa-a72f-6f71df5c7173 --config_subscriptionid=all --auth_appid=24fd6377-79e0-445d-838b-3eaa60d3ca21
Danach sollten die Dateien .auth, .conf, .auth_d4iot und .d4iot_conf in Ihrem aktuellen Verzeichnis abgelegt werden. Diese Dateien werden von Untitled Goose Tool verwendet. Sofern dies nicht mit den oben genannten Parametern generiert wurde, sollten Sie den oberen Abschnitt [auth] ausfüllen, damit Untitled Goose Tool sich ordnungsgemäß bei den entsprechenden Ressourcen authentifizieren kann. Falls Sie es jedoch nicht als angenehm empfinden, Ihre Anmeldedaten in eine Datei einzugeben, können Sie stattdessen die Dateien .auth und/oder .auth_d4iot löschen und vom Tool über die Konsole zur Eingabe der Anmeldedaten aufgefordert werden.
Die minimalistische Authentifizierung sieht wie folgt aus:
[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=
Die Grundkonfiguration sieht so aus: