VP-08 · Cloud and SaaS forensics

A leaked AWS key and a storage leak: CloudTrail, S3 access logs and a public bucket

1,651 CloudTrail records, 1,021 S3 server access log lines and an IAM credential report for one AWS account over two and a half days, with the code host's notice in local time. Sixteen questions follow a build key from a public repository to a role session, 294 customer contracts read, a bucket made public, an archive downloaded by three outside addresses, a second key left behind and a refused attempt to stop the trail.

Synthetic training data. The organisation, people, devices, serial numbers and times are invented.

01Brief

Lodos Lojistik A.S. runs its customer portal on AWS (account 111122223333, eu-central-1). Its build pipeline deploys with the IAM user ci-deploy from the runner address 192.0.2.40; the user's access key has not been rotated since June 2024. In the night of 7 to 8 August 2026 a code host warned that the key had been published in a public repository. Before containment at 09:05 UTC on 8 August, an examiner exported CloudTrail, the S3 server access logs of two buckets and the IAM credential report. The notice is in local time.

Internal audit asks:

  1. Was the key used by anyone other than the pipeline, and how soon after it was published?
  2. Which customer files left the account, by which path, and who downloaded them?
  3. What did the session leave behind, and what did it try and fail to do?

Answer from the files only. Name keys, sessions, addresses, buckets and objects; do not name a person or a group behind the outside addresses. The repository, the outside hosts and the contents of the objects were not examined.

02Evidence files

FileContentsSHA-256
README.txtScenario and file listThe brief in English and Turkish, the rules and the file list.5545426a73956f1bffc9296ebae483a43cf61896fedfe87914d9509b81fdfc94
acquisition-log.txtCollection logWhat was collected, when and with which role, the containment steps after the window, and the known addresses of the pipeline, the office and the portal.10988ea8dea162058f2ae846427482cb52d5dedc57360ac09a3f2fb848cef9af
export-metadata.txtExport parametersWindow, row count, time basis and scope of the four exports. Read it first: CloudTrail data events cover one bucket only.8854e417500bcef8af248e1878a924d40f5df16ce49e96acaa63ae4d4c729315
cloudtrail-events.jsonlCloudTrail records1,651 records, one JSON object per line, in UTC: management events for every region and S3 data events for lodos-musteri-arsiv.9f0d1571cbec7b2d862758879579bc44b6855c80c122004e2918611fe882b341
s3-access-logs.logS3 server access logs1,021 access log records of lodos-musteri-arsiv and lodos-yedek-paylasim in UTC, including unauthenticated requests.f222b86325e2d4e4a5b47ea60edf0c151ee2ba2d02667c99e1f56aee034929f4
iam-credential-report.csvIAM credential reportSeven principals at 08:40 UTC on 8 August: passwords, MFA, both access keys, when each was created and last used.7f06b2e5745c775354c5e06fe384fed6c498599d67eb4073d2d1c645aa3a0e46
gizli-anahtar-uyarisi.txtSecret scanning noticeThe code host's e-mail: repository, file, commit, push time and detection time, in local time with no zone written.748c68871ebde473e9bc8f15a97a492d738be7e65526f1530a51833d3ade1139
manifest.txtHash manifestSHA-256 of every file above except itself. Verify before you start.(the manifest itself)

The hashes above are copied from manifest.txt. Recompute them yourself, for example with the hash tool or sha256sum.

You can also examine these files on the examination workbench: hashes, one UTC timeline, sessions and a findings draft in the browser.

03Before you start

  • Verify every file against manifest.txt and write the result in your examination log before you read anything else.
  • Write the time basis next to every time you copy out. The exports are UTC; the notice is local time.
  • Follow access key IDs, not user names: a role session has its own key, issued in an AssumeRole record.
  • Count objects by key and only where the request succeeded. Write the filter you used next to every number.

Keep your notes in F-02 Evidence intake form and F-04 Examination log.

04Questions

Answer from the files only. Each answer is checked in this browser; nothing is sent anywhere, and your answers are kept on this device until you clear them. 16 questions, 30 points.

  1. Q011 pointcloudtrail-events.jsonlmanifest.txt

    8 hex characters

  2. Q022 pointscloudtrail-events.jsonlacquisition-log.txt

    YYYY-MM-DD HH:MM:SS, UTC

  3. Q032 pointsgizli-anahtar-uyarisi.txtcloudtrail-events.jsonlexport-metadata.txt

    A whole number of minutes

  4. Q042 pointscloudtrail-events.jsonl

    A whole number

  5. Q051 pointcloudtrail-events.jsonl

    A role name

  6. Q062 pointscloudtrail-events.jsonl

    An access key ID

  7. Q072 pointscloudtrail-events.jsonl

    The GetObject records of the night name the role, not ci-deploy. What ties them to the leaked key?

  8. Q082 pointscloudtrail-events.jsonls3-access-logs.log

    A whole number

  9. Q092 pointscloudtrail-events.jsonlexport-metadata.txt

    The session's 24 GetObject requests under kimlik-belgeleri/ were refused with an errorMessage about kms:Decrypt. What should the report say?

  10. Q102 pointscloudtrail-events.jsonl

    YYYY-MM-DD HH:MM:SS, UTC

  11. Q112 pointscloudtrail-events.jsonls3-access-logs.logexport-metadata.txt

    CloudTrail has no PutObject into lodos-yedek-paylasim during the night. What do you conclude?

  12. Q122 pointss3-access-logs.log

    YYYY-MM-DD HH:MM:SS, UTC

  13. Q132 pointss3-access-logs.log

    A whole number

  14. Q142 pointscloudtrail-events.jsonliam-credential-report.csv

    An access key ID

  15. Q152 pointscloudtrail-events.jsonl

    At 22:21:40 the leaked key called cloudtrail:StopLogging on lodos-org-trail. What happened to logging?

  16. Q162 pointscloudtrail-events.jsonls3-access-logs.logiam-credential-report.csvgizli-anahtar-uyarisi.txt

    Which sentence could the examiner sign from these files alone?

Score 0 / 30

05Your finding

Last step: write one paragraph that answers the three audit questions as a finding. Your instructor marks it against four criteria:

  • Every time carries its basis; the notice is converted from local time.
  • The report follows access key IDs through AssumeRole and says how the role session is tied to the leaked key.
  • Objects are counted by key and only where the request succeeded; refused requests are reported as attempts.
  • The report states the data event scope and uses the access log for the bucket CloudTrail does not cover.
  • Containment covers both keys, the role's trust policy, the public bucket and the three downloading addresses.

How findings are phrased →

Contact and service requests

Contact us about examination services related to this page, support for expert witnesses, or collaboration. Please do not attach evidence files or personal data to your email.

Contact page →