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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ツール/GitHubGitHub/nccgroup/cowcloud
クラウドインフラストラクチャセキュリティペネトレーションテストフレームワーク脆弱性スキャナースクリプトと自動化情報収集クラウドセキュリティDevSecOpsユーティリティとフレームワーク
GitHubnccgroup/cowcloud

cowcloud

リコン(偵察)および脆弱性スキャンのワークロードを分散するためのサーバーレスAWSソリューション。Web UIからタスクを送信し、EC2ワーカーがNmapなどのツールを使用したカスタムPythonスクリプトを実行します。

リポジトリを見る
6023年前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

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

CowCloud

AWSでワークロードを分散するサーバーレスソリューション

CowCloudは、もともとリコン(偵察)ツールや脆弱性スキャンを分散実行するために作成されました。例えば、バグバウンティハンターによる利用が考えられます。このソリューションは、AWSでワークロードを分散するために必要な基盤作業からエンドユーザーを抽象化することを目的としています。CowCloudは、ユーザーに対して、タスクを表示・作成するための使いやすいWebインターフェースを提供します。作成されたタスクは、ワーカーノード(EC2インスタンス)上で実行されるPythonコードによって後で消費されます。PythonコードとEC2 AMIの両方をカスタマイズすることが想定されています。

例として、Nmapスキャンを実行したいとします。その場合、AMIカタログからAMIを選択し、Terraform/ec2_module/ec2_module.tf 内の image_id フィールドを更新するだけです。次に、ec2py/template.py を更新して、Nmapスキャンの引数(-Pn、-p 443など)をカスタマイズする必要があります。最後に、Terraform/ec2_module/ec2_module.tf 構成ファイル内の user_data フィールドを更新して、Nmapとその依存関係をインストールする必要があります。

もう1つの選択肢として、複数の商用ツールをインストールして実行する場合があります。その場合は、独自のEC2インスタンスまたはスナップショットを作成するとよいでしょう。この場合、すべての依存関係をインストールしてライセンスをアクティベートし、このAMIをワーカー用のゴールデンイメージとして使用できます。

Screenshot

CowCloudは、次の3つの主要コンポーネントに分けられます。

  • Terraform構成
  • React JSフロントエンド
  • ワーカーノード上で実行されるPythonアプリ

以下が主な機能です。

  • このソリューションはAmazon Cognito(ユーザープール付き)を使用して、ユーザーがWebアプリにサインアップおよびサインインできるようにします。
  • React JSアプリをフロントエンドアプリケーションとして使用します。フロントエンドにはタスクとワーカーが表示され、新しいタスクを追加できます。
  • Lambda統合によるAPI Gatewayを使用して、CORSを処理し、一部のLambda関数とやり取りしてDynamoDBから情報を作成・取得します。
  • SSLとキャッシュを管理するためのCloudFront。
  • Webアプリへのアクセスを制限するためのルールとIPアドレス条件を持つWAF(これはオプションです)。
  • 実行結果とフロントエンドアプリを保存するS3バケット。Pythonアプリ用のコードリポジトリとして別のS3バケットが使用されます。
  • EC2インスタンス(ワーカー)でタスクを実行する中核となるPythonアプリ。ツールのアクションは、次のようないくつかのステップに分けられます。
    • Pythonアプリがメッセージを消費する
    • スキャンを実行する
    • 出力を圧縮する
    • 出力をAES256-CBCとパスワードで暗号化する
    • 結果をS3バケットにアップロードする
  • 新しいワーカーが作成されるたびに、PythonリポジトリがS3バケットからプルされ、それに含まれるec2pyファイルが実行されます。
  • 新しいワーカーが作成されるたびに、EIPをインスタンスに自動的に割り当てることができます(これはオプションです)。
  • Lambdaエラー、ec2app Pythonツールで発生する例外、API Gateway、Dockerログなど、さまざまなソースからのログを保存するCloudWatchロググループ。
  • DynamoDB上のワーカーのステータスを変更し、タスクの実行中にワーカーが終了しないようにするライフサイクルフック。
  • キューに入れられたタスクの数と設定セットに基づくオートスケーリング戦略(アルゴリズムの仕組みの詳細については、autoscalingStrategy.py を参照してください)。
  • DynamoDBのタスクテーブルにリンクされたLambdaイベントソースマッピング。データベース内の項目が増減したときにオートスケーリングアクションを管理するためのものです。
  • SNSを使用して新しいメッセージ(タスク)をSQSに送信します。これらのメッセージは後でワーカーノードによって読み取られます。
  • Step Functionsサービスを使用してカウントダウンを作成し、retention_time の有効期限が切れた後にCloudWatchロググループを削除します。
  • ec2pyがDockerコンテナ内でツール(例:Nmap)を実行する場合、stdoutをCloudWatchに記録し、フロントエンドから表示できます。template.py ファイルの extra_docker_params 変数を確認してください(これについては、以下の「管理者/メンテナー」セクションで説明します)。
  • フロントエンドには、実行中にタスクを中断するためのボタンと、Dockerコンテナのログを表示するための別のボタンがあります。
  • フロントエンドコードまたはec2pyフォルダー内の何かを変更する場合は、それらの変更をS3バケットに反映し、フロントエンドのキャッシュを無効化する必要があります。これらはすべて、setup.bat/sh を実行するだけで実行できます。

ダイアグラム:

Deprecated

Terraform構成内で使用可能なオプションは次のとおりです。

Terraformを実行すると、新しいファイル(config.js)が作成されます。これには、React JSアプリがCognitoユーザープールディレクトリに対して認証するために必要な構成が含まれています。インフラストラクチャがデプロイされた後、Reactアプリをビルドしてbuildフォルダーをアップロードする必要があります。さらに、Pythonコードをコードリポジトリとして機能するS3バケットにアップロードする必要があります。このプロセスは setup.bat と setup.sh の2つのスクリプトで自動化されているため、これを心配する必要はありません。これはこの段階を要約したものです。


インストール手順:

インフラストラクチャはデフォルトで us-east-1 リージョンにデプロイされますが、これはTerraformフォルダー内の locals.tf ファイルで変更できます。

手順:

  • AWSアカウント内に管理者権限を持つユーザーを作成する必要があります。
  • (オプション)必要なツールを備えた「ゴールデン」AMIを作成します。
  • Terraformフォルダーに移動し、variables.tf を更新します。ami 変数は、既存のEC2 AMI(ゴールデンAMIまたはEC2カタログのAMI)を指す必要があります。
  • お使いのコンピューターにaws-cli、NPM、Yarn、Terraformをダウンロードしてインストールします。
  • aws configure でAWSアカウントを使用するようにaws-cliを構成します。このコマンド aws sts get-caller-identity を実行して、正しく構成されていることを確認してください。正しく構成されていれば、エラーは返されません。
  • (オプション)EC2インスタンス用のSSHキーペアを生成します。ワーカーにSSH接続する予定がない場合は、それに応じてec2_moduleモジュールを更新してください。 aws ec2 create-key-pair –key-name cowCloud –query “cowCloud” –output text > ec2_module/cowCloud.pem
root@kitploit:~
git clone [email protected]:nccgroup/cowcloud.git
# Deploy the infra
cd cowcloud
cd Terraform
terraform init
terraform plan
terraform apply --auto-approve
  • Terraformの出力に表示される値(website)をメモします。これはフロントエンドにアクセスするためのURLです。
  • インフラストラクチャがデプロイされたら、setup.sh または setup.bat のいずれかを実行して、フロントエンドとec2pyコードをビルドしてアップロードするだけです。

これで準備完了です。サインアップして、サインインし、新しいタスクを作成しましょう!

エンドユーザーフロー

すべてがデプロイされ、フロントエンドにアクセスできるようになったら、次の手順に従ってください。

  • ウェブサイトにアクセスし、サインインボタンをクリックします。 (サインアップするには、有効なメールアドレス、ユーザー名、パスワードの提出が必要です)
  • メールの受信トレイに届いたリンクをクリックして、メールを検証します。
  • メールアドレス/ユーザー名とパスワードでサインインします。
  • 「add a new task」というタブをクリックし、JSONドキュメントを更新してターゲットドメインを指定し、フォームを送信します。すると、タスクID、リンク、パスワードが以下に表示されます。
  • ダッシュボードに戻り、新しいEC2インスタンスが起動され、ワーカーノードによってタスクが実行されるのを待ちます。
  • タスクがDockerコンテナ内で実行される場合、stdoutはWebインターフェースを介して表示できます。
  • タスクが完了すると、タスクはアーカイブテーブルに移動されます。提供されたリンクにアクセスし、結果をダウンロードし、指定されたパスワードで復号化して、ツールの出力または結果を解凍できます CowCloud\ec2py> python .\decypt_file.py 2e8cf87c-5389-11ec-abec-d6d1f378b18d
  • タスクが完了すると、ワーカーは自動的に終了します。

Screenshot

管理者/メンテナー

  • インフラストラクチャのデプロイと保守を担当する担当者は、Webアプリを介して提供されるエンドユーザー入力を適切にサニタイズし、検証する必要があります。言い換えれば、ec2py/template.py 内のコードがOSコマンドインジェクションに対して脆弱でないことを確認してください。 この点は、システムの最も重要な側面であるため強調されています。ワーカーの権限と露出の範囲を制限し、関連するリスクを軽減するために特別な注意が払われています。それでも、システムセキュリティのこの側面に注意を払うのは管理者の責任です。 EC2インスタンスプロファイルにアタッチされたロールポリシーは、Terraformフォルダー内のreadme.mdファイルに一覧表示されています

    • さらに、workers_manager.py と呼ばれるLambda関数があり、ec2pyツールによって呼び出され、より特権的なアクションを実行します。これらのアクションはLambda関数に移動され、EC2プロファイルにアタッチされたロールのアクセスキーが侵害された場合のリスクを制限しました。それでもIMDSv2で動作します。 Lambda関数 workers_manager.py にアタッチされたロールポリシーは、Terraformフォルダー内のreadme.mdファイルに一覧表示されています
  • タスクの実行中にstdoutを取得してWebインターフェースで表示したい場合は、ec2py/template.py に移動し、次の手順に従ってください。

    • extra_docker_params 変数には、DockerコンテナがstdoutをCloudWatchロググループに送信するために必要な情報が含まれています。フロントエンドでstdoutを表示したい場合は、この変数をコマンドラインに含める必要があります。
    root@kitploit:~
    cmd = f"docker run {extra_docker_params} --rm -v {tmp_folder}target.txt:/root/Tools/reconftw/target.txt -v {tmp_folder}reconftw.cfg:/root/Tools/reconftw/reconftw.cfg -v {tmp_folder}Recon/:/root/Tools/reconftw/Recon/ six2dez/reconftw:main -l target.txt -w".split(' ')
    

アンインストール

この簡単なコマンド terraform destroy --auto-approve を実行してインフラストラクチャを破棄できます。これにより、既存のリソースがすべて削除されます。 注: このプロセスを中断しないでください。中断すると、一部の要素がクラウドに残り、それらを手動で特定して削除する必要が生じる可能性があります。


エンドユーザーフロー

Screenshot

コアフロー

Screenshot


開発者向けメモ

  • ec2pyアプリに変更を加えた場合は、変更をS3リポジトリと同期することを忘れないでください。その後、現在のインスタンスを終了し、最新の変更を取り込むために新しいインスタンスを再起動する必要があります。
  • ゲートウェイモジュールのコンポーネントが変更された場合は、REST APIを再デプロイする必要があるかもしれません。そのためには、次のコマンドを実行します。
    • terraform destroy --auto-approve -target module.gateway_module.aws_api_gateway_deployment.lambda
    • terraform apply --auto-approve -target module.gateway_module

スペシャルサンクス:

  • Sabrina MM https://www.linkedin.com/in/sabrina-marisol-martinez-a4bb54181/
  • Ricardo Martinez Martin (NCC Group)
  • Conor McErlane (NCC Group)
  • Simon Harraghy (NCC Group)
ツールをダウンロード
variabledefault valuedescription
eipenablefalsetrueの場合、ソリューションはワーカーノードの起動時に関連付けられたElastic IPアドレスのプールを割り当てます。予約するEIPの数は、次の式を使用して計算されます:sum([var.max_workers, var.maximum_number_of_terminating_machines])
cidr_whitelist[]ファイアウォールで特定のIP範囲のみを許可するCIDRホワイトリスト。例: ["195.95.131.0/24"]
max_workers and max_queued_tasks_per_workermax_workers: 3, max_queued_tasks_per_worker: 10これらの2つの設定は、スケールインまたはスケールアウトのタイミングを決定します。例: max_workers 3、max_queued_tasks_per_worker 10。これは、タスク数が10を超えると新しいEC2インスタンスが作成されることを意味します。タスクが20を超える場合は、最大3つのEC2インスタンスがワークロードの分散に使用可能になります(このスクリプト Terraform/dynamodb_module/autoscalingTool/autoscalingStrategy.py に含まれるアルゴリズムを確認してください)。
maximum_number_of_terminating_machines2終了するように設定されているが、プロセス/スキャンがタスクを完了するまで保留されるインスタンスの数を定義します。
heartbeat_timeout900ワーカーが保留される時間を定義します。この時間が経過すると、ワーカーは強制終了されます。
instance_typet2.microhttps://aws.amazon.com/ec2/instance-types/
aminullhttps://aws.amazon.com/es/amazon-linux-ami/
retention_time7ログの保持期間(日数)と、アーカイブテーブルの項目(完了したタスク)の有効期限を設定します。