
Amazon Web Services環境のセキュリティテスト用に設計されたAWSエクスプロイテーションフレームワーク。
ヘルプの入手先: Rhino Security Labs Discord、または Stack Overflow
メンテナンス元: Rhino Security Labs
Pacuは、オープンソースのAWSエクスプロイテーションフレームワークであり、クラウド環境に対する攻撃的なセキュリティテスト向けに設計されています。Rhino Security Labsによって作成・メンテナンスされており、PacuはペネトレーションテスターがAWSアカウント内の設定ミスを悪用することを可能にします。モジュールを使用することで機能を簡単に拡張できます。現在のモジュールは、ユーザーの権限昇格、IAMユーザーのバックドア化、脆弱なLambda関数への攻撃など、さまざまな攻撃を可能にします。
Pacuは比較的軽量なプログラムであり、Python3.7+ と pip3 を使用していくつかのPythonライブラリをインストールするだけで済みます。
pip3 install -U pip
pip3 install -U pacu
pacu
これはKali Linuxを使用する場合の推奨方法です。pipはデフォルトではインストールされなくなったためです。これにより、公式リリースに含まれていない可能性のある最新のアップデートを含むPacuがインストールされます。
pipx install git+https://github.com/RhinoSecurityLabs/pacu.git
より詳細でユーザーフレンドリーなインストール手順については、Wikiのインストールガイドを参照してください。
docker run -it rhinosecuritylabs/pacu:latest
docker run -it --entrypoint /bin/sh rhinosecuritylabs/pacu:latest
警告: このコマンドを実行すると、起動時にローカルのAWS設定ファイルがDockerコンテナにマウントされます。これは、コンテナにアクセスできるユーザーは誰でもホストコンピュータのAWS認証情報にアクセスできることを意味します。
docker run -it -v ~/.aws:/root/.aws rhinosecuritylabs/pacu:latest
Pacuを初めて起動すると、新しいセッションを開始して名前を付けるように求められます。このセッションは、AWSキーペアや、さまざまなモジュールの実行から得られたデータを保存するために使用されます。Pacuでは、それぞれ異なるAWSキーとデータのセットを持つ任意の数のセッションを持つことができ、いつでもセッションを再開できます(ただし、セッションを切り替えるには現在再起動が必要です)。
モジュールはAWSキーを必要とします。このキーは、AWS環境への最小限のアクセスを許可し、アクセスキーIDとシークレットアクセスキーで構成されます。セッションのキーを設定するには、set_keysコマンドを使用し、プロンプトに従ってキーエイリアス(参照用のニックネーム)、AWSアクセスキーID、AWSシークレットアクセスキー、およびAWSセッショントークン(使用している場合)を指定します。
行き詰まった場合は、helpで利用可能なコマンドのリストが表示されます。
list は、現在のセッションで設定されたリージョンで利用可能なモジュールを一覧表示します。help module_name は、指定されたモジュールの該当するヘルプ情報を返します。run module_name は、指定されたモジュールをデフォルトのパラメータで実行します。run module_name --regions eu-west-1,us-west-1 は、指定されたモジュールをeu-west-1およびus-west-1リージョンに対して実行します(--regions引数をサポートするモジュールの場合)。pacu --help はヘルプメニューを表示しますpacu --session <セッション名> は、セッションを必要とするコマンドで使用するセッションを設定しますpacu --list-modules は利用可能なすべてのモジュールを一覧表示します(セッションは不要)pacu --pacu-help はpacuのヘルプウィンドウを表示します(セッションは不要)pacu --module-name <モジュール名> は、アクションを実行するモジュールの名前です。モジュールの実行または情報取得が可能ですpacu --exec は --module-name で指定されたモジュールを実行しますpacu --module-info は --module-name で指定されたモジュールの情報を取得しますpacu --data <サービス名 || all> はローカルのSQLAlchemyデータベースにクエリを実行し、列挙された情報を取得しますpacu --module-args="<arg1> <value> <arg2> <value>" は実行中のモジュールにオプションのモジュール引数を提供しますpacu --set-regions <リージョン1 リージョン2 || all> はセッションで使用するリージョンを設定します。リージョンはスペースで区切るか、すべてのリージョンには を入力しますPacuは、プラグインモジュール の範囲を使用して、AWS環境内での列挙、権限昇格、データ流出、サービス悪用、ログ操作を支援します。新しいモジュールへの貢献やアイデアを歓迎します。
継続的なAWS製品の開発に対応するため、Pacuは拡張性を考慮してゼロから設計されています。共通の構文とデータ構造により、モジュールの構築と拡張が容易になります。モジュール間でAWSリージョンを指定したり、冗長な権限チェックを行う必要はありません。ローカルのSQLiteデータベースを使用して取得したデータを管理・操作し、APIコール(および関連するログ)を最小限に抑えます。レポートと攻撃監査もフレームワークに組み込まれています。Pacuはコマンドのログ記録とエクスポートを通じて文書化作業を支援し、テストプロセスのタイムライン構築を助けます。
Pacuフレームワーク自体のバグ報告、さまざまなモジュールのテストやフィードバック、そしてフレームワークの改善に役立つ批判的なフィードバックを常に歓迎しています。Pacuの使用、テスト、改善、または口コミによる拡散など、あらゆる形でのサポートを非常に感謝しています。
Pacuフレームワーク自体に直接貢献することに興味がある場合は、コード規約とgit-flowに関する注意事項について、貢献ガイドライン をお読みください。
Pacu用の独自モジュールを作成することに興味がある場合は、 モジュール開発 のWikiページを参照してください。新しい機能を開発したら、ぜひご連絡ください。Pacuに付属するコアコレクションに新しいモジュールを追加したいと考えています。
チュートリアルと完全なドキュメントについては、Pacu wiki を参照してください。
allpacu --whoami は現在のユーザーに関する情報を取得します