
FestIn - 公開S3バケットスキャナー

FestIN - パワフルなS3バケットファインダー&コンテンツ発見FestInは、ドメインから出発してオープンなS3バケットを発見するためのツールです。
以下の多くのテストを実行し、情報を収集します:
S3バケットの列挙と発見のためのS3ツールは多数あります。その中には優れたものもありますが、FestInが持つ完全な機能リストを持つものはありません。
FestInを優れたものにする主な機能:
Python 3.8以上が必要です!
$ pip install festin
$ festin -h
$ docker run --rm -it cr0hn/festin -h
$ festin -h
usage: __main__.py [-h] [--version] [-f FILE_DOMAINS] [-w] [-c CONCURRENCY] [--no-links] [-T HTTP_TIMEOUT] [-M HTTP_MAX_RECURSION] [-dr DOMAIN_REGEX] [-rr RESULT_FILE] [-rd DISCOVERED_DOMAINS] [-ra RAW_DISCOVERED_DOMAINS]
[--tor] [--debug] [--no-print] [-q] [--index] [--index-server INDEX_SERVER] [-dn] [-ds DNS_RESOLVER]
[domains [domains ...]]
Festin - the powered S3 bucket finder and content discover
positional arguments:
domains
optional arguments:
-h, --help show this help message and exit
--version show version
-f FILE_DOMAINS, --file-domains FILE_DOMAINS
file with domains
-w, --watch watch for new domains in file domains '-f' option
-c CONCURRENCY, --concurrency CONCURRENCY
max concurrency
HTTP Probes:
--no-links extract web site links
-T HTTP_TIMEOUT, --http-timeout HTTP_TIMEOUT
set timeout for http connections
-M HTTP_MAX_RECURSION, --http-max-recursion HTTP_MAX_RECURSION
maximum recursison when follow links
-dr DOMAIN_REGEX, --domain-regex DOMAIN_REGEX
only follow domains that matches this regex
Results:
-rr RESULT_FILE, --result-file RESULT_FILE
results file
-rd DISCOVERED_DOMAINS, --discovered-domains DISCOVERED_DOMAINS
file name for storing new discovered after apply filters
-ra RAW_DISCOVERED_DOMAINS, --raw-discovered-domains RAW_DISCOVERED_DOMAINS
file name for storing any domain without filters
Connectivity:
--tor Use Tor as proxy
Display options:
--debug enable debug mode
--no-print doesn't print results in screen
-q, --quiet Use quiet mode
Redis Search:
--index Download and index documents into Redis
--index-server INDEX_SERVER
Redis Search ServerDefault: redis://localhost:6379
DNS options:
-dn, --no-dnsdiscover
not follow dns cnames
-ds DNS_RESOLVER, --dns-resolver DNS_RESOLVER
comma separated custom domain name servers
デフォルトでは、FestInはコマンドラインパラメータとして開始ドメインを受け入れます:
> festin mydomain.com
しかし、ドメインのリストを含む外部ファイルを設定することもできます:
> cat domains.txt
domain1.com
domain2.com
domain3.com
> festin -f domains.txt
FestInはドメインに対して多くのテストを実行します。各テストは同時に実行されます。デフォルトの同時実行数は 5 です。同時実行テストの数を増やしたい場合は、オプション -c を設定します。
> festin -c 10 mydomain.com
同時実行テストの数が多いと、一部のWebサイトで「アラーム」が発生する可能性があるため注意してください。
FestInには、S3バケットへのリンクを発見するための小さなクローラーが組み込まれています。クローラーは以下のオプションを受け入れます:
-T または --http-timeout):HTTP接続のタイムアウトを設定します。分析したいドメインのWebサイトが遅い場合は、この値を増やすことをお勧めします。デフォルトのタイムアウトは 5秒 です。-H または --http-max-recursion):この値はクロールの再帰に制限を設定します。そうしないと FestIn がインターネット全体をスキャンすることになります。デフォルト値は3です。つまり、以下のようにのみ追跡します:domain1.com -> [リンク] -> domain2.com -> [リンク] -> domain3.com -> [リンク] -> 最大再帰深度に到達。停止。-dr または --domain-regex):クローラーをこの正規表現に一致するドメインのみに制限するために設定します。例:
> echo "cdn" > blacklist.txt
> echo "photos" >> blacklist.txt
> festin -T 20 -M 8 -B blacklist.txt -dr .mydomain. mydomain.com
注意:-dr(または--domain-regex)は有効なPOSIX正規表現のみを受け入れます。
*mydomain.com* -> 有効なPOSIX正規表現ではありません
.mydomain\.com. -> 有効なPOSIX正規表現です
FestInが実行されると、多くの有用な情報が発見されます。S3バケットだけでなく、他のプローブでも同様です。例えば:
FestInを使用した後、発見された情報(ドメイン、リンク、リソース、他のバケットなど)を nmap などの他のツールの入力として使用できます。
そのため、FestInには発見された情報を保存するための3つの異なるモードがあり、それらを組み合わせることができます:
FestIn 結果ファイル(-rr または --result-file):このファイルには、見つかったバケットごとに1行のJSONが含まれます。各JSONには、元のドメイン、バケット名、およびバケットのオブジェクトのリストが含まれます。-rd または --discovered-domains):このファイルには1行に1つのドメインが含まれます。これらのドメインはクローラー、DNS、またはS3プローブによって発見されますが、ユーザーおよび内部フィルターに一致するドメインのみが保存されます。-ra または --raw-discovered-domains):このファイルには、FestInによって発見されたすべてのドメインがフィルターなしで1行に1つ含まれます。このオプションは後処理と分析に便利です。例:
> festin -rr festin.results -rd discovered-domains.txt -ra raw-domains.txt mydomain.txt
そして、Nmapとの連鎖:
> festin -rd domains.txt && nmap -Pn -A -iL domains.txt -oN nmap-domains.txt
FestInにはオプション --tor が組み込まれています。このパラメーターを使用するには、127.0.0.1 のポート 9050 でローカルのTorプロキシが実行されている必要があります。
> tor &
> festin --tor mydomain.com
FestInが実行する一部のテストにはDNSが含まれます。以下のオプションをサポートしています:
-dn または --no-dnsdiscover)-ds または --dns-resolver):カスタムDNSサーバーを設定します。多くのテストを実行する予定がある場合は、ブラウザで使用するDNSサーバーとは異なるDNSサーバーを使用する必要があります。例:
> festin -ds 8.8.8.8 mydomain.com
FestInはオープンなS3バケットを発見するだけでなく、すべてのコンテンツをダウンロードして全文検索エンジンに保存することもできます。つまり、バケットのコンテンツに対して全文クエリを実行できるのです!
FestInは全文検索エンジンとしてオープンソースプロジェクト Redis Search を使用します。
この機能には2つのオプションがあります:
--index):検索エンジンへのインデックス化を有効にするには、このフラグを設定する必要があります。--index-server):サーバーがlocalhost:6379とは異なるIP/ポートで実行されている場合にのみ、このオプションを設定する必要があります。例:
> docker run --rm -p 6700:6379 redislabs/redisearch:latest -d
> festin --index --index-server redis://127.0.0.1:6700 mydomain.com
オプション `--index-server` にはプレフィックス **redis://** が必要なことに注意してください。
場合によっては、FestInを停止せずに、新しいドメインを検査したり、外部ツールが新しいドメインを発見したときに起動したいことがあります。
FestInは 監視 モードをサポートしています。つまり、FestInが起動し、新しいドメインをリッスンします。FestInに新しいドメインを「送信」する方法は、ドメインファイルを使用することです。このファイルの変更を監視します。
この機能は、dnsrecon などの他のツールと FestIn を組み合わせるのに便利です。
例:
> festin --watch -f domains.txt
別のターミナルで次のように記述できます:
> echo "my-second-domain.com" >> domains.txt
> echo "another-domain.com" >> domains.txt
domains.txt に追加された新しいドメインごとに、FestIn が起動します。
DnsReconを使用
この例で選択したドメインは target.com です。
> dnsrecon -d target.com -t crt -c target.com.csv
このコマンドで、target.comに関連する他のドメインを発見します。これにより、成功の可能性を最大化できます。
FestInに与える準備> tail -n +2 target.com.csv | sort -u | cut -d "," -f 2 >> target.com.domains
このコマンドで、1行に1つのドメインを含むファイルを生成します。これが FestIn が必要とする入力です。
> festin -f target.com.domains -c 5 -rr target.com.result.json --tor -ds 212.166.64.1 >target.com.stdout 2>target.com.stderr
この例では、結果ファイルは次のとおりです:
複数のドメインの処理を容易にするために、これを自動化する簡単なスクリプト examples/loop.sh を提供しています。
FestInをDnsRecon結果とともに使用
target.com をデフォルトオプションで実行し、結果をtarget.com.resultファイルに保存:
> festin target.com -rr target.com.result.json
> festin target.com -c 5 -rr target.com.result.json --tor -ds 212.166.64.1
Q: AWSが私のIPを禁止する A:
AWS S3に対して多くのテストを実行すると、AWSはあなたのIPをブラックリストに追加します。その後、FestIn またはブラウザで 任意の S3バケットにアクセスしようとするたびに ブロックされます。
FestIn を使用する際は、プロキシを設定することをお勧めします。

彼らはリアルタイムで企業のリスクエクスポージャーを分析・評価します。 Webサイト
このプロジェクトは BSDライセンス の下で配布されています。