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:
- Was the key used by anyone other than the pipeline, and how soon after it was published?
- Which customer files left the account, by which path, and who downloaded them?
- 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
| File | Contents | SHA-256 |
|---|---|---|
| README.txtScenario and file list | The brief in English and Turkish, the rules and the file list. | 5545426a73956f1bffc9296ebae483a43cf61896fedfe87914d9509b81fdfc94 |
| acquisition-log.txtCollection log | What 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 parameters | Window, row count, time basis and scope of the four exports. Read it first: CloudTrail data events cover one bucket only. | 8854e417500bcef8af248e1878a924d40f5df16ce49e96acaa63ae4d4c729315 |
| cloudtrail-events.jsonlCloudTrail records | 1,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 logs | 1,021 access log records of lodos-musteri-arsiv and lodos-yedek-paylasim in UTC, including unauthenticated requests. | f222b86325e2d4e4a5b47ea60edf0c151ee2ba2d02667c99e1f56aee034929f4 |
| iam-credential-report.csvIAM credential report | Seven 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 notice | The code host's e-mail: repository, file, commit, push time and detection time, in local time with no zone written. | 748c68871ebde473e9bc8f15a97a492d738be7e65526f1530a51833d3ade1139 |
| manifest.txtHash manifest | SHA-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.
Q011 pointcloudtrail-events.jsonlmanifest.txt
8 hex charactersQ022 pointscloudtrail-events.jsonlacquisition-log.txt
YYYY-MM-DD HH:MM:SS, UTCQ032 pointsgizli-anahtar-uyarisi.txtcloudtrail-events.jsonlexport-metadata.txt
A whole number of minutesQ042 pointscloudtrail-events.jsonl
A whole numberQ051 pointcloudtrail-events.jsonl
A role nameQ062 pointscloudtrail-events.jsonl
An access key IDQ072 pointscloudtrail-events.jsonl
Q082 pointscloudtrail-events.jsonls3-access-logs.log
A whole numberQ092 pointscloudtrail-events.jsonlexport-metadata.txt
Q102 pointscloudtrail-events.jsonl
YYYY-MM-DD HH:MM:SS, UTCQ112 pointscloudtrail-events.jsonls3-access-logs.logexport-metadata.txt
Q122 pointss3-access-logs.log
YYYY-MM-DD HH:MM:SS, UTCQ132 pointss3-access-logs.log
A whole numberQ142 pointscloudtrail-events.jsonliam-credential-report.csv
An access key IDQ152 pointscloudtrail-events.jsonl
Q162 pointscloudtrail-events.jsonls3-access-logs.logiam-credential-report.csvgizli-anahtar-uyarisi.txt
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.