Bulut tabanlı sistemlerde gerçekleştirilen güvenlik denetimlerinde enumerasyon (keşif) aşaması, tehdit avcılarının ve kırmızı takım uzmanlarının olmazsa olmazıdır. Bu süreçte, mevcut izinlerin haritasının çıkarılması, saldırı yüzeyinin tanımlanması ve hassas verilerin yanlış yapılandırılmış olup olmadığının tespiti kritik önem taşır. Bu rehberde, AWS ortamında Secrets Manager servisi üzerinden nasıl kimlik doğrulama ve gizli bilgi enumeration işlemleri gerçekleştirildiği uygulamalı olarak gösterilmektedir.
AWS CLI aracılığıyla kimlik doğrulama kontrollerinden başlayarak, gizli bilgilerin listelenmesine ve hatta Base64 kodlu flag değerlerinin çözülmesine kadar olan adımlar detaylı şekilde incelenecektir.
AWS Ortamında İlk Kimlik Doğrulama Kontrolleri
Her bulut güvenlik değerlendirmesinin temelinde, mevcut ortamdaki kimliklerin ve yetkilerin net bir şekilde anlaşılması yatar. Bu süreçte, önceden ele geçirilmiş AWS erişim anahtarları kullanılarak ilk adımda Security Token Service (STS) üzerinden geçerli kimlik bilgileri sorgulanır.
aws sts get-caller-identity --profile SecretsManagerEnumKomutun çıktısı aşağıdaki JSON formatında geri döner ve bu sayede mevcut kullanıcının kimlik bilgilerine ulaşılır:
{
"UserId": "AIDAQGYBPW3JHDS5K4A75",
"Account": "014498641618",
"Arn": "arn:aws:iam::014498641618:user/Julie"
}Bu çıktı, erişim sağlanan kimlik bilgilerinin Julie adlı bir IAM kullanıcısına ait olduğunu ve hesap numarasının 014498641618 olduğunu doğrulamaktadır. Bu aşama, saldırganın ya da denetçinin, hangi hesap ve kimlik üzerinden hareket ettiğini net bir şekilde ortaya koyar.
Kullanıcı Yetkilerinin Ayrıntılı İncelenmesi
Kimlik doğrulamasının ardından, sıra kullanıcının sahip olduğu izinlerin ayrıntılı şekilde analiz edilmesine gelir. Bu aşamada, doğrudan kullanıcıya bağlı olan inline politikalar sorgulanır.
aws iam list-user-policies --user-name Julie --profile SecretsManagerEnumKomutun çıktısı, kullanıcıya bağlı olarak yalnızca bir adet inline politika bulunduğunu gösterir:
{
"PolicyNames": ["AllowReadSecretsManager"]
}Bu politikanın detaylarını incelemek için, ilgili politika dokümanı çekilir:
aws iam get-user-policy --user-name Julie --policy-name AllowReadSecretsManager --profile SecretsManagerEnumPolitikanın içeriği aşağıdaki gibi olup, toplam üç farklı izin grubu içermektedir:
{
"PolicyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowIAMActions",
"Effect": "Allow",
"Action": [
"iam:ListPolicies",
"iam:ListPolicyVersions",
"iam:GetPolicy",
"iam:GetUser",
"iam:GetUserPolicy",
"iam:ListUserPolicies"
],
"Resource": "*"
},
{
"Sid": "AllowSecretsManagerActions",
"Effect": "Allow",
"Action": [
"secretsmanager:GetSecretValue",
"secretsmanager:ListSecretVersionIds",
"secretsmanager:GetResourcePolicy",
"secretsmanager:DescribeSecret"
],
"Resource": [
"arn:aws:secretsmanager:us-east-1:014498641618:secret:sm-enumerate-password*",
"arn:aws:secretsmanager:us-east-1:014498641618:secret:sm-enumerate-api-key*"
]
},
{
"Sid": "AllowListSecrets",
"Effect": "Allow",
"Action": ["secretsmanager:ListSecrets"],
"Resource": "*"
}
]
}
}Bu politika analiz edildiğinde şu önemli noktalar öne çıkmaktadır:
- AllowIAMActions: Kullanıcıya, IAM profilleri ve politikalar üzerinde salt okunur erişim yetkisi verir. Bu, kullanıcının mevcut IAM yapısını inceleyebileceği anlamına gelir.
- AllowListSecrets: Secrets Manager servisinde bulunan tüm gizli bilgilerin metadata bilgilerinin listelenmesine olanak tanır. Bu yetki, kaynak yolu ne olursa olsun tüm gizli bilgilerin keşfedilebileceğini gösterir.
- AllowSecretsManagerActions: Sadece belirli öneklerle başlayan gizli bilgilerin (
sm-enumerate-password*vesm-enumerate-api-key*) gerçek değerlerine erişim sağlar. Diğer gizli bilgilerde bu izin geçerli değildir.
AWS Secrets Manager Üzerinde Gizli Bilgilerin Keşfi
Yapılan analiz sonucu, secretsmanager:ListSecrets yetkisinin global olarak verildiği anlaşılmıştır. Bu sayede, kullanıcı mevcut AWS bölgesinde bulunan tüm gizli bilgilerin listesini çıkarabilir.
aws secretsmanager list-secrets --profile SecretsManagerEnumKomutun çıktısı, IAM politikasında belirtilen öneklerle eşleşen iki adet gizli bilgi olduğunu ortaya koyar:
- Gizli Bilgi Adı:
sm-enumerate-password
ARN: arn:aws:secretsmanager:us-east-1:014498641618:secret:sm-enumerate-password-cSojGz
- Gizli Bilgi Adı:
sm-enumerate-api-key
ARN: arn:aws:secretsmanager:us-east-1:014498641618:secret:sm-enumerate-api-key-zShLNz
Hassas Verilerin Elde Edilmesi ve Flag Değerinin Çözülmesi
Politikada açıkça belirtilen izinler sayesinde, yukarıda listelenen gizli bilgilerin gerçek değerlerine doğrudan erişim mümkündür. Öncelikle, parola içeren gizli bilgi sorgulanır.
aws secretsmanager get-secret-value --secret-id sm-enumerate-password --profile SecretsManagerEnumKomutun çıktısı aşağıdaki gibidir:
{
"ARN": "arn:aws:secretsmanager:us-east-1:014498641618:secret:sm-enumerate-password-cSojGz",
"Name": "sm-enumerate-password",
JSON'larla birlikte gizli bilgi dizesi döner:
"SecretString": "{\"password\":\"cybr-labs-are-super-fun-2211\"}"
}Ardından, API anahtarı içeren gizli bilgi sorgulanır:
aws secretsmanager get-secret-value --secret-id sm-enumerate-api-key --profile SecretsManagerEnumBu sorgunun çıktısında gizli bilgi dizesi Base64 ile kodlanmış olarak yer alır:
{
"ARN": "arn:aws:secretsmanager:us-east-1:014498641618:secret:sm-enumerate-api-key-zShLNz",
"Name": "sm-enumerate-api-key",
"SecretString": "{\"secret-api-key\":\"Y3lici1sYWJzLWZha2UtYXBpLWtleS0xMTIy\"}"
}Base64 Kodunun Çözülmesi
API anahtarı olarak gizlenen Base64 kodlu dizeyi çözmek için Linux ortamında yerleşik olarak bulunan base64 aracı kullanılır:
echo "Y3lici1sYWJzLWZha2UtYXBpLWtleS0xMTIy" | base64 -dBu komutun çıktısı, flag değerini ortaya çıkarır:
cybr-labs-fake-api-key-1122Bu uygulama, AWS Secrets Manager servisinde gerçekleştirilen yetki kontrollerinin ve gizli bilgi enumeration işlemlerinin nasıl yapılabileceğini pratik olarak göstermektedir. Bu yöntemler, hem güvenlik uzmanları hem de kırmızı takım ekipleri tarafından, bulut ortamlarının güvenlik açıklarını tespit etmek amacıyla yaygın şekilde kullanılmaktadır.
Yapay zeka özeti
AWS Secrets Manager kullanarak gizli bilgilerin nasıl enumeration yöntemiyle bulunduğunu ve Base64 flag değerlerinin nasıl çözüldüğünü uygulamalı olarak öğrenin.