loading
loading
Scanners
Black Hat Arsenal hunting for phantom IAM users behind Bedrock keys, with offline key decode and org scan.
overview
Long-lived API keys for AWS Bedrock and the Claude Platform are backed by IAM principals that do not look like the users an operator creates. They sit outside the normal review, they are rarely rotated, and they are the credential class behind LLMjacking, where someone else runs inference on your account and you meet the bill at the end of the month.
The tool covers three jobs through --mode. decode-key parses a leaked ABSK or AEAA string offline, so an incident responder can learn which account and principal a pasted key belongs to without sending it anywhere. scan enumerates one account, and org-scan walks an organization by assuming a cross-account role, with --org-accounts to narrow the sweep and --org-role when the role name is not the default.
Credentials arrive as vault secrets on the aws ports or as an AWS profile, and output is findings.jsonl. The AWS Bedrock Phantom IAM workflow pairs the scan with an offline decode, a service control policy and detection pack, and a dry-run cleanup plan, so response is planned in the same run that found the problem.
use cases
Run decode-key on a pasted ABSK or AEAA string to learn the account and principal behind it during an incident, entirely offline.
Scan an account for the principals that Bedrock and Claude Platform key creation leaves behind, which ordinary IAM review tends to skip.
Use org-scan with a cross-account role to cover every account, or narrow the pass with an explicit account list.
Schedule the scan so an unfamiliar inference principal is a finding rather than a line item you reconcile at month end.
reference
| Name | Type | Flag | Description |
|---|---|---|---|
| mode | STRING | --mode | decode-key (offline IR) | scan | org-scan |
| key | STRING | --key | Optional ABSK paste for IR decode, or vault secret BH_BEDROCK_API_KEY |
| service | STRING | --service | bedrock | claude-platform | all (scan) |
| org | BOOLEAN | --org | Set to true for an org-wide AssumeRole scan |
Showing key inputs. bedrock-keys-security exposes 11 inputs in total.
| Name | Type | Flag | Description |
|---|---|---|---|
| mode | STRING | --mode | decode-key (offline IR) | scan | org-scan |
| key | STRING | --key | Optional ABSK paste for IR decode, or vault secret BH_BEDROCK_API_KEY |
| service | STRING | --service | bedrock | claude-platform | all (scan) |
| region | STRING | --region | AWS region (default us-east-1) |
| profile | STRING | --profile | AWS profile name for scan or org-scan (alternative to key ports) |
| org | BOOLEAN | --org | Set to true for an org-wide AssumeRole scan |
| org-role | STRING | --org-role | Cross-account role name (default OrganizationAccountAccessRole) |
| org-accounts | STRING | --org-accounts | Comma-separated account IDs to include |
| aws-access-key-id | STRING | --aws-access-key-id | Vault secret BH_AWS_ACCESS_KEY_ID (Library default) |
| aws-secret-access-key | STRING | --aws-secret-access-key | Vault secret BH_AWS_SECRET_ACCESS_KEY (Library default) |
| aws-session-token | STRING | --aws-session-token | Vault secret BH_AWS_SESSION_TOKEN (Library default, optional) |
example
# offline incident response on a pasted keybedrock-keys-security --mode decode-key --key ABSK... # sweep every account in the organizationbedrock-keys-security --mode org-scan --org true --service all{ "tool": "bedrock-keys-security", "mode": "scan", "account": "123456789012", "principal": "BedrockAPIKey-a1b2c3", "service": "bedrock", "finding": "phantom IAM user with no rotation and no owner tag", "severity": "high", "remediation": "Revoke the key, then apply the SCP from the prevention pack"}guidance
Reach for bedrock-keys-security when the question is which IAM principals your Bedrock and Claude Platform keys created, or what a leaked key belongs to. Use cloudlist for general cloud asset inventory, and use trufflehog when you are looking for the key strings themselves in code.
Multi-cloud asset inventory. Broad coverage of what exists; no model of the phantom principals a Bedrock key creates.
Finds and verifies secrets in repositories and other sources. It locates the leaked key; this tool tells you what the key is attached to.
Enumerates public cloud resources from outside. Different vantage point, and it does not read IAM at all.
workflows
faq
related
BHUSA Arsenal TLS/SSH crypto inventory with post-quantum readiness signals and CBOM-shaped output.
Reflection triage for parameter URLs during recon.
CMS detection and version fingerprinting.
Signature-driven web application scanner.
OWASP Joomla vulnerability scanner for CMS flaws and misconfigurations.
Bundled web server checks for dangerous files and outdated software.
An account or organization scope feeds bedrock-keys-security, which reports phantom IAM principals and decodes leaked keys offline.
Facts on this page come from the live Trickest tool library.