mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-07-28 14:47:17 -07:00
Translated ['', 'src/pentesting-cloud/azure-security/az-unauthenticated-
This commit is contained in:
+135
-41
@@ -6,17 +6,17 @@
|
||||
|
||||
### Tenant Enumeration
|
||||
|
||||
공격자는 테넌트의 **domain**만 알고 있어도 조회해서 더 많은 정보를 수집할 수 있는 **public Azure APIs**가 몇 개 있습니다.\
|
||||
API를 직접 호출하거나 PowerShell 라이브러리 [**AADInternals**](https://github.com/Gerenios/AADInternals) (`Install-Module AADInternals`)을 사용할 수 있습니다:
|
||||
**tenant domain**만 알아도 공격자가 그것에 대한 더 많은 정보를 수집하기 위해 조회할 수 있는 **public Azure APIs**가 있습니다.\
|
||||
API를 직접 쿼리하거나 PowerShell library [**AADInternals**](https://github.com/Gerenios/AADInternals) (`Install-Module AADInternals`)을 사용할 수 있습니다:
|
||||
|
||||
- **테넌트 ID를 포함한 로그인 정보**
|
||||
- **tenant ID를 포함한 Login information**
|
||||
- `Get-AADIntTenantID -Domain <domain>` (main API `login.microsoftonline.com/<domain>/.well-known/openid-configuration`)
|
||||
- **테넌트의 모든 유효 도메인**
|
||||
- **tenant의 모든 유효한 도메인**
|
||||
- `Get-AADIntTenantDomains -Domain <domain>` (main API `autodiscover-s.outlook.com/autodiscover/autodiscover.svc`)
|
||||
- **사용자의 로그인 정보**. `NameSpaceType`이 `Managed`이면 EntraID가 사용된다는 의미입니다
|
||||
- **user의 Login information**. `NameSpaceType`가 `Managed`이면 EntraID가 사용된다는 뜻입니다
|
||||
- `Get-AADIntLoginInformation -UserName <UserName>` (main API `login.microsoftonline.com/GetUserRealm.srf?login=<UserName>`)
|
||||
|
||||
Azure 테넌트의 모든 정보를 [**AADInternals**](https://github.com/Gerenios/AADInternals)의 단 한 명령으로 조회할 수 있습니다:
|
||||
[**AADInternals**](https://github.com/Gerenios/AADInternals)의 **단 한 번의 command**로 Azure tenant의 모든 정보를 조회할 수 있습니다:
|
||||
```bash
|
||||
# Doesn't work in macos because 'Resolve-DnsName' doesn't exist
|
||||
Invoke-AADIntReconAsOutsider -DomainName corp.onmicrosoft.com | Format-Table
|
||||
@@ -35,33 +35,41 @@ company.mail.onmicrosoft.com True True True Managed
|
||||
company.onmicrosoft.com True True True Managed
|
||||
int.company.com False False False Managed
|
||||
```
|
||||
tenant의 이름, ID, 그리고 "brand" 이름에 대한 세부 정보를 확인할 수 있습니다. 또한 Desktop Single Sign-On (SSO), [**Seamless SSO**](https://docs.microsoft.com/en-us/azure/active-directory/hybrid/how-to-connect-sso)라고도 불리는 기능의 상태가 표시됩니다. 활성화되어 있으면 이 기능은 대상 조직 내 특정 사용자의 존재(즉, enumeration)를 판별하는 데 도움이 됩니다.
|
||||
테넌트의 이름, ID, 그리고 "brand" 이름에 대한 세부 정보를 관찰할 수 있습니다. 추가로 Desktop Single Sign-On (SSO), 즉 [**Seamless SSO**](https://docs.microsoft.com/en-us/azure/active-directory/hybrid/how-to-connect-sso)의 상태도 표시됩니다. 이 기능이 활성화되어 있으면, 대상 조직 내 특정 사용자의 존재(enumeration)를 판별하는 데 도움이 됩니다.
|
||||
|
||||
또한 출력에는 대상 tenant와 연결된 모든 verified domains의 이름과 각 도메인의 identity types가 표시됩니다. Federated domains의 경우 일반적으로 ADFS 서버인 identity provider의 FQDN도 공개됩니다. "MX" 열은 이메일이 Exchange Online으로 라우팅되는지 여부를 표시하고, "SPF" 열은 Exchange Online이 이메일 발신자로 등록되어 있는지를 나타냅니다. 현재 reconnaissance 기능은 SPF records 내 "include" 문장을 파싱하지 않으므로 false negatives가 발생할 수 있다는 점에 유의하세요.
|
||||
또한 출력에는 대상 테넌트와 연결된 모든 verified domains의 이름과 각 identity type이 표시됩니다. federated domains의 경우, 사용 중인 identity provider의 Fully Qualified Domain Name (FQDN), 일반적으로 ADFS server도 함께 공개됩니다. "MX" column은 이메일이 Exchange Online으로 라우팅되는지 여부를 지정하고, "SPF" column은 Exchange Online이 이메일 sender로 등록되어 있는지를 나타냅니다. 현재 reconnaissance function은 SPF record 내의 "include" statements를 parse하지 않으므로 false negatives가 발생할 수 있다는 점에 유의해야 합니다.
|
||||
|
||||
### User Enumeration
|
||||
|
||||
> [!TIP]
|
||||
> tenant가 동일한 사용자에 대해 여러 이메일을 사용하더라도, **username은 유일**하다는 점에 유의하세요. 즉, 이는 사용자가 연관시킨 domain에서만 작동하며 다른 domains에서는 작동하지 않습니다.
|
||||
> 테넌트가 같은 user에 대해 여러 이메일을 사용하더라도, **username은 unique**합니다. 즉, 사용자가 연결한 domain에서만 동작하며 다른 domain에서는 동작하지 않습니다.
|
||||
|
||||
tenant 내부에 **username이 존재하는지 확인**할 수 있습니다. 이에는 또한 **guest users**도 포함되며, 이들의 username 형식은 다음과 같습니다:
|
||||
테넌트 내부에서 **username이 존재하는지 확인**할 수 있습니다. 여기에는 **guest users**도 포함되며, 이들의 username 형식은 다음과 같습니다:
|
||||
```
|
||||
<email>#EXT#@<tenant name>.onmicrosoft.com
|
||||
```
|
||||
이 이메일은 사용자의 이메일 주소이며 “@”가 밑줄(“\_”)로 대체되어 있습니다.
|
||||
이메일은 사용자 이메일 주소이며 “@”가 underscore “\_”로 대체됩니다.
|
||||
|
||||
With [**AADInternals**](https://github.com/Gerenios/AADInternals), 사용자가 존재하는지 여부를 쉽게 확인할 수 있습니다:
|
||||
[**AADInternals**](https://github.com/Gerenios/AADInternals)를 사용하면 사용자가 존재하는지 여부를 쉽게 확인할 수 있습니다:
|
||||
```bash
|
||||
# Check does the user exist
|
||||
Invoke-AADIntUserEnumerationAsOutsider -UserName "user@company.com"
|
||||
```
|
||||
원본 README.md 내용을 붙여 넣어 주세요. 파일 내용이 있어야 번역을 수행할 수 있습니다.
|
||||
# Azure Unauthenticated Enum and Initial Entry
|
||||
|
||||
Azure에서 초기 진입에 사용될 수 있는 unauthenticated enum 기법들을 다룹니다.
|
||||
|
||||
## Intro
|
||||
|
||||
Azure 환경에서는 인증 없이도 노출된 정보와 메타데이터를 통해 많은 것을 알아낼 수 있습니다. 특히 공개적으로 접근 가능한 endpoints, 잘못 구성된 storage, 그리고 Microsoft 서비스들이 제공하는 응답을 통해 tenant, subscription, user, domain, and service 정보를 수집할 수 있습니다.
|
||||
|
||||
이 섹션에서는 이러한 unauthenticated enum을 통해 Azure 환경을 파악하고 initial entry의 발판을 마련하는 방법을 설명합니다.
|
||||
```
|
||||
UserName Exists
|
||||
-------- ------
|
||||
user@company.com True
|
||||
```
|
||||
또한 한 줄에 하나의 이메일 주소가 포함된 텍스트 파일을 사용할 수도 있습니다:
|
||||
텍스트 파일을 사용할 수도 있으며, 각 행에 이메일 주소 하나씩 넣으면 됩니다:
|
||||
```
|
||||
user@company.com
|
||||
user2@company.com
|
||||
@@ -75,22 +83,22 @@ external.user_outlook.com#EXT#@company.onmicrosoft.com
|
||||
# Invoke user enumeration
|
||||
Get-Content .\users.txt | Invoke-AADIntUserEnumerationAsOutsider -Method Normal
|
||||
```
|
||||
현재 선택할 수 있는 **4가지 다른 열거 방법**이 있습니다. 자세한 내용은 `Get-Help Invoke-AADIntUserEnumerationAsOutsider`에서 확인할 수 있습니다:
|
||||
현재 선택할 수 있는 **4가지 different enumeration methods**가 있습니다. `Get-Help Invoke-AADIntUserEnumerationAsOutsider`에서 정보를 찾을 수 있습니다:
|
||||
|
||||
It supports following enumeration methods: Normal, Login, Autologon, and RST2.
|
||||
|
||||
- The **Normal** method seems currently work with all tenants. Previously it required Desktop SSO (aka Seamless SSO) to be enabled for at least one domain.
|
||||
- **Normal** method는 현재 모든 tenant에서 작동하는 것 같습니다. 이전에는 최소한 하나의 domain에 대해 Desktop SSO(aka Seamless SSO)가 enabled되어 있어야 했습니다.
|
||||
|
||||
- The **Login** method works with any tenant, but enumeration queries will be logged to Azure AD sign-in log as failed login events!
|
||||
- **Login** method는 어떤 tenant에서도 작동하지만, enumeration queries는 실패한 login event로 Azure AD sign-in log에 기록됩니다!
|
||||
|
||||
- The **Autologon** method doesn't seem to work with all tenants anymore. Probably requires that DesktopSSO or directory sync is enabled.
|
||||
- **Autologon** method는 더 이상 모든 tenant에서 작동하지 않는 것 같습니다. 아마 DesktopSSO 또는 directory sync가 enabled되어 있어야 합니다.
|
||||
|
||||
|
||||
유효한 사용자 이름을 찾은 후에는 다음을 통해 **사용자에 대한 정보**를 얻을 수 있습니다:
|
||||
유효한 username들을 찾은 후에는 **info about a user**를 다음과 같이 얻을 수 있습니다:
|
||||
```bash
|
||||
Get-AADIntLoginInformation -UserName root@corp.onmicrosoft.com
|
||||
```
|
||||
이 [**o365spray**](https://github.com/0xZDH/o365spray) 스크립트는 또한 **이메일이 유효한지 확인할 수 있습니다**.
|
||||
스크립트 [**o365spray**](https://github.com/0xZDH/o365spray) 또한 **이메일이 유효한지** 알아낼 수 있게 해줍니다.
|
||||
```bash
|
||||
git clone https://github.com/0xZDH/o365spray
|
||||
cd o365spray
|
||||
@@ -101,15 +109,15 @@ python3 ./o365spray.py --enum -d carloshacktricks.onmicrosoft.com -u carlos
|
||||
# Check a list of emails
|
||||
python3 ./o365spray.py --enum -d carloshacktricks.onmicrosoft.com -U /tmp/users.txt
|
||||
```
|
||||
**Microsoft Teams를 이용한 사용자 열거**
|
||||
**Microsoft Teams를 통한 User Enumeration**
|
||||
|
||||
또 다른 좋은 정보 출처는 Microsoft Teams입니다.
|
||||
또 다른 좋은 정보원은 Microsoft Teams입니다.
|
||||
|
||||
Microsoft Teams의 API는 사용자를 검색할 수 있게 합니다. 특히 "user search" 엔드포인트 **externalsearchv3** 및 **searchUsers**는 Teams에 등록된 사용자 계정에 대한 일반 정보를 요청하는 데 사용할 수 있습니다.
|
||||
Microsoft Teams의 API는 user를 검색할 수 있게 해줍니다. 특히 "user search" endpoints인 **externalsearchv3**와 **searchUsers**를 사용하여 Teams에 등록된 user accounts에 대한 일반 정보를 요청할 수 있습니다.
|
||||
|
||||
API 응답에 따라 존재하지 않는 사용자와 유효한 Teams 구독을 가진 기존 사용자를 구분할 수 있습니다.
|
||||
API 응답에 따라 존재하지 않는 user와 유효한 Teams subscription이 있는 존재하는 user를 구분할 수 있습니다.
|
||||
|
||||
스크립트 [**TeamsEnum**](https://github.com/lucidra-security/TeamsEnum)은 주어진 사용자 이름 집합을 Teams API에 대해 검증하는 데 사용할 수 있지만, 이를 사용하려면 Teams에 접근할 수 있는 사용자 계정에 대한 액세스 권한이 필요합니다.
|
||||
script [**TeamsEnum**](https://github.com/lucidra-security/TeamsEnum)는 주어진 username 집합을 Teams API에 대해 검증하는 데 사용할 수 있지만, 이를 사용하려면 Teams access가 있는 user에 access해야 합니다.
|
||||
```bash
|
||||
# Install
|
||||
git clone https://github.com/lucidra-security/TeamsEnum
|
||||
@@ -119,13 +127,42 @@ python3 -m pip install -r requirements.txt
|
||||
# Login and ask for password
|
||||
python3 ./TeamsEnum.py -a password -u <username> -f inputlist.txt -o teamsenum-output.json
|
||||
```
|
||||
번역할 README.md 원본 내용을 여기에 붙여 넣어 주세요. 원문을 받아야 해당 파일의 영어 텍스트를 한국어로 번역해 드릴 수 있습니다.
|
||||
# Azure Unauthenticated Enum and Initial Entry
|
||||
|
||||
이 섹션에서는 Azure 환경에서 인증 없이 수행할 수 있는 enum 및 초기 entry 기법을 다룹니다.
|
||||
이러한 기술은 주로 노출된 서비스, 잘못된 구성, 공개 리소스를 식별하는 데 사용됩니다.
|
||||
|
||||
## Common sources of information
|
||||
|
||||
Azure에서 정보를 수집할 때 다음과 같은 common sources를 확인할 수 있습니다.
|
||||
|
||||
- 공개적으로 접근 가능한 storage account
|
||||
- 공개된 blob container
|
||||
- 잘못 구성된 key vault
|
||||
- 노출된 metadata endpoint
|
||||
- 공개적으로 읽을 수 있는 DNS 레코드
|
||||
|
||||
이러한 소스는 내부 구조, 사용자 이름, subscription 정보, 서비스 endpoint와 같은 유용한 정보를 제공할 수 있습니다.
|
||||
|
||||
## Initial entry ideas
|
||||
|
||||
초기 entry를 위한 일반적인 아이디어는 다음과 같습니다.
|
||||
|
||||
- 인증 없이 접근 가능한 웹 애플리케이션 식별
|
||||
- public endpoint에 대한 enum
|
||||
- 보안이 약한 Azure AD 관련 설정 확인
|
||||
- 노출된 API key, token, connection string 찾기
|
||||
|
||||
## Notes
|
||||
|
||||
Azure에서는 많은 서비스가 기본적으로 public exposure를 가질 수 있으므로, 처음에는 외부에서 접근 가능한 리소스를 먼저 확인하는 것이 좋습니다.
|
||||
특히 storage, key vault, app service, function app, 그리고 blob 관련 endpoint는 자주 확인해야 합니다.
|
||||
```
|
||||
[-] user1@domain - Target user not found. Either the user does not exist, is not Teams-enrolled or is configured to not appear in search results (personal accounts only)
|
||||
[+] user2@domain - User2 | Company (Away, Mobile)
|
||||
[+] user3@domain - User3 | Company (Available, Desktop)
|
||||
```
|
||||
또한 다음과 같은 기존 사용자들의 상태 정보를 열거할 수 있습니다:
|
||||
또한 다음과 같이 기존 사용자에 대한 availability 정보를 enumerate할 수 있습니다:
|
||||
|
||||
- Available
|
||||
- Away
|
||||
@@ -133,11 +170,31 @@ python3 ./TeamsEnum.py -a password -u <username> -f inputlist.txt -o teamsenum-o
|
||||
- Busy
|
||||
- Offline
|
||||
|
||||
만약 **부재중 메시지**가 구성되어 있다면, TeamsEnum을 사용해 해당 메시지를 가져올 수도 있습니다. 출력 파일이 지정된 경우, 부재중 메시지들은 자동으로 JSON 파일에 저장됩니다:
|
||||
**out-of-office message**가 설정되어 있으면, TeamsEnum을 사용해 해당 메시지도 가져올 수 있습니다. output file이 지정되었다면 out-of-office messages는 자동으로 JSON file 안에 저장됩니다:
|
||||
```
|
||||
jq . teamsenum-output.json
|
||||
```
|
||||
번역할 README.md 내용을 여기에 붙여넣어 주세요.
|
||||
# Azure Unauthenticated Enum and Initial Entry
|
||||
|
||||
## Unauthenticated Enum
|
||||
|
||||
Some Azure services and configurations can be enumerated without authentication, which may reveal useful metadata for initial entry.
|
||||
|
||||
Examples include:
|
||||
- Public storage containers
|
||||
- Exposed management endpoints
|
||||
- Misconfigured blobs
|
||||
- Accessible metadata services
|
||||
|
||||
## Initial Entry
|
||||
|
||||
Once useful information is obtained, it can be leveraged to identify weak points for initial entry. Common paths include:
|
||||
- Publicly exposed credentials
|
||||
- Sensitive information in storage
|
||||
- Misconfigured identities and permissions
|
||||
- Weakly protected management interfaces
|
||||
|
||||
Careful unauthenticated enum can provide enough context to guide further pentesting efforts against Azure environments.
|
||||
```json
|
||||
{
|
||||
"email": "user2@domain",
|
||||
@@ -192,10 +249,10 @@ jq . teamsenum-output.json
|
||||
az-password-spraying.md
|
||||
{{#endref}}
|
||||
|
||||
## Azure Services가 사용하는 도메인
|
||||
## Azure Services using domains
|
||||
|
||||
또한 일반적인 azure 하위 도메인에서 **Azure services exposed**를 찾으려고 시도할 수도 있습니다. 이는 다음 [post:
|
||||
](https://www.netspi.com/blog/technical-blog/cloud-penetration-testing/enumerating-azure-services/)에 문서화된 것과 같습니다.
|
||||
또한 [이 글:
|
||||
](https://www.netspi.com/blog/technical-blog/cloud-penetration-testing/enumerating-azure-services/)에 문서화된 것과 같은 일반적인 azure subdomains에서 **노출된 Azure services**를 찾아보는 것도 가능합니다.
|
||||
|
||||
- App Services: `azurewebsites.net`
|
||||
- App Services – Management: `scm.azurewebsites.net`
|
||||
@@ -216,25 +273,58 @@ az-password-spraying.md
|
||||
- Search Appliance: `search.windows.net`
|
||||
- API Services: `azure-api.net`
|
||||
|
||||
You can use a method from [**MicroBust**](https://github.com/NetSPI/MicroBurst) for such goal. This function will search the base domain name (and a few permutations) in several **azure domains:**
|
||||
이러한 목적에는 [**MicroBust**](https://github.com/NetSPI/MicroBurst)의 방법을 사용할 수 있습니다. 이 함수는 여러 **azure domains:**에서 base domain name(및 몇 가지 변형)을 검색합니다.
|
||||
```bash
|
||||
Import-Module .\MicroBurst\MicroBurst.psm1 -Verbose
|
||||
Invoke-EnumerateAzureSubDomains -Base corp -Verbose
|
||||
```
|
||||
## Phishing
|
||||
|
||||
- [**Common Phishing**](https://book.hacktricks.wiki/en/generic-methodologies-and-resources/phishing-methodology/index.html) — credentials 확보 또는 [OAuth Apps](az-oauth-apps-phishing.md)를 통한 방식
|
||||
- [**Common Phishing**](https://book.hacktricks.wiki/en/generic-methodologies-and-resources/phishing-methodology/index.html) for credentials or via [OAuth Apps](az-oauth-apps-phishing.md)
|
||||
- [**Device Code Authentication** Phishing](az-device-code-authentication-phishing.md)
|
||||
|
||||
## 파일 시스템 Credentials
|
||||
### Exchange Online direct-to-tenant SMTP spoofing
|
||||
|
||||
The **`az cli`**는 **`<HOME>/.Azure`** 내부에 많은 흥미로운 정보를 저장합니다:
|
||||
- **`azureProfile.json`**에는 과거에 로그인한 사용자에 대한 정보가 들어 있습니다
|
||||
- **`clouds.config`**에는 구독에 대한 정보가 들어 있습니다
|
||||
- **`service_principal_entries.json`**에는 애플리케이션 **credentials**(tenant id, clients and secret)가 들어 있습니다
|
||||
- **`msal_token_cache.json`**에는 **access tokens and refresh tokens**가 들어 있습니다
|
||||
대상이 **Exchange Online / EOP**를 사용하지만 공개 **MX**가 **third-party mail gateway**(Mimecast, Proofpoint, Mailgun, on-prem filtering 등)를 가리키는 경우, Exchange Online이 여전히 테넌트 호스트 `*.mail.protection.outlook.com`으로 **직접** 전송된 메일을 수락하는지 테스트한다. 이 경우 공격자는 **external gateway**를 건너뛰고 phishing 메일을 바로 EOP로 제출할 수 있다.
|
||||
|
||||
macOS와 linux에서는 이러한 파일들이 **보호되지 않은** 채 평문으로 저장되어 있다는 점에 유의하세요.
|
||||
이는 **initial access / phishing**에 유용한데, 스푸프된 sender가 **SPF**, **DKIM**, **DMARC**에 실패하더라도 delivery가 여전히 가능할 수 있기 때문이다. 내부 sender의 경우 Outlook이 스푸프된 sender를 실제 직원으로 해석할 수도 있어 신뢰도가 높아진다.
|
||||
|
||||
**Recon / triage:**
|
||||
```bash
|
||||
# If the MX already points to Microsoft, this specific path is usually not the issue
|
||||
dig +short MX target.com
|
||||
|
||||
# Typical vulnerable pattern: the MX points to a third-party filter
|
||||
# 10 mxb.eu.mailgun.org.
|
||||
```
|
||||
직접 EOP 호스트는 보통 tenant-specific `mail.protection.outlook.com` 이름입니다(예: `target-com.mail.protection.outlook.com`). public tenant/domain enumeration과 Exchange 관련 autodiscover 응답을 통해 tenant naming pattern을 종종 복구할 수 있습니다.
|
||||
|
||||
**Minimal PoC:**
|
||||
```powershell
|
||||
Send-MailMessage -SmtpServer target-com.mail.protection.outlook.com -To victim@target.com -From ceo@target.com -Subject "Urgent" -Body "Review the attached payment change" -BodyAsHTML
|
||||
```
|
||||
**Validation signals:**
|
||||
- Mail is sent to `*.mail.protection.outlook.com` instead of the public MX host.
|
||||
- The message is delivered even though headers show failures such as `spf=fail`, `dkim=none`, `dmarc=fail`, or `compauth=none`.
|
||||
- A secure Partner connector usually rejects the `RCPT TO` stage with `5.7.51 TenantInboundAttribution; Rejecting.`
|
||||
|
||||
**Technical notes / defensive hunting:**
|
||||
- **Enhanced Filtering for Connectors** helps Exchange attribute the original sender correctly, but by itself it is **not** the boundary that blocks direct-to-tenant delivery.
|
||||
- Microsoft documents two practical controls when using an external MX in front of Exchange Online:
|
||||
- Create a **Partner inbound connector** with `SenderDomains *` and `RestrictDomainsToCertificate` or `RestrictDomainsToIPAddresses` so only the approved gateway can deliver to the tenant.
|
||||
- Create a **priority 0 transport rule** that quarantines inbound mail unless the sender IP belongs to approved gateway ranges **or** `X-MS-Exchange-Organization-AuthAs` contains `Internal`.
|
||||
- Hunt for mail where **Received** shows `*.mail.protection.outlook.com` as the first Microsoft hop but sender-authentication headers still show **SPF/DKIM/DMARC failures**.
|
||||
- If the target still allows **Direct Send**, disabling it mainly reduces **internal** sender spoofing; it doesn't replace the connector / transport-rule mitigation for arbitrary **external** spoofing.
|
||||
|
||||
## Filesystem Credentials
|
||||
|
||||
The **`az cli`** stores a lot of interesting information inside **`<HOME>/.Azure`**:
|
||||
- **`azureProfile.json`** contains info about logged in users from the past
|
||||
- **`clouds.config`** contains info about subscriptions
|
||||
- **`service_principal_entries.json`** contains applications **credentials** (tenant id, clients and secret)
|
||||
- **`msal_token_cache.json`** contains **access tokens and refresh tokens**
|
||||
|
||||
Note that in macOS and linux these files are **unprotected** stored in clear text.
|
||||
|
||||
|
||||
|
||||
@@ -243,5 +333,9 @@ macOS와 linux에서는 이러한 파일들이 **보호되지 않은** 채 평
|
||||
- [https://aadinternals.com/post/just-looking/](https://aadinternals.com/post/just-looking/)
|
||||
- [https://www.securesystems.de/blog/a-fresh-look-at-user-enumeration-in-microsoft-teams/](https://www.securesystems.de/blog/a-fresh-look-at-user-enumeration-in-microsoft-teams/)
|
||||
- [https://www.netspi.com/blog/technical-blog/cloud-penetration-testing/enumerating-azure-services/](https://www.netspi.com/blog/technical-blog/cloud-penetration-testing/enumerating-azure-services/)
|
||||
- [https://labs.infoguard.ch/posts/ghost-sender/](https://labs.infoguard.ch/posts/ghost-sender/)
|
||||
- [https://learn.microsoft.com/en-us/exchange/mail-flow-best-practices/manage-mail-flow-using-third-party-cloud](https://learn.microsoft.com/en-us/exchange/mail-flow-best-practices/manage-mail-flow-using-third-party-cloud)
|
||||
- [https://learn.microsoft.com/en-us/defender-office-365/anti-phishing-policies-about](https://learn.microsoft.com/en-us/defender-office-365/anti-phishing-policies-about)
|
||||
- [https://techcommunity.microsoft.com/blog/exchange/direct-send-vs-sending-directly-to-an-exchange-online-tenant/4439865](https://techcommunity.microsoft.com/blog/exchange/direct-send-vs-sending-directly-to-an-exchange-online-tenant/4439865)
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
Reference in New Issue
Block a user