
Beyond valid credentials: How exposed AWS keys are tested for Amazon Bedrock access
Datadog Security Labs describes how attackers test stolen AWS credentials for Amazon Bedrock access. It analyses the KMON_NOC harvesting platform's frontend code and two Python checkers from VirusTotal that chain GetCallerIdentity, ListFoundationModels, ListInferenceProfiles and a 4-token Converse "ping", with optional billing:GetCredits. Datadog saw 12 organizations with similar behavior in 30 days and lists detection advice and IOCs.
What it is
Datadog Security Labs documents how stolen AWS keys are tested for Amazon Bedrock access. The post covers the KMON_NOC harvesting platform (active since 31 August 2026, probing over 80 Datadog Cloud SIEM customers) and two unrelated Python checkers found on VirusTotal. Credentials that can invoke models are worth more because LLM access can be resold. The post cites Unit 42 research on "token-jacking" proxy services that sell stolen model capacity below retail price.
How it works
The checker Datadog walks through (SHA-256 923641364ef0ce3a6f1d944890244082b8c7f29c9600c0433b2a0ca9822c0608) runs these steps per credential, across multiple regions:
sts:GetCallerIdentityto get the account ID, ARN and user ID.bedrock:ListFoundationModelsto confirm the endpoint is reachable and to learn model IDs and providers.ListInferenceProfiles, when invocation testing is on.- Bedrock runtime
Conversewith the prompt "ping" andmaxTokensof 4, which keeps cost near zero. Any successful response counts as usable access. If a model rejects the request, it retries once with noinferenceConfig. - Optionally
billing:GetCredits(the-creditoption, a 364-day lookback). It reads remaining balance, expiry and whether the credits cover Bedrock, which gives the account a financial value. The second script (c9335bb8a21bd2c568d03b040fb86a0e72145691e54a33495ee0cfaac55835dc) lacks this step.
The script defaults to cheap models (haiku, nova-lite, titan-text-lite), and --models overrides this. Its --anthropic mode targets Claude models. If AWS returns the "use case details" error, it stops trying Claude models in that region, because the error blocks every Claude model on the account. Successful credentials are stored in plaintext.
KMON_NOC's frontend validates keys with SigV4-signed GetCallerIdentity (through a proxy), then runs a separate Bedrock check. It counts a keysWithBedrock statistic. It also extracts AWS_BEARER_TOKEN_BEDROCK (regex: 40 or more characters of A-Za-z0-9/+=) and offers reveal and copy controls.
What to do
- Investigate unexpected Bedrock activity, especially from a new source or an identity with no AI usage history.
- Watch both
ConverseandInvokeModel. Earlier harvesting platforms calledInvokeModelrepeatedly against different Anthropic models. - Look for
ListFoundationModelscalls across several regions, particularly failed ones with no laterListInferenceProfilesorConverse. This was the most common pattern across 12 organizations in the last 30 days. - Look for
Conversecalls returning AccessDenied on Anthropic models. One case targetedanthropic.claude-opus-5,anthropic.claude-fable-5andanthropic.claude-fable-5-1. - Treat
AWS_BEARER_TOKEN_BEDROCKvalues as credentials to rotate if exposed. - Datadog lists IOC IPs seen since 31 August 2026 (residential proxies, VPNs, hosting). It advises using them only alongside the AWS activity above, because they are low confidence alone.
Caveats
- Datadog could not see KMON_NOC's validation logic or its AWS activity. The platform's behavior is inferred from frontend code only.
- Datadog cannot link the VirusTotal scripts to the telemetry from the 12 organizations. It describes a recurring pattern, not attribution.
- The fetched text shows no list of Cloud SIEM rules or the IP list, so those are not reproduced here.
Organisations named here
- AWS_BEARER_TOKEN_BEDROCK
- billing:GetCredits
- Converse API
- GetCallerIdentity
- InvokeModel
- KMON_NOC
- ListFoundationModels
- ListInferenceProfiles
Technologies named here
- Amazon Bedrock
- Datadog Cloud SIEM
- VirusTotal
- AWS Bedrock
- AWS
- AWS IAM
- Python
- Anthropic
- Unit 42
- Amazon Bedrock access checker (Python script, SHA-256 923641364ef0ce3a6f1d944890244082b8c7f29c9600c0433b2a0ca9822c0608)
- Amazon Bedrock Converse API
- Amazon Bedrock InvokeModel API
- Amazon Bedrock ListFoundationModels
- Amazon Bedrock ListInferenceProfiles
- Anthropic Claude models on Amazon Bedrock (anthropic.claude-opus-5, anthropic.claude-fable-5, anthropic.claude-fable-5-1 targeted in one observed case)
- AWS access keys and credentials
- AWS_BEARER_TOKEN_BEDROCK (Amazon Bedrock API keys)
- AWS Billing GetCredits API
- AWS SES/SNS
- AWS SES/SNS APIs (GetSendQuota, GetSMSAttributes, GetSMSSandboxAccountStatus)
- AWS Signature Version 4 (SigV4)
- AWS STS GetCallerIdentity
- KMON_NOC
Techniques named here
- Credential validation
- LLMjacking
- Anthropic use case form detection
- Bedrock API key harvesting
- Low-cost invocation testing
- Multi-region Bedrock access probing
- Promotional credit enumeration
- Token-jacking resale (Unit 42)
Threat actors named here
- KMON_NOC (credential harvesting platform observed targeting customers since August 31, 2026; hosts associated with it scanned and probed for credentials in over 80 Datadog Cloud SIEM customers)
- LLMjacking
Related in Cloud & Infra


Orca Security: GenAI Risks in Cloud Environments
.png)
Google API keys keep working after you delete them
