
マルチクラウドIAM権限列挙ツール。現在対応:
Cliamはシンプルなクラウド権限識別ツールです。CLIには2つの主要コンポーネントがあります。列挙される権限のほとんどは、list、describe、またはgetの権限です。
enumerate: 特定の権限を列挙するために使用します(推奨)最新のリリースをダウンロードしてください。DEVタグは最新ですが、安定していません。
ローカルでバイナリをビルドするには、cliディレクトリに移動してmake devを実行してください。
Cliamは、サービスがよく知られている環境変数から取得した認証情報、またはCLIから一般的に必要なフラグを渡すことで動作します。
enumerateオプションのほとんどは具体的でなければならないため、コマンド補完を設定することを強くお勧めします。 補完を生成するには、cliam completion [shell]を使用し、シェルの補完ディレクトリに従って設定してください。
Usage:
cliam [command]
Available Commands:
aws Enumerate AWS credentials for their permissions.
azure Enumerate Azure credentials for their permissions.
completion Generate the autocompletion script for the specified shell
firebase Enumerate Firebase permissions.
gcp Enumerate GCP service accounts for their permissions.
help Help about any command
version Show version and build info
Flags:
-h, --help help for cliam
--max-threads int Maximum number of threads to use. (default 5)
--request-timeout int Timeout for each request in seconds. (default 5)
--save-output Save output to file on success
-v, --verbose Enable verbose output.
渡された認証情報を使用して署名付きリクエストを行うためにAWS REST APIを使用します。これにより速度が大幅に向上しますが、新しい権限の追加に対応するのが少し難しくなります。スケールの問題は、AWSがサービスレベルで3〜4種類のリクエストを使用することです。
AWSプロファイル、フラグ、またはデフォルトのAWS環境変数(AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY、オプションでAWS_SESSION_TOKENなど)から認証情報を取得することをサポートしています。
❯❯ cliam aws
Enumerate AWS credentials for their permissions.
Usage:
cliam aws [command]
Available Commands:
enumerate Enumerate permissions for specified AWS resources.
service-group Enumerate permissions for groups of AWS resources.
Flags:
--access-key-id string AWS Access Key ID
-h, --help help for aws
--known-value stringToString AWS Resource Name. When known-resource-name is set, additional permissions where a resource needs to be specified is enumerated. (default [])
--profile string AWS Profile. When profile is set, access-key-id, secret-access-key, and session-token are ignored.
--region string AWS Region (default "us-east-1")
--secret-access-key string AWS Secret Access Key
--session-json string AWS Session JSON file. This flag attempts to read session information from the specified file. Helpful with temporary credentials.
--session-token string AWS Session Token
Global Flags:
--max-threads int Maximum number of threads to use. (default 5)
--request-timeout int Timeout for each request in seconds. (default 5)
-v, --verbose Enable verbose output.
AWS用のCliamは、既知の値を必要とする特定の権限の列挙もサポートしています。例えば、awscliを使用する場合、aws lambda get-function --function-name <関数名> で関数を取得できます。
これは、以下を使用できるcliamに直接対応します:
cliam aws enumerate lamda --known-value function-name=<function_name>
これにより、function-nameを有効な引数として受け取るlambdaのすべての権限が列挙されます。これは他のAWSリソースでも機能します。
AWSプロファイルからすべてのサーバーレスリソースをブルートフォース
❯❯ cliam aws service-group serverless --profile=my-profile
取得した一時セッショントークンを使用してすべてのec2権限をチェック
❯❯ cliam aws enumerate ec2 --session-json=creds.json
Where creds.json has
{
"Type" : "AWS-HMAC",
"AccessKeyId" : "ASIA...",
"SecretAccessKey" : "...",
"Token" : "...",
}
s3、iam、ec2の権限を列挙
❯❯ cliam aws enumerate s3 iam ec2
GCPは特定のサービスアカウントJSONファイルからの列挙をサポートしています。GCP環境変数。GOOGLE_APPLICATION_CREDENTIALSとCLOUDSDK_CORE_PROJECTからの認証情報もサポートされています
GCP列挙には2つのモードがあるため、cloudresourcemanagerが有効な場合はenumerateを使用し、特定の権限を列挙するにはrestを使用してください。
cliam gcp --help
Enumerate GCP service accounts for their permissions.
Usage:
cliam gcp [command]
Available Commands:
bruteforce Enumerate all GCP permissions
enumerate Enumerate specified GCP permissions
rest GCP permissions using the REST API
Flags:
-h, --help help for gcp
--project-id string GCP project id
--region string GCP Region (default "us-central1")
--service-account string GCP service account path
--zone string GCP Zone (default "us-central1-a")
Global Flags:
--max-threads int Maximum number of threads to use. (default 5)
--request-timeout int Timeout for each request in seconds. (default 10)
Use "cliam gcp [command] --help" for more information about a command.
Azure列挙は、サービスプリンシパル(クライアントIDとシークレット経由)、証明書MSI(MSIトークン経由)、またはデフォルト認証を含むさまざまな認証方法をサポートしています。また、一般的なAzure環境変数もすべてサポートしています。
❯❯ cliam azure
Enumerate Azure credentials for their permissions.
In most cases, a valid Azure Subscription ID is required. If one
is not provided, the CLI will attempt to lookup available subscriptions
and use the first one.
Usage:
cliam azure [command]
Available Commands:
access-token Get access token to use with REST apis
enumerate Enumerate permissions for specified azure resources.
service Enumerate permissions for a specific group of azure services.
subscriptions List all subscriptions
cliamはデバッグ出力を表示するための2つの環境変数をサポートしています