Az - Unauthenticated Enum & Initial Entry

Az - Ongeverifieerde Enum & Inisieële Toegang

Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Azure Huurder

Huurder Enumerasie

Daar is sekere openbare Azure-API's waarvan net deur die domein van die huurder te ken 'n aanvaller kan navraag doen om meer inligting daaroor te versamel. Jy kan direk die API navraag doen of die PowerShell-biblioteek AADInternals** gebruik:

APIInligtingAADInternals-funksie

login.microsoftonline.com/<domain>/.well-known/openid-configuration

Aantekeninligting, insluitend huurder-ID

Get-AADIntTenantID -Domain <domain>

autodiscover-s.outlook.com/autodiscover/autodiscover.svc

Alle domeine van die huurder

Get-AADIntTenantDomains -Domain <domain>

login.microsoftonline.com/GetUserRealm.srf?login=<UserName>

Aantekeninligting van die huurder, insluitend huurder Naam en domein verifikasie tipe. As NameSpaceType is Managed, beteken dit dat AzureAD gebruik word.

Get-AADIntLoginInformation -UserName <UserName>

login.microsoftonline.com/common/GetCredentialType

Aantekeninligting, insluitend Desktop SSO-inligting

Get-AADIntLoginInformation -UserName <UserName>

Jy kan alle inligting van 'n Azure-huurder navraag doen met net een bevel van die AADInternals biblioteek:

Invoke-AADIntReconAsOutsider -DomainName corp.onmicrosoft.com | Format-Table

Uitvoervoorbeeld van die Azure huurderinligting:

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 huurder se naam, ID, en "handelsmerk" naam waar te neem. Daarbenewens word die status van die Desktop Single Sign-On (SSO), ook bekend as Naadlose SSO, vertoon. Wanneer dit geaktiveer is, fasiliteer hierdie kenmerk die bepaling van die teenwoordigheid (opsomming) van 'n spesifieke gebruiker binne die teikenorganisasie.

Verder toon die uitset die name van alle geverifieerde domeine wat met die teikend huurder geassosieer word, saam met hul onderskeie identiteits tipes. In die geval van gefedereerde domeine, word die Volledig Gekwalifiseerde Domein Naam (FQDN) van die identiteitsverskaffer wat gebruik word, tipies 'n ADFS-bediener, ook bekend gemaak. Die "MX" kolom spesifiseer of e-posse na Exchange Online gestuur word, terwyl die "SPF" kolom die lys van Exchange Online as 'n e-posafsender aandui. Dit is belangrik om daarop te let dat die huidige verkenningsfunksie nie die "include" verklarings binne SPF rekords ontled nie, wat tot vals negatiewe resultate kan lei.

Gebruiker Opsomming

Dit is moontlik om te kontroleer of 'n gebruikersnaam binne 'n huurder bestaan. Dit sluit ook gasgebruikers in, wie se gebruikersnaam in die formaat is:

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

Die e-pos is die gebruiker se e-posadres waar by “@” vervang word met onderstreping “_“.

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

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

Nie-geverifieerde Enumerasie en Inisieële Toegang

In hierdie gids sal ons kyk na hoe om nie-geverifieerde enumerasie aanvalle uit te voer en inisieële toegang te verkry tot 'n Azure-omgewing sonder om enige geldige geloofsbriewe te hê nie.

Stappe

  1. Ontdek Openbare Blootstelling: Identifiseer blootgestelde dienste en hulpbronne sonder verifikasie.

  2. Identifiseer Doelwitte: Vind potensiële teikens vir aanvalle.

  3. Skandeer vir Swak Beveiliging: Deursoek vir swakke plekke in die omgewing.

  4. Kry Toegang: Maak gebruik van die swakke plekke om inisieële toegang te verkry.

  5. Bly Stil: Handhaaf toegang sonder om opgespoor te word.

Onthou om altyd eties te bly en slegs toestemming te verkry om te toets op 'n omgewing wat jy besit of waarvoor jy toestemming het om te toets.

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

Jy kan ook 'n tekslêer gebruik wat een e-posadres per ry 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 drie verskillende opnoemingsmetodes om van te kies:

MetodeBeskrywing

Normaal

Hierdie verwys na die GetCredentialType API wat hierbo genoem word. Die verstekmetode.

Aanteken

Hierdie metode probeer om as die gebruiker aan te teken. Nota: navrae sal aangeteken word in die aanmeldingslog.

Outomatiese aanmelding

Hierdie metode probeer om as die gebruiker aan te teken via die outomatiese aanmeldings-eindpunt. Navrae word nie aangeteken in die aanmeldingslog nie! Dit werk dus ook goed vir wagwoordspuit- en brutaal kragaanvalle.

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

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

Die skripsie o365creeper laat jou ook toe om te ontdek of 'n e-pos geldig is.

# Put in emails.txt emails such as:
# - root@corp.onmicrosoft.com
python.exe .\o365creeper\o365creeper.py -f .\emails.txt -o validemails.txt

Gebruikeropsomming via Microsoft-spanne

'n Ander goeie bron van inligting is Microsoft-spanne.

Die API van Microsoft-spanne maak dit moontlik om vir gebruikers te soek. Veral die "gebruikersoek" eindpunte externalsearchv3 en searchUsers kan gebruik word om algemene inligting oor Teams-ingeskrewe gebruikersrekeninge aan te vra.

Afhanklik van die API-reaksie is dit moontlik om tussen nie-bestaande gebruikers en bestaande gebruikers wat 'n geldige Teams intekening het, te onderskei.

Die skripsie TeamsEnum kan gebruik word om 'n gegewe stel gebruikersname teen die Teams API te valideer.

python3 TeamsEnum.py -a password -u <username> -f inputlist.txt -o teamsenum-output.json

Ongeagte Enumerasie en Inisieële Toegang

In hierdie scenario sal ons kyk na hoe om ongeagte enumerasie en inisieële toegang tot 'n Azure-omgewing te verkry sonder om enige geldige geloofsbriewe te hê. Hierdie tegniek kan gebruik word om sensitiewe inligting oor die omgewing te verkry en 'n aanvalsvektor te identifiseer vir verdere aanvalle.

Stappe

  1. Identifiseer die teiken-omgewing en bepaal die omvang van die aanval.

  2. Voer 'n ongeagte enumerasie van die teiken-omgewing uit deur gebruik te maak van openbarely beskikbare inligting en hulpmiddels.

  3. Identifiseer swak plekke in die omgewing wat kan lei tot 'n suksesvolle aanval.

  4. Probeer om inisieële toegang tot die omgewing te verkry deur gebruik te maak van die gevonde swak plekke.

  5. Dokumenteer die stappe wat geneem is en die verkryging van toegang vir verdere analise en verslagdoening.

Deur hierdie tegniek te gebruik, kan 'n aanvaller 'n Azure-omgewing binnekom en sensitiewe inligting verkry sonder om oor geldige geloofsbriewe te beskik. Dit beklemtoon die belangrikheid van omgewingsbeveiliging en die noodsaaklikheid om voortdurend te monitor en te verbeter om te verseker dat sulke aanvalle voorkom word.

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

Verder is dit moontlik om beskikbaarheidsinligting oor bestaande gebruikers te ontleed soos die volgende:

  • Beskikbaar

  • Weg

  • MoetNieGestoordWord nie

  • Besig

  • Aflyn

Indien 'n uit-kantoor boodskap ingestel is, is dit ook moontlik om die boodskap te ontleed deur TeamsEnum te gebruik. As 'n uitvoerlêer gespesifiseer is, word die uit-kantoor boodskappe outomaties binne die JSON-lêer gestoor:

jq . teamsenum-output.json

Ongeagte Enumerasie en Inisieële Toegang

Die doel van hierdie module is om die aanvaller te help om ongeagte toegang tot 'n Azure-omgewing te verkry deur die identifisering van swakheid in die konfigurasie van die omgewing en die gebruik daarvan vir verdere aanvalle.

Enumerasie van Azure-dienste sonder verifikasie

Hierdie module demonstreer hoe om Azure-dienste te identifiseer sonder om te verifieer. Dit sluit in die gebruik van openbare inligting soos DNS-rekords, openbare IP-adresse, en so aan om inligting oor die teikenomgewing te verkry sonder om enige vorm van verifikasie te vereis.

Inisieële Toegang

Na die identifisering van die Azure-dienste, kan die aanvaller swakheid in die konfigurasie van hierdie dienste uitbuit om inisieële toegang tot die omgewing te verkry. Dit kan insluit, maar is nie beperk tot, die gebruik van standaard wagwoorde, swak toegangsbeheer, blootgestelde stoorplekke, en so aan.

{
"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
}
]
}

Azure Dienste

Weet dat ons die domeine van die Azure-huurder ken, is dit tyd om te probeer om blootgestelde Azure-dienste te vind.

Jy kan 'n metode van MicroBust vir so 'n doel gebruik. Hierdie funksie sal die basiese domeinnaam (en 'n paar permutasies) soek in verskeie Azure-diensdomeine:

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

Oop Berging

Jy kan oop berging ontdek met 'n instrument soos InvokeEnumerateAzureBlobs.ps1 wat die lêer Microburst/Misc/permitations.txt sal gebruik om permutasies (baie eenvoudig) te genereer om te probeer om oop bergingsrekeninge te vind.

Import-Module .\MicroBurst\MicroBurst.psm1
Invoke-EnumerateAzureBlobs -Base corp
[...]
https://corpcommon.blob.core.windows.net/secrets?restype=container&comp=list
[...]

# Access https://corpcommon.blob.core.windows.net/secrets?restype=container&comp=list
# Check: <Name>ssh_info.json</Name>
# Access then https://corpcommon.blob.core.windows.net/secrets/ssh_info.json

SAS URL's

'n gedeelde toegangshandtekening (SAS) URL is 'n URL wat toegang bied tot 'n sekere deel van 'n Stoorrekening (kan 'n volledige houer, 'n lêer...) met sekere spesifieke regte (lees, skryf...) oor die bronne. As jy een vind wat uitgelek het, kan jy dalk toegang kry tot sensitiewe inligting, hulle lyk soos hierdie (dit is om toegang te verkry tot 'n houer, as dit net toegang verleen het tot 'n lêer, sal die pad van die URL ook daardie lêer bevat):

https://<storage_account_name>.blob.core.windows.net/newcontainer?sp=r&st=2021-09-26T18:15:21Z&se=2021-10-27T02:14:21Z&spr=https&sv=2021-07-08&sr=c&sig=7S%2BZySOgy4aA3Dk0V1cJyTSIf1cW%2Fu3WFkhHV32%2B4PE%3D

Gebruik Storage Explorer om die data te ontsluit

Kompromitteer Geldeenhede

Hengel

Wagwoord Spuit / Brute-Force

pageAz - Password Spraying

Verwysings

Leer AWS hak van nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Last updated