Retour aux mises à jour
New releaseSep 3, 2026

TaskHound v1.2.0

Outil pour énumérer les tâches planifiées privilégiées sur les systèmes distants

Partager

Logo TaskHound

Outil de découverte de tâches planifiées privilégiées Windows pour le plaisir et le profit.

Dernière version BloodHound OpenGraph Python 3.11+
Demander à DeepWiki Twitter Blog


TaskHound traque les tâches planifiées Windows qui s'exécutent avec des comptes privilégiés et des identifiants stockés. Il énumère les tâches via SMB, analyse les XMLs et identifie les opportunités d'attaque à haute valeur via l'intégration BloodHound.

Pour le contexte et des explications détaillées : consultez les articles de blog associés - Partie 1 et Partie 2.

Fonctionnalités clés

FonctionnalitéDescription
Détection de niveau 0 et à haute valeurIdentifie automatiquement les tâches s'exécutant en tant qu'administrateurs de domaine, administrateurs d'entreprise et autres comptes privilégiés
Intégration BloodHoundConnectez-vous à des instances BHCE/Legacy en direct ou ingérez des exportations pour la détection d'utilisateurs à haute valeur
Support OpenGraphVisualisez les tâches planifiées comme des nœuds de chemin d'attaque dans BloodHound CE
Intégration LAPSRécupération et utilisation automatiques des mots de passe LAPS (Windows LAPS et Legacy) pour l'authentification par hôte
Extraction d'identifiants DPAPICollecte et déchiffrement des blobs DPAPI contenant les identifiants de tâches stockés
Analyse multi-threadTraitement parallèle des cibles avec limitation de débit pour les grands environnements
Détection de niveau 0 basée sur LDAPDétection des comptes privilégiés via l'appartenance à un groupe sans BloodHound
Validation des identifiantsVérification si les mots de passe de tâches stockés sont toujours valides via RPC
Analyse hors ligneTraitement des images disque montées ou des XMLs précédemment collectés
Formats de sortie multiplesRapports de sécurité en texte brut, JSON, CSV et HTML avec notation de sévérité
Résolution SIDRésolution multi-niveaux via BloodHound → Cache → LSARPC → LDAP → GC
Mise en cacheCache persistant basé sur SQLite pour les recherches SID et les identifiants LAPS

Démarrage rapide```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

> **Support d'authentification** : TaskHound prend en charge la plupart des mécanismes d'authentification majeurs, y compris le mot de passe, le hachage NTLM, Kerberos (également avec ccache), et l'authentification par clé AES.

## Fichier de configuration

TaskHound prend en charge les fichiers de configuration TOML pour les paramètres persistants. Créez `taskhound.toml` dans votre répertoire de travail ou `~/.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é : arguments CLI > variables d'environnement > configuration locale > configuration utilisateur > valeurs par défaut

Intégration AdaptixC2

Le BOF de TaskHound est inclus dans le Adaptix Extension-Kit sous SAR-BOF/taskhound/.

Résultat de démonstration```

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

---

## Intégration BloodHound

TaskHound prend en charge à la fois **Legacy BloodHound** (Neo4j) et **BloodHound Community Edition (BHCE)** avec détection automatique du format.

### Connexion en direct```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éthodes de détection Tier 0

SourceMéthode de détection
BHCEisTierZero, tags système (admin_tier_0), AdminSDHolder
LegacyAdminSDHolder (admincount=1), détection basée sur les SID
LDAPRequêtes d'appartenance aux groupes (--ldap-tier0)
IntégréSID Tier 0 connus (Domain Admins, Enterprise Admins, etc.)

Ingestion de données hors ligne

Si une connexion en direct n'est pas possible, exportez les utilisateurs à haute valeur avec ces requêtes 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;

**Héritage :**```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 ...


Visualisation des chemins d'attaque OpenGraph

OpenGraph Attack Path

TaskHound crée des nœuds et des arêtes personnalisés dans BloodHound CE pour visualiser les chemins d'attaque des tâches planifiées.

Ce que vous obtenez :

  • Nœuds personnalisés : ScheduledTask avec 20+ propriétés (identifiants, déclencheurs, analyse de mot de passe, statut de validation)
  • Arêtes personnalisées : HasTask, HasTaskWithStoredCreds, RunsAs
  • Chemins d'attaque : `(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

> **Note** : OpenGraph est réservé à BHCE. BloodHound hérité ne prend pas en charge les types de nœuds personnalisés.

---

## Intégration LAPS

TaskHound peut récupérer et utiliser automatiquement les mots de passe LAPS pour l'authentification par hôte. Supporte à la fois Windows LAPS (`msLAPS-Password`) et Legacy LAPS (`ms-Mcs-AdmPwd`), y compris les mots de passe chiffrés via 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

Types de LAPS pris en charge :

TypeAttributChiffré
Windows LAPSmsLAPS-PasswordNon
Windows LAPSmsLAPS-EncryptedPasswordOui (MS-GKDI)
LAPS héritésms-Mcs-AdmPwdNon

Extraction des identifiants DPAPI

TaskHound extrait et déchiffre les identifiants de tâches stockés en utilisant DPAPI. Le pillage DPAPI est activé par défaut.```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

> **Important** : Chaque hôte possède une clé DPAPI_SYSTEM unique. Pour les scans multi-cibles, collectez (par défaut), puis déchiffrez chaque cible hors ligne.

---

## Validation des identifiants

TaskHound évalue si les mots de passe des tâches stockés sont toujours probablement valides en interrogeant l'historique d'exécution des tâches via RPC et en appliquant des heuristiques. Ceci est **activé par défaut**.```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

Comment ça marche

Le Planificateur de tâches Windows n'enregistre que les exécutions réussies des tâches. Les échecs d'authentification (mot de passe incorrect, compte verrouillé, etc.) sont silencieusement ignorés. La tâche ne s'exécute tout simplement pas.

Point clé : Windows valide les identifiants au moment de la création de la tâche. Si vous essayez de créer une tâche avec un mauvais mot de passe, vous obtenez ERROR_LOGON_FAILURE et la tâche n'est pas créée. Cela signifie : si une tâche avec des identifiants stockés existe, le mot de passe était valide au moment de sa création.

TaskHound utilise des heuristiques pour estimer la validité des identifiants :

StatutSignification
CONFIRMED_VALIDMot de passe inchangé depuis la création de la tâche ET la tâche s'est exécutée dans les délais prévus - identifiants confirmés fonctionnels
HIGH_CONFIDENCE_VALIDMot de passe inchangé depuis la création de la tâche, mais le déclenchement programmé est inconnu (ex. déclencheur au démarrage) - identifiants probablement valides
LIKELY_VALIDMot de passe changé mais la tâche s'est exécutée dans les délais (identifiants mis à jour), OU la tâche s'est exécutée avec succès (mode RPC uniquement)
POSSIBLY_STALELa tâche aurait dû s'exécuter mais ne l'a pas fait - peut indiquer des identifiants obsolètes
DEFINITELY_STALEMot de passe changé après la dernière exécution réussie - les identifiants sont définitivement incorrects
NEVER_RAN_LIKELY_VALIDLa tâche ne s'est jamais exécutée, mais le mot de passe est inchangé depuis sa création - probablement valide (peut manquer de droits d'ouverture de session batch)
NEVER_RAN_POSSIBLY_STALELa tâche ne s'est jamais exécutée, et le mot de passe a été changé après sa création - probablement obsolète
NEVER_RAN_UNKNOWNLa tâche ne s'est jamais exécutée, pas de contexte AD - était valide à la création, statut actuel inconnu
UNKNOWNImpossible à déterminer (compte bloqué, etc.)

Le point clé : comparer pwdLastSet d'AD avec LastRunTime du Planificateur de tâches indique si le mot de passe a changé après la dernière exécution réussie. Pour les tâches jamais exécutées, comparer pwdLastSet avec task_creation_date indique si le mot de passe a changé après que la tâche a été créée avec des identifiants valides.

Sans données AD (par ex., --no-ldap et pas de BloodHound) : TaskHound revient en mode RPC uniquement, utilisant simplement le code de retour et la dernière heure d'exécution. Une exécution réussie renvoie LIKELY_VALID ; la détection d'obsolescence basée sur la planification s'applique toujours si l'intervalle de déclenchement est connu à partir du XML de la tâche.

Remarque : Désactivé lors de l'utilisation de --opsec ou --no-rpc.


Formats de sortie

TaskHound prend en charge plusieurs formats de sortie pour différents cas d'utilisation. Toutes les sorties utilisent une structure de répertoires organisée sous --output-dir (par défaut : ./output).

Formats disponibles

FormatOptionDescriptionCas d'utilisation
Texte brut-o plainSortie console lisible (par défaut)Utilisation interactive, révision rapide
JSON-o jsonExport structuré lisible par machineAutomatisation, analyse de données, programmation
CSV-o csvExport compatible tableurRapports, filtrage, analyse avec Excel
HTML-o htmlRapport de sécurité avec notation de sévéritéAudits équipe bleue, rapports parties prenantes

Exemples d'utilisation```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

### Structure du répertoire```
./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

Rapports de sécurité HTML

La sortie HTML génère un rapport de sécurité complet conçu pour les évaluations d'équipe bleue :

  • Score de gravité : Tâches évaluées par niveau de risque basé sur les privilèges, les identifiants stockés et la configuration
  • Détails de la tâche : Métadonnées complètes incluant déclencheurs, actions, comptes d'exécution et statut de validation
  • Filtrage : Filtrage côté client par hôte, gravité et statut des identifiants
  • Prêt pour l'export : Adapté aux rapports de gestion et à la documentation d'audit

Collecte de sauvegarde

Par défaut, TaskHound enregistre les fichiers XML bruts des tâches et les blobs d'identifiants DPAPI pour une analyse hors ligne :```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...

---

## Scan multi-threadé

Pour les grands environnements, utilisez le scan parallèle avec limitation de débit :```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

Filtrage automatique des cibles

Par défaut, --auto-targets applique un filtrage intelligent pour réduire le bruit et les échecs de connexion :

FiltrePar défautRemplacer
Comptes désactivésExclu--include-disabled
Ordinateurs obsolètes (>60 jours)Exclu--stale-threshold 0 (désactiver)
Contrôleurs de domaineExclu--include-dcs

Priorité des sources de données : BloodHound (si configuré) → Repli LDAP

Lors de l'utilisation de BloodHound, TaskHound interroge avec include_properties=true pour une énumération efficace en une seule requête. Si les données BloodHound datent de plus de 7 jours, un avertissement s'affiche ; au-delà de 30 jours, un avertissement urgent est déclenché.

Préréglages de filtrage :

  • servers - Systèmes d'exploitation Windows Server uniquement
  • workstations - Systèmes d'exploitation non serveur uniquement
  • (raw LDAP) - Filtre LDAP personnalisé (nécessite une source LDAP)

Résolution des SID

TaskHound résout les SID en noms lisibles en utilisant une chaîne de repli à plusieurs niveaux :

  1. BloodHound (si connecté) - le plus rapide, aucun trafic réseau
  2. Cache - Cache persistant SQLite (TTL par défaut 24h)
  3. LSARPC - requête directe vers la cible (la plus précise pour les comptes locaux)
  4. LDAP - requête vers le contrôleur de domaine
  5. Catalogue global - pour les SID inter-domaines/forêts```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

---

## Analyse hors ligne

Analysez les tâches sans accès réseau:```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

Considérations OPSEC

TaskHound offre un contrôle granulaire des opérations réseau pour équilibrer furtivité et fonctionnalité.

Impact sur les protocoles

ProtocoleOpérationsDrapeau pour désactiver
SMBÉnumération des tâches (toujours utilisée)N/A
LDAP (389/636)Résolution SID, détection Tier-0, pwdLastSet--no-ldap
Catalogue global (3268)Résolution SID inter-domaines--no-ldap
LSARPC (pipe SMB)Résolution SID de repli--no-rpc
Registre distant (pipe SMB)Détection Credential Guard--no-credguard
RPC du Planificateur de tâches (pipe SMB)Validation des identifiants--no-validate-creds
Collecte de fichiers DPAPI (SMB)Collecte des blobs d'identifiants DPAPI--no-loot

Chaîne de résolution SID```

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

### Comportement par défaut

TaskHound est **très bruyant par défaut** - toutes les fonctionnalités sont activées pour une visibilité maximale. Cela le rend idéal pour les audits et les évaluations complètes où l'OPSEC n'est pas une préoccupation :

- **Détection de Credential Guard** - Activé par défaut (désactiver avec `--no-credguard`)
- **Validation des identifiants** - Activé par défaut (désactiver avec `--no-validate-creds`)
- **Pillage DPAPI** - Activé par défaut (désactiver avec `--no-loot`)
- **Résolution LDAP** - Activé par défaut (désactiver avec `--no-ldap`)
- **Opérations RPC** - Activé par défaut (désactiver avec `--no-rpc`)

> [!WARNING]
> **Les vérifications de Credential Guard sont HAUTEMENT détectables.** Étant donné que le service Remote Registry est arrêté par défaut sur Windows moderne, TaskHound **démarrera le service** à distance via SCM, effectuera les vérifications, puis l'arrêtera (comme secretsdump). Cela fera scintiller tout SOC décent comme un arbre de Noël. **Utilisez absolument `--no-credguard` si vous voulez éviter cela lors des engagements !**

En parlant d'engagements : Pour les opérations d'équipe rouge/furtives, utilisez `--opsec` pour désactiver toutes les fonctionnalités bruyantes à la fois. (Ou utilisez le BOF).

### Exemples d'utilisation```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

Meilleures pratiques pour la furtivité

  1. Pré-remplir les données BloodHound - Importer d'abord les données du domaine avec --bh-live
  2. Utiliser le drapeau --opsec - Désactive toutes les opérations bruyantes en une fois
  3. Ajouter --jitter pour la randomisation temporelle - Éviter les schémas de scan prévisibles
  4. Collecter les XMLs par d'autres moyens - Analyser hors ligne avec --offline
  5. Utiliser l'implémentation BOF - Disponible dans AdaptixC2

Référence complète de la CLI

TaskHound utilise Rich pour une sortie console formatée avec des tableaux colorés et des indicateurs de progression.``` taskhound --help

<details>
<summary>Cliquez pour développer l'utilisation complète</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

Feuille de route

Quand la caféine et le temps libre s'alignent :

Récemment terminé

  • Authentification par clé API - requêtes signées HMAC-SHA256
  • Prise en charge LAPS - Windows LAPS + Legacy + chiffré via MS-GKDI
  • Traitement multi-thread - Analyse parallèle avec limitation du débit
  • Validation des identifiants - Vérification de validité du mot de passe basée sur RPC
  • Formats de sortie multiples - Texte, JSON, CSV, HTML avec disposition de répertoire structurée
  • Découverte automatique des cibles - Énumération d'ordinateurs basée sur LDAP
  • Mode disque hors ligne - Analyse d'image de disque montée
  • Cache persistant - Cache SQLite pour les données SID/LAPS
  • Sortie console enrichie - Tableaux colorés et indicateurs de progression
  • Prise en charge inter-domaines - Environnements multi-domaines avec relations d'approbation

Planifié

  • Modularisation des étapes : Ce monstre a trop d'options. Je vais corriger ça.
  • Intégration des informations d'abus : Techniques MITRE ATT&CK dans les nœuds BloodHound
  • Mappages personnalisés Tier-0 : Prise en charge de zones de privilèges définies par l'utilisateur dans BHCE
  • Vérifications Linux : Prise en charge de l'analyse des systèmes d'exploitation *nix

Remerciements

Et tous ceux qui ont contribué à rendre les outils de sécurité offensive accessibles.


Avertissement

TaskHound est strictement un outil d'audit et éducatif. Utilisez-le uniquement dans des environnements que vous possédez ou pour lesquels vous avez une autorisation explicite de test. Sérieusement. Ne soyez pas une mauvaise personne.

Contribution

Les PR sont les bienvenus. La moitié de ce code est le fruit d'une session de codage sous caféine, n'attendez donc pas de miracles.

Licence

Utilisez-le de manière responsable. Aucune garantie fournie. Voir LICENSE pour les détails.

Catégories