Translated ['src/pentesting-cloud/azure-security/README.md'] to ko

This commit is contained in:
Translator
2025-03-04 22:09:21 +00:00
parent 204a662aa9
commit 7bf28c44fe
2 changed files with 67 additions and 44 deletions
+4 -1
View File
@@ -417,15 +417,18 @@
- [Az - Container Registry](pentesting-cloud/azure-security/az-services/az-container-registry.md)
- [Az - Container Instances, Apps & Jobs](pentesting-cloud/azure-security/az-services/az-container-instances-apps-jobs.md)
- [Az - CosmosDB](pentesting-cloud/azure-security/az-services/az-cosmosDB.md)
- [Az - Intune](pentesting-cloud/azure-security/az-services/intune.md)
- [Az - Defender](pentesting-cloud/azure-security/az-services/az-defender.md)
- [Az - File Shares](pentesting-cloud/azure-security/az-services/az-file-shares.md)
- [Az - Function Apps](pentesting-cloud/azure-security/az-services/az-function-apps.md)
- [Az - Intune](pentesting-cloud/azure-security/az-services/intune.md)
- [Az - Key Vault](pentesting-cloud/azure-security/az-services/az-keyvault.md)
- [Az - Logic Apps](pentesting-cloud/azure-security/az-services/az-logic-apps.md)
- [Az - Management Groups, Subscriptions & Resource Groups](pentesting-cloud/azure-security/az-services/az-management-groups-subscriptions-and-resource-groups.md)
- [Az - Monitoring](pentesting-cloud/azure-security/az-services/az-monitoring.md)
- [Az - MySQL](pentesting-cloud/azure-security/az-services/az-mysql.md)
- [Az - PostgreSQL](pentesting-cloud/azure-security/az-services/az-postgresql.md)
- [Az - Queue Storage](pentesting-cloud/azure-security/az-services/az-queue.md)
- [Az - Sentinel](pentesting-cloud/azure-security/az-services/az-sentinel.md)
- [Az - Service Bus](pentesting-cloud/azure-security/az-services/az-servicebus.md)
- [Az - SQL](pentesting-cloud/azure-security/az-services/az-sql.md)
- [Az - Static Web Applications](pentesting-cloud/azure-security/az-services/az-static-web-apps.md)
+63 -43
View File
@@ -2,60 +2,60 @@
{{#include ../../banners/hacktricks-training.md}}
## 기본 정보
## Basic Information
Azure Entra ID의 기본 사항 다음 페이지에서 배우십시오:
Azure Entra ID의 기본 사항 다음 페이지에서 배울 수 있습니다:
{{#ref}}
az-basic-information/
{{#endref}}
## Azure Pentester/Red Team 방법론
## Azure Pentester/Red Team Methodology
AZURE 환경을 감사하기 위해서는 **어떤 서비스가 사용되고 있는지**, **무엇이 노출되고 있는지**, **누가 무엇에 접근할 수 있는지**, 그리고 내부 Azure 서비스와 **외부 서비스**가 어떻게 연결되어 있는지를 아는 것이 매우 중요합니다.
Red Team 관점에서 **Azure 환경을 타격하기 위한 첫 번째 단계**는 **발판**을 확보하는 것입니다.
Red Team 관점에서 **Azure 환경을 타격하기 위한 첫 번째 단계**는 **발판**을 는 것입니다.
### 외부 열거 및 초기 접근
### External enum & Initial Access
첫 번째 단계는 물론 공격하고 있는 테넌트에 대한 정보를 열거하고 발판을 확보하는 것입니다.
첫 번째 단계는 물론 공격하고 있는 테넌트에 대한 정보를 열거하고 발판을 얻으려는 것입니다.
도메인 이름을 기반으로 **회사가 Azure를 사용하고 있는지**, **테넌트 ID**를 얻고, 같은 테넌트 내의 다른 **유효한 도메인**(더 있을 경우)을 고, SSO가 활성화되어 있는지, 메일 구성, 유효한 사용자 이메일과 같은 **관련 정보**를 얻을 수 있습니다.
도메인 이름을 기반으로 **회사가 Azure를 사용하고 있는지**, **테넌트 ID**를 얻고, 같은 테넌트 내의 다른 **유효한 도메인**(더 있을 경우)을 고, SSO가 활성화되어 있는지, 메일 구성, 유효한 사용자 이메일과 같은 **관련 정보**를 얻을 수 있습니다...
다음 페이지를 확인하여 **외부 열거**를 수행하는 방법을 배우십시오:
**외부 열거**를 수행하는 방법을 배우려면 다음 페이지를 확인하세요:
{{#ref}}
az-unauthenticated-enum-and-initial-entry/
{{#endref}}
이 정보를 바탕으로 발판을 확보하기 위한 가장 일반적인 방법은 다음과 같습니다:
- **OSINT**: **자격 증명**이나 흥미로운 정보 포함 수 있는 Github 또는 기타 오픈 소스 플랫폼에서 **출**을 확인합니다.
- **비밀번호** 재사용, 출 또는 [비밀번호 스프레이](az-unauthenticated-enum-and-initial-entry/az-password-spraying.md)
이 정보를 바탕으로 발판을 얻기 위해 시도할 수 있는 가장 일반적인 방법은 다음과 같습니다:
- **OSINT**: **자격 증명**이나 흥미로운 정보 포함 수 있는 Github 또는 기타 오픈 소스 플랫폼에서 **출**을 확인합니다.
- **비밀번호** 재사용, 출 또는 [비밀번호 스프레이](az-unauthenticated-enum-and-initial-entry/az-password-spraying.md)
- 직원의 자격 증명 구매
- [**일반 피싱**](https://book.hacktricks.wiki/en/generic-methodologies-and-resources/phishing-methodology/index.html) (자격 증명 또는 Oauth 앱)
- [장치 코드 인증 피싱](az-unauthenticated-enum-and-initial-entry/az-device-code-authentication-phishing.md)
- 제3자 **침해**
- Azure 호스팅 애플리케이션의 취약점
- [**서버 측 요청 위조**](https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html) 메타데이터 엔드포인트에 대한 접근
- **서브도메인 인수** [https://godiego.co/posts/STO-Azure/](https://godiego.co/posts/STO-Azure/)와 같
- [https://godiego.co/posts/STO-Azure/](https://godiego.co/posts/STO-Azure/)와 같**서브도메인 인수**
- **기타 Azure 서비스 구성 오류**
- 일부 개발자 노트북이 손상된 경우 ([WinPEAS 및 LinPEAS](https://github.com/peass-ng/PEASS-ng)에서 이 정보를 찾을 수 있습니다):
- 일부 개발자 노트북이 손상된 경우 ([WinPEAS 및 LinPEAS](https://github.com/peass-ng/PEASS-ng) 이 정보를 찾을 수 있습니다):
- **`<HOME>/.Azure`** 내부
- **`azureProfile.json`**에는 과거 로그인한 사용자에 대한 정보 포함되어 있습니다.
- **`clouds.config`**는 구독에 대한 정보 포함되어 있습니다.
- **`service_principal_entries.json`**에는 애플리케이션 자격 증명(테넌트 ID, 클라이언트 및 비밀) 포함되어 있습니다. Linux 및 macOS에서만 사용 가능
- **`msal_token_cache.json`**에는 액세스 토큰 및 새로 고침 토큰 포함되어 있습니다. Linux 및 macOS에서만 사용 가능
- **`service_principal_entries.bin`** 및 msal_token_cache.bin은 Windows에서 사용되며 DPAPI로 암호화되어 있습니다.
- **`azureProfile.json`** 과거 로그인한 사용자에 대한 정보 포함니다.
- **`clouds.config`**는 구독에 대한 정보 포함니다.
- **`service_principal_entries.json`** 애플리케이션 자격 증명(테넌트 ID, 클라이언트 및 비밀) 포함니다. Linux 및 macOS에서만 사용 가능
- **`msal_token_cache.json`** 액세스 토큰 및 새로 고침 토큰 포함니다. Linux 및 macOS에서만 사용 가능
- **`service_principal_entries.bin`** 및 msal_token_cache.bin은 Windows에서 사용되며 DPAPI로 암호화니다.
- **`msal_http_cache.bin`**은 HTTP 요청의 캐시입니다.
- 로드하기: `with open("msal_http_cache.bin", 'rb') as f: pickle.load(f)`
- **`AzureRmContext.json`**에는 Az PowerShell을 사용한 이전 로그인에 대한 정보 포함되어 있습니다(하지만 자격 증명은 아님).
- **`AzureRmContext.json`** Az PowerShell을 사용한 이전 로그인에 대한 정보 포함니다(하지만 자격 증명은 포함되지 않음).
- **`C:\Users\<username>\AppData\Local\Microsoft\IdentityCache\*`** 내부에는 **액세스 토큰**, ID 토큰 및 사용자 DPAPI로 암호화된 계정 정보가 포함된 여러 `.bin` 파일이 있습니다.
- **`C:\Users\<username>\AppData\Local\Microsoft\TokenBroken\Cache\`** 내부의 `.tbres` 파일에서 더 많은 **액세스 토큰**을 찾을 수 있으며, 이 파일은 DPAPI로 암호화된 액세스 토큰을 포함합니다.
- **`C:\Users\<username>\AppData\Local\Microsoft\TokenBroken\Cache\`** 내부의 `.tbres` 파일에서 더 많은 **액세스 토큰**을 찾을 수 있으며, 이 DPAPI로 암호화된 base64 형식의 액세스 토큰을 포함합니다.
- Linux 및 macOS에서는 Az PowerShell(사용한 경우)에서 `pwsh -Command "Save-AzContext -Path /tmp/az-context.json"`을 실행하여 **액세스 토큰, 새로 고침 토큰 및 ID 토큰**을 얻을 수 있습니다.
- Windows에서는 ID 토큰만 생성됩니다.
- Linux 및 macOS에서 Az PowerShell이 사용되었는지 확인하려면 `$HOME/.local/share/.IdentityService/`가 존재하는지 확인하십시오(파일이 비어 있고 쓸모가 없더라도).
- Linux 및 macOS에서 Az PowerShell이 사용되었는지 확인하려면 `$HOME/.local/share/.IdentityService/`가 존재하는지 확인합니다(비록 포함된 파일이 비어 있고 쓸모가 없더라도).
다음 페이지에서 **기타 Azure 서비스 구성 오류**를 찾아 발판을 확보할 수 있습니다:
다음 페이지에서 발판을 얻을 수 있는 **기타 Azure 서비스 구성 오류**를 찾으세요:
{{#ref}}
az-unauthenticated-enum-and-initial-entry/
@@ -64,28 +64,28 @@ az-unauthenticated-enum-and-initial-entry/
> [!NOTE]
> 일반적으로 열거의 **가장 시끄러운** 부분은 **로그인**이며, 열거 자체는 아닙니다.
### Azure Entra ID 도구
### Azure & Entra ID tooling
다음 도구는 Entra ID 테넌트와 Azure 환경을 천천히(탐지를 피하기 위해) 또는 자동으로(시간 절약 위해) 열거하는 데 매우 유용합니다:
다음 도구는 Entra ID 테넌트와 Azure 환경을 천천히(탐지를 피하기 위해) 또는 자동으로(시간 절약하기 위해) 열거하는 데 매우 유용합니다:
{{#ref}}
az-enumeration-tools.md
{{#endref}}
### 접근 정책 우회
### Bypass Access Policies
<figure><img src="../../images/image (268).png" alt=""><figcaption></figcaption></figure>
유효한 자격 증명이 있지만 로그인할 수 없는 경우, 다음은 적용될 수 있는 일반적인 보호 조치입니다:
- **IP 화이트리스트** -- 유효한 IP를 타격해야 합니다.
- **지리적 제한** -- 사용자가 거주하는 곳이나 회사 사무실이 있는 곳을 찾아 같은 도시(또는 최소한 같은 국가)의 IP를 확보합니다.
- **브라우저** -- 특정 OS(Windows, Linux, Mac, Android, iOS)에서만 허용될 수 있습니다. 피해자/회사가 사용하는 OS를 알아내십시오.
- **지리적 제한** -- 사용자가 거주하는 곳이나 회사 사무실이 있는 곳을 찾아 같은 도시(또는 최소한 같은 국가)의 IP를 얻습니다.
- **브라우저** -- 특정 OS(Windows, Linux, Mac, Android, iOS)에서만 허용될 수 있습니다. 피해자/회사가 사용하는 OS를 알아내세요.
- **서비스 주체 자격 증명**을 타격하려고 시도할 수도 있습니다. 일반적으로 제한이 덜하고 로그인 검토가 덜합니다.
이를 우회한 후에는 초기 설정으로 돌아가 여전히 접근할 수 있을 것입니다.
이를 우회한 후, 초기 설정으로 돌아가 여전히 접근할 수 있을 것입니다.
확인하십시오:
확인하세요:
{{#ref}}
az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md
@@ -94,7 +94,7 @@ az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-by
### Whoami
> [!CAUTION]
> [**Az - Entra ID**](az-services/az-azuread.md) 섹션에서 az cli, AzureAD 및 Az PowerShell을 **설치하는 방법**을 배우십시오.
> [**Az - Entra ID**](az-services/az-azuread.md) 섹션에서 az cli, AzureAD 및 Az PowerShell을 **설치하는 방법**을 배우세요.
가장 먼저 알아야 할 것은 **당신이 누구인지**(어떤 환경에 있는지)입니다:
@@ -165,53 +165,73 @@ az-enumeration-tools.md#automated-post-exploitation-tools
1. **접근할 수 있는 자원을 찾으세요**:
> [!TIP]
> 이는 특별한 권한을 요구하지 않습니다.
Az PowerShell 명령 **`Get-AzResource`**를 사용하면 **현재 사용자가 볼 수 있는 자원**을 알 수 있습니다.
또한, **웹 콘솔**에서 [https://portal.azure.com/#view/HubsExtension/BrowseAll](https://portal.azure.com/#view/HubsExtension/BrowseAll)로 이동하거나 "모든 자원"을 검색하거나 다음을 실행하여 동일한 정보를 얻을 수 있습니다:
```bash
az rest --method GET --url "https://management.azure.com/subscriptions/<subscription-id>/resources?api-version=2021-04-01"
```
2. **당신이 접근할 수 있는 리소스에 대한 권한고, 당신에게 할당된 역할을 찾으세요**:
2. **당신이 수 있는 리소스에 대한 권한 찾**:
이 작업을 실행하려면 **`Microsoft.Authorization/roleAssignments/read`** 권한이 필요합니다.
> [!TIP]
> 이는 특별한 권한이 필요하지 않습니다.
또한, 충분한 권한이 있으면 **`Get-AzRoleAssignment`** 역할을 사용하여 구독 내의 **모든 역할을 나열**하거나 특정 리소스에 대한 권한을 확인할 수 있습니다.
API **`https://management.azure.com/{resource_id}/providers/Microsoft.Authorization/permissions?api-version=2022-04-01`**에 요청하면 **`resource_id`**에 대해 당신이 가진 권한을 얻을 수 있습니다.
따라서 **접근할 수 있는 각 리소스를 확인하면**, 그에 대한 권한을 얻을 수 있습니다.
> [!WARNING]
> 이 열거 작업은 도구 **[Find_My_Az_Management_Permissions](https://github.com/carlospolop/Find_My_Az_Management_Permissions)**를 사용하여 자동화할 수 있습니다.
<details>
<summary>**`Microsoft.Authorization/roleAssignments/read`**로 권한 열거하기</summary>
> [!TIP]
> 이 작업을 실행하려면 **`Microsoft.Authorization/roleAssignments/read`** 권한이 필요합니다.
- 충분한 권한이 있는 경우, 역할 **`Get-AzRoleAssignment`**를 사용하여 구독의 **모든 역할** 또는 특정 리소스에 대한 권한을 열거할 수 있습니다.
```bash
Get-AzRoleAssignment -Scope /subscriptions/<subscription-id>/resourceGroups/Resource_Group_1/providers/Microsoft.RecoveryServices/vaults/vault-m3ww8ut4
```
이 정보를 얻는 것도 가능합니다:
```bash
az rest --method GET --uri "https://management.azure.com/<Scope>/providers/Microsoft.Authorization/roleAssignments?api-version=2020-08-01-preview" | jq ".value"
az rest --method GET --uri "https://management.azure.com/<Scope>/providers/Microsoft.Authorization/roleAssignments?api-version=2022-04-01" | jq ".value"
```
죄송합니다. 요청하신 내용을 이해하지 못했습니다. 추가적인 정보를 제공해 주시면 감사하겠습니다.
죄송합니다. 요청하신 내용을 이해하지 못했습니다. 더 구체적으로 설명해 주시겠습니까?
```bash
az rest --method GET --uri "https://management.azure.com//subscriptions/<subscription-id>/resourceGroups/Resource_Group_1/providers/Microsoft.KeyVault/vaults/vault-m3ww8ut4/providers/Microsoft.Authorization/roleAssignments?api-version=2020-08-01-preview" | jq ".value"
az rest --method GET --uri "https://management.azure.com//subscriptions/<subscription-id>/resourceGroups/Resource_Group_1/providers/Microsoft.KeyVault/vaults/vault-m3ww8ut4/providers/Microsoft.Authorization/roleAssignments?api-version=2022-04-01" | jq ".value"
```
또 다른 옵션은 다음과 같이 Azure에서 귀하에게 연결된 역할을 가져오는 것입니다:
- 또 다른 옵션은 **Azure에서 당신에게 연결된 역할을 가져오는** 것입니다. 이것은 또한 **`Microsoft.Authorization/roleAssignments/read`** 권한이 필요합니다:
```bash
az role assignment list --assignee "<email>" --all --output table
```
다음 명령을 실행하거나 (결과가 비어 있다면, 권한이 없어서 그럴 수 있습니다):
다음 명령을 실행합니다 (결과가 비어 있으면 권한이 없어서 그럴 수 있습니다):
```bash
az rest --method GET --uri 'https://management.azure.com/subscriptions/<subscription-id>/providers/Microsoft.Authorization/roleAssignments?api-version=2022-04-01&$filter=principalId eq '<user-id>'
```
3. **당신에게 부여된 역할의 세부 권한 찾기**:
- **당신에게 부여된 역할의 세부 권한 찾기**:
그런 다음, 세부 권한을 얻으려면 **`(Get-AzRoleDefinition -Id "<RoleDefinitionId>").Actions`**를 실행할 수 있습니다.
또는 API를 직접 호출할 수 있습니다.
```bash
az rest --method GET --uri "https://management.azure.com//subscriptions/<subscription-id>/providers/Microsoft.Authorization/roleDefinitions/<RoleDefinitionId>?api-version=2020-08-01-preview" | jq ".properties"
az rest --method GET --uri "https://management.azure.com//subscriptions/<subscription-id>/providers/Microsoft.Authorization/roleDefinitions/<RoleDefinitionId>?api-version=2022-04-01" | jq ".properties"
```
</details>
다음 섹션에서는 **가장 일반적인 Azure 서비스에 대한 정보와 이를 열거하는 방법**을 찾을 수 있습니다:
{{#ref}}
az-services/
{{#endref}}
### 권한 상승, 사후 활용 및 지속성
### 권한 상승, 포스트 익스플로잇 및 지속성
Azure 환경이 어떻게 구성되어 있고 어떤 서비스가 사용되고 있는지 알게 되면, **권한을 상승시키고, 수평 이동을 하며, 다른 사후 활용 공격을 수행하고, 지속성을 유지하는 방법**을 찾기 시작할 수 있습니다.
Azure 환경이 어떻게 구성되어 있고 어떤 서비스가 사용되고 있는지 알게 되면, **권한을 상승시키고, 수평 이동을 하며, 다른 포스트 익스플로잇 공격을 수행하고, 지속성을 유지하는 방법**을 찾기 시작할 수 있습니다.
다음 섹션에서는 가장 일반적인 Azure 서비스에서 권한을 상승시키는 방법에 대한 정보를 찾을 수 있습니다:
@@ -219,7 +239,7 @@ Azure 환경이 어떻게 구성되어 있고 어떤 서비스가 사용되고
az-privilege-escalation/
{{#endref}}
다음 섹션에서는 가장 일반적인 Azure 서비스에서 사후 활용 공격을 수행하는 방법에 대한 정보를 찾을 수 있습니다:
다음 섹션에서는 가장 일반적인 Azure 서비스에서 포스트 익스플로잇 공격을 수행하는 방법에 대한 정보를 찾을 수 있습니다:
{{#ref}}
az-post-exploitation/