Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
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.

FeedsContactoPrivacidad© 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
3122560hace 2 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
<p align="center">
  <img width="350" height="350" alt="TaskHound Logo" src="https://assets.kitploit.com/production/public/readmes/9903/f048c922e3b550dd3bc0880bd2e9ba4bebdfdb710812a9a7eec7249bce3e112e.png" />
</p>

<p align="center">
  <strong>Herramienta de descubrimiento de tareas programadas privilegiadas de Windows</strong> para diversión y beneficio.
</p>

<p align="center">
  <a href="https://github.com/1r0BIT/TaskHound/releases">
    <img src="https://img.shields.io/github/v/release/1r0BIT/TaskHound?style=flat-square&amp;logo=github&amp;color=blue" alt="Latest Release">
  </a>
  <a href="https://bloodhound.specterops.io/">
    <img src="https://img.shields.io/badge/BloodHound-OpenGraph-red.svg?style=flat-square&amp;logo=neo4j" alt="BloodHound OpenGraph">
  </a>
  <a href="https://www.python.org/">
    <img src="https://img.shields.io/badge/python-3.11+-blue.svg?style=flat-square&amp;logo=python&amp;logoColor=white" alt="Python 3.11+">
  </a>
  <br>
  <a href="https://deepwiki.com/1r0BIT/TaskHound">
    <img src="https://deepwiki.com/badge.svg" alt="Ask DeepWiki">
  </a>
  <a href="https://twitter.com/0xr0BIT">
    <img src="https://img.shields.io/badge/Twitter-@0xr0BIT-1DA1F2?style=flat-square&amp;logo=twitter&amp;logoColor=white" alt="Twitter">
  </a>
  <a href="https://r0bit.io">
    <img src="https://img.shields.io/badge/Blog-r0bit.io-orange?style=flat-square&amp;logo=rss&amp;logoColor=white" alt="Blog">
  </a>
</p>
<hr />

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](https://r0bit.io/posts/taskhound/part1/index.html) y [Parte 2](https://r0bit.io/posts/taskhound/part2/index.html).

## Características principales

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

## 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
```
> **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](https://github.com/Adaptix-Framework/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

                     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
```
### Métodos de detección de Tier 0

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

### 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;
```
**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

<p align="center">
  <img src="https://assets.kitploit.com/production/public/readmes/9903/43ec2d44fef6e06a4aee6b0cad113991182e24d877f0d9099cd6b479554b3362.jpg" alt="Ruta de ataque OpenGraph" />
</p>

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
```
> **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 | `msLAPS-EncryptedPassword` | Sí (MS-GKDI) |
| LAPS heredado | `ms-Mcs-AdmPwd` | No |

---

## 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
```
> **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:

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

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

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

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

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

| Filtro | Predeterminado | Anulación |
|--------|---------|----------|
| Cuentas deshabilitadas | Excluidas | `--include-disabled` |
| Equipos inactivos (>60 días) | Excluidos | `--stale-threshold 0` (deshabilitar) |
| Controladores de dominio | Excluidos | `--include-dcs` |

**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
```
---

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

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

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

---

[Read more](https://github.com/1r0bit/taskhound)
Descargar herramienta