AWS Pentesting
Temel Bilgiler
AWS ortamını pentest etmeye başlamadan önce, ne yapmanız gerektiğini, yanlış yapılandırmaları nasıl bulacağınızı ve nasıl sömüreceğinizi anlamak için AWS'nin nasıl çalıştığı hakkında birkaç temel bilgiye ihtiyacınız vardır.
Organizasyon hiyerarşisi, IAM ve diğer temel kavramlar gibi kavramlar şu adreste açıklanmıştır:
AWS - Basic InformationÖğrenmek için Lablar
Saldırıları simüle etmek için araçlar:
AWS Pentester/Red Team Metodolojisi
Bir AWS ortamını denetlemek için çok önemli olan şeyler: hangi hizmetlerin kullanıldığı, neyin açığa çıkarıldığı, kimin ne tür erişimi olduğu ve iç AWS hizmetlerinin harici hizmetlerle nasıl bağlantılı olduğudur.
Kırmızı Takım bakış açısından, bir AWS ortamını ele geçirmenin ilk adımı bazı kimlik bilgilerini elde etmeyi başarmaktır. İşte bunu nasıl yapabileceğinize dair bazı fikirler:
Github (veya benzeri) sızıntıları - OSINT
Sosyal Mühendislik
Parola yeniden kullanımı (parola sızıntıları)
AWS'de barındırılan Uygulamalardaki Zayıflıklar
Sunucu Tarafı İstek Sahtekarlığı (SSRF) - meta veri uç noktasına erişimle
Yerel Dosya Okuma
/home/USERNAME/.aws/credentials
C:\Users\USERNAME\.aws\credentials
tarafların ihlal edilmesi
İç Çalışan
Cognito kimlik bilgileri
Veya kimlik doğrulaması yapılmamış bir hizmeti ele geçirerek:
AWS - Unauthenticated Enum & AccessVeya bir inceleme yapıyorsanız, bu rollerle kimlik bilgilerini isteyebilirsiniz:
AWS - Permissions for a PentestKimlik bilgilerini elde etmeyi başardıktan sonra, bu kimlik bilgilerinin kime ait olduğunu ve ne tür erişime sahip olduklarını bilmek için bazı temel numaralandırmalar yapmanız gerekmektedir:
Temel Numaralandırma
SSRF
AWS içindeki bir makinede SSRF bulduysanız, hileler için bu sayfaya bakın:
Kimim
Bilmeniz gereken ilk şeylerden biri kim olduğunuzdur (hangi hesapta olduğunuz, AWS ortamı hakkında diğer bilgiler):
Şirketler, token'ların çalındığını ve kullanıldığını tespit etmek için canary token'lar kullanabilir. Kullanmadan önce bir token'ın bir canary token olup olmadığını kontrol etmek önerilir. Daha fazla bilgi için bu sayfayı kontrol edin.
Org Enumerasyonu
AWS - Organizations EnumIAM Enumerasyonu
Yeterli izinlere sahipseniz, AWS hesabındaki her bir varlık için ayrıcalıklarını kontrol etmek, sizin ve diğer kimliklerin ne yapabileceğini ve nasıl ayrıcalıkları yükseltebileceğinizi anlamanıza yardımcı olacaktır.
IAM'yi numaralandırmak için yeterli izniniz yoksa, bunları belirlemek için brute force yöntemiyle çalabilirsiniz. Numaralandırma ve brute force yapmanın nasıl yapılacağını kontrol edin:
AWS - IAM, Identity Center & SSO EnumŞimdi kimlik bilgileriniz hakkında bazı bilgilere sahipsiniz (ve eğer bir kırmızı takım iseniz umarım tespit edilmemişsinizdir). Şimdi ortamda hangi hizmetlerin kullanıldığını anlamaya çalışmanın zamanı geldi. Aşağıdaki bölümde, bazı yaygın hizmetleri numaralandırmak için bazı yöntemleri kontrol edebilirsiniz.
Hizmetlerin Numaralandırılması, Saldırı Sonrası ve Kalıcılık
AWS, inanılmaz miktarda hizmete sahiptir, aşağıdaki sayfada bazılarının temel bilgilerini, numaralandırma hilelerini, tespit engelleme yöntemlerini, kalıcılık sağlama yöntemlerini ve diğer saldırı sonrası hileleri bulabilirsiniz:
AWS - ServicesElbette tüm çalışmayı manuel olarak yapmanıza gerek yok, bu gönderinin altında otomatik araçlar hakkında bir bölüm bulabilirsiniz.
Ayrıca, bu aşamada kimlik doğrulaması yapılmamış kullanıcılara daha fazla hizmetin açığa çıktığını keşfedebilirsiniz, bunları sömürebilirsiniz:
AWS - Unauthenticated Enum & AccessAyrıcalık Yükseltme
Farklı kaynaklar üzerinde en az kendi izinlerinizi kontrol edebiliyorsanız, daha fazla izin elde edebilip edemeyeceğinizi kontrol edebilirsiniz. En azından aşağıdaki izinlere odaklanmalısınız:
AWS - Privilege EscalationKamuya Açık Hizmetler
AWS hizmetlerini numaralandırırken, bazılarının İnternet'e öğeleri açığa çıkardığını (VM/Container portları, veritabanları veya kuyruk hizmetleri, anlık görüntüler veya kovalar...) fark etmiş olabilirsiniz. Pentester/kırmızı takım olarak, bunlarda hassas bilgileri/zaafiyetleri bulup bulamayacağınızı her zaman kontrol etmelisiniz, çünkü bunlar size AWS hesabına daha fazla erişim sağlayabilir.
Bu kitapta, açığa çıkarılmış AWS hizmetlerini nasıl bulacağınızı ve kontrol edeceğinizi bulacaksınız. Açığa çıkarılmış ağ hizmetlerinde zaafiyetleri nasıl bulacağınız hakkında bilgi için, özel hizmeti aramak için aşağıdaki siteyi aramanızı öneririm:
Kuruluşu Ele Geçirme
Kök/Yönetim hesabından
Yönetim hesabı, kuruluşta yeni hesaplar oluşturduğunda, yeni bir rol oluşturur, varsayılan olarak OrganizationAccountAccessRole
adını alır ve yönetim hesabının yeni hesaba erişim için AdministratorAccess politikasını verir.
Bu nedenle, bir alt hesaba yönetici olarak erişmek için şunlara ihtiyacınız vardır:
Yönetim hesabını ele geçirin ve çocuk hesapların kimliklerini ve yönetim hesabının yönetici olarak erişmesine izin veren rolün adlarını (varsayılan olarak OrganizationAccountAccessRole) bulun.
Çocuk hesaplarını bulmak için aws konsolunda organizasyonlar bölümüne gidin veya
aws organizations list-accounts
komutunu çalıştırın.Rollerin adını doğrudan bulamazsınız, bu yüzden tüm özel IAM politikalarını kontrol edin ve önceden keşfedilen çocuk hesapları üzerinde
sts:AssumeRole
izni veren herhangi bir politikayı arayın.Yönetim hesabındaki bir temsilciyi ele geçirin ve çocuk hesaplardaki role
sts:AssumeRole
izni verin (hesap yönetim hesabından herkese kimlik taklit etmeye izin veriyor olsa bile, harici bir hesap olduğu için belirlists:AssumeRole
izinleri gereklidir).
Otomatik Araçlar
Keşif
aws-recon: Ruby ile yazılmış çoklu iş parçacıklı bir AWS güvenlik odaklı envanter toplama aracı.
cloudlist: Cloudlist, Bulut Sağlayıcılardan Varlıkları (Ana Bilgisayar Adları, IP Adresleri) almak için çoklu bulut aracıdır.
cloudmapper: CloudMapper, Amazon Web Services (AWS) ortamlarınızı analiz etmenize yardımcı olur. Artık güvenlik sorunları için denetim gibi çok daha fazla işlev içermektedir.
cartography: Cartography, bir Neo4j veritabanı tarafından desteklenen sezgisel bir graf görünümünde altyapı varlıklarını ve aralarındaki ilişkileri birleştiren bir Python aracıdır.
starbase: Starbase, Neo4j veritabanı tarafından desteklenen sezgisel bir grafik görünümüne sahip olacak şekilde bulut altyapısı, SaaS uygulamaları, güvenlik kontrolleri ve daha fazlasından varlıkları ve ilişkileri toplar.
aws-inventory: (Python2 kullanır) Bu, bir hesapta oluşturulan tüm AWS kaynaklarını keşfetmeye çalışan bir araçtır.
aws_public_ips: AWS hesabıyla ilişkilendirilmiş tüm genel IP adreslerini (IPv4/IPv6) almak için bir araçtır.
Privesc & Exploiting
SkyArk: AWS ortamında taranan en ayrıcalıklı kullanıcıları, AWS Shadow Admin'leri dahil olmak üzere keşfeder. Powershell kullanır. Ayrıcalıklı politikaların tanımını https://github.com/cyberark/SkyArk/blob/master/AWStealth/AWStealth.ps1 içindeki
Check-PrivilegedPolicy
fonksiyonunda bulabilirsiniz.pacu: Pacu, bulut ortamlarına karşı saldırgan güvenlik testleri için tasarlanmış açık kaynaklı bir AWS istismar çerçevesidir. Bu, numaralandırabilir, hatalı yapılandırmaları bulabilir ve istismar edebilir. Ayrıcalıklı izinlerin tanımını https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam__privesc_scan/main.py#L134 içindeki
user_escalation_methods
sözlüğünde bulabilirsiniz.Unutmayın ki pacu, yalnızca kendi ayrıcalık yükseltme yollarınızı kontrol eder (hesap genelinde değil).
PMapper: Principal Mapper (PMapper), bir AWS hesabı veya bir AWS organizasyonunun AWS Kimlik ve Erişim Yönetimi (IAM) yapılandırmasındaki riskleri belirlemek için bir betik ve kütüphanedir. Farklı IAM Kullanıcılarını ve Rolleri bir hesapta yönlendirilmiş bir graf olarak modeller ve bu, AWS'de bir kaynağa veya eyleme erişmek için bir saldırganın izleyebileceği alternatif yolları ve ayrıcalık yükseltme kontrollerini sağlar. https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing adresinde
_edges.py
ile biten dosya adlarında bulunan izinleri kontrol edebilirsiniz.
cloudsplaining: Cloudsplaining, AWS IAM Güvenlik Değerlendirme aracıdır ve en az ayrıcalığın ihlallerini belirler ve risk öncelikli bir HTML raporu oluşturur. Potansiyel olarak aşırı ayrıcalıklı müşteriyi, satır içi ve aws politikalarını ve onlara erişimi olan prensipleri gösterecektir. (Sadece ayrıcalık yükseltme kontrolü yapmaz, aynı zamanda diğer ilginç izinleri de kontrol eder, kullanılması önerilir).
cloudjack: CloudJack, AWS hesaplarını, ayrılmış Route53 ve CloudFront yapılandırmalarının bir sonucu olarak alt alan adı ele geçirme açıklıkları için değerlendirir.
ccat: ECR depolarını listele -> ECR deposunu çek -> Arkasına zararlı yazılım yerleştir -> Zararlı yazılımı geri yükle
Dufflebag: Dufflebag, yanlışlıkla bırakılmış olabilecek genel Elastic Block Storage (EBS) anlık görüntülerindeki gizli bilgileri arar.
Denetim
cloudsploit: Aqua tarafından geliştirilen CloudSploit, Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP), Oracle Cloud Infrastructure (OCI) ve GitHub gibi bulut altyapı hesaplarında güvenlik risklerinin tespitine izin vermek için tasarlanmış açık kaynaklı bir projedir (ShadowAdmin'leri aramaz).
Prowler: Prowler, AWS güvenlik en iyi uygulamaları değerlendirmeleri, denetimler, olay yanıtı, sürekli izleme, sıkılaştırma ve adli hazırlık yapmak için bir Açık Kaynak güvenlik aracıdır.
CloudFox: CloudFox, sizi tanıdık olmayan bulut ortamlarında durumsal farkındalık kazanmanıza yardımcı olur. Bulut altyapısında sömürülebilir saldırı yollarını bulmak için oluşturulmuş açık kaynaklı bir komut satırı aracıdır. Bu araç, sızma testçileri ve diğer saldırgan güvenlik profesyonellerine yardımcı olmak için tasarlanmıştır.
ScoutSuite: Scout Suite, açık kaynaklı bir çoklu bulut güvenlik denetimi aracıdır ve bulut ortamlarının güvenlik durumunu değerlendirmeyi sağlar.
cs-suite: Cloud Security Suite (python2.7 kullanır ve bakımsız görünüyor)
Zeus: Zeus, AWS EC2 / S3 / CloudTrail / CloudWatch / KMS için en iyi sertleştirme uygulamaları için güçlü bir araçtır (bakımsız görünüyor). Sadece sistem içinde varsayılan olarak yapılandırılmış kimlik bilgilerini kontrol eder.
Sürekli Denetim
cloud-custodian: Cloud Custodian, genel bulut hesaplarını ve kaynaklarını yönetmek için bir kurallar motorudur. Kullanıcılara, hem güvenli hem de maliyet optimize edilmiş bir bulut altyapısı sağlamak için politikaları tanımlama imkanı sunar. Cloud Custodian, organizasyonların birçok ad hoc komut dosyasını hafif ve esnek bir araçta birleştirir ve birleşik metrikler ve raporlama sağlar.
pacbot: Policy as Code Bot (PacBot), sürekli uyumluluk izleme, uyumluluk raporlama ve bulut için güvenlik otomasyonu için bir platformdur. PacBot'ta, güvenlik ve uyumluluk politikaları kod olarak uygulanır. PacBot tarafından keşfedilen tüm kaynaklar, bu politikalara uygunluğu değerlendirmek için değerlendirilir. PacBot'un otomatik düzeltme çerçevesi, önceden tanımlanmış eylemlerle politika ihlallerine otomatik olarak yanıt verme yeteneği sağlar.
streamalert: StreamAlert, gerçek zamanlı veri analizi çerçevesidir ve tanımladığınız veri kaynakları ve uyarı mantığı kullanarak herhangi bir ortamdan veri almanıza, analiz etmenize ve uyarı almanıza olanak tanır. Bilgisayar güvenlik ekipleri, olay tespiti ve yanıtı için her gün terabaytlarca günlük veriyi tarayabilmek için StreamAlert'i kullanır.
DEBUG: AWS cli isteklerini yakalama
Referanslar
Last updated