Voltar às atualizações
New releaseSep 3, 2026

TaskHound v1.2.0

Ferramenta para enumerar Tarefas Agendadas privilegiadas em Sistemas Remotos

Compartilhar

TaskHound Logo

Ferramenta de Descoberta de Tarefas Agendadas Privilegiadas do Windows para diversão e lucro.

Latest Release BloodHound OpenGraph Python 3.11+
Ask DeepWiki Twitter Blog


O TaskHound caça tarefas agendadas do Windows que são executadas com contas privilegiadas e credenciais armazenadas. Ele enumera tarefas via SMB, analisa XMLs e identifica oportunidades de ataque de alto valor por meio da integração com o BloodHound.

Para contexto/história e explicações detalhadas: consulte as Postagens do Blog associadas - Parte 1 e Parte 2.

Principais Recursos

RecursoDescrição
Detecção de Tier 0 e Alto ValorIdentifica automaticamente tarefas executadas como Domain Admins, Enterprise Admins e outras contas privilegiadas
Integração com BloodHoundConecte-se a instâncias BHCE/Legacy ativas ou importe exportações para detecção de usuários de alto valor
Suporte a OpenGraphVisualize tarefas agendadas como nós de caminho de ataque no BloodHound CE
Integração com LAPSRecupere e use automaticamente senhas LAPS (LAPS do Windows e Legacy) para autenticação por host
Extração de Credenciais DPAPIColeta e descriptografa blobs DPAPI contendo credenciais de tarefas armazenadas
Varredura MultithreadProcessamento paralelo de alvos com limite de taxa para grandes ambientes
Detecção de Tier-0 baseada em LDAPDetecta contas privilegiadas via associação a grupos sem o BloodHound
Validação de CredenciaisVerifica se as senhas de tarefas armazenadas ainda são válidas via RPC
Análise OfflineProcessa imagens de disco montadas ou XMLs coletados anteriormente
Múltiplos Formatos de SaídaRelatórios de segurança em texto puro, JSON, CSV e HTML com pontuação de severidade
Resolução de SIDResolução em múltiplas camadas via BloodHound → Cache → LSARPC → LDAP → GC
CacheCache persistente baseado em SQLite para consultas de SID e credenciais LAPS

Início Rápido```bash

Install

git clone https://github.com/1r0BIT/TaskHound.git cd TaskHound python3 -m venv .venv && source .venv/bin/activate pip install -r requirements.txt && pip install .

Basic usage - single target

taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local -t moe.thesimpsons.local

Multiple targets with threading

taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local --targets-file hosts.txt --threads 10

Auto-discover all domain computers

taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local --dc-ip 10.0.0.1 --auto-targets --threads 20

With LAPS - auto-retrieves per-host local admin passwords

taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local --targets-file hosts.txt --laps --threads 10

Offline analysis of mounted disk image

taskhound --offline-disk /mnt/disk

> **Suporte de Autenticação**: TaskHound suporta a maioria dos principais mecanismos de autenticação, incluindo senha, hash NTLM, Kerberos (também com ccache) e autenticação por chave AES.

## Arquivo de Configuração

TaskHound suporta arquivos de configuração TOML para configurações persistentes. Crie `taskhound.toml` no seu diretório de trabalho ou em `~/.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

Prioridade: Argumentos de CLI > Variáveis de ambiente > Configuração local > Configuração do usuário > Padrões

Integração com AdaptixC2

O BOF do TaskHound está incluído no Adaptix Extension-Kit em SAR-BOF/taskhound/.

Saída de Demonstração```

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

---

## Integração com BloodHound

TaskHound suporta tanto o **Legacy BloodHound** (Neo4j) quanto o **BloodHound Community Edition (BHCE)** com detecção automática de formato.

### Conexão ao Vivo```bash
# BHCE with API Key (recommended)
taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local -t moe.thesimpsons.local \
  --bh-live --bhce --bh-connector http://127.0.0.1:8080 \
  --bh-api-key "YOUR_API_KEY" --bh-api-key-id "YOUR_KEY_ID"

# BHCE with username/password
taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local -t moe.thesimpsons.local \
  --bh-live --bhce --bh-connector http://127.0.0.1:8080 \
  --bh-user admin --bh-password password

# Legacy BloodHound (Neo4j)
taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local -t moe.thesimpsons.local \
  --bh-live --legacy --bh-connector bolt://127.0.0.1:7687 \
  --bh-user neo4j --bh-password password

Métodos de Detecção de Tier 0

FonteMétodo de Detecção
BHCEisTierZero, tags de sistema (admin_tier_0), AdminSDHolder
LegadoAdminSDHolder (admincount=1), detecção baseada em SID
LDAPConsultas de associação a grupos (--ldap-tier0)
IntegradoSIDs Tier 0 bem conhecidos (Domain Admins, Enterprise Admins, etc.)

Ingestão de Dados Offline

Se uma conexão ativa não for possível, exporte usuários de alto valor com estas consultas Cypher:

BHCE:```cypher MATCH (n) WHERE coalesce(n.system_tags, "") CONTAINS "admin_tier_0" OR n.highvalue = true MATCH p = (n)-[:MemberOf*1..]->(g:Group) RETURN p;

**Legado:**```cypher
MATCH (u:User {highvalue:true})
OPTIONAL MATCH (u)-[:MemberOf*1..]->(g:Group)
WITH u, properties(u) as all_props, collect(g.name) as groups
RETURN u.samaccountname AS SamAccountName, all_props, groups

Em seguida, use: taskhound --bh-data exported_users.json ...


Visualização do Caminho de Ataque OpenGraph

Caminho de Ataque OpenGraph

O TaskHound cria nós e arestas personalizados no BloodHound CE para visualizar caminhos de ataque de tarefas agendadas.

O que você obtém:

  • Nós Personalizados: ScheduledTask com 20+ propriedades (credenciais, gatilhos, análise de senha, status de validação)
  • Arestas Personalizadas: HasTask, HasTaskWithStoredCreds, RunsAs
  • Caminhos de Ataque: `(Owned) → AdminTo → (Computer) → HasTask → (Task) → RunsAs → (Target)````bash

Collect and auto-upload

taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local -t moe.thesimpsons.local --bh-opengraph

Generate without upload (saves to {output_dir}/opengraph/)

taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local -t moe.thesimpsons.local --bh-opengraph --bh-no-upload

> **Nota**: OpenGraph é exclusivo do BHCE. O BloodHound legado não suporta tipos de nós personalizados.

---

## Integração com LAPS

O TaskHound pode recuperar e usar automaticamente senhas LAPS para autenticação por host. Suporta tanto o Windows LAPS (`msLAPS-Password`) quanto o LAPS legado (`ms-Mcs-AdmPwd`), incluindo senhas criptografadas 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

Tipos de LAPS suportados:

TipoAtributoCriptografado
Windows LAPSmsLAPS-PasswordNão
Windows LAPSmsLAPS-EncryptedPasswordSim (MS-GKDI)
LAPS legadoms-Mcs-AdmPwdNão

Extração de Credenciais do DPAPI

O TaskHound extrai e descriptografa credenciais de tarefas armazenadas usando DPAPI. A extração de DPAPI está ativada por padrão.```bash

Step 1: Get DPAPI_SYSTEM key via LSA dump

nxc smb moe.thesimpsons.local -u homer.simpson -p 'Doh!123' --lsa

Look for: DPAPI_SYSTEM userkey: 0x51e43225...

Step 2a: Loot + decrypt immediately (looting is default, just add key)

taskhound -t moe.thesimpsons.local -u homer.simpson -p 'Doh!123' -d thesimpsons.local --dpapi-key 0x51e43225...

Step 2b: Or collect now (default saves to ./output/raw_backups/), decrypt later

taskhound -t moe.thesimpsons.local -u homer.simpson -p 'Doh!123' -d thesimpsons.local

Later:

taskhound --offline ./output/raw_backups/moe.thesimpsons.local --dpapi-key 0x51e43225...

Custom output directory

taskhound -t moe.thesimpsons.local -u homer.simpson -p 'Doh!123' -d thesimpsons.local --output-dir ./collected

Disable DPAPI looting explicitly

taskhound -t moe.thesimpsons.local -u homer.simpson -p 'Doh!123' -d thesimpsons.local --no-loot

> **Importante**: Cada host possui uma chave DPAPI_SYSTEM exclusiva. Para varreduras de múltiplos alvos, colete (padrão) e depois descriptografe cada alvo offline.

---

## Validação de Credenciais

O TaskHound avalia se as senhas das tarefas armazenadas ainda são provavelmente válidas consultando o histórico de execução de tarefas via RPC e aplicando heurísticas. Isso está **habilitado por padrão**.```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

Como Funciona

O Agendador de Tarefas do Windows registra apenas execuções de tarefas bem-sucedidas. Falhas de autenticação (senha incorreta, conta bloqueada, etc.) são silenciosamente ignoradas. A tarefa simplesmente não é executada.

Ponto-chave: o Windows valida as credenciais no momento da criação da tarefa. Se você tentar criar uma tarefa com uma senha incorreta, recebe ERROR_LOGON_FAILURE e a tarefa não é criada. Isso significa: se uma tarefa com credenciais armazenadas existe, a senha era válida quando a tarefa foi criada.

TaskHound usa heurísticas para estimar a validade das credenciais:

StatusSignificado
CONFIRMED_VALIDSenha inalterada desde a criação da tarefa E tarefa executada dentro do cronograma esperado - credenciais confirmadas em funcionamento
HIGH_CONFIDENCE_VALIDSenha inalterada desde a criação da tarefa, mas o tempo do gatilho é desconhecido (ex.: gatilho de inicialização) - credenciais provavelmente válidas
LIKELY_VALIDSenha alterada, mas tarefa executada dentro do cronograma (credenciais atualizadas), OU tarefa executada com sucesso (modo somente RPC)
POSSIBLY_STALEA tarefa deveria ter sido executada, mas não foi - pode indicar credenciais desatualizadas
DEFINITELY_STALESenha alterada após a última execução bem-sucedida - as credenciais estão definitivamente incorretas
NEVER_RAN_LIKELY_VALIDA tarefa nunca foi executada, mas a senha permaneceu inalterada desde a criação - provavelmente válida (pode não ter direitos de logon em lote)
NEVER_RAN_POSSIBLY_STALEA tarefa nunca foi executada e a senha foi alterada após a criação - provavelmente desatualizada
NEVER_RAN_UNKNOWNA tarefa nunca foi executada, sem contexto de AD - era válida na criação, status atual desconhecido
UNKNOWNNão é possível determinar (conta bloqueada, etc.)

O ponto-chave: comparar pwdLastSet do AD com LastRunTime do Agendador de Tarefas nos diz se a senha foi alterada após a última execução bem-sucedida. Para tarefas nunca executadas, comparar pwdLastSet com task_creation_date nos diz se a senha foi alterada após a tarefa ter sido criada com credenciais válidas.

Sem dados de AD (ex.: --no-ldap e sem BloodHound): TaskHound recorre ao modo somente RPC, usando apenas o código de retorno e o horário da última execução. Uma execução bem-sucedida retorna LIKELY_VALID; a detecção de desatualização baseada em cronograma ainda se aplica se o intervalo do gatilho for conhecido a partir do XML da tarefa.

Nota: Desabilitado ao usar --opsec ou --no-rpc.


Formatos de Saída

TaskHound suporta vários formatos de saída para diferentes casos de uso. Todas as saídas usam uma estrutura de diretórios organizada sob --output-dir (padrão: ./output).

Formatos Disponíveis

FormatoFlagDescriçãoCaso de Uso
Plain-o plainSaída de console legível por humanos (padrão)Uso interativo, revisão rápida
JSON-o jsonExportação estruturada legível por máquinaAutomação, análise de dados, scripts
CSV-o csvExportação compatível com planilhasRelatórios, filtragem, análise no Excel
HTML-o htmlRelatório de segurança com pontuação de gravidadeAuditorias de blue team, relatórios para as partes interessadas

Exemplos de Uso```bash

Default - plain text to console + files

taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local -t moe.thesimpsons.local

Multiple output formats

taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local --auto-targets -o plain,json,html

JSON only for automation

taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local --auto-targets -o json

Custom output directory

taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local --auto-targets -o html --output-dir ./audit_results

All formats for comprehensive audit

taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local --auto-targets -o plain,json,csv,html --output-dir ./full_audit

### Estrutura de Diretórios```
./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

Relatórios de Segurança em HTML

A saída HTML gera um relatório de segurança abrangente, projetado para avaliações de blue team:

  • Pontuação de Severidade: Tarefas classificadas por nível de risco com base em privilégios, credenciais armazenadas e configuração
  • Detalhes da Tarefa: Metadados completos, incluindo gatilhos, ações, contas de execução e status de validação
  • Filtragem: Filtragem no lado do cliente por host, severidade e status de credenciais
  • Pronto para Exportação: Adequado para relatórios gerenciais e documentação de auditoria

Coleta de Backup

Por padrão, o TaskHound salva arquivos XML brutos de tarefas e blobs de credenciais DPAPI para análise 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...

---

## Varredura Multithread

Para grandes ambientes, use varredura paralela com limitação de taxa:```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

Filtragem Automática de Alvos

Por padrão, --auto-targets aplica filtragem inteligente para reduzir ruído e conexões com falha:

FilterDefaultOverride
Contas desabilitadasExcluídas--include-disabled
Computadores obsoletos (>60 dias)Excluídos--stale-threshold 0 (desativar)
Controladores de DomínioExcluídos--include-dcs

Prioridade da Fonte de Dados: BloodHound (se configurado) → fallback LDAP

Ao usar BloodHound, o TaskHound consulta com include_properties=true para enumeração eficiente em uma única consulta. Se os dados do BloodHound forem mais antigos que 7 dias, um aviso é exibido; mais de 30 dias aciona um aviso urgente.

Predefinições de Filtro:

  • servers - apenas sistemas operacionais Windows Server
  • workstations - apenas sistemas operacionais não servidores
  • (raw LDAP) - filtro LDAP personalizado (requer fonte LDAP)

Resolução de SID

O TaskHound resolve SIDs para nomes legíveis usando uma cadeia de fallback em várias camadas:

  1. BloodHound (se conectado) - mais rápido, sem tráfego de rede
  2. Cache - cache persistente SQLite (TTL padrão de 24h)
  3. LSARPC - consulta direta ao alvo (mais preciso para contas locais)
  4. LDAP - consulta ao controlador de domínio
  5. Global Catalog - para SIDs entre domínios/florestas```bash

Separate LDAP credentials for SID resolution

taskhound -u localadmin -p 'L0c4lP@ss!' -d . -t moe.thesimpsons.local
--ldap-user homer.simpson --ldap-password 'Doh!123' --ldap-domain thesimpsons.local

Specify Global Catalog for multi-domain

taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local -t moe.thesimpsons.local --gc-server 10.0.0.1

Disable all network-based resolution (OPSEC)

taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local -t moe.thesimpsons.local --opsec

---

## Análise offline

Analise tarefas sem acesso à rede:```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

Considerações de OPSEC

O TaskHound fornece controle granular sobre operações de rede para equilibrar furtividade e funcionalidade.

Impacto do Protocolo

ProtocoloOperaçõesSinalizador para Desativar
SMBEnumeração de tarefas (sempre usada)N/A
LDAP (389/636)Resolução de SID, detecção de Tier-0, pwdLastSet--no-ldap
Catálogo Global (3268)Resolução de SID entre domínios--no-ldap
LSARPC (pipe SMB)Resolução de SID de fallback--no-rpc
Registro Remoto (pipe SMB)Detecção do Credential Guard--no-credguard
RPC do Agendador de Tarefas (pipe SMB)Validação de credenciais--no-validate-creds
Coleta de arquivos DPAPI (SMB)Coleta de blobs de credenciais DPAPI--no-loot

Cadeia de Resolução de SID```

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

### Comportamento Padrão

O TaskHound é **muito barulhento por padrão** - todos os recursos são habilitados para máxima visibilidade. Isso o torna ideal para auditorias e avaliações abrangentes onde OPSEC não é uma preocupação:

- **Detecção de Credential Guard** - Habilitado por padrão (desative com `--no-credguard`)
- **Validação de credenciais** - Habilitado por padrão (desative com `--no-validate-creds`)
- **Coleta de DPAPI** - Habilitado por padrão (desative com `--no-loot`)
- **Resolução LDAP** - Habilitado por padrão (desative com `--no-ldap`)
- **Operações RPC** - Habilitado por padrão (desative com `--no-rpc`)

> [!WARNING]
> **As verificações de Credential Guard são ALTAMENTE detectáveis.** Como o serviço Remote Registry está parado por padrão no Windows moderno, o TaskHound **iniciará o serviço** remotamente via SCM, realizará as verificações e depois o interromperá (Assim como o secretsdump). Isso fará qualquer SOC decente acender como uma árvore de Natal. **Definitivamente use `--no-credguard` se quiser evitar isso em engajamentos!**

Falando em engajamentos: Para operações de red team/stealth, use `--opsec` para desativar todos os recursos barulhentos de uma vez. (Ou use o BOF).

### Exemplos de Uso```bash
# Full OPSEC mode (disables: LDAP, RPC, looting, credguard, validation; forces sequential scanning)
taskhound -u user -p 'pass' -d corp.local -t target --opsec

# OPSEC with jitter (random 0-5 second delays between hosts)
taskhound -u user -p 'pass' -d corp.local --targets-file hosts.txt --opsec --jitter 5

# Disable LDAP only (keep LSARPC for SID resolution)
taskhound -u user -p 'pass' -d corp.local -t target --no-ldap

# Disable RPC only (keep LDAP for SID resolution)
taskhound -u user -p 'pass' -d corp.local -t target --no-rpc

# LAPS with OPSEC (force LAPS LDAP queries despite --opsec)
taskhound -u user -p 'pass' -d corp.local --laps --opsec --force-laps

Boas Práticas para Furtividade

  1. Pré-popular dados do BloodHound - Importe os dados do domínio primeiro com --bh-live
  2. Use a flag --opsec - Desativa todas as operações ruidosas de uma vez
  3. Adicione --jitter para randomização de temporização - Evite padrões de varredura previsíveis
  4. Colete XMLs por outros meios - Analise offline com --offline
  5. Use a implementação BOF - Disponível no AdaptixC2

Referência Completa da CLI

O TaskHound usa Rich para saída de console formatada com tabelas coloridas e indicadores de progresso.``` taskhound --help

<details>
<summary>Clique para expandir o 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

Roteiro

Quando o consumo de cafeína e o tempo livre se alinham:

Concluído Recentemente

  • Autenticação por Chave de API - requisições assinadas com HMAC-SHA256
  • Suporte a LAPS - Windows LAPS + Legado + criptografado via MS-GKDI
  • Processamento Multithread - varredura paralela com limitação de taxa
  • Validação de Credenciais - verificação de validade de senha baseada em RPC
  • Múltiplos Formatos de Saída - Texto simples, JSON, CSV, HTML com layout estruturado de diretórios
  • Descoberta Automática de Alvos - enumeração de computadores baseada em LDAP
  • Modo de Disco Offline - análise de imagens de disco montadas
  • Cache Persistente - cache SQLite para dados de SID/LAPS
  • Saída de Console Rica - tabelas coloridas e indicadores de progresso
  • Suporte entre Domínios - ambientes de múltiplos domínios com relações de confiança

Planejado

  • Modularização das Etapas: Isso se tornou um gigante com opções demais. Vou corrigir isso.
  • Integração de Informações de Abuso: técnicas do MITRE ATT&CK nos nós do BloodHound
  • Mapeamentos Personalizados de Tier-0: Suporte para zonas de privilégio definidas pelo usuário no BHCE
  • Verificações Linux: Suporte para escanear sistemas operacionais baseados em *nix

Agradecimentos

E a todos que contribuíram para tornar as ferramentas de segurança ofensiva acessíveis.


TaskHound é estritamente uma ferramenta de auditoria e educacional. Use apenas em ambientes que você possui ou tem autorização explícita para testar. Sério. Não seja um babaca.

Contribuindo

PRs são bem-vindos. Metade disso foi vibe-coding induzido por cafeína, então não espere milagres.

Licença

Use com responsabilidade. Nenhuma garantia é fornecida. Consulte LICENSE para detalhes.

Categorias