AWS - CloudTrail Enum
CloudTrail
AWS CloudTrail, AWS ortamınız içindeki etkinlikleri kaydeder ve izler. AWS kaynaklarıyla yapılan tüm etkileşimler için kimin ne yaptığını, ne zaman ve nereden yaptığını içeren ayrıntılı etkinlik günlüklerini kaydeder. Bu, değişikliklerin ve işlemlerin denetim izini sağlayarak güvenlik analizi, uyumluluk denetimi ve kaynak değişikliği izleme konularında yardımcı olur. CloudTrail, kullanıcı ve kaynak davranışını anlamak, güvenlik durumlarını güçlendirmek ve düzenleyici uyumluluğu sağlamak için esastır.
Her kaydedilen etkinlik şunları içerir:
Çağrılan API'nin adı:
eventName
Çağrılan hizmet:
eventSource
Zaman:
eventTime
IP adresi:
SourceIPAddress
Ajan yöntemi:
userAgent
. Örnekler:Signing.amazonaws.com - AWS Yönetim Konsolundan
console.amazonaws.com - Hesabın kök kullanıcısı
lambda.amazonaws.com - AWS Lambda
İstek parametreleri:
requestParameters
Yanıt öğeleri:
responseElements
Etkinlikler, yaklaşık her 5 dakikada bir JSON dosyasına yazılır, CloudTrail tarafından tutulur ve sonunda log dosyaları yaklaşık 15 dakika sonra S3'e iletilir. CloudTrail günlükleri, hesaplar ve bölgeler arasında toplanabilir. CloudTrail, log dosyalarını size ulaştırdığından beri log dosyalarınızın değişmediğini doğrulamak için log dosyası bütünlüğünü kullanmanıza izin verir. Günlüklerin içindeki logların SHA-256 karmasını bir özet dosyasında oluşturur. Yeni günlüklerin sha-256 karması her saat başı oluşturulur. Bir Trail oluştururken etkinlik seçicileri, log kaydedilecek izi belirtmenize olanak tanır: Yönetim, veri veya içgörüler etkinlikleri.
Günlükler bir S3 kovasında saklanır. Varsayılan olarak Sunucu Tarafı Şifreleme (SSE-S3) kullanılır, bu nedenle AWS içeriği şifreler, ancak ek güvenlik için KMS ile SSE ve kendi anahtarlarınızı kullanabilirsiniz.
Günlükler, aşağıdaki ad biçimine sahip bir S3 kovasında saklanır:
BucketName/AWSLogs/HesapKimliği/CloudTrail/BölgeAdı/YYY/AA/GG
BucketName:
aws-cloudtrail-logs-<hesapkimliği>-<rastgele>
Örnek:
aws-cloudtrail-logs-947247140022-ffb95fe7/AWSLogs/947247140022/CloudTrail/ap-south-1/2023/02/22/
Her klasörün içinde her günlüğün şu formatta bir adı olacaktır: HesapKimliği_CloudTrail_BölgeAdı_YYYYAAGGTSaatDakikaZ_Rastgele.json.gz
Günlük Dosyası Adlandırma Kuralı
Ayrıca, dosya bütünlüğünü kontrol etmek için özet dosyaları aynı kovada olacaktır:
Birden Fazla Hesaptan Toplu Günlükler Toplama
Günlük dosyalarının iletileceği AWS hesabında bir Deneme oluşturun
CloudTrail için çapraz hesap erişimine izin veren izinleri hedef S3 kovasına uygulayın ve erişime ihtiyacı olan her AWS hesabına izin verin
Diğer AWS hesaplarında yeni bir Trail oluşturun ve 1. adımda oluşturulan kovayı kullanmayı seçin
Ancak, tüm günlükleri aynı S3 kovasında saklayabilirsiniz, farklı hesaplardan gelen CloudTrail günlüklerini tek bir AWS hesabına ait bir CloudWatch Logs'ta toplayamazsınız.
Bir hesabın farklı Trail'leri CloudTrail'den etkinleştirilmiş olabilir ve aynı (veya farklı) günlükleri farklı kovalarda saklayabilir.
1'den tüm org hesaplarına Cloudtrail
CloudTrail oluştururken, orgdaki tüm hesaplar için cloudtrail'ı etkinleştirmeyi ve günlükleri yalnızca 1 kovaya almayı belirtmek mümkündür:
Bu şekilde tüm hesapların tüm bölgelerinde CloudTrail'ı kolayca yapılandırabilir ve günlükleri 1 hesapta (korumanız gereken bir hesap) merkezileştirebilirsiniz.
Günlük Dosyalarını Kontrol Etme
Günlüklerin değiştirilmediğini kontrol etmek için şunu çalıştırarak kontrol edebilirsiniz
Günlüklerin CloudWatch'a Gönderilmesi
CloudTrail, şüpheli aktiviteler gerçekleştirildiğinde sizi uyaracak uyarıları ayarlayabilmeniz için günlükleri otomatik olarak CloudWatch'a gönderebilir. CloudTrail'ın günlükleri CloudWatch'a göndermesine izin vermek için bu eylemi gerçekleştiren bir rol oluşturulması gerektiğine dikkat edin. Mümkünse, bu eylemleri gerçekleştirmek için AWS varsayılan rolünü kullanmanız önerilir. Bu rol, CloudTrail'in şunları yapmasına izin verecektir:
CreateLogStream: Bu, bir CloudWatch Günlükleri günlük akışı oluşturmayı sağlar
PutLogEvents: CloudTrail günlüklerini CloudWatch Günlükleri günlük akışına iletmeyi sağlar
Olay Geçmişi
CloudTrail Olay Geçmişi, kaydedilen günlükleri bir tabloda incelemenize olanak tanır:
İçgörüler
CloudTrail İçgörüler, CloudTrail izlerinden yazma yönetimi olaylarını otomatik olarak analiz eder ve sıradışı aktiviteleri size bildirir. Örneğin, kurulmuş temellere uymayan TerminateInstance
olaylarında bir artış varsa, bunu bir İçgörü olayı olarak göreceksiniz. Bu olaylar, sıradışı API aktivitelerini bulmayı ve yanıtlamayı daha da kolaylaştırır.
İçgörüler, CloudTrail günlükleriyle aynı kovada saklanır: BucketAdı/AWSLogs/HesapID/CloudTrail-Insight
Güvenlik
Erişim Danışmanı
AWS Erişim Danışmanı, insanların verilen gereksiz izinler hakkında bilgilendirilmesi için son 400 günlük AWS CloudTrail günlüklerine dayanır. CloudTrail, bir AWS hesabında yapılan AWS API çağrılarının ve ilgili olayların bir geçmişini yakalar. Erişim Danışmanı, bu verileri kullanarak hizmetlerin en son ne zaman erişildiğini gösterir. CloudTrail günlüklerini analiz ederek, Erişim Danışmanı bir IAM kullanıcısının veya rolünün hangi AWS hizmetlerine eriştiğini ve bu erişimin ne zaman gerçekleştiğini belirleyebilir. Bu, AWS yöneticilerinin izinleri iyileştirme konusunda bilinçli kararlar almasına yardımcı olur, çünkü uzun süre erişilmemiş hizmetleri belirleyebilir ve gerçek kullanım modellerine dayanarak aşırı geniş izinleri azaltabilirler.
Bu nedenle, Erişim Danışmanı, kullanıcılara verilen gereksiz izinler hakkında bilgi verir, böylece yönetici bunları kaldırabilir
Eylemler
Numaralandırma
CSV Enjeksiyonu
CloudTrail içinde bir CVS enjeksiyonu gerçekleştirmek mümkündür ve günlükler CSV olarak dışa aktarılıp Excel ile açıldığında keyfi kodu yürütür. Aşağıdaki kod, yük içeren kötü bir Trail adı içeren günlük girişi oluşturacaktır:
Daha fazla CSV Enjeksiyonu hakkında bilgi için sayfayı kontrol edin:
Bu belirli teknik hakkında daha fazla bilgi için https://rhinosecuritylabs.com/aws/cloud-security-csv-injection-aws-cloudtrail/
Algı Atlatma
HoneyTokenlar atlatma
HoneyTokenlar, duyarlı bilgilerin dışa aktarılmasını tespit etmek için oluşturulmuştur. AWS için, bunlar kullanımı izlenen AWS anahtarları olup, eğer bir şey o anahtarla bir eylemi tetiklerse, o zaman biri o anahtarı çalmış olmalıdır.
Ancak, Canarytokens, SpaceCrab, SpaceSiren gibi HoneyTokenlar ya tanınabilir bir hesap adı kullanıyor ya da tüm müşterileri için aynı AWS hesap kimliğini kullanıyor. Bu nedenle, Cloudtrail'in herhangi bir günlük oluşturmadan hesap adını ve/veya hesap kimliğini alabilirseniz, anahtarın bir HoneyToken olup olmadığını bilebilirsiniz.
Pacu, bir anahtarın Canarytokens, SpaceCrab, SpaceSiren'a ait olup olmadığını tespit etmek için bazı kurallara sahiptir:
Eğer rol adında
canarytokens.org
veya hata mesajında534261010715
hesap kimliği görünüyorsa.Daha yeni test edildiklerinde, hesap
717712589309
kullanıyor ve hala isimdecanarytokens.com
dizesi bulunuyor.Eğer rol adında
SpaceCrab
hata mesajında görünüyorsa.SpaceSiren, kullanıcı adları oluşturmak için uuid'ler kullanır:
[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}
Eğer isim rastgele oluşturulmuş gibi görünüyorsa, yüksek ihtimallerle bir HoneyToken'dır.
Hesap Kimliğini Anahtar Kimliğinden Alın
Kodlanmış içindeki erişim anahtarından Hesap Kimliğini alabilir ve hesap kimliğini HoneyTokenlar AWS hesaplarınızın listesiyle kontrol edebilirsiniz: burada açıklandığı gibi
Daha fazla bilgi için orijinal araştırmaya bakın.
Günlük oluşturma
Bunun için en etkili teknik aslında basit bir tekniktir. Bulduğunuz anahtarı kullanarak kendi saldırgan hesabınız içinde bir hizmete erişin. Bu, CloudTrail'in kendi AWS hesabınızda bir günlük oluşturmasını sağlar ve kurbanın içinde değil.
Mesele şu ki, çıktı size bir hata gösterecek ve hesap kimliğini ve hesap adını göstereceğinden bir Balık Anahtarı olup olmadığını görebileceksiniz.
Günlük oluşturmayan AWS hizmetleri
Geçmişte CloudTrail'e günlük göndermeyen bazı AWS hizmetleri vardı (burada bir liste bulabilirsiniz). Bu hizmetlerden bazıları, yetkisiz biri (balık anahtarı anahtarı) erişmeye çalıştığında anahtar rolün ARN'sini içeren bir hata ile yanıt verecektir.
Bu şekilde, bir saldırgan günlük tetiklemeden anahtarın ARN'sini elde edebilir. ARN içinde saldırgan, AWS hesap kimliğini ve adını görebilir, bu sayede bir saldırgan Balık Anahtarlarının şirketlerin hesap kimliklerini ve adlarını kolayca belirleyebilir, böylece bir saldırgan balık anahtarının bir Balık Anahtarı olup olmadığını belirleyebilir.
Tüm genel API'ların CloudTrail günlükleri oluşturmadığı keşfedildi ve şimdi düzeltildi, bu yüzden belki kendi API'lerinizi bulmanız gerekebilir...
Daha fazla bilgi için orijinal araştırmaya bakın.
Üçüncü Altyapıya Erişim
Belirli AWS hizmetleri veritabanları veya Kubernetes kümeleri (EKS) gibi altyapılar oluşturabilir. Bir kullanıcı, bu hizmetlere doğrudan erişiyorsa (örneğin Kubernetes API'si gibi), AWS API'sini kullanmayacak, bu nedenle CloudTrail bu iletişimi göremeyecektir.
Bu nedenle, EKS'ye erişimi olan bir kullanıcı, EKS API'sinin URL'sini keşfetmişse yerel olarak bir belirteç oluşturabilir ve CloudTrail tarafından tespit edilmeden API hizmeti ile doğrudan iletişim kurabilir.
Daha fazla bilgi için:
CloudTrail Yapılandırmasını Değiştirme
İz yollarını silme
İzlemeleri Durdurun
Çoklu bölge kaydını devre dışı bırakma
Olay Seçenekleriyle Günlüğü Devre Dışı Bırakma
İlk örnekte, tek bir olay seçici, yalnızca bir nesne içeren bir JSON dizisi olarak sağlanmaktadır. "ReadWriteType": "ReadOnly"
ifadesi, olay seçicinin yalnızca salt okunur olayları yakalaması gerektiğini belirtir (bu nedenle CloudTrail içgörüleri örneğin yazma olaylarını kontrol etmeyecek).
Özel gereksinimlerinize göre olay seçicisini özelleştirebilirsiniz.
S3 yaşam döngüsü politikası aracılığıyla kayıtların silinmesi
Kova Yapılandırmasını Değiştirme
S3 kovasını sil
Kova politikasını değiştirerek CloudTrail hizmetinden herhangi bir yazma işlemini reddet
S3 kovasına nesneleri silmek için yaşam döngüsü politikası ekle
CloudTrail günlüklerini şifrelemek için kullanılan kms anahtarını devre dışı bırak
Cloudtrail fidye yazılımı
S3 fidye yazılımı
Asimetrik bir anahtar oluşturabilir ve CloudTrail'in verileri o anahtarla şifrelemesini sağlayabilir ve ardından özel anahtarı silerek CloudTrail içeriğinin kurtarılamamasını sağlayabilirsiniz. Bu temelde S3-KMS fidye yazılımı'dır ve şurada açıklanmıştır:
KMS fidye yazılımı
Bu, önceki saldırıyı farklı izin gereksinimleriyle gerçekleştirmenin en kolay yoludur:
Referanslar
Last updated