
Untitled Goose Tool es una herramienta robusta y flexible de búsqueda de amenazas y respuesta a incidentes que añade métodos novedosos de autenticación y recopilación de datos para llevar a cabo una investigación completa contra los entornos de Azure Active Directory (AzureAD), Azure y M365 de un cliente.
El Ganso anda suelto.
Untitled Goose Tool es una herramienta robusta y flexible de búsqueda y respuesta a incidentes que añade métodos novedosos de autenticación y recopilación de datos para llevar a cabo una investigación completa contra los entornos de Microsoft Entra ID, Azure y M365 de un cliente. Untitled Goose Tool recopila telemetría adicional de Microsoft Defender for Endpoint (MDE) y Defender for Internet of Things (IoT) (D4IoT).
Esta herramienta fue diseñada para ayudar a los equipos de respuesta a incidentes exportando artefactos en la nube después de un incidente para entornos que no ingieren registros en un Security Information and Events Management (SIEM) u otra solución de registros a largo plazo.
Para obtener más orientación sobre cómo usar Untitled Goose Tool, consulte: Untitled Goose Tool Fact Sheet
Se requiere Python >= 3.9 para ejecutar Untitled Goose Tool con Python. Se recomienda encarecidamente Python 3.12, ya que da como resultado un mejor registro.
En una máquina Windows, deberá asegurarse de tener instalado el paquete redistribuible de Microsoft Visual C++ (14.x) antes de ejecutar la herramienta.
También se recomienda ejecutar Untitled Goose Tool dentro de un entorno virtual.
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
Se requieren los siguientes permisos de EntraID/M365 para ejecutar Untitled Goose Tool y proporcionarle acceso de solo lectura al inquilino.
Tenga en cuenta: la cuenta de usuario debe ser una cuenta solo en la nube (no sincronizada con el entorno local); esto garantizará que el proceso de inicio de sesión siga siendo el mismo en todos los entornos para la herramienta.
Una cuenta de usuario solo en la nube y una entidad de servicio de EXO asociada con los siguientes permisos:
Centro de administración de Exchange Online
- View-Only Audit Logs
- View-Only Configuration
- View-Only Recipients
- User Options
Una entidad de servicio con los siguientes permisos:
Permisos de 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)
Roles IAM de suscripción de Azure
- Reader
- Storage Blob Data Reader
- Storage Queue Data Reader
Asegúrate de habilitar "Allow public client flows" para el service principal.
Tenemos un script de powershell de configuración para configurar un service principal con los permisos necesarios. Además, la asociación del Azure Service Principal con m365 actualmente solo se puede realizar mediante powershell y es necesaria para parte de la recolección de logs de m365.
A continuación se muestra un ejemplo de ejecución del script, el cual mostrará el comando goosey conf que necesitas ejecutar para construir los archivos de configuración con la información adecuada
PS > Write-Host "Creating a new Goose Application and Users"
PS > ./Create_SP.ps1 -AppName GooseApp -Create
Además, el script puede eliminar la Application cuando hayas terminado de usarla
PS > Write-Host "Creating a new Goose Application and Users"
PS > ./Create_SP.ps1 -AppName GooseApp -Delete
Para instalar, clone el repositorio y luego ejecute 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 requiere parámetros de autenticación y configuración. Para generar automáticamente el archivo de configuración, ejecute lo siguiente después de la instalación.
$ goosey conf
Se generará una versión de este comando cuando se ejecute el script de instalación de powershell para crear/configurar el service principal. A continuación se muestra un ejemplo con valores de parámetros ficticios
$ goosey conf --config_tenant=5fd146ad-8b31-4afa-a72f-6f71df5c7173 --config_subscriptionid=all --auth_appid=24fd6377-79e0-445d-838b-3eaa60d3ca21
Después de esto, los archivos .auth, .conf, .auth_d4iot y .d4iot_conf deberían colocarse en tu directorio actual. Untitled Goose Tool utiliza estos archivos. A menos que se hayan generado con los parámetros anteriores, deberías completar la sección superior [auth] para que Untitled Goose Tool pueda autenticarse correctamente con los recursos correspondientes. Sin embargo, si no te sientes cómodo introduciendo tus credenciales en un archivo, puedes optar por eliminar .auth y/o .auth_d4iot y que la herramienta te solicite las credenciales a través de la consola en su lugar.
La autenticación básica tiene este aspecto:
[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 configuración básica es así:
[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