Az - Unauthenticated Enum & Initial Entry

Tip

Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Leer & oefen Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks

Azure Huurder

Tenant Enumeration

Daar is ’n paar openbare Azure APIs wat, as ’n aanvaller net die domein van die huurder ken, navrae kan stuur om meer inligting daaroor te versamel.
Jy kan die API direk bevra of die PowerShell-biblioteek AADInternals gebruik (Install-Module AADInternals):

  • Aanmeldinligting insluitend huurder-ID
  • Get-AADIntTenantID -Domain <domain> (main API login.microsoftonline.com/<domain>/.well-known/openid-configuration)
  • Alle geldige domeine in die huurder
  • Get-AADIntTenantDomains -Domain <domain> (main API autodiscover-s.outlook.com/autodiscover/autodiscover.svc)
  • Aanmeldinligting van die gebruiker. As NameSpaceType op Managed staan, beteken dit dat EntraID gebruik word
  • Get-AADIntLoginInformation -UserName <UserName> (main API login.microsoftonline.com/GetUserRealm.srf?login=<UserName>)

Jy kan al die inligting van ’n Azure-huurder navraag doen met slegs een opdrag van AADInternals:

# Doesn't work in macos because 'Resolve-DnsName' doesn't exist
Invoke-AADIntReconAsOutsider -DomainName corp.onmicrosoft.com | Format-Table

## Output Example of the Azure tenant info:

Tenant brand:       Company Ltd
Tenant name:        company
Tenant id:          1937e3ab-38de-a735-a830-3075ea7e5b39
DesktopSSO enabled: True

Name                           DNS   MX    SPF  Type      STS
----                           ---   --    ---  ----      ---
company.com                   True  True  True  Federated sts.company.com
company.mail.onmicrosoft.com  True  True  True  Managed
company.onmicrosoft.com       True  True  True  Managed
int.company.com              False False False  Managed

Dit is moontlik om besonderhede oor die tenant se naam, ID en “brand” naam waar te neem. Verder word die status van die Desktop Single Sign-On (SSO), ook bekend as Seamless SSO, gewys. Wanneer dit geaktiveer is, maak hierdie funksie die bepaling van die teenwoordigheid (enumeration) van ’n spesifieke gebruiker binne die teiken-organisasie moontlik.

Verder vertoon die uitset die name van alle geverifieerde domeine wat met die teiken-tenant geassosieer is, saam met hul onderskeie identiteits-tipes. In die geval van gefedereerde domeine word ook die Fully Qualified Domain Name (FQDN) van die gebruikte identity provider, gewoonlik ’n ADFS-bediener, bekend gemaak. Die “MX”-kolom spesifiseer of e-posse na Exchange Online gerouteer word, terwyl die “SPF”-kolom aandui of Exchange Online as ’n e-possender gelys is. Dit is belangrik om op te let dat die huidige reconnaissance-funksie nie die “include”-uitsprake binne SPF-rekords ontleed nie, wat tot false negatives kan lei.

Gebruiker Enumerasie

Tip

Let daarop dat selfs al gebruik ’n tenant verskeie e-posadresse vir dieselfde gebruiker, die username is uniek. Dit beteken dat dit slegs met die domein waarmee die gebruiker geassosieer is sal werk en nie met die ander domeine nie.

Dit is moontlik om te kontroleer of ’n username bestaan binne ’n tenant. Dit sluit ook guest users in, wie se username in die formaat is:

<email>#EXT#@<tenant name>.onmicrosoft.com

Die e-pos is die gebruiker se e-posadres waar die “@” vervang is deur die underscore “_“.

Met AADInternals kan jy maklik nagaan of die gebruiker bestaan of nie:

# Check does the user exist
Invoke-AADIntUserEnumerationAsOutsider -UserName "user@company.com"

Ek het nie toegang tot die lĂȘer nie. Plak asseblief die README.md-inhoud wat jy vertaal wil hĂȘ, en ek sal dit na Afrikaans vertaal terwyl ek markdown, tags en skakels onveranderd laat.

UserName         Exists
--------         ------
user@company.com True

Jy kan ook ’n tekslĂȘer gebruik wat een e-posadres per reĂ«l bevat:

user@company.com
user2@company.com
admin@company.com
admin2@company.com
external.user_gmail.com#EXT#@company.onmicrosoft.com
external.user_outlook.com#EXT#@company.onmicrosoft.com
# Invoke user enumeration
Get-Content .\users.txt | Invoke-AADIntUserEnumerationAsOutsider -Method Normal

Daar is tans 4 verskillende enumerasie-metodes om van te kies. Jy kan inligting vind in Get-Help Invoke-AADIntUserEnumerationAsOutsider:

Dit ondersteun die volgende enumerasie-metodes: Normal, Login, Autologon, and RST2.

  • Die Normal metode lyk tans of dit met alle tenants werk. Voorheen het dit vereis dat Desktop SSO (aka Seamless SSO) vir ten minste een domein aangeskakel was.

  • Die Login metode werk met enige tenant, maar enumerasie-navrae sal in die Azure AD sign-in log as failed login events aangeteken word!

  • Die Autologon metode lyk nie meer met alle tenants te werk nie. Dit vereis waarskynlik dat DesktopSSO of directory sync geaktiveer is.

Nadat jy die geldige gebruikersname ontdek het, kan jy inligting oor ‘n gebruiker’ kry met:

Get-AADIntLoginInformation -UserName root@corp.onmicrosoft.com

Die script o365spray laat jou ook toe om te ontdek of ’n e-pos geldig is.

git clone https://github.com/0xZDH/o365spray
cd o365spray
python3 -m pip install -r requirements.txt

# Check 1 email
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

User Enumeration via Microsoft Teams

Nog ’n goeie bron van inligting is Microsoft Teams.

Die API van Microsoft Teams maak dit moontlik om na gebruikers te soek. In die besonder kan die “user search” endpoints externalsearchv3 en searchUsers gebruik word om algemene inligting oor by Teams aangemelde gebruikersrekeninge op te vra.

Afhangend van die API-respons is dit moontlik om te onderskei tussen nie-bestaande gebruikers en bestaande gebruikers wat ’n geldige Teams-subskripsie het.

Die script TeamsEnum kan gebruik word om ’n gegewe stel gebruikersname teen die Teams API te valideer, maar jy benodig toegang tot ’n gebruiker met Teams-toegang om dit te gebruik.

# Install
git clone https://github.com/lucidra-security/TeamsEnum
cd TeamsEnum
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

I don’t have the README.md content. Please paste the Markdown content you want translated and I’ll translate it to Afrikaans, preserving all tags, links, paths and code.

[-] 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)

Daarbenewens is dit moontlik om beskikbaarheidsinligting oor bestaande gebruikers te verkry, soos die volgende:

  • Available
  • Away
  • DoNotDisturb
  • Busy
  • Offline

As ’n afwesigheidsboodskap gekonfigureer is, kan die boodskap ook met TeamsEnum opgevra word. As ’n uitsetlĂȘer gespesifiseer is, word die afwesigheidsboodskappe outomaties binne die JSON-lĂȘer gestoor:

jq . teamsenum-output.json

Ek het nie die lĂȘerinhoud ontvang nie. Plak asseblief die inhoud van src/pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/README.md wat jy wil hĂȘ ek moet vertaal; ek sal dit in Afrikaans teruggee en markdown, links, tags, padhervorsings en kode onvertaal laat.

{
"email": "user2@domain",
"exists": true,
"info": [
{
"tenantId": "[REDACTED]",
"isShortProfile": false,
"accountEnabled": true,
"featureSettings": {
"coExistenceMode": "TeamsOnly"
},
"userPrincipalName": "user2@domain",
"givenName": "user2@domain",
"surname": "",
"email": "user2@domain",
"tenantName": "Company",
"displayName": "User2",
"type": "Federated",
"mri": "8:orgid:[REDACTED]",
"objectId": "[REDACTED]"
}
],
"presence": [
{
"mri": "8:orgid:[REDACTED]",
"presence": {
"sourceNetwork": "Federated",
"calendarData": {
"outOfOfficeNote": {
"message": "Dear sender. I am out of the office until March 23rd with limited access to my email. I will respond after my return.Kind regards, User2",
"publishTime": "2023-03-15T21:44:42.0649385Z",
"expiry": "2023-04-05T14:00:00Z"
},
"isOutOfOffice": true
},
"capabilities": ["Audio", "Video"],
"availability": "Away",
"activity": "Away",
"deviceType": "Mobile"
},
"etagMatch": false,
"etag": "[REDACTED]",
"status": 20000
}
]
}

Password Spraying / Brute-Force

Az - Password Spraying

Azure Services using domains

Dit is ook moontlik om te probeer om Azure services exposed te vind in algemene azure subdomeine soos dié gedokumenteer in hierdie post:

  • App Services: azurewebsites.net
  • App Services – Management: scm.azurewebsites.net
  • App Services: p.azurewebsites.net
  • App Services: cloudapp.net
  • Storage Accounts-Files: file.core.windows.net
  • Storage Accounts-Blobs: blob.core.windows.net
  • Storage Accounts-Queues: queue.core.windows.net
  • Storage Accounts-Tables: table.core.windows.net
  • Databases-Redis: redis.cache.windows.net
  • Databases-Cosmos DB: documents.azure.com
  • Databases-MSSQL: database.windows.net
  • Key Vaults: vault.azure.net
  • Microsoft Hosted Domain: onmicrosoft.com
  • Email: mail.protection.outlook.com
  • SharePoint: sharepoint.com
  • CDN: azureedge.net
  • Search Appliance: search.windows.net
  • API Services: azure-api.net

You can use a method from MicroBust for such goal. This function will search the base domain name (and a few permutations) in several azure domeine:

Import-Module .\MicroBurst\MicroBurst.psm1 -Verbose
Invoke-EnumerateAzureSubDomains -Base corp -Verbose

Phishing

Filesystem Credentials

Die az cli stoor baie interessante inligting in <HOME>/.Azure:

  • azureProfile.json bevat inligting oor aangemelde gebruikers uit die verlede
  • clouds.config bevat inligting oor subscriptions
  • service_principal_entries.json bevat toepassings credentials (tenant id, clients and secret)
  • msal_token_cache.json bevat access tokens and refresh tokens

Let wel dat op macOS en Linux word hierdie lĂȘers onbeskermd in duidelike teks gestoor.

Verwysings

Tip

Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Leer & oefen Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks