Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
aws-recon — マルチスレッド対応のAWSインベントリ収集ツールで、セキュリティに関連するリソースとメタデータに焦点を当てています。 | Kitploit
ツール/GitHubGitHub/joshlarsen/aws-recon
クラウドインフラストラクチャセキュリティ偵察脆弱性分析スクリプトと自動化構成監査情報収集クラウドセキュリティDevSecOpsArchived
GitHubjoshlarsen/aws-recon

aws-recon

マルチスレッド対応のAWSインベントリ収集ツールで、セキュリティに関連するリソースとメタデータに焦点を当てています。

55850331年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
リポジトリを見る

Docker Pulls Gem Version GitHub Workflow Status (branch) AWS Service Regions

AWS Recon

Rubyで書かれたマルチスレッド対応のAWSセキュリティ重視インベントリ収集ツール。

このツールは、大量のAWSリソース属性とメタデータを効率的に収集するために作成されました。AWS環境のセキュリティ設定と態勢に関連するほぼすべての情報を収集することを目的としています。

既存のツール(例:AWS Config)では、セキュリティ態勢を正確に測定するためのカバレッジと具体性(詳細なリソース属性データ、完全に解析されたポリシードキュメント、ネストされたリソース関係など)が不足しています。

AWS Reconは、自動リトライ(ネットワーク信頼性またはAPIスロットリングによる)、大量レスポンスの自動ページング(API呼び出しあたり100リソース以上)、マルチスレッドによる並列リクエストを活用して、大規模アカウントからの収集を処理します。

プロジェクトの目標

  • 既存のツールよりも完全なリソースカバレッジ(特にECSとEKS)
  • より詳細なリソース情報(出力にネストされた関連リソースを含む)
  • 柔軟な出力(コンソール、JSON Lines、プレーンJSON、ファイル、S3バケット、標準出力)
  • 効率的(マルチスレッド、レート制限、自動リトライ、自動ページング)
  • メンテナンスと拡張が容易

AWS Recon を使用している素晴らしい企業**

  • Netflix
  • HashiCorp
  • Workday
  • Stripe
  • PayPal
  • Typeform
  • Amazon Web Services
  • Plaid
  • Expel
  • Mozilla
  • Bugcrowd
  • Dropbox
  • Pinterest
  • HackerOne
  • MuleSoft
  • Slack
  • Drata
  • Google
  • Sophos
  • Sumo Logic
  • Coalfile
  • Xero

** 使用は推奨を意味するものではありません

セットアップ

要件

AWS Reconには、ReadOnlyAccess権限を持つAWSアカウントのロールまたは認証情報が必要です。完全なAdministratorAccessは過剰な権限ですが、動作はします。SecurityAuditポリシーでは多くのサービスへのアクセスが不足しているため、十分ではありません。

Dockerを使用して実行

Dockerバージョン19.x以上を使用して、何もインストールせずに事前構築済みイメージを実行できます。

Rubyをローカルで実行

すでにRubyがインストールされている場合(2.6.xまたは2.7.x)、Ruby gemをインストールすることもできます。

インストール

AWS Reconは、Dockerコンテナ経由でローカル実行するか、Ruby gemをインストールして実行できます。

Dockerコンテナ経由で実行するには、必要なAWS認証情報をDocker run コマンドに渡します。例:

$ docker run -t --rm \
  -e AWS_REGION \
  -e AWS_ACCESS_KEY_ID \
  -e AWS_SECRET_ACCESS_KEY \
  -e AWS_SESSION_TOKEN \
  -v $(pwd)/output.json:/recon/output.json \
  darkbitio/aws_recon:latest \
  aws_recon -v -s EC2 -r global,us-east-1,us-east-2

ローカルで実行するには、最初にgemをインストールします:

$ gem install aws_recon
Fetching aws_recon-0.5.17.gem
Fetching aws-sdk-3.0.1.gem
Fetching parallel-1.20.1.gem
...
Successfully installed aws-sdk-3.0.1
Successfully installed parallel-1.20.1
Successfully installed aws_recon-0.5.17

または、bundleを使用してGemfileに追加します:

$ bundle add aws_recon
Fetching gem metadata from https://rubygems.org/
Resolving dependencies...
...
Using aws-sdk 3.0.1
Using parallel-1.20.1
Using aws_recon 0.5.17

使用方法

AWS Reconは、実行環境で現在利用可能なAWS認証情報を活用します(要件を参照)。複数のアカウントから収集する場合は、aws-vaultのようなツールを使用して異なる認証情報を管理するとよいでしょう。

$ aws-vault exec profile -- aws_recon

プレーンな環境変数でも問題なく動作します。

$ AWS_PROFILE=<profile> aws_recon

aws-vault管理の認証情報を使用してDockerコンテナから実行する場合(標準出力に出力):

$ aws-vault exec <vault_profile> -- docker run -t --rm \
  -e AWS_REGION \
  -e AWS_ACCESS_KEY_ID \
  -e AWS_SECRET_ACCESS_KEY \
  -e AWS_SESSION_TOKEN \
  darkbitio/aws_recon:latest \
  aws_recon -j -s EC2 -r global,us-east-1,us-east-2

aws-vault管理の認証情報を使用してDockerコンテナから実行し、ファイルに出力する場合、いくつかの要件を満たす必要があります。まず、Dockerが指定したパス(またはその上位パス)をバインドマウントできる必要があります。次に、出力を保存する空のファイル(例:output.json)を作成する必要があります。これは、実行時にそのファイルのみがDockerコンテナにマウントされるためです。例:

空のファイルを作成します。

$ touch output.json

aws_reconコンテナを実行し、出力ファイルを指定します。

$ aws-vault exec <vault_profile> -- docker run -t --rm \
  -e AWS_REGION \
  -e AWS_ACCESS_KEY_ID \
  -e AWS_SECRET_ACCESS_KEY \
  -e AWS_SESSION_TOKEN \
  -v $(pwd)/output.json:/recon/output.json \
  darkbitio/aws_recon:latest \
  aws_recon -s EC2 -v -r global,us-east-1,us-east-2

最初は-vまたは--verboseフラグを使用して、収集実行中のステータスとアクティビティを確認するとよいでしょう。

冗長モードでは、コンソール出力に次のように表示されます:

<thread>.<region>.<service>.<operation>

tプレフィックスは、特定のリクエストがどのスレッドで実行されているかを示します。リージョン、サービス、操作は、現在進行中のリクエスト操作とその場所を示します。

$ aws_recon -v

t0.global.EC2.describe_account_attributes
t2.global.S3.list_buckets
t3.global.Support.describe_trusted_advisor_checks
t2.global.S3.list_buckets.acl
t5.ap-southeast-1.WorkSpaces.describe_workspaces
t6.ap-northeast-1.Lightsail.get_instances
...
t2.us-west-2.WorkSpaces.describe_workspaces
t1.us-east-2.Lightsail.get_instances
t4.ap-southeast-1.Firehose.list_delivery_streams
t7.ap-southeast-1.Lightsail.get_instances
t0.ap-south-1.Lightsail.get_instances
t1.us-east-2.Lightsail.get_load_balancers
t7.ap-southeast-2.WorkSpaces.describe_workspaces
t2.eu-west-3.SageMaker.list_notebook_instances
t3.eu-west-2.SageMaker.list_notebook_instances

Finished in 46 seconds. Saving resources to output.json.

コマンドラインオプションの例

# S3とEC2のグローバルリソース、およびus-east-1とus-east-2を収集

$ AWS_PROFILE=<profile> aws_recon -s S3,EC2 -r global,us-east-1,us-east-2
# S3とEC2のグローバルリソース、およびus-east-1とus-east-2を収集

$ AWS_PROFILE=<profile> aws_recon --services S3,EC2 --regions global,us-east-1,us-east-2
# 出力をS3バケットに保存

$ AWS_PROFILE=<profile> aws_recon \
  --services S3,EC2 \
  --regions global,us-east-1,us-east-2 \
  --verbose \
  --s3-bucket my-recon-bucket
# ホームリージョンをus-east-1以外にしてS3バケットに保存

$ AWS_PROFILE=<profile> aws_recon \
  --services S3,EC2 \
  --regions global,us-east-1,us-east-2 \
  --verbose \
  --s3-bucket my-recon-bucket:us-west-2

OpenCSPM形式(NDJSON)の出力例。

$ AWS_PROFILE=<profile> aws_recon -l \
  -s S3,EC2 \
  -r global,us-east-1,us-east-2 \
  -f custom

または

$ AWS_PROFILE=<profile> aws_recon -j \
  -s S3,EC2 \
  -r global,us-east-1,us-east-2 \
  -f custom > output.json

エラー

権限に関連するAPI例外は、ほとんどの場合サイレントに無視されます。これらのエラーは通常、以下のいずれかのケースが原因です:

  • 十分な権限のないロールを使用している
  • 特定のサービスの使用を制限するSCPが設定されているアカウントをクエリしている
  • リージョン/アカウントで有効化または利用可能でないサービスをクエリしようとしている

verboseモードでは、出力に例外ログが表示されます:

t2.us-east-1.EC2.describe_subnets.0
t4.us-east-1.SSM.describe_instance_information.0
t6.us-east-1.SecurityHub.InvalidAccessException   <-----
t2.us-east-1.EC2.describe_addresses.0
t4.us-east-1.SSM.describe_parameters.0
t1.us-east-1.GuardDuty.list_detectors.0

-qコマンドラインオプションを使用すると、これらの例外を再スローして、アクセス問題のトラブルシューティングを容易にできます。

Traceback (most recent call last):
arn:aws:sts::1234567890:assumed-role/role/my-audit-role is not authorized to perform:
 codepipeline:GetPipeline on resource: arn:aws:codepipeline:us-west-2:1234567890:pipeline
 (Aws::CodePipeline::Errors::AccessDeniedException)

例外を引き起こした正確なAPI操作は、スタックトレースの最終行に示されています。必要なアクセスを解決できない場合は、-xまたは--not-servicesでそれらのサービスを除外するか、-qオプションを使用せずに収集を続行します。

スレッド

AWS Reconは、世界中のエンドポイントに対して多数のAPI呼び出しを行う際のI/O課題を克服するために、複数のスレッドを使用します。

IAM、Shield、Supportなどのグローバルサービスの場合、リクエストはマルチスレッド化されません。S3モジュールは、各バケットが完全なメタデータを収集するためにいくつかの追加呼び出しを必要とするため、マルチスレッド化されています。

リージョナルサービスの場合、リージョン内のサービスごとにスレッド(スレッド制限まで)が生成されます。デフォルトでは最大8スレッドが使用されます。アカウントのリソースが多くのリージョンに分散している場合、-t X(Xはスレッド数)でスレッドを増やすと速度が向上する可能性があります。

パフォーマンス

AWS Reconは、新規/空のアカウントでも、すべての標準リージョン(GovCloud、中国リージョンを除く20リージョン)でサポートされているサービスをクエリするだけで、最低約2,000回のAPI呼び出しを行います。デフォルト(8)よりも多くのスレッドを有効にすると、大規模アカウントでAPIレート制限(スロットリング)に遭遇する可能性が非常に高くなります。

ツールをダウンロード