8.2 KiB
Az - Key Vault
{{#include ../../../banners/hacktricks-training.md}}
Basiese Inligting
Azure Key Vault is 'n wolkdienste wat deur Microsoft Azure verskaf word vir die veilige stoor en bestuur van sensitiewe inligting soos geheime, sleutels, sertifikate, en wagwoorde. Dit dien as 'n gesentraliseerde berging, wat veilige toegang en fynbeheer bied deur middel van Azure Active Directory (Azure AD). Vanuit 'n sekuriteits perspektief bied Key Vault hardeware sekuriteitsmodule (HSM) beskerming vir kriptografiese sleutels, verseker dat geheime beide in rus en in oordrag geënkripteer is, en bied robuuste toegang bestuur deur middel van rolgebaseerde toegangsbeheer (RBAC) en beleide. Dit beskik ook oor auditing-logboek, integrasie met Azure Monitor vir die opsporing van toegang, en outomatiese sleutelrotasie om risiko van langdurige sleutelblootstelling te verminder.
Sien Azure Key Vault REST API oorsig vir volledige besonderhede.
Volgens die docs, ondersteun Vaults die stoor van sagteware en HSM-ondersteunde sleutels, geheime, en sertifikate. Gemanagte HSM-poele ondersteun slegs HSM-ondersteunde sleutels.
Die URL-formaat vir vaults is https://{vault-name}.vault.azure.net/{object-type}/{object-name}/{object-version} en vir gemanagte HSM-poele is dit: https://{hsm-name}.managedhsm.azure.net/{object-type}/{object-name}/{object-version}
Waar:
vault-nameis die wêreldwyd unieke naam van die sleutelkluisobject-typekan "sleutels", "geheime" of "sertifikate" weesobject-nameis die unieke naam van die objek binne die sleutelkluisobject-versionis stelsels gegenereer en opsioneel gebruik om 'n unieke weergawe van 'n objek aan te dui.
Om toegang te verkry tot die geheime wat in die kluis gestoor is, is dit moontlik om tussen 2 toestemmingsmodelle te kies wanneer die kluis geskep word:
- Kluis toegang beleid
- Azure RBAC (mees algemeen en aanbeveel)
- Jy kan al die fyn toegangsregte wat ondersteun word, vind in https://learn.microsoft.com/en-us/azure/role-based-access-control/permissions/security#microsoftkeyvault
Toegangsbeheer
Toegang tot 'n Key Vault hulpbron word deur twee vlakke beheer:
- Die bestuursvlak, waarvan die teiken management.azure.com is.
- Dit word gebruik om die sleutelkluis en toegang beleide te bestuur. Slegs Azure rolgebaseerde toegangsbeheer (RBAC) word ondersteun.
- Die datavlak, waarvan die teiken
<vault-name>.vault.azure.comis. - Dit word gebruik om die data (sleutels, geheime en sertifikate) in die sleutelkluis te bestuur en toegang te verkry. Dit ondersteun sleutelkluis toegang beleide of Azure RBAC.
'n Rol soos Bydraer wat toestemming het in die bestuursvlak om toegang beleide te bestuur, kan toegang tot die geheime verkry deur die toegang beleide te wysig.
Key Vault RBAC Gebou-in Rolle

Netwerktoegang
In Azure Key Vault kan vuurmuur reëls opgestel word om data vlak operasies slegs toe te laat vanaf gespesifiseerde virtuele netwerke of IPv4 adresreekse. Hierdie beperking beïnvloed ook toegang deur die Azure administrasiepaneel; gebruikers sal nie in staat wees om sleutels, geheime, of sertifikate in 'n sleutelkluis te lys as hul aanmeld IP-adres nie binne die gemagtigde reeks is nie.
Vir die analise en bestuur van hierdie instellings, kan jy die Azure CLI gebruik:
az keyvault show --name name-vault --query networkAcls
Die vorige opdrag sal die firewall instellings van name-vault vertoon, insluitend geaktiveerde IP-reekse en beleide vir geweier verkeer.
Boonop is dit moontlik om 'n private eindpunt te skep om 'n private verbinding met 'n vault toe te laat.
Verwyderingsbeskerming
Wanneer 'n sleutel vault geskep word, is die minimum aantal dae wat toegelaat word vir verwydering 7. Dit beteken dat wanneer jy probeer om daardie sleutel vault te verwyder, dit ten minste 7 dae sal neem om verwyder te word.
Dit is egter moontlik om 'n vault te skep met verwyderingsbeskerming gedeaktiveer, wat toelaat dat sleutel vault en voorwerpe gedurende die retensieperiode verwyder word. Alhoewel, sodra hierdie beskerming geaktiveer is vir 'n vault, kan dit nie gedeaktiveer word nie.
Enumerasie
{{#tabs }} {{#tab name="az" }}
# List all Key Vaults in the subscription
az keyvault list
# List Key Vaults in a specific Resource Group
az keyvault list --resource-group <ResourceGroupName>
# Show details of a specific Key Vault
az keyvault show --name <KeyVaultName> # If accessPolicies, you can see them here
# List all keys in a Key Vault
az keyvault key list --vault-name <KeyVaultName>
# List all secrets in a Key Vault
az keyvault secret list --vault-name <KeyVaultName>
# Get versions of a secret
az keyvault secret list-versions --vault-name <KeyVaultName> --name <SecretName>
# List all certificates in a Key Vault
az keyvault certificate list --vault-name <KeyVaultName>
# List all deleted Key Vaults in the subscription
az keyvault list-deleted
# Get properties of a deleted Key Vault
az keyvault show-deleted --name <KeyVaultName>
# Get assigned roles
az role assignment list --include-inherited --scope "/subscriptions/<subscription-uuid>/resourceGroups/<resource-group>/providers/Microsoft.KeyVault/vaults/<vault-name>"
# Get secret value
az keyvault secret show --vault-name <KeyVaultName> --name <SecretName>
# Get old versions secret value
az keyvault secret show --id https://<KeyVaultName>.vault.azure.net/secrets/<KeyVaultName>/<idOldVersion>
{{#endtab }}
{{#tab name="Az Powershell" }}
# Get keyvault token
curl "$IDENTITY_ENDPOINT?resource=https://vault.azure.net&api-version=2017-09-01" -H secret:$IDENTITY_HEADER
# Connect with PS AzureAD
## $token from management API
Connect-AzAccount -AccessToken $token -AccountId 1937ea5938eb-10eb-a365-10abede52387 -KeyVaultAccessToken $keyvaulttoken
# Get details of a specific Key Vault
Get-AzKeyVault -VaultName <KeyVaultName>
# List all keys in a Key Vault
Get-AzKeyVaultKey -VaultName <KeyVaultName>
# List all secrets in a Key Vault
Get-AzKeyVaultSecret -VaultName <KeyVaultName>
# List all certificates in a Key Vault
Get-AzKeyVaultCertificate -VaultName <KeyVaultName>
# List all deleted Key Vaults in the subscription
Get-AzKeyVault -InRemovedState
# Get properties of a deleted Key Vault
Get-AzKeyVault -VaultName <KeyVaultName> -InRemovedState
# Get secret values
Get-AzKeyVaultSecret -VaultName <vault_name> -Name <secret_name> -AsPlainText
{{#endtab }}
{{#tab name="az script" }}
#!/bin/bash
# Dump all keyvaults from the subscription
# Define Azure subscription ID
AZ_SUBSCRIPTION_ID="your-subscription-id"
# Specify the filename for output
CSV_OUTPUT="vault-names-list.csv"
# Login to Azure account
az login
# Select the desired subscription
az account set --subscription $AZ_SUBSCRIPTION_ID
# Retrieve all resource groups within the subscription
AZ_RESOURCE_GROUPS=$(az group list --query "[].name" -o tsv)
# Initialize the CSV file with headers
echo "Vault Name,Associated Resource Group" > $CSV_OUTPUT
# Iterate over each resource group
for GROUP in $AZ_RESOURCE_GROUPS
do
# Fetch key vaults within the current resource group
VAULT_LIST=$(az keyvault list --resource-group $GROUP --query "[].name" -o tsv)
# Process each key vault
for VAULT in $VAULT_LIST
do
# Extract the key vault's name
VAULT_NAME=$(az keyvault show --name $VAULT --resource-group $GROUP --query "name" -o tsv)
# Append the key vault name and its resource group to the file
echo "$VAULT_NAME,$GROUP" >> $CSV_OUTPUT
done
done
{{#endtab }} {{#endtabs }}
Privilege Escalation
{{#ref}} ../az-privilege-escalation/az-key-vault-privesc.md {{#endref}}
Post Exploitation
{{#ref}} ../az-post-exploitation/az-key-vault-post-exploitation.md {{#endref}}
{{#include ../../../banners/hacktricks-training.md}}