Azure Pentesting

htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahraman olmak için AWS hackleme öğrenin!

HackTricks'ı desteklemenin diğer yolları:

AZURE METODOLOJİSİNİ HALA OLUŞTURUYORUM

Temel Bilgiler

pageAz - Basic Information

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

Bir AZURE 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ç Azure hizmetlerinin ve harici hizmetlerin nasıl bağlandığıdır.

Kırmızı Takım açısından, bir Azure ortamını ele geçirmenin ilk adımı, Azure AD için bazı kimlik bilgileri 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ı)

  • Azure'da barındırılan uygulamalardaki güvenlik açıkları

  • Sunucu Tarafı İstek Sahtekarlığı (SSRF) - meta veri uç noktasına erişimle

  • Yerel Dosya Okuma

  • /home/USERNAME/.azure

  • C:\Users\USERNAME\.azure

  • az cli 2.30 öncesi - Jan2022 - erişim belirteçlerini düz metin olarak saklayan accessTokens.json dosyası

  • azureProfile.json dosyası oturum açmış kullanıcı hakkında bilgi içerir.

  • az logout belirteci kaldırır.

  • Eski sürümlerde Az PowerShell, erişim belirteçlerini düz metin olarak TokenCache.dat dosyasında saklar. Ayrıca AzureRmContext.json dosyasında ServicePrincipalSecret'i düz metin olarak saklar. Save-AzContext cmdlet'i belirteçleri saklamak için kullanılabilir. Onları kaldırmak için Disconnect-AzAccount kullanın.

    1. taraf ihlal edilmiş

  • İç Çalışan

  • Yaygın Olarak Kullanılan Spear Phishing (kimlik bilgileri veya Oauth Uygulaması)

Azure kiracısının içindeki herhangi bir kullanıcıyı ele geçirmemiş olsanız bile, ondan bazı bilgiler toplayabilirsiniz:

pageAz - Unauthenticated Enum & Initial Entry

Kimlik bilgilerini elde etmeyi başardıktan sonra, bu kimlik bilgilerinin kime ait olduğunu ve neye erişimi olduğunu bilmek için bazı temel numaralandırmalar yapmanız gerekmektedir:

Temel Numaralandırma

Numaralandırmanın en gürültülü kısmının giriş olduğunu, numaralandırmanın kendisi olmadığını unutmayın.

SSRF

Azure içindeki bir makinede SSRF bulduysanız, hileler için bu sayfaya bakın:

Giriş Koşullarını Atlama

Geçerli kimlik bilgileriniz olsa da giriş yapamıyorsanız, aşağıdaki yaygın korumalar olabilir:

  • IP beyaz listeleme -- Geçerli bir IP'yi ele geçirmeniz gerekiyor

  • Coğrafi kısıtlamalar -- Kullanıcının yaşadığı yeri veya şirketin ofislerinin bulunduğu yeri bulun ve aynı şehirden (veya en azından ülkeden) bir IP alın

  • Tarayıcı -- Belki sadece belirli bir işletim sisteminden (Windows, Linux, Mac, Android, iOS) bir tarayıcıya izin veriliyor. Kurbanın/şirketin hangi işletim sistemini kullandığını bulun.

  • Ayrıca, genellikle daha az sınırlıdır ve girişi daha az incelenir, bu nedenle Hizmet İlkesi kimlik bilgilerini ele geçirmeyi deneyebilirsiniz

Bunu atlattıktan sonra, başlangıç ​​kurulumunuza geri dönebilir ve hala erişiminiz olabilir.

Alt Alan Ele Geçirme

Ben Kimim

az cli, AzureAD ve Az PowerShell'i nasıl kuracağınızı öğrenmek için Az - AzureAD bölümüne bakın.

Bilmeniz gereken ilk şeylerden biri, 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

AzureAD

#Get the current session state
Get-AzureADCurrentSessionInfo
#Get details of the current tenant
Get-AzureADTenantDetail

Az PowerShell

# Get the information about the current context (Account, Tenant, Subscription etc.)
Get-AzContext
# List all available contexts
Get-AzContext -ListAvailable
# Enumerate subscriptions accessible by the current user
Get-AzSubscription
#Get Resource group
Get-AzResourceGroup
# Enumerate all resources visible to the current user
Get-AzResource
# Enumerate all Azure RBAC role assignments
Get-AzRoleAssignment # For all users
Get-AzRoleAssignment -SignInName test@corp.onmicrosoft.com # For current user

Azure'yi numaralandırmak için en önemli komutlardan biri Get-AzResource komutudur. Bu komut, mevcut kullanıcının görünürlüğüne sahip olduğu kaynakları bilmenizi sağlar.

Aynı bilgilere web konsolundan veya "Tüm kaynaklar"ı aratarak da ulaşabilirsiniz.

AzureAD Numaralandırma

Varsayılan olarak, herhangi bir kullanıcının kullanıcıları, grupları, rolleri, hizmet prensiplerini vb. numaralandırmak için yeterli izni olmalıdır (varsayılan AzureAD izinlerini kontrol edin). Bir rehberi burada bulabilirsiniz:

pageAz - AzureAD (AAD)

Şimdi, kimlik bilgileriniz hakkında biraz bilgiye sahip olduğunuzda (ve eğer bir kırmızı takım üyesiyseniz umarım tespit edilmemişsinizdir). Şimdi, ortamda hangi hizmetlerin kullanıldığını bulmak için zamanı geldi. Aşağıdaki bölümde, bazı yaygın hizmetleri numaralandırmak için bazı yöntemleri kontrol edebilirsiniz.

Hizmet Prensibi ve Erişim İlkesi

Bir Azure hizmeti, bir Sistem Kimliği (hizmetin kendisi) veya bir Kullanıcı Atanmış Yönetilen Kimlik kullanabilir. Bu Kimlik, örneğin bir KeyVault'ta sırları okumak için Erişim İlkesine sahip olabilir. Bu Erişim İlkeleri sınırlı olmalıdır (en az ayrıcalık ilkesi), ancak gereklenden daha fazla izne sahip olabilir. Tipik olarak, bir Uygulama Hizmeti, sırları ve sertifikaları almak için KeyVault kullanır.

Bu nedenle, bu kimlikleri keşfetmek faydalı olacaktır.

App Service SCM

App Service 'container'ına giriş yapmak için Kudu konsolu.

Webshell

portal.azure.com'u kullanın ve kabuğu seçin veya bash veya powershell için shell.azure.com'u kullanın. Bu kabuğun 'diski', bir depolama hesabında bir görüntü dosyası olarak saklanır.

Azure DevOps

Azure DevOps, Azure'dan ayrı bir hizmettir. Depoları, boruları (yaml veya yayın), panoları, wiki'leri ve daha fazlasını içerir. Değişken Grupları, değişken değerlerini ve sırlarını depolamak için kullanılır.

Otomatik Keşif Araçları

cd ROADTools
pipenv shell
roadrecon auth -u test@corp.onmicrosoft.com -p "Welcome2022!"
roadrecon gather
roadrecon gui

Import-Module monkey365
Get-Help Invoke-Monkey365
Get-Help Invoke-Monkey365 -Detailed
Invoke-Monkey365 -IncludeAzureActiveDirectory -ExportTo HTML -Verbose -Debug -InformationAction Continue
Invoke-Monkey365 - Instance Azure -Analysis All -ExportTo HTML

Stormspotter, Azure tarafından geliştirilen bir araçtır. Bu araç, Azure ortamında bulunan sanal makinelerin güvenlik durumunu değerlendirmek için kullanılır. Stormspotter, sanal makinelerin ağ trafiğini izler ve anormal aktiviteleri tespit eder. Bu sayede, potansiyel saldırıları veya güvenlik ihlallerini tespit etmek için kullanılabilir.

Stormspotter, Azure Security Center ile entegre çalışır ve güvenlik olaylarını ve tehditleri otomatik olarak tespit eder. Ayrıca, kullanıcıya anlık uyarılar ve raporlar sağlar. Bu sayede, güvenlik ekibi hızlı bir şekilde müdahale edebilir ve güvenlik açıklarını kapatmak için gerekli önlemleri alabilir.

Stormspotter, Azure ortamında bulunan sanal makinelerin güvenlik durumunu değerlendirmek ve potansiyel saldırıları tespit etmek için etkili bir araçtır.

# Start Backend
cd stormspotter\backend\
pipenv shell
python ssbackend.pyz

# Start Front-end
cd stormspotter\frontend\dist\spa\
quasar.cmd serve -p 9091 --history

# Run Stormcollector
cd stormspotter\stormcollector\
pipenv shell
az login -u test@corp.onmicrosoft.com -p Welcome2022!
python stormspotter\stormcollector\sscollector.pyz cli
# This will generate a .zip file to upload in the frontend (127.0.0.1:9091)

AzureHound, Microsoft Azure bulut platformunda yapılan bir saldırıda kullanılan bir araçtır. Bu araç, Azure Active Directory (AAD) ve Azure Resource Manager (ARM) gibi Azure hizmetlerindeki güvenlik zayıflıklarını tespit etmek için kullanılır. AzureHound, BloodHound projesinin bir parçasıdır ve BloodHound'un özelliklerini Azure ortamına uyarlar.

AzureHound, Azure bulut ortamında yapılan bir saldırıda kullanılabilecek bir dizi saldırı vektörünü keşfetmek için kullanılır. Bu vektörler arasında kullanıcı hesapları, ayrıcalıklar, grup üyelikleri, hizmet bağlantı noktaları ve Azure kaynakları gibi bilgiler yer alır. Bu bilgiler, saldırganın hedef sisteme erişim sağlamasına ve daha fazla saldırı yapmasına olanak tanır.

AzureHound, Azure ortamında yapılan bir saldırıda kullanılabilecek bir dizi saldırı vektörünü keşfetmek için kullanılır. Bu vektörler arasında kullanıcı hesapları, ayrıcalıklar, grup üyelikleri, hizmet bağlantı noktaları ve Azure kaynakları gibi bilgiler yer alır. Bu bilgiler, saldırganın hedef sisteme erişim sağlamasına ve daha fazla saldırı yapmasına olanak tanır.

AzureHound, Azure ortamında yapılan bir saldırıda kullanılabilecek bir dizi saldırı vektörünü keşfetmek için kullanılır. Bu vektörler arasında kullanıcı hesapları, ayrıcalıklar, grup üyelikleri, hizmet bağlantı noktaları ve Azure kaynakları gibi bilgiler yer alır. Bu bilgiler, saldırganın hedef sisteme erişim sağlamasına ve daha fazla saldırı yapmasına olanak tanır.

AzureHound, Azure ortamında yapılan bir saldırıda kullanılabilecek bir dizi saldırı vektörünü keşfetmek için kullanılır. Bu vektörler arasında kullanıcı hesapları, ayrıcalıklar, grup üyelikleri, hizmet bağlantı noktaları ve Azure kaynakları gibi bilgiler yer alır. Bu bilgiler, saldırganın hedef sisteme erişim sağlamasına ve daha fazla saldırı yapmasına olanak tanır.

# You need to use the Az PowerShell and Azure AD modules:
$passwd = ConvertTo-SecureString "Welcome2022!" -AsPlainText -Force
$creds = New-Object System.Management.Automation.PSCredential ("test@corp.onmicrosoft.com", $passwd)
Connect-AzAccount -Credential $creds

Import-Module AzureAD\AzureAD.psd1
Connect-AzureAD -Credential $creds

# Launch AzureHound
. AzureHound\AzureHound.ps1
Invoke-AzureHound -Verbose

# Simple queries
## All Azure Users
MATCH (n:AZUser) return n.name
## All Azure Applications
MATCH (n:AZApp) return n.objectid
## All Azure Devices
MATCH (n:AZDevice) return n.name
## All Azure Groups
MATCH (n:AZGroup) return n.name
## All Azure Key Vaults
MATCH (n:AZKeyVault) return n.name
## All Azure Resource Groups
MATCH (n:AZResourceGroup) return n.name
## All Azure Service Principals
MATCH (n:AZServicePrincipal) return n.objectid
## All Azure Virtual Machines
MATCH (n:AZVM) return n.name
## All Principals with the ‘Contributor’ role
MATCH p = (n)-[r:AZContributor]->(g) RETURN p

# Advanced queries
## Get Global Admins
MATCH p =(n)-[r:AZGlobalAdmin*1..]->(m) RETURN p
## Owners of Azure Groups
MATCH p = (n)-[r:AZOwns]->(g:AZGroup) RETURN p
## All Azure Users and their Groups
MATCH p=(m:AZUser)-[r:MemberOf]->(n) WHERE NOT m.objectid CONTAINS 'S-1-5' RETURN p
## Privileged Service Principals
MATCH p = (g:AZServicePrincipal)-[r]->(n) RETURN p
## Owners of Azure Applications
MATCH p = (n)-[r:AZOwns]->(g:AZApp) RETURN p
## Paths to VMs
MATCH p = (n)-[r]->(g: AZVM) RETURN p
## Paths to KeyVault
MATCH p = (n)-[r]->(g:AZKeyVault) RETURN p
## Paths to Azure Resource Group
MATCH p = (n)-[r]->(g:AZResourceGroup) RETURN p
## On-Prem users with edges to Azure
MATCH  p=(m:User)-[r:AZResetPassword|AZOwns|AZUserAccessAdministrator|AZContributor|AZAddMembers|AZGlobalAdmin|AZVMContributor|AZOwnsAZAvereContributor]->(n) WHERE m.objectid CONTAINS 'S-1-5-21' RETURN p
## All Azure AD Groups that are synchronized with On-Premise AD
MATCH (n:Group) WHERE n.objectid CONTAINS 'S-1-5' AND n.azsyncid IS NOT NULL RETURN n

Azucar, Azure bulut platformunda yapılan bir güvenlik değerlendirmesi için bir araçtır. Bu araç, Azure ortamında bulunan kaynakları ve yapılandırmaları analiz etmek ve güvenlik açıklarını tespit etmek için kullanılır.

Azucar, Azure kaynaklarını otomatik olarak keşfeder ve bu kaynakların güvenlik yapılandırmalarını kontrol eder. Ayrıca, kullanıcıların yetkilendirme hatalarını ve ayrıcalık yükseltme fırsatlarını tespit etmek için de kullanılabilir.

Bu araç, Azure bulut platformunda yapılan bir pentest sırasında kullanılabilecek önemli bir kaynaktır. Azure ortamında güvenlik açıklarını tespit etmek ve düzeltmek için kullanılabilir.

# You should use an account with at least read-permission on the assets you want to access
git clone https://github.com/nccgroup/azucar.git
PS> Get-ChildItem -Recurse c:\Azucar_V10 | Unblock-File

PS> .\Azucar.ps1 -AuthMode UseCachedCredentials -Verbose -WriteLog -Debug -ExportTo PRINT
PS> .\Azucar.ps1 -ExportTo CSV,JSON,XML,EXCEL -AuthMode Certificate_Credentials -Certificate C:\AzucarTest\server.pfx -ApplicationId 00000000-0000-0000-0000-000000000000 -TenantID 00000000-0000-0000-0000-000000000000
PS> .\Azucar.ps1 -ExportTo CSV,JSON,XML,EXCEL -AuthMode Certificate_Credentials -Certificate C:\AzucarTest\server.pfx -CertFilePassword MySuperP@ssw0rd! -ApplicationId 00000000-0000-0000-0000-000000000000 -TenantID 00000000-0000-0000-0000-000000000000

# resolve the TenantID for an specific username
PS> .\Azucar.ps1 -ResolveTenantUserName user@company.com

MicroBurst, bir Azure ortamında yüksek hızda kimlik doğrulama saldırıları gerçekleştirmek için kullanılan bir araçtır. Bu araç, Azure Active Directory (AAD) kimlik doğrulama hizmetine karşı saldırılar gerçekleştirmek için tasarlanmıştır. MicroBurst, kimlik doğrulama isteklerini hızlı bir şekilde göndererek, kimlik doğrulama hizmetinin performansını etkileyebilir ve hatta hizmetin çökmesine neden olabilir. Bu saldırı, bir hedefin kimlik doğrulama hizmetine olan erişimini engelleyerek, hedefin iş sürekliliğini etkileyebilir.

Import-Module .\MicroBurst.psm1
Import-Module .\Get-AzureDomainInfo.ps1
Get-AzureDomainInfo -folder MicroBurst -Verbose

PowerZure, Azure bulut platformunda güvenlik testleri yapmak için kullanılan bir PowerShell betiğidir. Bu betik, Azure bulut ortamında güvenlik açıklarını tespit etmek ve istismar etmek için çeşitli araçlar ve teknikler sağlar.

PowerZure, Azure kaynaklarını keşfetmek, kullanıcı hesaplarını analiz etmek, ayrıcalıklı erişim haklarını kontrol etmek, ağ trafiğini izlemek ve Azure hizmetlerini istismar etmek için kullanılabilir. Ayrıca, Azure bulut ortamında güvenlik açıklarını tespit etmek için kullanılan diğer araçlarla entegrasyon sağlar.

Bu betik, Azure bulut platformunda güvenlik testleri yapmak isteyen pentester'lar ve güvenlik araştırmacıları için değerli bir kaynaktır. PowerZure, Azure bulut ortamında güvenlik açıklarını tespit etmek ve istismar etmek için etkili bir araçtır.

Connect-AzAccount
ipmo C:\Path\To\Powerzure.psd1
Get-AzureTarget

# Reader
$ Get-Runbook, Get-AllUsers, Get-Apps, Get-Resources, Get-WebApps, Get-WebAppDetails

# Contributor
$ Execute-Command -OS Windows -VM Win10Test -ResourceGroup Test-RG -Command "whoami"
$ Execute-MSBuild -VM Win10Test  -ResourceGroup Test-RG -File "build.xml"
$ Get-AllSecrets # AllAppSecrets, AllKeyVaultContents
$ Get-AvailableVMDisks, Get-VMDisk # Download a virtual machine's disk

# Owner
$ Set-Role -Role Contributor -User test@contoso.com -Resource Win10VMTest

# Administrator
$ Create-Backdoor, Execute-Backdoor
AWS hacklemeyi sıfırdan kahraman olmaya kadar öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı)!

HackTricks'ı desteklemenin diğer yolları:

Last updated