Translated ['src/pentesting-cloud/azure-security/az-privilege-escalation

This commit is contained in:
Translator
2025-01-10 17:42:09 +00:00
parent 32c978fffc
commit 87693db1ea
2 changed files with 28 additions and 30 deletions

View File

@@ -10,7 +10,7 @@ Daha fazla bilgi için kontrol edin:
../az-services/az-automation-accounts.md
{{#endref}}
### Hybrid Workers
### Hybrid Workers Group
Unutmayın ki eğer bir şekilde bir saldırgan bir hybrid worker'da keyfi bir runbook (keyfi kod) çalıştırabiliyorsa, **VM'nin konumuna geçiş yapacaktır**. Bu, bir yerel makine, farklı bir bulutun VPC'si veya hatta bir Azure VM olabilir.
@@ -21,7 +21,7 @@ Ayrıca, eğer hybrid worker Azure'da diğer Yönetilen Kimliklerle birlikte ça
### `Microsoft.Automation/automationAccounts/jobs/write`, `Microsoft.Automation/automationAccounts/runbooks/draft/write`, `Microsoft.Automation/automationAccounts/jobs/output/read`, `Microsoft.Automation/automationAccounts/runbooks/publish/action` (`Microsoft.Resources/subscriptions/resourcegroups/read`, `Microsoft.Automation/automationAccounts/runbooks/write`)
Özetle, bu izinler **Automation Account'ta Runbook'lar oluşturma, değiştirme ve çalıştırma** yetkisi verir; bu da **Automation Account'ın bağlamında kod çalıştırmak** ve atanan **Yönetilen Kimliklere** ayrıcalıkları yükseltmek için kullanılabilir ve **kimlik bilgilerini** ve **şifrelenmiş değişkenleri** Automation Account'ta sızdırabilir.
Özetle, bu izinler **Automation Account'ta Runbook'lar oluşturma, değiştirme ve çalıştırma** yetkisi verir; bu da **Automation Account'ın bağlamında kod çalıştırmak** ve atanan **Yönetilen Kimliklere** ayrıcalıkları yükseltmek için kullanılabilir ve **kimlik bilgilerini** ve **şifrelenmiş değişkenleri** sızdırabilir.
**`Microsoft.Automation/automationAccounts/runbooks/draft/write`** izni, Automation Account'taki bir Runbook'un kodunu değiştirmeye olanak tanır:
```bash
@@ -80,7 +80,7 @@ az rest --method PATCH \
```
### `Microsoft.Automation/automationAccounts/schedules/write`, `Microsoft.Automation/automationAccounts/jobSchedules/write`
**`Microsoft.Automation/automationAccounts/schedules/write`** izni ile, her 15 dakikada bir çalışan yeni bir Takvim oluşturmak mümkündür (çok gizli değil) aşağıdaki komut kullanılarak.
**`Microsoft.Automation/automationAccounts/schedules/write`** izni ile, her 15 dakikada bir (çok gizli değil) çalışan yeni bir Takvim oluşturmak mümkündür. Aşağıdaki komut kullanılarak yapılabilir.
Takvim için **minimum aralığın 15 dakika** olduğunu ve **minimum başlangıç zamanının 5 dakika** gelecekte olduğunu unutmayın.
```bash
@@ -231,17 +231,17 @@ Eğer bir otomasyon hesabı özel bir çalışma ortamı kullanıyorsa, çalış
1. `reverse_shell_config.ps1`: Yükü alıp çalıştıran bir İstenilen Durum Yapılandırması (DSC) dosyası. [GitHub](https://github.com/nickpupp0/AzureDSCAbuse/blob/master/reverse_shell_config.ps1) adresinden temin edilebilir.
2. `push_reverse_shell_config.ps1`: Yapılandırmayı VM'ye yayınlamak için bir betik, [GitHub](https://github.com/nickpupp0/AzureDSCAbuse/blob/master/push_reverse_shell_config.ps1) adresinde mevcuttur.
**Özelleştirme:** Bu dosyalardaki değişkenler ve parametreler, kullanıcıya özgü ortam için, kaynak adları, dosya yolları ve sunucu/yük tanımlayıcıları dahil olmak üzere özelleştirilmelidir.
**Özelleştirme:** Bu dosyalardaki değişkenler ve parametreler, kullanıcıya özgü ortama göre, kaynak adları, dosya yolları ve sunucu/yük tanımlayıcıları dahil olmak üzere özelleştirilmelidir.
- Adım 2 — Yapılandırma Dosyasını Sıkıştırma
`reverse_shell_config.ps1` bir `.zip` dosyasına sıkıştırılır, böylece Azure Depolama Hesabına aktarım için hazır hale gelir.
`reverse_shell_config.ps1` bir `.zip` dosyasına sıkıştırılır, böylece Azure Depolama Hesabına transfer için hazır hale gelir.
```powershell
Compress-Archive -Path .\reverse_shell_config.ps1 -DestinationPath .\reverse_shell_config.ps1.zip
```
- Adım 3 — Depolama Bağlamını Ayarla ve Yükle
Sıkıştırılmış yapılandırma dosyası, Azure'un Set-AzStorageBlobContent cmdlet'ini kullanarak önceden tanımlanmış Azure Depolama konteyneri olan azure-pentest'e yüklenir.
Sıkıştırılmış yapılandırma dosyası, Azure'un Set-AzStorageBlobContent cmdlet'ini kullanarak önceden tanımlanmış bir Azure Depolama konteyneri olan azure-pentest'e yüklenir.
```powershell
Set-AzStorageBlobContent -File "reverse_shell_config.ps1.zip" -Container "azure-pentest" -Blob "reverse_shell_config.ps1.zip" -Context $ctx
```
@@ -255,7 +255,7 @@ Hedef Windows VM ve ters shell için port belirtmek üzere script düzenlenir.
- Adım 5 — Yapılandırma Dosyasını Yayınla
Yapılandırma dosyası çalıştırılır ve sonuç olarak ters shell scripti belirtilen konuma Windows VM üzerinde dağıtılır.
Yapılandırma dosyası çalıştırılır ve ters shell scripti belirtilen konuma Windows VM üzerinde dağıtılır.
- Adım 6 — Payload'ı Barındır ve Dinleyici Kur

View File

@@ -4,25 +4,23 @@
## Temel Bilgiler
Azure Automation Hesapları, Microsoft Azure'da kaynak yönetimi, yapılandırma ve güncellemeler gibi **görevleri otomatikleştirmeye** yardımcı olan bulut tabanlı hizmetlerdir. **Runbook'lar** (çalıştırılan otomasyon için betikler), **programlar** ve otomasyon **işlerini** çalıştırmak için **hibrit işçi grupları** sağlar, bu da kod olarak altyapı (IaC) ve süreç otomasyonu ile bulut kaynaklarını yönetmede verimlilik ve tutarlılığı artırır.
Azure Automation Hesapları, Microsoft Azure'da kaynak yönetimi, yapılandırma ve güncellemeler gibi **görevleri otomatikleştirmeye** yardımcı olan bulut tabanlı hizmetlerdir. **Runbook'lar** (çalıştırılan otomasyon için betikler), **takvimler** ve otomasyon **işlerini** çalıştırmak için **hibrit işçi grupları** sağlar, bu da kod olarak altyapı (IaC) ve süreç otomasyonu ile bulut kaynaklarını yönetmede verimlilik ve tutarlılığı artırır.
### Ayarlar
- **Kimlik Bilgileri**: Şifre, otomasyon hesabı içindeki bir runbook içinde yalnızca erişilebilir, **kullanıcı adlarını ve şifreleri güvenli bir şekilde saklamak için** kullanılır.
- **Değişkenler**: Runbook'larda kullanılabilecek **yapılandırma verilerini** saklamak için kullanılır. Bu, API anahtarları gibi hassas bilgiler de olabilir. Değişken **şifrelenmiş olarak saklanıyorsa**, yalnızca otomasyon hesabı içindeki bir runbook içinde erişilebilir.
- **Kimlik Bilgileri**: Şifre, otomasyon hesabındaki bir runbook içinde yalnızca erişilebilir, **kullanıcı adlarını ve şifreleri güvenli bir şekilde saklamak için** kullanılır.
- **Değişkenler**: Runbook'larda kullanılabilecek **yapılandırma verilerini** saklamak için kullanılır. Bu, API anahtarları gibi hassas bilgiler de olabilir. Değişken **şifrelenmiş olarak saklanıyorsa**, yalnızca otomasyon hesabındaki bir runbook içinde erişilebilir.
- **Sertifikalar**: Runbook'larda kullanılabilecek **sertifikaları** saklamak için kullanılır.
- **Bağlantılar**: Harici hizmetlere ait **bağlantı bilgilerini** saklamak için kullanılır. Bu, **hassas bilgiler** içerebilir.
- **Ağ Erişimi**: **Herkese açık** veya **özel** olarak ayarlanabilir.
## Runbook'lar & İşler
### Runbook'lar & İşler
Azure Automation'daki bir Runbook, bulut ortamınızda görevleri otomatik olarak **yerine getiren bir betiktir**. Runbook'lar PowerShell, Python veya Grafik editörlerde yazılabilir. VM yönetimi, yamanlama veya uyumluluk kontrolleri gibi idari görevleri otomatikleştirmeye yardımcı olurlar.
**Runbook'lar** içindeki **kod**, **hassas bilgi** (örneğin kimlik bilgileri) içerebilir.
`Automation Accounts` --> `<Select Automation Account>` --> `Runbooks/Jobs/Hybrid worker groups/Watcher tasks/credentials/variables/certificates/connections` adresine gidin.
Bir **İş**, bir Runbook yürütme örneğidir. Bir Runbook çalıştırdığınızda, o yürütmeyi izlemek için bir İş oluşturulur. Her iş şunları içerir:
Bir **İş, bir Runbook yürütme örneğidir**. Bir Runbook çalıştırdığınızda, o yürütmeyi izlemek için bir İş oluşturulur. Her iş şunları içerir:
- **Durum**: Kuyrukta, Çalışıyor, Tamamlandı, Başarısız, Askıya Alındı.
- **Çıktı**: Runbook yürütmesinin sonucu.
@@ -30,23 +28,23 @@ Bir **İş**, bir Runbook yürütme örneğidir. Bir Runbook çalıştırdığı
Bir iş, **Runbook** yürütmesinin **çıktısını** içerir. **İşleri** **okuyabiliyorsanız**, bunu yapın çünkü **çıkta** **run** (potansiyel **hassas bilgi**) içerir.
### Programlar & Webhook'lar
### Takvimler & Webhook'lar
Bir Runbook'u çalıştırmanın 3 ana yolu vardır:
- **Programlar**: Bunlar, Runbook'ları **belirli bir zamanda** veya **aralıkta** **tetiklemek için** kullanılır.
- **Takvimler**: Bunlar, Runbook'ları **belirli bir zamanda** veya **aralıkta** **tetiklemek için** kullanılır.
- **Webhook'lar**: Bunlar, **harici hizmetlerden** Runbook'ları **tetiklemek için** kullanılabilecek **HTTP uç noktalarıdır**. Webhook URL'sinin oluşturulduktan sonra **görünür olmadığını** unutmayın.
- **Manuel Tetikleme**: Azure Portal'dan ve cli'dan bir Runbook'u **manuel olarak tetikleyebilirsiniz**.
### Kaynak Kontrolü
Runbook'ları **Github, Azure Devops (Git) ve Azure Devops (TFVC)**'den içe aktarmayı sağlar. Repo'daki Runbook'ları Azure Automation hesabına yayınlamak için belirtmek ve ayrıca **repo'dan değişiklikleri senkronize etmek** için belirtmek mümkündür.
Runbook'ları **Github, Azure Devops (Git) ve Azure Devops (TFVC)**'den içe aktarmayı sağlar. Repo'daki Runbook'ları Azure Automation hesabına yayınlamak için belirtmek mümkündür ve ayrıca **repo'daki değişiklikleri** Azure Automation hesabına **senkronize etmek** için belirtmek de mümkündür.
Senkronizasyon etkinleştirildiğinde, **Github deposunda bir webhook oluşturulur** ve her push olayı gerçekleştiğinde senkronizasyonu tetikler. Bir webhook URL'sinin örneği: `https://f931b47b-18c8-45a2-9d6d-0211545d8c02.webhook.eus.azure-automation.net/webhooks?token=DRjQyFiOrUtz%2fw7o23XbDpOlTe1%2bUqPQm4pQH2WBfJg%3d`
Bu webhook'ların, Github deposuna bağlı runbook'larda listelenirken **görünmeyeceğini** unutmayın. Ayrıca, bir kaynak kontrolü oluşturulduktan sonra **repo URL'sini değiştirmek mümkün değildir**.
Bu webhook'ların, Github deposuna bağlı runbook'larda listelendiğinde **görünmeyeceğini** unutmayın. Ayrıca, bir kaynak kontrolü oluşturulduktan sonra **repo URL'sinin değiştirilmesinin mümkün olmadığını** unutmayın.
Yapılandırılan kaynak kontrolünün çalışabilmesi için, **Azure Automation Hesabı**'nın **`Contributor`** rolüne sahip bir yönetilen kimliğe (sistem veya kullanıcı) sahip olması gerekir. Ayrıca, Automation Hesabına bir kullanıcı yönetilen kimliği atamak için, kullanıcı MI'nin istemci kimliğini **`AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID`** değişkeninde belirtmek gerekir.
Yapılandırılan kaynak kontrolünün çalışabilmesi için, **Azure Automation Hesabı**'nın **`Katkıda Bulunan`** rolüne sahip bir yönetilen kimliğe (sistem veya kullanıcı) sahip olması gerekir. Ayrıca, Automation Hesabına bir kullanıcı yönetilen kimliği atamak için, **`AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID`** değişkeninde kullanıcı MI'nin istemci kimliğini belirtmek gerekir.
### Çalışma Ortamları
@@ -59,32 +57,32 @@ Bir Runbook oluştururken çalışma ortamını seçmek mümkündür. Varsayıla
- **Python 3.8**
- **Python 2.7**
Ancak, bunlardan birini temel alarak **kendi ortamlarınızı oluşturmak** da mümkündür. Python durumunda, kullanılacak ortama `.whl` paketleri yüklemek mümkündür. PowerShell durumunda, çalışma zamanında bulunması gereken modüllerle birlikte `.zip` paketleri yüklemek mümkündür.
Ancak, bunlardan birini temel alarak **kendi ortamlarınızı oluşturmak** da mümkündür. Python durumunda, kullanılacak ortama `.whl` paketleri yüklemek mümkündür. PowerShell durumunda, çalışma zamanında sahip olunacak modüllerle birlikte `.zip` paketleri yüklemek mümkündür.
### Hibrit İşçi Grupları
Azure Automation'da, runbook'lar için varsayılan yürütme ortamı **Azure Sandbox**'dır, bu Azure tarafından yönetilen bulut tabanlı bir platformdur ve Azure kaynaklarıyla ilgili görevler için uygundur. Ancak, bu sandbox'ın, yerel kaynaklara erişim kısıtlamaları ve yürütme süresi ile kaynak kullanımı üzerinde kısıtlamalar gibi sınırlamaları vardır. Bu sınırlamaları aşmak için Hibrit İşçi Grupları kullanılır. Bir Hibrit İşçi Grubu, **kendi makinelerinizde kurulu bir veya daha fazla Hibrit Runbook İşçisi** içerir; bu makineler yerel, diğer bulut ortamlarında veya Azure VM'lerinde olabilir. Bu yapılandırma, runbook'ların bu makinelerde doğrudan çalıştırılmasını sağlar, yerel kaynaklara doğrudan erişim, daha uzun ve daha kaynak yoğun görevleri çalıştırma yeteneği ve Azure'un hemen erişiminde olmayan ortamlarla etkileşimde bulunma esnekliği sunar.
Azure Automation'da, runbook'lar için varsayılan yürütme ortamı **Azure Sandbox**'dır, bu Azure tarafından yönetilen bulut tabanlı bir platformdur ve Azure kaynaklarıyla ilgili görevler için uygundur. Ancak, bu sandbox'ın, yerel kaynaklara erişim kısıtlamaları ve yürütme süresi ile kaynak kullanımı üzerinde kısıtlamalar gibi sınırlamaları vardır. Bu sınırlamaları aşmak için Hibrit İşçi Grupları kullanılır. Bir Hibrit İşçi Grubu, **kendi makinelerinizde kurulu bir veya daha fazla Hibrit Runbook İşçisinden** oluşur; bu makineler yerel, diğer bulut ortamlarında veya Azure VM'lerinde olabilir. Bu yapılandırma, runbook'ların doğrudan bu makinelerde yürütülmesine olanak tanır, yerel kaynaklara doğrudan erişim sağlar, daha uzun ve daha kaynak yoğun görevleri çalıştırma yeteneği sunar ve Azure'un hemen erişim alanının ötesindeki ortamlarla etkileşimde bulunma esnekliği sağlar.
Bir hibrit işçi grubu oluşturulduğunda, kullanılacak **kimlik bilgilerini** belirtmek gerekir. İki seçenek vardır:
Bir hibrit işçi grubu oluşturulduğunda, kullanılacak **kimlik bilgilerini** belirtmek gerekir. 2 seçenek vardır:
- **Varsayılan kimlik bilgileri**: Kimlik bilgilerini sağlamanıza gerek yoktur ve runbook'lar **Sistem** olarak VM'ler içinde çalıştırılacaktır.
- **Belirli kimlik bilgileri**: Otomasyon hesabı içindeki kimlik bilgileri nesnesinin adını sağlamanız gerekir; bu, **VM'ler içindeki runbook'ları çalıştırmak için** kullanılacaktır. Bu nedenle, bu durumda, **VM'ler için geçerli kimlik bilgilerini çalmak** mümkün olabilir.
- **Varsayılan kimlik bilgileri**: Kimlik bilgilerini sağlamanıza gerek yoktur ve runbook'lar **Sistem** olarak VM'ler içinde yürütülecektir.
- **Belirli kimlik bilgileri**: Otomasyon hesabındaki kimlik bilgileri nesnesinin adını sağlamanız gerekir; bu, **VM'ler içindeki runbook'ları yürütmek için** kullanılacaktır. Bu nedenle, bu durumda, **VM'ler için geçerli kimlik bilgilerini çalmak** mümkün olabilir.
Bu nedenle, bir **Runbook**'u bir **Windows Hibrit İşçi**'de çalıştırmayı seçerseniz, **Sistem** olarak bir dış makinede **rastgele komutlar** çalıştıracaksınız (güzel bir pivot tekniği).
Bu nedenle, bir **Runbook**'u bir **Hibrit İşçi**'de çalıştırmayı seçerseniz, **Sistem** olarak bir dış makinede **rastgele komutlar** çalıştıracaksınız (güzel bir pivot tekniği).
Ayrıca, hibrit işçi Azure'da diğer Yönetilen Kimliklerle çalışıyorsa, runbook, **runbook'un yönetilen kimliğine ve VM'nin metadata hizmetinden tüm yönetilen kimliklerine** erişebilecektir.
Ayrıca, hibrit işçi Azure'da diğer Yönetilen Kimliklerle birlikte çalışıyorsa, runbook, **runbook'un yönetilen kimliğine ve VM'nin metadata hizmetinden tüm yönetilen kimliklerine** erişebilecektir.
> [!TIP]
> **Metadata hizmetinin** otomasyon hesabının yönetilen kimlikleri token'ını aldığı hizmetten (**`IDENTITY_ENDPOINT`**) farklı bir URL'si olduğunu unutmayın (**`http://169.254.169.254`**).
> **Metadata hizmetinin**, otomasyon hesabının yönetilen kimlikleri token'ını aldığı hizmetten (**`IDENTITY_ENDPOINT`**) farklı bir URL'si olduğunu unutmayın (**`http://169.254.169.254`**).
### Durum Yapılandırması (SC)
>[!WARNING]
> [belgelere](https://learn.microsoft.com/en-us/azure/automation/automation-dsc-overview) göre, Azure Automation Durum Yapılandırması 30 Eylül 2027'de emekliye ayrılacak ve [Azure Makine Yapılandırması](https://learn.microsoft.com/en-us/azure/governance/machine-configuration/overview) ile değiştirilecektir.
Otomasyon Hesapları ayrıca **Durum Yapılandırması (SC)**'yı destekler; bu, **VM'lerinizin durumunu** **yapılandırmaya** ve **korumaya** yardımcı olan bir özelliktir. **Windows** ve **Linux** makinelerine DSC yapılandırmaları **oluşturmak** ve **uygulamak** mümkündür.
Otomasyon Hesapları ayrıca **Durum Yapılandırmasını (SC)** destekler; bu, **VM'lerinizin durumunu** **yapılandırmaya** ve **korumaya** yardımcı olan bir özelliktir. **Windows** ve **Linux** makinelerine DSC yapılandırmaları **oluşturmak** ve **uygulamak** mümkündür.
Saldırganlar açısından bu, **tüm yapılandırılmış VM'lerde rastgele PS kodu çalıştırma** imkanı sunduğu için ilginçti ve bu, bu VM'lerin yönetilen kimliklerine ayrıcalıkları yükseltme imkanı sağladı, potansiyel olarak yeni ağlara geçiş... Ayrıca, yapılandırmalar **hassas bilgi** içerebilir.
Saldırganlar açısından bu, **tüm yapılandırılmış VM'lerde rastgele PS kodu yürütme** olanağı sağladığı için ilginçti; bu da bu VM'lerin yönetilen kimliklerine ayrıcalıkları yükseltme olanağı sunuyordu ve potansiyel olarak yeni ağlara geçiş yapma imkanı sağlıyordu... Ayrıca, yapılandırmalar **hassas bilgi** içerebilir.
## Sayım
```bash
@@ -170,7 +168,7 @@ az rest --method GET \
# Get the source control setting of an automation account (if any)
## inside the output it's possible to see if the autoSync is enabled, if the publishRunbook is enabled and the repo URL
aaz automation source-control list --automation-account-name <AUTOMATION-ACCOUNT> --resource-group <RG-NAME>
az automation source-control list --automation-account-name <AUTOMATION-ACCOUNT> --resource-group <RG-NAME>
# Get custom runtime environments
## Check in defaultPackages for custom ones, by default Python envs won't have anything here and PS1 envs will have "az" and "azure cli"