Azure Pentesting

Tip

AWS Hacking’i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin

Temel Bilgiler

Azure ve Entra ID’nin temellerini öğrenmek için aşağıdaki sayfayı ziyaret edin:

Az - Basic Information

Azure Pentester/Kırmızı Takım Metodolojisi

AZURE ortamını denetlemek için bilmek çok önemlidir: hangi hizmetlerin kullanıldığı, neyin açık olduğu, kimin neye erişimi olduğu ve iç Azure hizmetlerinin ve dış hizmetlerin nasıl bağlandığı.

Kırmızı takım bakış açısıyla, bir Azure ortamını tehlikeye atmanın ilk adımı bazı ayak izleri elde etmektir.

Dış Enum & İlk Erişim

İlk adım, elbette, saldırdığınız kiracı hakkında bilgi toplamak ve bir ayak izi elde etmeye çalışmaktır.

Alan adı temelinde, şirketin Azure kullanıp kullanmadığını, kiracı ID’sini öğrenmek, aynı kiracıda (varsa) diğer geçerli alan adlarını bulmak ve SSO’nun etkin olup olmadığını, e-posta yapılandırmalarını, geçerli kullanıcı e-postalarını gibi ilgili bilgileri elde etmek mümkündür.

Dış enum gerçekleştirmek için aşağıdaki sayfayı kontrol edin:

Az - Unauthenticated Enum & Initial Entry

Bu bilgilerle, bir ayak izi elde etmeye çalışmanın en yaygın yolları şunlardır:

  • OSINT: leak’leri Github veya başka bir açık kaynak platformda kontrol edin, bu platformlar kimlik bilgileri veya ilginç bilgiler içerebilir.
  • Şifre yeniden kullanımı, sızıntılar veya şifre püskürtme
  • Bir çalışandan kimlik bilgileri satın almak
  • Yaygın Phishing (kimlik bilgileri veya Oauth Uygulaması)
  • Cihaz Kodu Kimlik Doğrulama Phishing
    1. tarafların ihlal edilmesi
  • Azure’da barındırılan uygulamalardaki güvenlik açıkları
  • Sunucu Tarafı İstek Sahteciliği ile meta veri uç noktasına erişim
  • https://godiego.co/posts/STO-Azure/ gibi alt alan ele geçirmeleri
  • Diğer azure hizmetleri yanlış yapılandırmaları
  • Bazı geliştirici dizüstü bilgisayarları tehlikeye girerse (WinPEAS ve LinPEAS bu bilgiyi bulabilir):
  • İçinde <HOME>/.Azure
  • azureProfile.json geçmişte oturum açmış kullanıcılar hakkında bilgi içerir
  • clouds.config abonelikler hakkında bilgi içerir
  • service_principal_entries.json uygulama kimlik bilgilerini (kiracı id, istemciler ve gizli anahtar) içerir. Sadece Linux ve macOS’ta
  • msal_token_cache.json erişim jetonları ve yenileme jetonları içerir. Sadece Linux ve macOS’ta
  • service_principal_entries.bin ve msal_token_cache.bin Windows’ta kullanılır ve DPAPI ile şifrelenmiştir
  • msal_http_cache.bin HTTP isteği önbelleğidir
  • Yükleyin: with open("msal_http_cache.bin", 'rb') as f: pickle.load(f)
  • AzureRmContext.json Az PowerShell kullanarak önceki oturum açma bilgilerini içerir (ancak kimlik bilgileri yoktur)
  • İçinde C:\Users\<username>\AppData\Local\Microsoft\IdentityCache\* birçok .bin dosyası bulunur ve bunlar erişim jetonları, ID jetonları ve kullanıcıların DPAPI ile şifrelenmiş hesap bilgilerini içerir.
  • C:\Users\<username>\AppData\Local\Microsoft\TokenBroken\Cache\ içindeki .tbres dosyalarında daha fazla erişim jetonu bulmak mümkündür; bunlar DPAPI ile şifrelenmiş erişim jetonlarını içerir.
  • Linux ve macOS’ta, Az PowerShell (kullanıldıysa) ile pwsh -Command "Save-AzContext -Path /tmp/az-context.json" çalıştırarak erişim jetonları, yenileme jetonları ve id jetonları alabilirsiniz.
  • Windows’ta bu sadece id jetonları üretir.
  • Linux ve macOS’ta Az PowerShell’in kullanılıp kullanılmadığını kontrol etmek için $HOME/.local/share/.IdentityService/ var mı diye bakabilirsiniz (içindeki dosyalar boş ve işe yaramaz olsa da)

Aşağıdaki sayfada bir ayak izi elde etmeye yol açabilecek diğer Azure Hizmetleri yanlış yapılandırmalarını bulun:

Az - Unauthenticated Enum & Initial Entry

Note

Genellikle en gürültülü bölümün giriş olduğunu, kendisinin değil, enum olduğunu unutmayın.

Azure & Entra ID Araçları

Aşağıdaki araçlar, hem Entra ID kiracılarını hem de Azure ortamlarını yavaşça (tespit edilmemek için) veya otomatik olarak (zaman kazanmak için) listelemek için çok faydalı olacaktır:

Az - Enumeration Tools

Erişim Politikalarını Aşma

Geçerli kimlik bilgilerine sahip olduğunuz ancak giriş yapamadığınız durumlarda, mevcut olabilecek bazı yaygın korumalar şunlardır:

  • IP beyaz listeleme – Geçerli bir IP’yi tehlikeye atmanız gerekir
  • Coğrafi kısıtlamalar – Kullanıcının nerede yaşadığını veya şirketin ofislerinin nerede olduğunu bulmak ve aynı şehirden (veya en azından aynı ülkeden) bir IP almak
  • Tarayıcı – Belki de yalnızca belirli bir işletim sisteminden (Windows, Linux, Mac, Android, iOS) bir tarayıcıya izin verilmektedir. Kurbanın/şirketin hangi işletim sistemini kullandığını öğrenin.
  • Ayrıca, genellikle daha az sınırlı olan ve girişi daha az incelenen Hizmet Prensibi kimlik bilgilerini tehlikeye atmayı deneyebilirsiniz.

Bunu aştıktan sonra, başlangıç ayarlarınıza geri dönebilir ve hala erişiminiz olabilir.

Kontrol edin:

Az - Conditional Access Policies & MFA Bypass

Whoami

Caution

Az - Entra ID bölümünde az cli, AzureAD ve Az PowerShell’in nasıl yükleneceğini öğrenin.

Bilmeniz gereken ilk şey kim olduğunuzdur (hangi ortamda olduğunuz):

az account list
az account tenant list # Current tenant info
az account subscription list # Current subscription info
az ad signed-in-user show # Current signed-in user
az ad signed-in-user list-owned-objects # Get owned objects by current user
az account management-group list #Not allowed by default

Entra ID Enumeration & Privesc

Varsayılan olarak, herhangi bir kullanıcının kullanıcılar, gruplar, roller, hizmet ilkeleri gibi şeyleri listelemek için yeterli izinlere sahip olması gerekir… (bakınız varsayılan AzureAD izinleri).
Burada bir kılavuz bulabilirsiniz:

Az - Entra ID (AzureAD) & Azure IAM

Entra ID’de ayrıcalıkları artırmak için AzureHound gibi araçlar bulmak için Post-Exploitation araçlarına bakın:

Automated Post Exploitation Tools

Azure Enumeration

Kendinizi tanıdıktan sonra, erişim sağladığınız Azure hizmetlerini listelemeye başlayabilirsiniz.

Kaynaklar üzerindeki izinlerinizi bulmaya başlamalısınız. Bunun için:

  1. Erişim sağladığınız kaynağı bulun:

Tip

Bu, herhangi bir özel izin gerektirmez.

Az PowerShell komutu Get-AzResource, mevcut kullanıcınızın görünürlüğü olan kaynakları bilmenizi sağlar.

Ayrıca, aynı bilgiyi web konsolunda https://portal.azure.com/#view/HubsExtension/BrowseAll adresine giderek veya “Tüm kaynaklar” araması yaparak veya şu komutu çalıştırarak alabilirsiniz:

az rest --method GET --url "https://management.azure.com/subscriptions/<subscription-id>/resources?api-version=2021-04-01"
  1. Görüntüleyebileceğiniz kaynaklar üzerindeki izinlerinizi bulun:

Tip

Bu, herhangi bir özel izin gerektirmez.

API ile https://management.azure.com/{resource_id}/providers/Microsoft.Authorization/permissions?api-version=2022-04-01 konuşarak, belirtilen kaynak üzerindeki izinlerinizi alabilirsiniz resource_id.

Bu nedenle, erişim sağladığınız her bir kaynağı kontrol ederek, üzerindeki izinlerinizi alabilirsiniz.

Warning

Bu sayım işlemini Find_My_Az_Management_Permissions aracıyla otomatikleştirebilirsiniz.

İzinleri **`Microsoft.Authorization/roleAssignments/read`** ile sayın

Tip

Bu işlemi gerçekleştirmek için Microsoft.Authorization/roleAssignments/read iznine ihtiyacınız olduğunu unutmayın.

  • Yeterli izinlerle, Get-AzRoleAssignment rolü, abonelikteki tüm rolleri veya belirli bir kaynak üzerindeki izinleri saymak için kullanılabilir.
Get-AzRoleAssignment -Scope /subscriptions/<subscription-id>/resourceGroups/Resource_Group_1/providers/Microsoft.RecoveryServices/vaults/vault-m3ww8ut4

Bu bilgiyi çalıştırarak almak da mümkündür:

az rest --method GET --uri "https://management.azure.com/<Scope>/providers/Microsoft.Authorization/roleAssignments?api-version=2022-04-01" | jq ".value"

gibi:

az rest --method GET --uri "https://management.azure.com//subscriptions/<subscription-id>/resourceGroups/Resource_Group_1/providers/Microsoft.KeyVault/vaults/vault-m3ww8ut4/providers/Microsoft.Authorization/roleAssignments?api-version=2022-04-01" | jq ".value"
  • Diğer bir seçenek, azure’da size atanmış rolleri almak. Bu da Microsoft.Authorization/roleAssignments/read iznini gerektirir:
az role assignment list --assignee "<email>" --all --output table

Aşağıdakileri çalıştırarak (Eğer sonuçlar boşsa, bu onların alınması için izninizin olmamasından kaynaklanıyor olabilir):

az rest --method GET --uri 'https://management.azure.com/subscriptions/<subscription-id>/providers/Microsoft.Authorization/roleAssignments?api-version=2022-04-01&$filter=principalId eq '<user-id>'
  • Size size izinleri bul:

Ardından, granular izinleri almak için (Get-AzRoleDefinition -Id "<RoleDefinitionId>").Actions komutunu çalıştırabilirsiniz.

Veya API’yi doğrudan çağırın.

az rest --method GET --uri "https://management.azure.com//subscriptions/<subscription-id>/providers/Microsoft.Authorization/roleDefinitions/<RoleDefinitionId>?api-version=2022-04-01" | jq ".properties"

Aşağıdaki bölümde en yaygın Azure hizmetleri hakkında bilgi ve bunları nasıl listeleyeceğinizi bulabilirsiniz:

Az - Services

Ayrıcalık Yükseltme, Sonrası Sömürü & Süreklilik

Azure ortamının nasıl yapılandığını ve hangi hizmetlerin kullanıldığını öğrendikten sonra, ayrıcalıkları yükseltme, yan hareket etme, diğer sonrası sömürü saldırılarını gerçekleştirme ve sürekliliği sağlama yollarını aramaya başlayabilirsiniz.

Aşağıdaki bölümde en yaygın Azure hizmetlerinde ayrıcalıkları nasıl yükselteceğiniz hakkında bilgi bulabilirsiniz:

Az - Privilege Escalation

Aşağıdaki bölümde en yaygın Azure hizmetlerinde sonrası sömürü saldırılarını nasıl gerçekleştireceğiniz hakkında bilgi bulabilirsiniz:

Az - Post Exploitation

Aşağıdaki bölümde en yaygın Azure hizmetlerinde sürekliliği nasıl sağlayacağınız hakkında bilgi bulabilirsiniz:

Az - Persistence

Tip

AWS Hacking’i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin