Skip to content
KitploitKITPLOIT
ツールブログ
Log in
提出
ツールブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
reconswarm — クラウドの力でリコンを拡張する | Kitploit
ツール/GitHubGitHub/renatus-cartesius/reconswarm
偵察ペネトレーションテストクラウドセキュリティDevSecOpsサブドメイン列挙
GitHubrenatus-cartesius/reconswarm

reconswarm

クラウドの力でリコンを拡張する

リポジトリを見る
9206ヶ月前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有

ReconSwarm

Architecture

ReconSwarm は、分散型セキュリティテスト向けに設計されたモジュール型偵察自動化フレームワークです。クラウドインフラストラクチャをプロビジョニングし、並列の偵察パイプラインを実行し、最小限の設定オーバーヘッドで結果を収集します。

ReconSwarm は、手動でのインフラ管理を行わずにスケーラブルで自動化された偵察ワークフローを必要とする、バグバウンティハンター、ペネトレーションテスター、DevSecOps エンジニア、セキュリティ研究者に適しています。

特徴

Targets flow

  • 並列実行のためのターゲット分割 — 最終的にコンパイルされたターゲットリストは、偵察タスクを並列実行するためにワーカーに分割されます。
  • 複数のターゲットタイプ — ターゲットリストは、crt.sh 応答からのドメイン、外部リスト(HTTP/HTTPS URL)、単純なリスト(インライン YAML 配列)、シェルコマンド出力など、複数の要素タイプで構成されます。これにより、任意のツール(cook、shodan、gau、katana など)と柔軟に連携できます。
  • クラウド非依存のアーキテクチャ — 複数のクラウドプロバイダー(現在は AWS、GCP、Yandex Cloud、Digital Ocean をサポート)との容易な統合を可能にします。
  • 柔軟なパイプラインステージ — 現在 exec(コマンド実行)と sync(ファイル・ディレクトリ同期)操作をサポートする拡張可能なステージシステム。
  • ステップ内のテンプレートコンテキスト — 実行コンテキストからステップにメタデータを渡す柔軟な方法。

必須機能(未実装)

  • Web UI — 高速な操作のためのシンプルな Web ベースのユーザーフレンドリー UI。
  • ステージからのリアルタイムログ — stdout/stderr をキャプチャし、gRPC ストリーミングでクライアントに送信。
  • ワーカーへのリモートシェル — RS サーバーを介してクライアントからワーカーへの SSH 接続を開く。
  • 発見ステージ — 前のステージ(例:nuclei JSON 結果)から受信したデータを処理し、etcd に保存し、通知を行うステージ。

アーキテクチャ

ReconSwarm は、クラウドプロビジョニング、リモートシステム制御、パイプライン実行、設定管理の間で明確な関心の分離を持つモジュール型アーキテクチャに従います。

クラウドプロバイダー抽象化

ReconSwarm はクラウドプロビジョナーに識別共用体型パターンを使用します。provisioner.type フィールドがアクティブなプロバイダー設定を決定します。

provisioner:
  type: yandex_cloud  # 識別子フィールド
  yandex_cloud:       # type: yandex_cloud のときに有効
    iam_token: "${YC_TOKEN}"
    # key_path: "./sa_auth_key.json"
    folder_id: "${YC_FOLDER_ID}"
    # ... プロバイダー固有の設定

追加のクラウドプロバイダーは、Provisioner インターフェースを実装し、ファクトリに新しいタイプを追加することで統合できます。

パイプラインステージシステム

ステージは、ワーカー VM 上で操作を実行する拡張可能なコンポーネントです。

  • exec — テンプレートサポート付きでシェルコマンドを実行。
  • sync — リモート VM からローカルマシンにファイルまたはディレクトリを SFTP 経由でコピー(ファイルかディレクトリかを自動検出)。

すべてのステージフィールドはテンプレートレンダリングをサポートします。新しいステージタイプを追加して機能を拡張できます。

ステートレスサーバーとフォールトトレランス

ReconSwarm サーバーは完全にステートレスです。すべての状態は etcd に永続化されます。

  • パイプライン状態 — 各パイプラインのステータス、進捗、エラー。
  • ワーカー状態 — VM 情報、現在のタスク、ステータス。
  • SSH 鍵 — VM アクセス用に生成された鍵ペア。

このアーキテクチャにより以下が可能です。

機能説明
水平スケーリングロードバランサーの背後で複数のサーバーインスタンスを実行。
ダウンタイムゼロの再起動パイプラインの状態を失わずにサーバーを再起動。
クラッシュリカバリ新しいサーバーインスタンスが前のインスタンスの続きから実行。
状態検査デバッグと監視のために etcd を直接クエリ。

高可用性構成:

                    ┌─────────────┐
                    │   Client    │
                    └──────┬──────┘
                           │
                    ┌──────▼──────┐
                    │Load Balancer│
                    └──────┬──────┘
              ┌────────────┼────────────┐
              │            │            │
       ┌──────▼──────┐ ┌───▼───┐ ┌──────▼──────┐
       │  Server 1   │ │Server2│ │  Server 3   │
       └──────┬──────┘ └───┬───┘ └──────┬──────┘
              │            │            │
              └────────────┼────────────┘
                           │
                    ┌──────▼──────┐
                    │ etcd cluster│
                    └─────────────┘

すべてのサーバーは同じ etcd クラスターを共有し、任意のリクエストを処理できます。パイプライン実行中にサーバーがクラッシュした場合、別のサーバーが etcd から状態を読み取って実行を継続できます。

注: 現在の実装では、etcd からロードした後、メモリ内でパイプラインを実行します。パイプライン再開を含む完全なクラッシュリカバリは将来のリリースで計画されています。

インストール

git clone <repository>
cd reconswarm
go mod download
task build

設定

ReconSwarm はサーバー設定とパイプライン設定を分離します。

設定タイプファイル説明
サーバーreconswarm.yamlクラウドプロバイダー、etcd、ワーカープール設定。
パイプライン別の YAML ファイルターゲットとステージ。-f フラグで指定。

サーバー設定

サーバー設定は reconswarm.yaml に保存されます(CONFIG_PATH 環境変数で設定可能)。すべての文字列値は ${VAR} または $VAR 構文を使用した環境変数の展開をサポートします。

# Server settings
server:
  port: 50051

# Etcd connection for state management
etcd:
  endpoints:
    - "localhost:2379"
  dial_timeout: 5  # seconds
  username: ""     # optional, supports ${ETCD_USER}
  password: ""     # optional, supports ${ETCD_PASSWORD}

# Cloud provisioner (discriminated union)
provisioner:
  type: yandex_cloud  # Provider selector

  # Yandex Cloud configuration (active when type: yandex_cloud)
  yandex_cloud:
    iam_token: "${YC_TOKEN}"
    # key_path: "./sa_auth_key.json"
    folder_id: "${YC_FOLDER_ID}"
    default_zone: "ru-central1-b"
    default_image: "fd8b1cmhmncn7lt4tqn4"
    default_username: "root"
    default_cores: 2
    default_memory: 2      # GB
    default_disk_size: 20  # GB

# Worker pool settings
workers:
  max_workers: 5
  setup_commands:
    - "apt update"
    - "apt install -y docker.io"

パイプライン設定

パイプライン設定は別の YAML ファイルに保存し、-f フラグで指定します。ラップ形式とアンラップ形式の両方をサポートします。

ラップ形式(推奨):

# pipeline.yaml
pipeline:
  targets:
    - value: "example.com"
      type: crtsh
    - value: ["sub1.example.com", "sub2.example.com"]
      type: list
  stages:
    - name: "Run scanner"
      type: exec
      steps:
        - "nmap -sC -sV -iL {{.Targets.filepath}} -oN /opt/recon/scan.txt"
    - name: "Collect results"
      type: sync
      src: "/opt/recon/scan.txt"
      dest: "./results/{{.Worker.Name}}.txt"

アンラップ形式(同様にサポート):

# pipeline.yaml
targets:
  - value: "example.com"
    type: crtsh
stages:
  - name: "Run scanner"
    type: exec
    steps:
      - "nmap -iL {{.Targets.filepath}} -oN /opt/recon/scan.txt"

環境変数

設定値は、以下の2つの形式で環境変数の置換をサポートします。

  • ${VAR} — 中括弧内の完全な変数名
  • $VAR — 単純な変数名

環境変数が設定されていない場合、リテラル文字列(${VAR} または $VAR を含む)がそのまま使用されます。

Yandex Cloud のセットアップ

Yandex Cloud との統合には、提供されているセットアップスクリプトを使用します。

  1. Yandex Cloud CLI のインストール(まだインストールされていない場合):

    # 公式の Yandex Cloud ドキュメントに従って CLI をインストール
    
  2. Yandex Cloud CLI の設定:

    yc config profile create <profile-name>
    yc config set cloud-id <your-cloud-id>
    yc config set folder-id <your-folder-id>
    
  3. 認証情報のエクスポート:

    source ./secrets-setup.sh
    

    このスクリプトは以下をエクスポートします。

    • YC_TOKEN — 認証用の IAM トークン
    • YC_FOLDER_ID — リソース管理用のフォルダ ID
    • YC_CLOUD_ID — クラウド ID(必要な場合)
  4. 設定で参照:

    provisioner:
      type: yandex_cloud
      yandex_cloud:
        iam_token: "${YC_TOKEN}"
        # key_path: "./sa_auth_key.json"
        folder_id: "${YC_FOLDER_ID}"
    

secrets-setup.sh スクリプトは、実行するたびに新しい IAM トークンを自動生成するため、認証情報をハードコードせずに安全な認証が可能です。

Google Cloud Platform のセットアップ

  1. サービスアカウントの作成:

    • GCP コンソール > IAM & 管理 > サービスアカウントに移動
    • 「Compute 管理者」ロールを持つサービスアカウントを作成
    • JSON キーを作成しダウンロード
  2. 環境の設定:

    export GCP_PROJECT_ID="your-project-id"
    export GCP_CREDENTIALS_PATH="/path/to/key.json"
    
  3. 設定で参照:

    provisioner:
      type: gcp
      gcp:
        project_id: "${GCP_PROJECT_ID}"
        credentials_path: "${GCP_CREDENTIALS_PATH}"
        default_zone: "us-central1-a"
    

AWS のセットアップ

  1. IAM ユーザーの作成:

    • AWS コンソール > IAM > ユーザーに移動
    • 「AmazonEC2FullAccess」権限を持つユーザーを作成
    • アクセスキー ID とシークレットアクセスキーを生成
  2. 環境の設定:

    export AWS_ACCESS_KEY_ID="your-access-key"
    export AWS_SECRET_ACCESS_KEY="your-secret-key"
    
  3. 設定で参照:

    provisioner:
      type: aws
      aws:
        region: "us-east-1"
        access_key_id: "${AWS_ACCESS_KEY_ID}"
        secret_access_key: "${AWS_SECRET_ACCESS_KEY}"
        default_zone: "us-east-1a"
    

DigitalOcean のセットアップ

  1. トークンの生成:

    • DigitalOcean コントロールパネル > API に移動
    • 「書き込み」スコープを持つパーソナルアクセストークンを生成
  2. 環境の設定:

    export DO_TOKEN="your-token"
    
  3. 設定で参照:

    provisioner:
      type: digitalocean
      digitalocean:
        token: "${DO_TOKEN}"
        default_region: "nyc1"
    

ターゲットタイプ

crt.sh 列挙:

targets:
  - value: "example.com"
    type: crtsh

手動リスト:

targets:
  - value: ["sub1.example.com", "sub2.example.com"]
    type: list

ステージ設定

ツールをダウンロード