VP-08 · Eğitmen notları

Sızan AWS anahtarı ve depolama sızıntısı: CloudTrail, S3 erişim günlükleri ve herkese açılan kova

Paketi bir grupla yürütmek için gereken her şey: 150 dakikalık bir plan, her sorunun cevabı ile nerede bulunduğu ve olağan hata, cevapların kurduğu kronoloji, puanlama ve kapanışta vurgulanacak noktalar.

Bu sayfa cevapları içerir. Katılımcılar önce paket sayfasından çalışmalıdır.

01Oturum planı

DakikaBölümNe yapılır
0–15Brifing, kurallar ve bütünlük (S01)export-metadata.txt dosyasını yüksek sesle okuyun: hangi kovada veri olayı var, hangi zaman biçimleri geçiyor, hangi kaynak yerel saatte.
15–50Dışarıdaki anahtar (S02–S05)Kullanıcıya değil erişim anahtarı kimliğine göre süzün. Bildirimi UTC'ye çevirin ve retleri sayın.
50–95Kovanın içine (S06–S09)Geçici anahtarı AssumeRole'den izleyin. Satırları değil anahtarları sayın; reddedilen okumaları ayırın; erişim günlüğünün örtüştüğünü denetleyin.
95–130Hesabın dışına (S10–S15)Herkese açık ilkeyi bulun, sonra CloudTrail'in sustuğu yerde erişim günlüğüne geçin. İkinci anahtarı bulun ve reddedilen StopLogging kaydını okuyun.
130–150İmzalanan cümle (S16)Her katılımcı bulguyu ve gerektirdiği sınırlamayı yazar, sonra c cümlesi ve örnek bulguyla karşılaştırır.

Malzemeler: her katılımcının bilgisayarında paket dosyaları, paket sayfasından yazdırılmış bir çalışma kâğıdı ve bir inceleme günlüğü formu. Paket sayfası →

02Cevap anahtarı

  1. S011 puan

    cloudtrail-events.jsonl dosyasının bir kopyasında SHA-256 değerini hesaplayın, manifest.txt ile karşılaştırın ve ilk 8 onaltılık karakteri girin.

    Cevap9f0d1571

    Önek bildirim satırıyla eşleşir. JSON'u biçimlendirmek ya da satırları yeniden sıralamak baytları değiştirir; dosyanın hash'ini dışa aktarıldığı hâliyle alın.

    Nerede
    manifest.txt, cloudtrail-events.jsonl satırı.
    Olağan hata
    Bir görüntüleyici JSON'u yeniden biçimlendirdikten sonra hash almak.

    Hash hesaplayıcıF-04 İnceleme günlüğüSOP-02 Delil kabul ve kayıt

  2. S022 puan

    ci-deploy'un AKIAEXAMPLECIDEPLOY1 anahtarı çalıştırıcı 192.0.2.40 dışındaki bir adresten ilk kez ne zaman bir isteği imzaladı? UTC.

    Cevap2026-08-07 21:03:12

    userIdentity.accessKeyId alanını anahtara göre süzün. 21:03:12'den önceki her kayıt, günde üç çalıştırmayla, Terraform kullanıcı aracısıyla 192.0.2.40'tan gelir. 21:03:12'de sts:GetCallerIdentity, Ubuntu üzerindeki AWS CLI ile 203.0.113.50'den gelir: bir anahtar bulup kime ait olduğunu öğrenmek isteyen birinin olağan ilk çağrısı.

    Nerede
    cloudtrail-events.jsonl, userIdentity.accessKeyId AKIAEXAMPLECIDEPLOY1, sourceIPAddress; acquisition-log.txt, çalıştırıcı adresi.
    Olağan hata
    userName ci-deploy üzerinde süzüp rol oturumunun sonraki bir kaydını ya da ertesi sabah ikinci anahtarın kullanımını almak.
  3. S032 puan

    Anahtarı yayımlayan gönderim ile o ilk dış istek arasında kaç tam dakika geçti?

    Cevap4

    Bildirim gönderimi kod deposu hesabının saat diliminde, Europe/Istanbul (UTC+3), 07.08.2026 23:58:41 olarak verir: 20:58:41 UTC. İlk dış istek 21:03:12 UTC'dedir: 4 dakika 31 saniye sonra. Herkese açık depolardaki anahtarlar otomatik tarayıcılarca dakikalar içinde toplanır; tespit e-postası gönderimden 42 dakika sonra geldi, anahtar o sırada zaten kullanılıyordu.

    Nerede
    gizli-anahtar-uyarisi.txt, 'Commit gönderimi' ve saat dilimi satırı; cloudtrail-events.jsonl, S02'deki kayıt.
    Olağan hata
    23:58:41'i UTC okumak; bu, gönderimi ilk kullanımdan neredeyse üç saat sonraya koyar.

    Yerel saatten UTC'ye

  4. S042 puan

    203.0.113.50'den AKIAEXAMPLECIDEPLOY1 ile imzalanan kaç istek reddedildi (kayıtta errorCode var)?

    Cevap12

    21:03–21:11 arasındaki keşif sırasında on ret (iam:ListUsers, s3:ListBuckets, iam:GetAccountAuthorizationDetails, iam:ListGroupsForUser, secretsmanager:ListSecrets, dört bölgede Client.UnauthorizedOperation ile ec2:DescribeInstances, iam:CreateUser) ve sonra iki ret (cloudtrail:StopLogging ve DeleteTrail). Kullanıcının kendi ilkesi tuttu; üstlenebildiği rolün aynı sınırları yoktu. Dakikalar içinde dört bölgede gelen retler kendi başına birinin hesabı haritaladığının işaretidir.

    Nerede
    cloudtrail-events.jsonl, accessKeyId AKIAEXAMPLECIDEPLOY1, sourceIPAddress 203.0.113.50, errorCode dolu.
    Olağan hata
    Reddedilen 24 GetObject isteğini de saymak: onlar kullanıcının değil rol oturumunun anahtarıyla imzalandı.
  5. S051 puan

    Dış adres kullanıcının anahtarıyla hangi IAM rolünü üstlendi?

    Cevaplodos-data-ops

    21:11:27'de sts:AssumeRole; roleArn arn:aws:iam::111122223333:role/lodos-data-ops, roleSessionName backup-audit. Derleme hattı aynı rolü her çalıştırmada terraform-ci-<çalıştırma> oturum adlarıyla üstlenir; ci-deploy'un bu rolü üstlenmesine izin veren güven ilkesi, dar bir anahtarı geniş bir anahtara dönüştüren şeydir.

    Nerede
    cloudtrail-events.jsonl, 203.0.113.50'den eventName AssumeRole, requestParameters.roleArn.
    Olağan hata
    EC2'nin saat başı üstlendiği AWSService kayıtlarındaki portal rolünü almak.
  6. S062 puan

    Bu rol oturumu hangi geçici erişim anahtarı kimliğini aldı?

    CevapASIAEXAMPLEDATAOPS01

    AssumeRole kaydındaki responseElements.credentials.accessKeyId. Bundan sonra kayıtlar kullanıcının değil bu anahtarın, userIdentity.type AssumedRole değerinin ve …assumed-role/lodos-data-ops/backup-audit ARN'sinin izini taşır. 'Aug 7, 2026, 10:11:27 PM' bitiş zamanı bölgesi yazılmamış UTC'dir: oturum 22:11:27'ye kadar istek imzalayabilirdi.

    Nerede
    cloudtrail-events.jsonl, S05'teki AssumeRole kaydı, responseElements.
    Olağan hata
    Dosyanın geri kalanında kullanıcının anahtarını arayıp toplu okumaları başka birinin yaptığı sonucuna varmak.
  7. S072 puan

    Gecenin GetObject kayıtları ci-deploy'u değil rolü adlandırıyor. Onları sızan anahtara ne bağlar?

    CevapC — userIdentity.accessKeyId değerleri, ci-deploy'un anahtarının 21:11:27'de 203.0.113.50'den imzaladığı AssumeRole kaydında verilen geçici anahtardır; aynı adresten aynı kullanıcı aracısıyla gelirler.

    Zincir anahtar → AssumeRole → geçici anahtar → kayıtlardır. Oturum adını çağıran seçer ve ertesi sabahki oturum aynı adı yeniden kullanır; ad gruplar, kanıtlamaz. Portal rolü aynı kovayı gün boyu VPC uç noktası üzerinden okur; kova tek başına hiçbir şeyi ayırmaz.

    Nerede
    cloudtrail-events.jsonl, AssumeRole'deki responseElements.credentials.accessKeyId ve GetObject kayıtlarındaki userIdentity.accessKeyId.
    Olağan hata
    Üstlenilen bir rolü çıkmaz sokak saymak.
  8. S082 puan

    ASIAEXAMPLEDATAOPS01 oturumu lodos-musteri-arsiv kovasından kaç farklı nesneyi başarıyla okudu?

    Cevap294

    Oturumun 330 GetObject kaydı vardır: 306'sı başarılı, 24'ü reddedilmiş. Başarılı olanların on ikisi bir anahtarı ikinci kez okur; farklı anahtar sayısı bu yüzden 294'tür ve hepsi musteri-sozlesmeleri/ altındadır. Kovanın erişim günlüğü aynı istekte bulunan ARN'den aynı 330 isteği ve 200 ile cevaplanan aynı 294 anahtarı gösterir; gönderilen baytlar CloudTrail'in bytesTransferredOut değeriyle örtüşür (388.180.218 bayt).

    Nerede
    cloudtrail-events.jsonl, eventName GetObject, userIdentity.accessKeyId ASIAEXAMPLEDATAOPS01, errorCode yok, requestParameters.key; s3-access-logs.log, aynı istekte bulunan.
    Olağan hata
    330 kaydı ya da 306 başarıyı vermek veya portalınkiler dahil gecenin tüm GetObject kayıtlarını saymak.
  9. S092 puan

    Oturumun kimlik-belgeleri/ altındaki 24 GetObject isteği kms:Decrypt ile ilgili bir errorMessage ile reddedildi. Rapor ne demeli?

    CevapB — 24 kimlik belgesinin istendiğini ve verilmediğini: rolün kullanamadığı bir KMS anahtarıyla şifrelidirler. Açığa çıkmış değil, denenmiş sayılırlar.

    errorCode AccessDenied ve bytesTransferredOut 0; erişim günlüğü aynı anahtarlar için 403 cevabı verir. Bu belgeleri içeride tutan ayrı bir anahtar ilkesidir; rapor hem hedeflendiklerini hem de teslim edilmediklerini söylemelidir.

    Nerede
    cloudtrail-events.jsonl, errorCode taşıyan GetObject; s3-access-logs.log, aynı anahtarlar için 403 durumu.
    Olağan hata
    Reddedilen istekleri açığa çıkan belge sayısına eklemek.
  10. S102 puan

    Oturum lodos-yedek-paylasim kovasını herkesin okuyabileceği hâle ne zaman getirdi? Bunu yapan çağrının zamanını UTC olarak verin.

    Cevap2026-08-07 21:59:30

    21:58:44'te DeletePublicAccessBlock kovanın Genel Erişimi Engelle ayarını kaldırdı; o ana kadar herkese açık bir ilke reddedilirdi. 21:59:30'da PutBucketPolicy, disa-aktarim/* üzerinde s3:GetObject ile Principal '*' tanımladı. Kovayı açan ikinci çağrıdır; birincisi bunu mümkün kıldı.

    Nerede
    cloudtrail-events.jsonl, eventName DeletePublicAccessBlock ve PutBucketPolicy, requestParameters.bucketPolicy.
    Olağan hata
    Korumayı kaldıran ama hiçbir şey tanımayan 21:58:44'ü vermek.
  11. S112 puan

    CloudTrail'de gece boyunca lodos-yedek-paylasim kovasına PutObject yok. Ne sonuca varırsınız?

    CevapC — Veri olayları yalnızca lodos-musteri-arsiv için seçilidir; bu kovaya yüklemeler CloudTrail'de görünemez. Kovanın sunucu erişim günlüğü, oturumun 22:03:15'ten itibaren yaptığı üç PUT isteğini, disa-aktarim/arsiv-0807 parçalarını kaydeder.

    Bir kaynakta bir şeyin bulunmaması, kaynağın kapsamı o eylemi kaydedeceğini söylemedikçe hiçbir şey kanıtlamaz. export-metadata.txt veri olayı seçicisini belirtir; erişim günlüğü boşluğu doldurur ve istekte bulunan ARN'yi, …assumed-role/lodos-data-ops/backup-audit, adlandırır. Parçalar 734.003.200, 734.003.200 ve 389.521.408 bayttır.

    Nerede
    export-metadata.txt, 1. dışa aktarım, veri olayları; s3-access-logs.log, lodos-yedek-paylasim içinde REST.PUT.OBJECT.
    Olağan hata
    'CloudTrail'de yok' ifadesini 'olmadı' diye okumak.
  12. S122 puan

    Arşivin bir parçası kimlik doğrulaması olmadan ilk kez ne zaman indirildi? UTC.

    Cevap2026-08-07 22:20:41

    disa-aktarim/ üzerinde REST.GET.OBJECT ve 200 durumuyla istekte bulunan '-' ve kimlik doğrulama türü '-': ilki 198.51.100.200'den Wget ile [07/Aug/2026:22:20:41 +0000]. 22:07:02'de 203.0.113.50'den gelen daha önceki kimliksiz istek bir HEAD'dir: nesnenin erişilebilir olduğunu denetlemiş, içerik aktarmamıştır.

    Nerede
    s3-access-logs.log, lodos-yedek-paylasim kovası, istekte bulunan '-', işlem REST.GET.OBJECT.
    Olağan hata
    22:07:02'deki HEAD'i ya da kimliği doğrulanmış (QueryString) bir denetçi indirmesini vermek.
  13. S132 puan

    Arşiv parçaları kaç farklı adresten kimlik doğrulaması olmadan indirildi?

    Cevap3

    198.51.100.200 (üç parçanın hepsi, 22:20:41'den itibaren), 203.0.113.90 (üçü de, 8 Ağustos 02:10:17'den itibaren) ve 198.51.100.201 (1. parça iki kez, 03:44:52'den itibaren). Oturumun kendi adresi yalnızca HEAD yaptı. Sızıntı oturum bittiğinde durmadı: kova 09:05'teki sınırlamaya kadar herkese açık kaldı.

    Nerede
    s3-access-logs.log, lodos-yedek-paylasim, istekte bulunan '-', REST.GET.OBJECT, 200 durumu, uzak IP.
    Olağan hata
    İndirmeleri m.koc tarafından önceden imzalanmış 198.51.100.150'deki denetçiyi saymak ya da HEAD'i için 203.0.113.50'yi eklemek.
  14. S142 puan

    Sızan anahtar ci-deploy için hangi erişim anahtarını oluşturdu?

    CevapAKIAEXAMPLECIDEPLOY2

    203.0.113.50'den 22:14:02'de iam:CreateAccessKey, responseElements.accessKey.accessKeyId. 8 Ağustos 06:12:33'te 203.0.113.51'den rolü yeniden üstlenmek için kullanıldı. Kimlik bilgisi raporu da bunu söyler: access_key_2_last_rotated 2026-08-07T22:14:02+00:00, son kullanım 2026-08-08T06:15:02+00:00. Yalnızca birinci anahtarı değiştirmek bu anahtarı açık bırakırdı.

    Nerede
    cloudtrail-events.jsonl, eventName CreateAccessKey; iam-credential-report.csv, ci-deploy satırı.
    Olağan hata
    access_key_1_last_used_date değerini (06:10:34, derleme hattının 192.0.2.40'tan son çalıştırması) saldırganın son kullanımı diye okumak.
  15. S152 puan

    22:21:40'ta sızan anahtar lodos-org-trail üzerinde cloudtrail:StopLogging çağırdı. Kayıt tutmaya ne oldu?

    CevapB — Devam etti: çağrı AccessDenied ile reddedildi, ardından gelen DeleteTrail de; iz ertesi sabaha kadar kaydetmeyi sürdürür.

    Reddedilen çağrılar errorCode ve errorMessage ile kaydedilir. Denemeyi iki yüzden fazla kayıt izler; 06:12'deki ikinci anahtar etkinliği de bunlara dahildir. Deneme yine de bir bulgudur: kaydı ortadan kaldırma niyetini gösterir ve raporda bu şekilde yer almalıdır.

    Nerede
    cloudtrail-events.jsonl, eventName StopLogging ve DeleteTrail, errorCode; ardından gelen kayıtlar.
    Olağan hata
    Bir denemeyi sonuç saymak.
  16. S162 puan

    İnceleyen kişi yalnızca bu dosyalara dayanarak hangi cümleyi imzalayabilir?

    CevapC — AKIAEXAMPLECIDEPLOY1 anahtarı herkese açık bir depoya gönderildikten (7 Ağustos 20:58:41 UTC) dört dakika sonra 203.0.113.50'den istek imzaladı, lodos-data-ops rolünü üstlendi ve ASIAEXAMPLEDATAOPS01 oturumu lodos-musteri-arsiv kovasından 294 sözleşme okudu; 24 kimlik belgesi reddedildi. Oturum 21:59:30'da lodos-yedek-paylasim kovasını herkese açtı ve üç parçalı bir arşiv yükledi; arşivi 22:20:41'den itibaren üç adres kimlik doğrulaması olmadan indirdi. Anahtar AKIAEXAMPLECIDEPLOY2'yi oluşturdu; bu anahtar 8 Ağustos 06:12'de 203.0.113.51'den kullanıldı; izi durdurma denemesi reddedildi.

    c cümlesi her eylemi bir anahtara, bir oturuma ve bir kayda bağlar, bildirimi UTC'ye çevirir, okunanı reddedilenden ayırır, CloudTrail'in sustuğu yerde erişim günlüğünü kullanır ve ikinci anahtarı adlandırır. a cümlesi dış bir adresten gelen istekler için bir kişiyi adlandırır; b reddedilen StopLogging ile çelişir; d veri olayı kapsamını ve erişim günlüğünü yok sayar.

    Nerede
    Dört delil dosyasının tamamı; c cümlesindeki her olgu bunlardan birinden gelir.
    Olağan hata
    Anahtarı kimin kullandığı yerine kime ait olduğunu yazmak.

    F-04 İnceleme günlüğüSOP-09 Raporlama ve akran incelemesi

03Kurulan kronoloji

Doğru cevaplarla kurulan zaman çizelgesi. Yerel saat UTC+3'tür.

UTCYerelOlayKaynak
21:03:1200:03:12AKIAEXAMPLECIDEPLOY1 ile 203.0.113.50'den imzalanan ilk istek: sts:GetCallerIdentity, gönderimden 4 dakika sonra.cloudtrail-events.jsonl
21:11:2700:11:27AssumeRole lodos-data-ops, oturum backup-audit, geçici anahtar ASIAEXAMPLEDATAOPS01.cloudtrail-events.jsonl
21:15:1000:15:10lodos-musteri-arsiv kovasından toplu GetObject başlar: 294 sözleşme okunur, 24 kimlik belgesi reddedilir.cloudtrail-events.jsonl
21:59:3000:59:30PutBucketPolicy, lodos-yedek-paylasim/disa-aktarim/ yolunu herkesin okuyabileceği hâle getirir.cloudtrail-events.jsonl
22:03:1501:03:15Arşivin ilk parçası herkese açık kovaya yüklenir (yalnızca erişim günlüğünde).s3-access-logs.log
22:14:0201:14:02CreateAccessKey: ci-deploy için AKIAEXAMPLECIDEPLOY2.cloudtrail-events.jsonl
22:20:4101:20:41Arşivin ilk anonim indirmesi, 198.51.100.200'den.s3-access-logs.log
22:21:4001:21:40lodos-org-trail üzerinde StopLogging reddedilir (AccessDenied).cloudtrail-events.jsonl
06:12:3309:12:33İkinci anahtar 203.0.113.51'den kullanılır ve rolü yeniden üstlenir.cloudtrail-events.jsonl

04Puanlama

1–11. sorular birer puan, 12. soru üç puan değerindedir: toplam 30 puan. Bulgu paragrafı puanla değerlendirilmez; aşağıdaki dört ölçüte göre işaretleyin ve değerlendirmede tartışın.

PuanSonraki adım
27–30Yeterli. Gerçek bir hesabın CloudTrail Lake ya da Athena sorgularının gözetimli incelemesine geçin.
15–26Kaçırdığınız her soruyu açıklamasıyla gözden geçirin, sonra geceyi İnceleme Masası'nda iki erişim anahtarına göre süzerek yeniden kurun.
0–14Önce VP-07'yi çalışın, sonra bu paketi İnceleme Masası'nda ASIAEXAMPLEDATAOPS01 üzerinde süzerek tekrarlayın.

Bulgu paragrafı: ölçütler

  • Her zaman kendi esasını taşır; bildirim yerel saatten çevrilir.
  • Rapor erişim anahtarı kimliklerini AssumeRole boyunca izler ve rol oturumunun sızan anahtara nasıl bağlandığını söyler.
  • Nesneler anahtarla ve yalnızca istek başarılıysa sayılır; reddedilen istekler deneme olarak raporlanır.
  • Rapor veri olayı kapsamını belirtir ve CloudTrail'in kapsamadığı kova için erişim günlüğünü kullanır.
  • Sınırlama iki anahtarı, rolün güven ilkesini, herkese açık kovayı ve indiren üç adresi kapsar.

05Değerlendirme

  1. Herkese açık bir depodaki anahtar günler içinde değil dakikalar içinde tarayıcılarca bulunur. Kırk dakikada gelen tespit geç gelir.
  2. Geniş bir rolü üstlenme hakkı olan dar bir kullanıcı, geniş bir kullanıcıdır.
  3. CloudTrail yalnızca kaydetmesi söylenen şey için eksiksizdir. Sessizliğini okumadan önce izin seçicilerini okuyun.
  4. Retler delildir: birinin neyi denediğini ve hesabın sınırlarının nerede tuttuğunu haritalar.

06Örnek bulgu

7 Ağustos 2026 20:58:41 UTC'de (kod deposu bildiriminde yerel 23:58:41) ci-deploy IAM kullanıcısının AKIAEXAMPLECIDEPLOY1 erişim anahtarı herkese açık bir depoya gönderildi. 21:03:12 UTC'den itibaren anahtar AWS CLI ile 203.0.113.50'den istek imzaladı; o ana kadar yalnızca 192.0.2.40 derleme çalıştırıcısından kullanılmıştı (cloudtrail-events.jsonl). Bu isteklerin on ikisi reddedildi; onu dört bölgedeki keşif sırasında. 21:11:27'de anahtar lodos-data-ops rolünü üstlendi (oturum backup-audit, geçici anahtar ASIAEXAMPLEDATAOPS01). Bu oturum 21:15:10–21:47:19 arasında lodos-musteri-arsiv içinde musteri-sozlesmeleri/ altındaki 294 farklı nesneyi okudu (306 başarılı GetObject kaydı, 388.180.218 bayt); KMS anahtarıyla şifrelenmiş kimlik belgeleri için 24 istek reddedildi. 21:58:44 ve 21:59:30'da lodos-yedek-paylasim kovasından Genel Erişimi Engelle ayarını kaldırdı ve disa-aktarim/* üzerinde s3:GetObject yetkisini herkese veren bir ilke tanımladı. Kovanın sunucu erişim günlüğü, oturumun 22:03:15'ten itibaren yaptığı üç yüklemeyi (arsiv-0807-part1–part3; veri olayları bu kovayı kapsamaz) ve 22:20:41'den itibaren 198.51.100.200, 203.0.113.90 ve 198.51.100.201'den kimlik doğrulamasız indirmeleri kaydeder (s3-access-logs.log). 22:14:02'de sızan anahtar AKIAEXAMPLECIDEPLOY2'yi oluşturdu; bu anahtar 8 Ağustos 06:12:33'te 203.0.113.51'den rolü yeniden üstlenmek için kullanıldı (kimlik bilgisi raporu: son kullanım 06:15:02). 22:21:40'taki izi durdurma ve silme denemeleri reddedildi. Sınırlar: depo, dış ana makineler ve nesnelerin içeriği incelenmedi.

Rapor anatomisi ve güven ölçeği →

İrtibat ve hizmet talepleri

Bu sayfayla ilgili inceleme hizmeti, bilirkişilere destek ve iş birliği için irtibat kurun. Lütfen e-postaya delil dosyası ya da kişisel veri eklemeyin.

İrtibat sayfası →