mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-07-28 22:51:09 -07:00
Translated ['src/pentesting-cloud/azure-security/README.md'] to ko
This commit is contained in:
+4
-1
@@ -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)
|
||||
|
||||
@@ -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/
|
||||
|
||||
Reference in New Issue
Block a user