
Strumento per enumerare attività pianificate privilegiate su sistemi remoti
<p align="center">
<img width="350" height="350" alt="Logo di TaskHound" src="https://assets.kitploit.com/production/public/readmes/9903/f048c922e3b550dd3bc0880bd2e9ba4bebdfdb710812a9a7eec7249bce3e112e.png" />
</p>
<p align="center">
<strong>Strumento per la scoperta di attività pianificate privilegiate su Windows</strong> per divertimento e profitto.
</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&logo=github&color=blue" alt="Ultima release">
</a>
<a href="https://bloodhound.specterops.io/">
<img src="https://img.shields.io/badge/BloodHound-OpenGraph-red.svg?style=flat-square&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&logo=python&logoColor=white" alt="Python 3.11+">
</a>
<br>
<a href="https://deepwiki.com/1r0BIT/TaskHound">
<img src="https://deepwiki.com/badge.svg" alt="Chiedi a DeepWiki">
</a>
<a href="https://twitter.com/0xr0BIT">
<img src="https://img.shields.io/badge/Twitter-@0xr0BIT-1DA1F2?style=flat-square&logo=twitter&logoColor=white" alt="Twitter">
</a>
<a href="https://r0bit.io">
<img src="https://img.shields.io/badge/Blog-r0bit.io-orange?style=flat-square&logo=rss&logoColor=white" alt="Blog">
</a>
</p>
<hr />
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](https://r0bit.io/posts/taskhound/part1/index.html) e [Parte 2](https://r0bit.io/posts/taskhound/part2/index.html).
## 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](https://github.com/Adaptix-Framework/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
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/9903/43ec2d44fef6e06a4aee6b0cad113991182e24d877f0d9099cd6b479554b3362.jpg" alt="Percorso di attacco OpenGraph" />
</p>
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:**
| 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 `--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
| 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 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
| 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à
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)
```
---
[Read more](https://github.com/1r0bit/taskhound)