Az - Unauthenticated Enum & Initial Entry

Erlernen Sie das Hacken von AWS von Null auf Heldenniveau mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Azure-Mandant

Mandanten-Enumeration

Es gibt einige öffentliche Azure-APIs, die ein Angreifer nur durch Kenntnis der Domäne des Mandanten abfragen könnte, um weitere Informationen darüber zu sammeln. Sie können die API direkt abfragen oder die PowerShell-Bibliothek AADInternals** verwenden:**

APIInformationenAADInternals-Funktion

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

Anmeldeinformationen, einschließlich Mandanten-ID

Get-AADIntTenantID -Domain <domain>

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

Alle Domänen des Mandanten

Get-AADIntTenantDomains -Domain <domain>

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

Anmeldeinformationen des Mandanten, einschließlich Mandantenname und Domäne Authentifizierungstyp. Wenn NameSpaceType Managed ist, bedeutet dies, dass AzureAD verwendet wird.

Get-AADIntLoginInformation -UserName <UserName>

login.microsoftonline.com/common/GetCredentialType

Anmeldeinformationen, einschließlich Desktop SSO-Informationen

Get-AADIntLoginInformation -UserName <UserName>

Sie können alle Informationen eines Azure-Mandanten mit nur einem Befehl der AADInternals Bibliothek abfragen:

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

Beispiel für die Ausgabe der Azure-Mandanteninformationen:

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

Es ist möglich, Details zum Namen, zur ID und zum "Markennamen" des Mandanten zu beobachten. Darüber hinaus wird der Status des Desktop Single Sign-On (SSO), auch bekannt als Seamless SSO, angezeigt. Wenn diese Funktion aktiviert ist, erleichtert sie die Bestimmung der Anwesenheit (Aufzählung) eines bestimmten Benutzers innerhalb der Zielorganisation.

Darüber hinaus zeigt die Ausgabe die Namen aller überprüften Domänen an, die mit dem Zielmandanten verbunden sind, zusammen mit ihren jeweiligen Identitätstypen. Im Fall von föderierten Domänen wird auch der vollständig qualifizierte Domänenname (FQDN) des verwendeten Identitätsanbieters, in der Regel ein ADFS-Server, offengelegt. Die Spalte "MX" gibt an, ob E-Mails an Exchange Online weitergeleitet werden, während die Spalte "SPF" die Auflistung von Exchange Online als E-Mail-Absender angibt. Es ist wichtig zu beachten, dass die aktuelle Aufklärungsfunktion die "include"-Anweisungen innerhalb von SPF-Einträgen nicht analysiert, was zu falschen Negativen führen kann.

Benutzer-Aufzählung

Es ist möglich zu überprüfen, ob ein Benutzername innerhalb eines Mandanten existiert. Dies umfasst auch Gastbenutzer, deren Benutzername im Format vorliegt:

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

Die E-Mail ist die E-Mail-Adresse des Benutzers, bei der das "@" durch einen Unterstrich "_" ersetzt wird.

Mit AADInternals können Sie einfach überprüfen, ob der Benutzer existiert oder nicht:

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

Nicht authentifizierte Enumeration und Erstzugriff

In diesem Abschnitt werden verschiedene nicht authentifizierte Angriffstechniken beschrieben, die von Angreifern verwendet werden können, um Informationen zu sammeln und den Einstiegspunkt in Azure-Ressourcen zu identifizieren. Diese Techniken können dazu beitragen, Schwachstellen in der Konfiguration aufzudecken und Sicherheitslücken zu identifizieren, die es einem Angreifer ermöglichen könnten, Zugriff auf Azure-Ressourcen zu erlangen.

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

Du kannst auch eine Textdatei verwenden, die eine E-Mail-Adresse pro Zeile enthält:

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

Es gibt drei verschiedene Aufzählungsmethoden, aus denen Sie wählen können:

MethodeBeschreibung

Normal

Dies bezieht sich auf die oben erwähnte GetCredentialType-API. Die Standardmethode.

Login

Diese Methode versucht, sich als Benutzer anzumelden. Hinweis: Abfragen werden im Anmeldeprotokoll protokolliert.

Autologon

Diese Methode versucht, sich als Benutzer über den Autologon-Endpunkt anzumelden. Abfragen werden nicht protokolliert im Anmeldeprotokoll! Funktioniert daher auch gut für Passwort-Spray- und Brute-Force-Angriffe.

Nachdem Sie die gültigen Benutzernamen entdeckt haben, können Sie Informationen über einen Benutzer erhalten:

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

Das Skript o365creeper ermöglicht es auch, herauszufinden, ob eine E-Mail gültig ist.

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

Benutzerenumerierung über Microsoft Teams

Eine weitere gute Informationsquelle ist Microsoft Teams.

Die API von Microsoft Teams ermöglicht die Suche nach Benutzern. Insbesondere die Endpunkte "externalsearchv3" und "searchUsers" könnten verwendet werden, um allgemeine Informationen über Teams-registrierte Benutzerkonten abzurufen.

Je nach API-Antwort ist es möglich, zwischen nicht vorhandenen Benutzern und vorhandenen Benutzern mit gültigem Teams-Abonnement zu unterscheiden.

Das Skript TeamsEnum könnte verwendet werden, um einen bestimmten Satz von Benutzernamen gegen die Teams-API zu validieren.

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

Nicht authentifizierte Enumeration und Erstzugriff

In diesem Abschnitt werden verschiedene nicht authentifizierte Techniken zur Informationsgewinnung und zum Erstzugriff auf Azure-Ressourcen behandelt.

Nicht authentifizierte Enumeration

1. Azure-AD-Enumeration

Azure AD Connect Discovery kann verwendet werden, um Benutzer, Gruppen und Computer im Azure AD zu enumerieren.

adfind -b "CN=Users,DC=domain,DC=com" -f "objectcategory=person" -list

2. Azure-AD-Gruppenmitgliedschaft

Die Mitgliedschaft in Azure AD-Gruppen kann mit dem Tool Get-AzureADGroupMember überprüft werden.

Get-AzureADGroupMember -ObjectId <group_object_id>

Erstzugriff

1. Azure-VM-Initialzugriff

Bei Azure-VMs kann der Zugriff über RDP oder SSH erlangt werden, wenn die entsprechenden Ports geöffnet sind.

ssh user@<azure_vm_ip>

2. Azure-Storage-Kontoübernahme

Durch die Übernahme eines Azure-Storage-Kontos kann auf gespeicherte Daten zugegriffen werden.

azcopy copy "https://<source_storage_account>.blob.core.windows.net/<container>/<file>" "<destination_file>"
[-] 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)

Darüber hinaus ist es möglich, Verfügbarkeitsinformationen über vorhandene Benutzer wie folgt aufzulisten:

  • Verfügbar

  • Abwesend

  • Bitte nicht stören

  • Beschäftigt

  • Offline

Wenn eine Abwesenheitsnachricht konfiguriert ist, ist es auch möglich, die Nachricht mithilfe von TeamsEnum abzurufen. Wenn eine Ausgabedatei angegeben wurde, werden die Abwesenheitsnachrichten automatisch in der JSON-Datei gespeichert:

jq . teamsenum-output.json

Nicht authentifizierte Enumeration und Erstzugriff

In diesem Abschnitt werden wir uns damit befassen, wie wir nicht authentifizierte Informationen über die Zielsysteme sammeln können, um einen ersten Zugriff zu erhalten. Wir werden verschiedene Techniken und Tools verwenden, um Schwachstellen zu identifizieren und potenzielle Angriffspunkte zu erkennen. Es ist wichtig zu beachten, dass diese Techniken nur in autorisierten Tests anzuwenden sind und die Zustimmung des Eigentümers des Zielsystems erforderlich ist.

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

Nun, da wir die Domänen des Azure-Mandanten kennen, ist es an der Zeit, zu versuchen, exponierte Azure-Dienste zu finden.

Sie können eine Methode aus MicroBust für dieses Ziel verwenden. Diese Funktion wird den Basisdomänennamen (und ein paar Permutationen) in mehreren Azure-Dienst-Domänen suchen:

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

Offener Speicher

Sie könnten offenen Speicher mit einem Tool wie InvokeEnumerateAzureBlobs.ps1 entdecken, das die Datei Microburst/Misc/permitations.txt verwendet, um Permutationen (sehr einfach) zu generieren, um zu versuchen, offene Speicherkonten zu finden.

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 URLs

Ein Shared Access Signature (SAS) URL ist eine URL, die Zugriff auf einen bestimmten Teil eines Speicherkontos (könnte ein vollständiger Container, eine Datei usw. sein) mit bestimmten Berechtigungen (Lesen, Schreiben usw.) über die Ressourcen gewährt. Wenn Sie einen solchen URL finden, der öffentlich zugänglich ist, könnten Sie auf sensible Informationen zugreifen. Sie sehen so aus (um auf einen Container zuzugreifen, wenn der Zugriff nur auf eine Datei gewährt wurde, würde der Pfad der URL auch diese Datei enthalten):

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

Verwenden Sie Storage Explorer, um auf die Daten zuzugreifen

Zugangsdaten kompromittieren

Phishing

Passwort-Spraying / Brute-Force

pageAz - Password Spraying

Referenzen

Erlernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Last updated