Skip to content

This tool is not affiliated with, endorsed by or sponsored by Amazon Web Services, Inc. or Amazon.com, Inc. AWS, Amazon Web Services, CloudTrail and GuardDuty are trademarks of Amazon.com, Inc. or its affiliates. Other names are trademarks of their respective owners.

CloudTrail · VPC Flow Logs · S3 · GuardDuty · IAM

Was our AWS account compromised?

Drop your CloudTrail logs (plus VPC Flow Logs, S3 access logs, GuardDuty findings or the IAM credential report) and get a verdict, the findings, an incident timeline and a remediation checklist. Analysed in your browser with WebAssembly — nothing is uploaded.

Drop your AWS log exports here

CloudTrail .json.gz files or a whole AWSLogs/ folder, event history (JSON or CSV), CloudTrail Lake CSV, VPC Flow Logs, S3 server access logs, GuardDuty findings JSON, the IAM credential report — loose, in folders or in a ZIP. Multi-GB exports are streamed.

A synthetic export of a fictional incident (leaked access key → backdoor admin → GuardDuty disabled → S3 data theft → crypto-mining). No real data.

No logs yet? How to get them

100% client-side: logs are parsed by WebAssembly in your browser and never uploaded.

How to get your logs

About two minutes with the AWS CLI. Collect as much as you can, as early as you can: attackers delete trails, and event history only keeps 90 days. Keep the files as they are (compressed .json.gz is fine).

  1. 1. CollectRun one command, or download from the console
  2. 2. DropThe aws-logs folder, its files or a ZIP, right here
  3. 3. Stays localParsed in your browser, never uploaded

CloudTrail trail in S3 — best sourceRecommended

Needs: AWS CLI v2 signed in with read access to the trail's S3 bucket (ReadOnlyAccess is enough; plus kms:Decrypt if the bucket uses SSE-KMS).

bash / zsh / CloudShell
B=$(aws cloudtrail describe-trails --query 'trailList[0].S3BucketName' --output text) && aws s3 sync "s3://$B" ./aws-logs/cloudtrail --exclude '*' --include "*/CloudTrail/*/$(date -u +%Y/%m)/*"

PowerShell
$b = aws cloudtrail describe-trails --query "trailList[0].S3BucketName" --output text; aws s3 sync "s3://$b" .\aws-logs\cloudtrail --exclude "*" --include "*/CloudTrail/*/$(Get-Date -UFormat '%Y/%m')/*"

Downloads this month's logs of the first trail into aws-logs/cloudtrail: every region, and every account of an organisation trail. For an earlier month, replace the date part with e.g. 2026/08. Several trails? aws cloudtrail describe-trails lists their buckets.

No trail? Download the event history

Needs: Console access with permission to view CloudTrail event history.

  1. CloudTrail console → Event history.
  2. Remove the “Read-only: false” filter so read events (the attacker's reconnaissance) are included, and set the time range.
  3. Download events → Download as JSON (CSV works too).
  4. Repeat in every region you use: event history is per region.

No CLI installed? Run the commands in AWS CloudShell (console toolbar), zip the folder, then Actions → Download file:

bash / zsh / CloudShell
zip -r aws-logs.zip aws-logs

Gotchas

  • Event history keeps only 90 days of management events, per region, without S3 data events: a trail's bucket is always better.
  • Collect before you contain: attackers stop trails and disable GuardDuty, and the console's default “Read-only: false” filter hides their reconnaissance.
  • Include a few quiet days before the incident: “new IP” and “new region” compare with the first day of the logs. AWS timestamps are UTC.

How do you know if an AWS account was compromised?

Almost every AWS compromise leaves its trace in CloudTrail: the API call that confirmed a stolen key works, the burst of List and Describe calls mapping the account, the IAM user created as a backdoor, the GuardDuty detector deleted, the GPU instances launched in a region nobody uses. The hard part is finding those few events among millions.

This tool reads your exports in the browser, runs a set of detections written as reviewable rules (field matchers, thresholds, MITRE ATT&CK techniques), and gives a verdict — Clean, Suspicious or Compromised — with the evidence rows behind every finding, a timeline of the incident, a pivot on every principal, key, IP and resource, and a remediation checklist.

What it detects

  • Initial access: long-term access keys suddenly used from a new IP address, root account use, console sign-ins without MFA, bursts of failed sign-ins.
  • Reconnaissance: GetCallerIdentity with a long-term key, enumeration bursts (dozens of different List/Describe/Get calls in minutes), AccessDenied storms, Kali / Pacu / CloudFox user agents.
  • Persistence and privilege escalation: CreateUser, access keys created for another user, AdministratorAccess or *:* policies, console passwords, role trust changes, new SAML / OIDC providers, public Lambda functions, EC2 user data and key pairs.
  • Defense evasion: CloudTrail stopped or deleted, GuardDuty, Config, Security Hub disabled, S3 access logging and VPC Flow Logs removed, security groups opened to the internet.
  • Data theft: buckets made public, snapshots shared with other accounts, bulk S3 downloads (CloudTrail data events or S3 access logs), large outbound transfers in VPC Flow Logs, secrets read in bulk.
  • Impact and cost abuse: GPU instances launched, quota increase requests, activity in regions not used before, connections to mining pools, bulk deletions, KMS keys scheduled for deletion.

Limitations

  • Detections point, they do not prove: every finding shows its evidence so you can confirm it. Legitimate administration can look like an attack, and a careful attacker may stay under the thresholds.
  • Without S3 data events or S3 access logs, reading data from buckets is invisible; without VPC Flow Logs, so is network exfiltration.
  • “New IP” and “new region” detections compare with the first day of the logs provided: include a few quiet days before the incident.
  • No IP geolocation or ASN lookup (that would need a database or an online service): new countries are not detected yet.
  • ALB, CloudFront and Parquet logs are recognised but not analysed yet.

FAQ

Are my logs uploaded anywhere?

No. The analyzer is Rust compiled to WebAssembly and runs in a Web Worker in your browser. Files are streamed from your disk and decompressed locally; there is no upload endpoint.

How do I investigate a leaked AWS access key?

Deactivate the key first, then drop the CloudTrail logs covering its lifetime. Pivot on the key in the Entities tab: the tool flags the first use from a new IP address, the calls made from there (recon, IAM changes, data access) and anything the key created — users, keys, instances — so you can clean up everything, not just the key.

Can it handle a multi-gigabyte CloudTrail export?

Yes. Files are read in chunks and gzip is decompressed as a stream, so memory stays bounded. Every record goes through the detections; for very large inputs the event explorer keeps the notable events and all evidence.

Which rules does it use?

About fifty detections written as data (field matchers, sliding-window thresholds, aggregates) with MITRE ATT&CK technique ids, in the spirit of Sigma rules. They are reviewable in the open-source rule file and cover the common AWS attack paths: leaked keys, IAM persistence, defense evasion, data theft and crypto-mining.

The verdict says compromised — what now?

Contain first: deactivate the leaked keys, delete the backdoor users and keys, stop the attacker's instances — the remediation checklist lists them from the findings. Preserve the logs before changing anything else, then scope the incident. AWS's Security Incident Response Guide describes the full process.

Is this an Amazon product?

No. It is an independent tool, not affiliated with, endorsed by or sponsored by Amazon Web Services.

What to do next

Use the remediation checklist the tool builds from the findings (containment first), keep a copy of the original logs, then follow AWS's official incident-response documentation:

What CloudTrail, VPC Flow Logs and S3 access logs do not record, where baselines fail, and how to write honest conclusions when evidence is missing.
A fictional AWS incident investigated from its logs: leaked key, recon, backdoor admin, GuardDuty deleted, 320 S3 objects taken, GPU mining in Singapore.
Reading VPC Flow Logs in an investigation: key fields, egress volume per destination, mining-pool ports, what flow logs never record and the data traps.

This tool is not affiliated with, endorsed by or sponsored by Amazon Web Services, Inc. or Amazon.com, Inc. AWS, Amazon Web Services, CloudTrail and GuardDuty are trademarks of Amazon.com, Inc. or its affiliates. Other names are trademarks of their respective owners.